Merge branch 'dev' into feat/dockerize

This commit is contained in:
2025-12-10 05:15:27 +07:00
564 changed files with 33104 additions and 1917 deletions
+147
View File
@@ -0,0 +1,147 @@
<html>
<head>
<meta charset="UTF-8" />
<style>
body {
padding: 10px 30px;
}
table {
width: 100%;
border-collapse: collapse
}
.border-table,
.border-table td,
.border-table th {
border: 1px solid black;
}
.section-title {
margin-top: 1rem;
margin-bottom: 0rem;
}
td {
vertical-align: top;
}
@page {
size: 148mm 210mm;
}
</style>
</head>
<body style="font-family: Arial, sans-serif; line-height: 1.4">
<table style="margin-top: 1rem;">
<tr>
<td>
<img src="logo-1.png" alt="logo" style="height: 70px; margin-bottom: 20px;" />
</td>
<td>
<div>
SURAT RENCANA KONTROL
</div>
<div>
RSUD dr. Saiful Anwar
</div>
</td>
<td style="text-align: right;">
No. : {{ .Number }}
</td>
</tr>
<tr>
<td>
<div>
Kepada Yth
</div>
</td>
<td>
<div>
{{ .Doctor_Name }}
</div>
<div>
Sp./Sub. {{ .DstUnit_Name }}
</div>
</td>
</tr>
</table>
<div style="margin-top: 1rem;">
Mohon Pemeriksaan dan Penanganan Lebih Lanjut:
</div>
<table style="margin-top: 1rem;">
<tr>
<td style="width: 9rem;">
No.Kartu
</td>
<td style="width: 10px;">:</td>
<td>
{{ .CardNumber }}
</td>
</tr>
<tr>
<td>
Nama Peserta
</td>
<td>: </td>
<td>
{{ .Name }}
</td>
</tr>
<tr>
<td>
Tgl.Lahir
</td>
<td>: </td>
<td>
{{ .BirthDate }}
</td>
</tr>
<tr>
<td>
Diagnosa
</td>
<td>: </td>
<td>
{{ .Diagnose }}
</td>
</tr>
<tr>
<td>
Rencana Kontrol
</td>
<td>: </td>
<td>
{{ .PlanDate }}
</td>
</tr>
</table>
<div style="margin: 1rem 0;">
Demikian atas bantuannya, diucapkan banyak terima kasih.
</div>
<table style="width:100%">
<tbody>
<tr>
<td style="width:20%"></td>
<td></td>
<td style="width:20%; text-align: center;">Mengetahui:</td>
</tr>
<tr>
<td style="height:100px"></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Tgl. Cetak: {{ .PrintDate }}</td>
<td></td>
<td style="text-align: center;">{{ .ResponsibleDoctor_Name }}</td>
</tr>
</tbody>
</table>
<div style="height: 3rem;"></div>
</body>
</html>
+325
View File
@@ -0,0 +1,325 @@
<html>
<head>
<meta charset="UTF-8" />
<title>General Consent</title>
</head>
<body
style="font-family: Arial, sans-serif; font-size: 12px; line-height: 1.4"
>
<table style="width: 100%; border-collapse: collapse">
<tr>
<td style="text-align: center">
<img src="logo-1.png" alt="logo" style="height: 70px" />
</td>
<td style="text-align: center">
<div style="font-size: 14px; font-weight: bold">
PEMERINTAH PROVINSI JAWA TIMUR
</div>
<div style="font-size: 14px; font-weight: bold">
RUMAH SAKIT UMUM DAERAH Dr. SAIFUL ANWAR
</div>
<div style="font-size: 13px">
TERAKREDITASI KARS VERSI 2012 TINGKAT PARIPURNA
</div>
<div style="margin-top: 8px">
Jl. Jaksa Agung Suprapto No. 2 MALANG 65111
</div>
<div>Telp. (0341) 362101, Fax. (0341) 362110</div>
<div>Email: rsu-drsaifulanwar@jatimprov.go.id</div>
<div>Website: www.rsudsaifulanwar.jatimprov.go.id</div>
</td>
<td style="text-align: center">
<img src="logo-rssa.png" alt="logo" style="height: 70px" />
</td>
</tr>
</table>
<hr style="margin: 20px 0" />
<div
style="
text-align: center;
font-weight: bold;
font-size: 14px;
margin-bottom: 5px;
"
>
FORMULIR PEMBERIAN INFORMASI DAN PERSETUJUAN UMUM
</div>
<div style="text-align: center; font-size: 12px; margin-bottom: 20px">
(GENERAL CONSENT)
</div>
<table style="width: 100%; border-collapse: collapse">
<tr>
<td style="width: 3%; vertical-align: top; padding: 6px 4px">1.</td>
<td style="vertical-align: top; padding: 6px 4px">
<b>Hak dan Kewajiban sebagai pasien :</b>
Dengan menandatangani dokumen ini saya mengakui bahwa pada proses
pendaftaran untuk mendapatkan perawatan di RSUD Dr. Saiful Anwar telah
mendapatkan informasi tentang hak dan kewajiban saya sebagai pasien
(melalui leaflet/banner dan atau petugas). Saya berhak mendapatkan
pelayanan kesehatan sesuai standar, mendapatkan informasi yang cukup
tentang keadaan kesehatan, rencana tindakan, manfaat, risiko,
alternatif tindakan, serta biaya yang akan timbul. Saya berkewajiban
memberikan informasi kesehatan yang jujur dan lengkap kepada tenaga
kesehatan, mematuhi aturan rumah sakit, serta memenuhi kewajiban
pembayaran sesuai ketentuan yang berlaku.
</td>
</tr>
<tr>
<td style="vertical-align: top; padding: 6px 4px">2.</td>
<td style="vertical-align: top; padding: 6px 4px">
<b>Persetujuan Pelayanan :</b>
Saya menyetujui dan memberikan persetujuan untuk dirawat di RSUD Dr.
Saiful Anwar dan dengan ini saya meminta dan memberikan kuasa kepada
RSUD Dr. Saiful Anwar, dokter dan perawat serta tenaga kesehatan
lainnya untuk memberikan asuhan keperawatan, pemeriksaan fisik yang
dilakukan oleh dokter dan perawat dan melakukan prosedur diagnostik
radiologi dan/atau terapi dan tata laksana sesuai pertimbangan dokter
yang diperlukan atau disarankan pada perawatan saya. Hal ini mencakup
seluruh pemeriksaan dan prosedur diagnostik rutin termasuk X-ray,
pemberian dan/atau tindakan medis serta penyuntikan (intramuskular,
intravena dan prosedur invasif lainnya), produk farmasi dan
obat-obatan, pemasangan alat kesehatan (kecuali yang membutuhkan
persetujuan khusus/tertulis) dan pengambilan darah untuk pemeriksaan
laboratorium atau pemeriksaan patologi.
</td>
</tr>
<tr>
<td style="vertical-align: top; padding: 6px 4px">3.</td>
<td style="vertical-align: top; padding: 6px 4px">
<b>Akses Informasi Kesehatan :</b>
Saya memberi kuasa kepada setiap dan seluruh orang yang merawat saya
untuk memeriksa dan/atau memberitahukan informasi kesehatan saya
kepada pemberi kesehatan lain yang turut merawat saya selama di rumah
sakit ini, sesuai kebutuhan pelayanan.
</td>
</tr>
<tr>
<td style="vertical-align: top; padding: 6px 4px">4.</td>
<td style="vertical-align: top; padding: 6px 4px">
<b>Rahasia Kedokteran :</b>
Saya setuju RSUD Dr. Saiful Anwar Malang wajib menjamin kerahasiaan
informasi medis saya baik untuk kepentingan perawatan dan pengobatan,
pendidikan maupun penelitian, sesuai ketentuan yang berlaku.
</td>
</tr>
<tr>
<td style="vertical-align: top; padding: 6px 4px">5.</td>
<td style="vertical-align: top; padding: 6px 4px">
<b>Membuka Rahasia Kedokteran :</b>
Saya setuju untuk membuka rahasia kedokteran terkait dengan kondisi
kesehatan, asuhan dan pengobatan yang saya terima kepada:
<br /><span style="margin-left: 10px"
>a) Dokter dan tenaga kesehatan lain yang turut merawat/memberikan
asuhan kepada saya;</span
>
<br /><span style="margin-left: 10px"
>b) Perusahaan asuransi kesehatan atau perusahaan lainnya atau pihak
lain yang menjamin pembiayaan saya;</span
>
<br /><span style="margin-left: 10px"
>c) Anggota keluarga saya :
{{ if eq (len .Relatives) 0 }}
..........................................
{{ else }}
<ul style="margin:0; padding-left:40px;">
{{ range $i, $name := .Relatives }}
{{ if lt $i 2 }}
<li>{{ $name }}</li>
{{ end }}
{{ end }}
</ul>
{{ end }}</span
>
<br />Saya memahami bahwa pembukaan rahasia ini hanya sejauh yang
diperlukan untuk tujuan perawatan, pembiayaan atau administrasi yang
terkait.
</td>
</tr>
<tr>
<td style="vertical-align: top; padding: 6px 4px">6.</td>
<td style="vertical-align: top; padding: 6px 4px">
<b>Privasi :</b>
Saya memberi kuasa kepada RSUD Dr. Saiful Anwar Malang untuk menjaga
privasi dan kerahasiaan penyakit saya selama dalam perawatan, serta
membatasi akses terhadap informasi yang tidak berkepentingan.
</td>
</tr>
<tr>
<td style="vertical-align: top; padding: 6px 4px">7.</td>
<td style="vertical-align: top; padding: 6px 4px">
<b>Barang Pribadi :</b>
Saya setuju untuk tidak membawa barang-barang berharga yang tidak
diperlukan (seperti perhiasan, elektronik, dll) selama dalam perawatan
di RSUD Dr. Saiful Anwar. Jika saya tetap membawa dan terjadi
kehilangan, kerusakan atau pencurian, maka RSUD Dr. Saiful Anwar tidak
bertanggung jawab atas hal tersebut, kecuali bila ada perjanjian
tertulis yang menyatakan lain.
</td>
</tr>
<tr>
<td style="vertical-align: top; padding: 6px 4px">8.</td>
<td style="vertical-align: top; padding: 6px 4px">
<b>Pengajuan Keluhan :</b>
Saya menyatakan bahwa saya telah menerima informasi tentang adanya
tata cara mengajukan dan mengatasi keluhan terkait pelayanan medik
yang diberikan terhadap diri saya. Saya setuju untuk mengikuti tata
cara pengajuan keluhan sesuai prosedur yang ada di rumah sakit.
</td>
</tr>
<tr>
<td style="vertical-align: top; padding: 6px 4px">9.</td>
<td style="vertical-align: top; padding: 6px 4px">
<b>Kewajiban Pembayaran :</b>
Saya menyatakan setuju, baik sebagai wali ataupun sebagai pasien,
bahwa sesuai pertimbangan pelayanan yang diberikan kepada pasien, maka
saya wajib untuk membayar total biaya pelayanan sesuai acuan biaya dan
ketentuan RSUD Dr. Saiful Anwar Malang dengan jaminan atau pribadi.
Apabila asuransi kesehatan swasta atau program pemerintah menanggung
pembiayaan saya, saya memberi wewenang kepada rumah sakit untuk
memberi tagihan dari semua pelayanan dan tindakan medis yang
diberikan. Tanggungan Asuransi saya mungkin menyatakan bahwa sebagian
pembayaran tetap menjadi tanggung jawab pribadi saya atau tidak
ditanggung oleh asuransi, maka rumah sakit berwenang memberi tagihan
untuk biaya yang tidak ditanggung oleh asuransi dan saya bertanggung
jawab untuk membayarnya. Apabila saya tidak memberikan persetujuan,
atau dikemudian hari mencabut persetujuan saya untuk melepaskan
rahasia kedokteran saya kepada perusahaan asuransi yang saya tentukan,
maka saya pribadi bertanggung jawab untuk membayar semua pelayanan dan
tindakan medis dari RSUD Dr. Saiful Anwar Malang.
</td>
</tr>
<tr>
<td style="vertical-align: top; padding: 6px 4px">10.</td>
<td style="vertical-align: top; padding: 6px 4px">
<b>Rumah Sakit Pendidikan :</b>
Saya mengetahui bahwa RSUD Dr. Saiful Anwar merupakan rumah sakit
pendidikan yang menjadi tempat praktik klinik bagi mahasiswa
kedokteran dan profesi-profesi kesehatan lainnya, karena itu mereka
mungkin berpartisipasi dan atau terlibat dalam perawatan saya dan saya
menyetujui bahwa mereka berpartisipasi dalam perawatan saya sepanjang
di bawah supervisi dokter penanggung jawab pasien (DPJP).
</td>
</tr>
<tr>
<td style="vertical-align: top; padding: 6px 4px">11.</td>
<td style="vertical-align: top; padding: 6px 4px">
<b>Selama Dalam Perawatan :</b>
Selama dalam perawatan saya dan keluarga saya akan mematuhi ketentuan
untuk tidak mengambil, menyimpan, mengedarkan gambar/video dokumen dan
aktivitas pelayanan selama di RS tanpa seizin rumah sakit.
</td>
</tr>
<tr>
<td style="vertical-align: top; padding: 6px 4px">12.</td>
<td style="vertical-align: top; padding: 6px 4px">
<b>Penegasan Kepercayaan :</b>
Melalui dokumen ini, saya menegaskan kembali bahwa saya mempercayakan
kepada semua tenaga kesehatan rumah sakit untuk memberikan perawatan,
diagnostik dan terapi kepada saya sebagai pasien rawat inap atau rawat
jalan atau Instalasi Gawat Darurat (IGD), termasuk semua pemeriksaan
penunjang yang dibutuhkan untuk pengobatan dan tindakan yang
diperlukan.
</td>
</tr>
</table>
<br /><br />
<div style="margin-top: 20px">
Saya menyetujui setiap pernyataan dalam formulir ini dan menandatangani
tanpa paksaan.
</div>
<table style="width: 100%; margin-top: 40px; text-align: center">
<tr>
<td>
Malang, {{ .Date }}
</td>
</tr>
</table>
<table
style="
width: 100%;
margin-top: 40px;
text-align: center;
border-collapse: collapse;
"
>
<tr style="height:160px; vertical-align:top;">
<td style="text-align:center; padding:0 10px;">
<div style="margin-top:10px; height:45px;">
Pasien/keluarga/<br>penanggung jawab
</div>
<div style="margin-top:20px; margin-bottom:20px;">
.......................................
</div>
<div style="height:20px;">
{{ .Responsible }}
</div>
</td>
<td style="text-align:center; padding:0 10px;">
<div style="margin-top:10px; height:45px;">
Pemberi Informasi
</div>
<div style="margin-top:20px; margin-bottom:20px;">
.......................................
</div>
<div style="height:20px;">
{{ .Informant }}
</div>
</td>
<td style="text-align:center; padding:0 10px;">
<div style="margin-top:10px; height:45px;">
Saksi I
</div>
<div style="margin-top:20px; margin-bottom:20px;">
.......................................
</div>
<div style="height:20px;">
{{ .Witness1 }}
</div>
</td>
<td style="text-align:center; padding:0 10px;">
<div style="margin-top:10px; height:45px;">
Saksi II
</div>
<div style="margin-top:20px; margin-bottom:20px;">
.......................................
</div>
<div style="height:20px;">
{{ .Witness2 }}
</div>
</td>
</tr>
</table>
</body>
</html>
+707
View File
@@ -0,0 +1,707 @@
<html>
<head>
<meta charset="UTF-8" />
<title>General Consent</title>
<style>
body {
padding: 2rem 3rem;
}
table {
width: 100%;
border-collapse: collapse
}
td {
vertical-align: top;
}
.border-table,
.border-table td,
.border-table th {
border: 1px solid black;
}
.section-title {
margin-top: 1rem;
margin-bottom: 0rem;
}
.data-label {
width: 9rem;
}
.data-colon {
width: 15px; padding-left: 10px;
}
.description-label {
font-size: 0.7rem;
margin: 0;
}
</style>
</head>
<body style="font-family: Arial, sans-serif; line-height: 1.4">
<table style="width: 100%; border-collapse: collapse">
<tr>
<td style="text-align: center">
<img src="logo-1.png" alt="logo" style="height: 70px" />
</td>
<td style="text-align: center">
<div style="font-size: 14px; font-weight: bold">
PEMERINTAH PROVINSI JAWA TIMUR
</div>
<div style="font-size: 14px; font-weight: bold">
RUMAH SAKIT UMUM DAERAH Dr. SAIFUL ANWAR
</div>
<div style="font-size: 13px">
TERAKREDITASI KARS VERSI 2012 TINGKAT PARIPURNA
</div>
<div style="margin-top: 8px">
Jl. Jaksa Agung Suprapto No. 2 MALANG 65111
</div>
<div>Telp. (0341) 362101, Fax. (0341) 362110</div>
<div>Email: rsu-drsaifulanwar@jatimprov.go.id</div>
<div>Website: www.rsudsaifulanwar.jatimprov.go.id</div>
</td>
<td style="text-align: center">
<img src="logo-rssa.png" alt="logo" style="height: 70px" />
</td>
</tr>
</table>
<hr style="margin: 20px 0" />
<div style="
text-align: center;
font-weight: bold;
font-size: 1rem;
">
IDENTITAS PASIEN
</div>
<table style="
width: 100%;
margin-top: 20px;
border-collapse: collapse;
">
<tr>
<td style="width: 10rem;">
No. RM
</td>
<td class="data-colon">: </td>
<td>{{ .MedicalRecord }}</td>
<td style="width: 7rem;">
Ruang/Klinik
</td>
<td class="data-colon">: </td>
<td>{{ .Unit }}</td>
</tr>
<tr>
<td>
NIK
</td>
<td class="data-colon">: </td>
<td>{{ .NIK }}</td>
<td>
Kelas
</td>
<td class="data-colon">: </td>
<td>{{ .Class }}</td>
</tr>
<tr>
<td>
Nama
</td>
<td class="data-colon">: </td>
<td>{{ .Name }}</td>
<td>
DPJP
</td>
<td class="data-colon">: </td>
<td>{{ .Doctor_Name }}</td>
</tr>
</tr>
<td style="padding: 5px 0"></td>
</tr>
<tr>
<td>
Tempat/Tanggal Lahir
</td>
<td class="data-colon">: </td>
<td>{{ .BirthPlaceDate }}</td>
</tr>
<tr>
<td>
Jenis Kelamin
</td>
<td class="data-colon">: </td>
<td>{{ .Gender }}</td>
</tr>
<tr>
<td>
No. Telepon
</td>
<td class="data-colon">: </td>
<td>{{ .Phone }}</td>
</tr>
</table>
<hr style="margin: 20px 0" />
<h1 style="
text-align: center;
font-weight: bold;
font-size: 1rem;
margin: 0;
">
RESUME MEDIS
</h1>
<p style="
font-size: 0.7rem;
margin: 0;
text-align: center;
"><i>Medical Discharge Summary</i></p>
<p style="
font-size: 0.7rem;
margin-top: 1rem;
"><i>(Diisi oleh Dokter Penanggung Jawab Pelayanan)</i></p>
<table>
<tr>
<td class="data-label">
Tanggal Masuk
</td>
<td class="data-colon">: </td>
<td>{{ .StartedAt }}</td>
</tr>
<tr>
<td class="data-label">
Tanggal Keluar
</td>
<td class="data-colon">: </td>
<td>{{ .FinishedAt }}</td>
</tr>
<tr>
<td class="data-label">
Diagnosis Masuk
</td>
<td class="data-colon">: </td>
<td>{{ .DiagnosisIn }}</td>
</tr>
<tr>
<td class="data-label">
Diagnosis Keluar
</td>
<td class="data-colon">: </td>
<td>{{ .DiagnosisOut }}</td>
</tr>
</table>
<table class="border-table" style="margin-top: 0.7rem; page-break-inside: avoid !important;">
<thead>
<tr>
<th style="width: 1rem;">
No
</th>
<th>
Diagnosa
</th>
<th>
Dasar Diagnosa
</th>
<th>
Kode ICD-10
</th>
</tr>
</thead>
<tbody>
{{ $dataLen := len .Diagnosis }}
{{ if gt $dataLen 0 }}
<!-- If we have data, show all of it -->
{{ range $index, $diagnosis := .Diagnosis }}
<tr>
<td>{{ if eq $index 0 }}1{{ else if eq $index 1 }}2{{ else if eq $index 2 }}3{{ else if eq $index 3 }}4{{ else if eq $index 4 }}5{{ else }}{{ $index }}{{ end }}</td>
<td>{{ $diagnosis.DiagnosisName }}</td>
<td>{{ $diagnosis.Basis }}</td>
<td>{{ $diagnosis.ICD10 }}</td>
</tr>
{{ end }}
<!-- If data is less than 2, fill remaining rows -->
{{ if eq $dataLen 1 }}
<tr>
<td>2</td>
<td></td>
<td></td>
<td></td>
</tr>
{{ end }}
{{ else }}
<!-- If no data, show 2 empty rows -->
<tr>
<td>1</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>2</td>
<td></td>
<td></td>
<td></td>
</tr>
{{ end }}
</tbody>
</table>
<h4 class="section-title">Kajian Awal Medis</i></h4>
<p style="
font-size: 0.7rem;
margin-top: 0rem;
margin-bottom: 0.4rem;
"><i>(Diisi oleh Dokter Penanggung Jawab Pelayanan)</i></p>
<table>
<tr>
<td class="data-label">
Keluhan Utama
</td>
<td class="data-colon">: </td>
<td>{{ .MainComplaint }}</td>
</tr>
<tr>
<td class="data-label">
Riwayat Penyakit
</td>
<td class="data-colon">: </td>
<td>{{ .MedicalHistory }}</td>
</tr>
<tr>
<td class="data-label">
Pemeriksaan Fisik & Keadaan Umum
</td>
<td class="data-colon">: </td>
<td>{{ .PhysicalExamination }}</td>
</tr>
</table>
<h4 class="section-title">Pemeriksaan Penunjang</i></h4>
<table>
<tr>
<td class="data-label">
Pemeriksaan
</td>
<td class="data-colon">: </td>
<td>{{ .SupportingExamination }}</td>
</tr>
</table>
<table style="page-break-inside: avoid !important;"></table>
<tr>
<td>
<h4 class="section-title">Tindakan Medis</i></h4>
<table class="border-table" style="margin-top: 0.4rem;">
<thead>
<tr>
<th style="width: 1rem;">
No
</th>
<th>
Tindakan
</th>
<th>
Dasar Tindakan
</th>
<th>
Kode ICD 9-CM
</th>
</tr>
</thead>
<tbody>
{{ $dataLen := len .MedicalActions }}
{{ if gt $dataLen 0 }}
<!-- If we have data, show all of it -->
{{ range $index, $action := .MedicalActions }}
<tr>
<td>{{ if eq $index 0 }}1{{ else if eq $index 1 }}2{{ else if eq $index 2 }}3{{ else if eq $index 3 }}4{{ else if eq $index 4 }}5{{ else }}{{ $index }}{{ end }}</td>
<td>{{ $action.Action }}</td>
<td>{{ $action.Basis }}</td>
<td>{{ $action.ICD9 }}</td>
</tr>
{{ end }}
<!-- If data is less than 2, fill remaining rows -->
{{ if eq $dataLen 1 }}
<tr>
<td>2</td>
<td></td>
<td></td>
<td></td>
</tr>
{{ end }}
{{ else }}
<!-- If no data, show 2 empty rows -->
<tr>
<td>1</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>2</td>
<td></td>
<td></td>
<td></td>
</tr>
{{ end }}
</tbody>
</table>
<table style="margin: 0.7rem 0;">
<tr>
<td class="data-label">
Tindakan Medis
</td>
<td class="data-colon">: </td>
<td>{{ .MedicalAction }}</td>
</tr>
</table>
<table style="page-break-inside: avoid !important;">
<tr>
<td>
<h4 class="section-title">Konsultasi</i></h4>
</table>
<table class="border-table" style="margin-top: 0.4rem;">
<thead>
<tr>
<th style="width: 1rem;">No</th>
<th>Konsultasi</th>
<th>Jawaban Konsultasi</th>
</tr>
</thead>
<tbody>
{{ $dataLen := len .Consultations }}
{{ if gt $dataLen 0 }}
<!-- If we have data, show all of it -->
{{ range $index, $consultation := .Consultations }}
<tr>
<td>{{ if eq $index 0 }}1{{ else if eq $index 1 }}2{{ else if eq $index 2 }}3{{ else if eq $index 3 }}4{{ else if eq $index 4 }}5{{ else }}{{ $index }}{{ end }}</td>
<td>{{ $consultation.Consultation }}</td>
<td>{{ $consultation.ConsultationAnswer }}</td>
</tr>
{{ end }}
<!-- If data is less than 2, fill remaining rows -->
{{ if eq $dataLen 1 }}
<tr><td>2</td><td></td><td></td></tr>
{{ end }}
{{ else }}
<!-- If no data, show 2 empty rows -->
<tr><td>1</td><td></td><td></td></tr>
<tr><td>2</td><td></td><td></td></tr>
{{ end }}
</tbody>
</table>
</td>
</tr>
<h4 class="section-title">Terapi</i></h4>
<table>
<tr>
<td class="data-label">
Alergi
</td>
<td class="data-colon">: </td>
<td>
{{ .Allergy}}
</td>
</tr>
</table>
<table style="page-break-inside: avoid !important;">
<tr>
<td>
<h4 class="section-title" style="margin-top: 3rem;">Obat yang diberikan</h4>
<table class="border-table" style="margin-top: 0.4rem;">
<thead>
<tr>
<th>
Terapi (Farmakologi & Non Farmakologi) Selama Perawatan
</th>
<th>
Terapi (Farmakologi & Non Farmakologi) Waktu Pulang
</th>
</tr>
</thead>
<tbody>
{{ $dataLen := len .Medications }}
{{ if gt $dataLen 0 }}
<!-- If we have data, show all of it -->
{{ range .Medications }}
<tr>
<td>{{ .DuringTreatment }}</td>
<td>{{ .AtDischarge }}</td>
</tr>
{{ end }}
<!-- If data is less than 2, fill remaining rows -->
{{ if eq $dataLen 1 }}
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
{{ end }}
{{ else }}
<!-- If no data, show 2 empty rows -->
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
{{ end }}
</tbody>
</table>
</td>
</tr>
</table>
<h4 class="section-title">Kondisi saat Pulang</i></h4>
<table>
<tr>
<td class="data-label">Kesadaran</td>
<td class="data-colon">: </td>
<td>{{ .ConsciousnessLevel }}</td>
</tr>
<tr>
<td class="data-label">
Tanda Vital
<p class="description-label"><i>Vital sign</i></p>
</td>
<td class="data-colon">:</td>
</tr>
<tr>
<td colspan="3">
<table>
<tr>
<td style="width: 50%;">
<table cellspacing="0" cellpadding="0">
<tr>
<td>
<td class="data-label" style="text-align: right;"> Tekanan Darah
<p class="description-label"><i>Blood Pressure</i></p>
</td>
<td class="data-colon">: </td>
{{ if and .BloodPressure (ne .BloodPressure "0/0") (ne .BloodPressure "") }}
<td>{{ .BloodPressure }} mmHg</td>
{{ else }}
<td></td>
{{ end }}
<td>
</tr>
<tr>
<td>
<td class="data-label" style="text-align: right;">Suhu
<p class="description-label"><i>Temperatur</i></p>
</td>
</td>
<td class="data-colon">: </td>
{{ if ne .BodyTemperature 0.0 }}
<td>{{ .BodyTemperature }} C</td>
{{ else }}
<td></td>
{{ end }}
<td>
</tr>
<tr>
<td>
<td class="data-label" style="text-align: right;">Nadi
<p class="description-label"><i>Pulse</i></p>
</td>
<td class="data-colon">: </td>
{{ if ne .HeartRate 0.0 }}
<td>{{ .HeartRate }} x/Menit</td>
{{ else }}
<td></td>
{{ end }}
</td>
</tr>
</table>
</td>
<td>
<table cellspacing="0" cellpadding="0">
<tr>
<td>
<td class="data-label" style="text-align: right;">Frekuensi Nafas
<p class="description-label"><i>Respiratory rate</i></p>
</td>
</td>
<td class="data-colon">: </td>
{{ if ne .RespirationRate 0.0 }}
<td>{{ .RespirationRate }} x/Menit</td>
{{ else }}
<td></td>
{{ end }}
</td>
</tr>
<tr>
<td>
<td class="data-label" style="text-align: right;">Skala Nyeri
<p class="description-label"><i>Pain Scale</i></p>
</td>
</td>
<td class="data-colon">: </td>
<td>{{ .PainScale }}</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="data-label">Keadaan Keluar</td>
<td class="data-colon">: </td>
<td>{{ .ConditionOnDischarge }}</td>
</tr>
<tr>
<td class="data-label">Cara Keluar
<p class="description-label"><i>Patient discharge of hospital</i></p>
</td>
<td class="data-colon">:</td>
<td>{{ .DischargeMethod }}</td>
</tr>
</table>
<table style="
margin-top: 1rem;
">
<tr>
<td>
<h4 class="description-label">INSTRUKSI UNTUK TINDAK LANJUT</h4>
<p class="description-label"><i>Follow up Consultation to</i></p>
</td>
<td class="">
<h4 class="description-label">Kontrol Ke</h4>
<p class="description-label"><i>Follow up Consultation to</i></p>
</td>
<td class="">
<table>
<tr>
<td style="width: 4rem;">Fasyankes</td>
<td class="data-colon">: </td>
<td>{{ .NIK }}</td>
</tr>
<tr>
<td>Tanggal</td>
<td>: </td>
<td>{{ .NIK }}</td>
</tr>
<tr>
<td>Klinik</td>
<td>: </td>
<td>{{ .NIK }}</td>
</tr>
</table>
</td>
</tr>
<tr><td style="height: 1rem;"></td></tr>
<tr>
<td class="">
<h4 class="description-label">Dalam keadaan darurat dapat menghubungi</h4>
<p class="description-label"><i>In case of emergencycontact</i></p>
</td>
<td class="">
<h4 class="description-label">IGD</h4>
<p class="description-label"><i>(Accident & Emergency Instalation)</i></p>
</td>
<td class="">
<table>
<tr>
<td style="width: 4rem;">Telepon
<p class="description-label"><i>Phone</i></p>
</td>
<td class="data-colon">: </td>
<td>(0341) 362101</td>
</tr>
</table>
</td>
</tr>
<tr><td style="height: 1rem;"></td></tr>
<tr>
<td class="">
<h4 class="description-label">EDUKASI & RENCANA TINDAK LANJUT</h4>
<p class="description-label"><i>Follow up plan (if necessary)</i></p>
</td>
<td class="">
<h4 class="description-label"></h4>
<p class="description-label"><i>(bila diperlukan)</i></p>
</td>
</tr>
</table>
<table style="margin-top: 3rem;">
<tr>
<td></td>
<td style="width: 15rem;">
Malang, {{ .Date }}<br>
Dokter Penanggung Jawab Pelayanan
</td>
</tr>
<tr><td style="height: 7rem;"></td></tr>
<tr>
<td></td>
<td style="width: 15rem;">
({{ .Doctor_Name }})
</td>
</tr>
</table>
<div style="height: 3rem;"></div>
<hr style="margin: 20px 0" />
<p>*) Data dapat berubah setelah pasien pulang sesuai prosedur</p>
</body>
</html>
+167
View File
@@ -0,0 +1,167 @@
<html>
<head>
<meta charset="UTF-8" />
<style>
body {
padding: 2rem 3rem;
}
table {
width: 100%;
border-collapse: collapse
}
td {
vertical-align: top;
}
.border-table,
.border-table td,
.border-table th {
border: 1px solid black;
}
.section-title {
margin-top: 1rem;
margin-bottom: 0rem;
}
.data-label {
width: 9rem;
}
.data-colon {
width: 0.1234rem;
}
</style>
</head>
<body style="font-family: Arial, sans-serif; line-height: 1.4">
<!-- Tanggal Terbit (top-right) -->
<div style="
text-align: right;
margin-right: 2rem;
font-size: 0.95rem;
margin-top: 0.5rem;
">
Tanggal Terbit : {{ .IssuedDate }}
</div>
<!-- Patient Info Box -->
<table
style="
margin-top: 1rem;
margin-left: auto;
margin-right: 2rem; /* space from right like example */
border: 1px solid #000;
padding: 0.5rem 1rem;
border-collapse: separate;
border-spacing: 0.3rem 0.2rem;
width: auto;
"
>
<tr>
<td style="width: 9rem;"><b>No. RM</b></td>
<td class="data-colon">:</td>
<td><b>{{ .MedicalRecord }}</b></td>
</tr>
<tr>
<td><b>Nama</b></td>
<td class="data-colon">:</td>
<td><b>{{ .Name }}</b></td>
</tr>
<tr>
<td><b>Tanggal Lahir</b></td>
<td class="data-colon">:</td>
<td>{{ .BirthDate }}</td>
</tr>
</table>
<hr style="margin: 20px 0" />
<h1 style="
text-align: center;
font-weight: bold;
font-size: 1rem;
margin: 0;
">
FORM A
</h1>
<section>
<h4 class="section-title">Kajian Awal Medis:</i></h4>
<table style="margin-top: 0.3rem;">
{{ if gt (len .EarlyMedic) 0 }}
{{ range .EarlyMedic }}
<tr>
<td>
&#9745; {{ . }}
</td>
</tr>
{{ end }}
{{ else }}
<tr>
<td></td>
</tr>
{{ end }}
</table>
</section>
<section>
<h4 class="section-title">ASSESMEN:</h4>
<table style="margin-top: 0.3rem;">
<tr>
<td>
{{ .Assessment }}
</td>
</tr>
</table>
</section>
<section>
<h4 class="section-title">IDENTIFIKASI MASALAH:</h4>
<table style="margin-top: 0.3rem;">
{{ if gt (len .ProblemIdentification) 0 }}
{{ range .ProblemIdentification }}
<tr>
<td>
&#9745; {{ . }}
</td>
</tr>
{{ end }}
{{ else }}
<tr>
<td></td>
</tr>
{{ end }}
</table>
</section>
<section>
<h4 class="section-title">PERENCANAAN:</h4>
<table style="margin-top: 0.3rem;">
<tr>
<td>
{{ .Planning }}
</td>
</tr>
</table>
</section>
<table style="margin-top: 3rem;">
<tr>
<td></td>
<td style="text-align: center; width: 15rem;">
{{ .Date }}<br>
</td>
</tr>
<tr><td style="height: 7rem;"></td></tr>
<tr>
<td></td>
<td style="text-align: center; width: 15rem;">
({{ .Employee_Name }})
</td>
</tr>
</table>
<div style="height: 3rem;"></div>
</body>
</html>
+109
View File
@@ -0,0 +1,109 @@
<html>
<head>
<meta charset="UTF-8" />
<style>
body {
padding: 2rem 3rem;
}
table {
width: 100%;
border-collapse: collapse
}
td {
vertical-align: top;
}
.border-table,
.border-table td,
.border-table th {
border: 1px solid black;
}
.section-title {
margin-top: 1rem;
margin-bottom: 0rem;
}
.data-label {
width: 9rem;
}
.data-colon {
width: 0.1234rem;
}
</style>
</head>
<body style="font-family: Arial, sans-serif; line-height: 1.4">
<!-- Tanggal Terbit (top-right) -->
<div style="
text-align: right;
margin-right: 2rem;
font-size: 0.95rem;
margin-top: 0.5rem;
">
Tanggal Terbit : {{ .IssuedDate }}
</div>
<!-- Patient Info Box -->
<table
style="
margin-top: 1rem;
margin-left: auto;
margin-right: 2rem; /* space from right like example */
border: 1px solid #000;
padding: 0.5rem 1rem;
border-collapse: separate;
border-spacing: 0.3rem 0.2rem;
width: auto;
"
>
<tr>
<td style="width: 9rem;"><b>No. RM</b></td>
<td class="data-colon">:</td>
<td><b>{{ .MedicalRecord }}</b></td>
</tr>
<tr>
<td><b>Nama</b></td>
<td class="data-colon">:</td>
<td><b>{{ .Name }}</b></td>
</tr>
<tr>
<td><b>Tanggal Lahir</b></td>
<td class="data-colon">:</td>
<td>{{ .BirthDate }}</td>
</tr>
</table>
<table class="border-table"
style="margin-top: 1rem; width: 100%; table-layout: fixed;">
<tr>
<th style="width: 3rem; text-align:center;">NO</th>
<th style="width: 9rem; text-align:center;">Tanggal/jam</th>
<th style="width: auto;">
Implementasi, Monitoring, Fasilitasi, koordinasi, komunikasi dan kolaborasi,
advokasi, hasil pelayanan, Terminasi
</th>
<th style="width: 9rem; text-align:center;">MPP</th>
</tr>
{{ range .FormB }}
<tr>
<td style="text-align: center;">{{ .Number }}</td>
<td style="text-align: center;">{{ .Date }}</td>
<td style="white-space: normal; word-wrap: break-word;">
{{ .Value }}
</td>
<td style="text-align: center; white-space: normal;">
{{ .Employee_Name }}
</td>
</tr>
{{ end }}
</table>
<div style="height: 3rem;"></div>
</body>
</html>
+312
View File
@@ -0,0 +1,312 @@
<html>
<head>
<meta charset="UTF-8" />
<title>General Consent</title>
<style>
body {
padding: 2rem 3rem;
}
table {
width: 100%;
border-collapse: collapse
}
td {
vertical-align: top;
}
.border-table, .border-table td, .border-table th {
border: 1px solid black;
}
.section-title {
margin-top: 1rem;
margin-bottom: 0rem;
}
.data-label {
width: 9rem;
}
.data-colon {
width: 0.1234rem;
}
</style>
</head>
<body style="font-family: Arial, sans-serif; line-height: 1.4">
<table style="width: 100%; border-collapse: collapse">
<tr>
<td style="text-align: center">
<img src="logo-1.png" alt="logo" style="height: 70px" />
</td>
<td style="text-align: center">
<div style="font-size: 14px; font-weight: bold">
PEMERINTAH PROVINSI JAWA TIMUR
</div>
<div style="font-size: 14px; font-weight: bold">
RUMAH SAKIT UMUM DAERAH Dr. SAIFUL ANWAR
</div>
<div style="font-size: 13px">
TERAKREDITASI KARS VERSI 2012 TINGKAT PARIPURNA
</div>
<div style="margin-top: 8px">
Jl. Jaksa Agung Suprapto No. 2 MALANG 65111
</div>
<div>Telp. (0341) 362101, Fax. (0341) 362110</div>
<div>Email: rsu-drsaifulanwar@jatimprov.go.id</div>
<div>Website: www.rsudsaifulanwar.jatimprov.go.id</div>
</td>
<td style="text-align: center">
<img src="logo-rssa.png" alt="logo" style="height: 70px" />
</td>
</tr>
</table>
<hr style="margin: 20px 0" />
<div style="position: relative;">
<h1 style="
text-align: center;
font-weight: bold;
font-size: 1rem;
margin: 0;
">
Protokol Terapi
</h1>
<p style="
margin: 0;
text-align: center;
">Layanan Kedokteran Fisik dan Rehabilitasi
</p>
<div style="padding-inline: 0.5rem;text-align: center;border: 1px solid black;position: absolute;right: 0;top: 0;">
Terapi Ke <br><br>
{{ .Repalcable }}
</div>
</div>
<table class="border-table" style="margin-top: 2rem;">
<tr>
<td style="width: 7rem;">
No RM
</td>
<td>{{ .Repalcable }}</td>
</tr>
<tr>
<td style="width: 7rem;">
Nama Pasien
</td>
<td>{{ .Repalcable }}</td>
</tr>
<tr>
<td style="width: 7rem;">
Tanggal Lahir
</td>
<td>{{ .Repalcable }}</td>
</tr>
<tr>
<td style="width: 7rem;">
Diagnosa
</td>
<td>{{ .Repalcable }}</td>
</tr>
<tr>
<td style="width: 7rem;">
Permintaan Terapi
</td>
<td>{{ .Repalcable }}</td>
</tr>
<tr>
<td style="width: 7rem;">
Frekuensi Terapi
</td>
<td style="padding-left: 0.5rem;">
2 x Per Minggu &emsp; &emsp; &emsp;
Evaluasi: 1 Bulan
</td>
</tr>
<tr>
<td style="width: 7rem;">
Target Terapi
</td>
<td>{{ .Repalcable }}</td>
</tr>
<tr>
<td style="width: 7rem;">
Waktu Mencapai Target
</td>
<td>{{ .Repalcable }}</td>
</tr>
</table>
<table class="border-table" style="margin-top: 1rem;">
<tr>
<th style="width: 2rem;">
NO
</th>
<th>
Tanggal
</th>
<th>
Dokter
</th>
<th>
Fisioterapi
</th>
<th>
Terapi Wicara
</th>
<th>
Okupansi Terapi
</th>
<th>
Ortotik Prostetik
</th>
<th>
PSM
</th>
<th>
TTD Pasien
</th>
</tr>
<tr>
<td style="height: 3rem;text-align: center;">
1
</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
</tr>
<tr>
<td style="height: 3rem;text-align: center;">
2
</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
</tr>
<tr>
<td style="height: 3rem;text-align: center;">
3
</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
</tr>
<tr>
<td style="height: 3rem;text-align: center;">
4
</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
</tr>
<tr>
<td style="height: 3rem;text-align: center;">
5
</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
</tr>
<tr>
<td style="height: 3rem;text-align: center;">
6
</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
</tr>
<tr>
<td style="height: 3rem;text-align: center;">
7
</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
</tr>
<tr>
<td style="height: 3rem;text-align: center;">
8
</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td>
</tr>
</table>
<table class="border-table" style="margin-top: 1rem;">
<tr>
<td style="height: 2rem;width: 7rem;">
Evaluasi
</td>
<td>{{ .Repalcable }}</td>
</tr>
<tr>
<td style="width: 7rem;">
Rencana Selanjutnya
</td>
<td>{{ .Repalcable }}</td>
</tr>
</table>
<table style="margin-top: 2rem;">
<tr>
<td></td>
<td style="width: 15rem;">
Malang,<br>
Cap dan TTD Dr. SpKFR
</td>
</tr>
<tr><td style="height: 6rem;"></td></tr>
<tr>
<td></td>
<td style="height: 10rem;width: 15rem;">
(........................................................)
</td>
</tr>
</table>
<div style="height: 3rem;"></div>
</body>
</html>
+217
View File
@@ -0,0 +1,217 @@
<html>
<head>
<meta charset="UTF-8" />
<title>General Consent</title>
<style>
body {
padding: 2rem 3rem;
}
table {
width: 100%;
border-collapse: collapse
}
td {
vertical-align: top;
}
.border-table, .border-table td, .border-table th {
border: 1px solid black;
}
.section-title {
margin-top: 1rem;
margin-bottom: 0rem;
}
.data-label {
width: 9rem;
}
.data-colon {
width: 0.1234rem;
}
</style>
</head>
<body style="font-family: Arial, sans-serif; line-height: 1.4">
<table style="width: 100%; border-collapse: collapse">
<tr>
<td style="text-align: center">
<img src="logo-1.png" alt="logo" style="height: 70px" />
</td>
<td style="text-align: center">
<div style="font-size: 14px; font-weight: bold">
PEMERINTAH PROVINSI JAWA TIMUR
</div>
<div style="font-size: 14px; font-weight: bold">
RUMAH SAKIT UMUM DAERAH Dr. SAIFUL ANWAR
</div>
<div style="font-size: 13px">
TERAKREDITASI KARS VERSI 2012 TINGKAT PARIPURNA
</div>
<div style="margin-top: 8px">
Jl. Jaksa Agung Suprapto No. 2 MALANG 65111
</div>
<div>Telp. (0341) 362101, Fax. (0341) 362110</div>
<div>Email: rsu-drsaifulanwar@jatimprov.go.id</div>
<div>Website: www.rsudsaifulanwar.jatimprov.go.id</div>
</td>
</tr>
</table>
<hr style="margin: 20px 0" />
<table class="border-table" style="margin-top: 1rem;">
<tr>
<td style="width: 7rem;">
No RM:
</td>
<td>{{ .Repalcable }}</td>
</tr>
<tr>
<td style="width: 7rem;">
Nama Pasien
</td>
<td>{{ .Repalcable }}</td>
</tr>
<tr>
<td style="width: 7rem;">
Diagnosa
</td>
<td>{{ .Repalcable }}</td>
</tr>
<tr>
<td style="width: 7rem;min-height: 6rem;">
Permintaan Terapi
</td>
<td>{{ .Repalcable }}</td>
</tr>
</table>
<table class="border-table" style="margin-top: 1rem;">
<tr>
<th rowspan="2" style="width: 17rem;">
PELAKSANAAN PROGRAM
</th>
<th rowspan="2">
Tanggal
</th>
<th colspan="3">
TTD
</th>
</tr>
<tr>
<th>
PASIEN
</th>
<th>
DOKTER
</th>
<th>
TERAPIS
</th>
</tr>
<tr>
<td style="height: 2rem;padding-left: 0.5rem;">1. {{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td><td></td><td></td><td></td>
</tr>
<tr>
<td style="height: 2rem;padding-left: 0.5rem;">2. {{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td><td></td><td></td><td></td>
</tr>
<tr>
<td style="height: 2rem;padding-left: 0.5rem;">3. {{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td><td></td><td></td><td></td>
</tr>
<tr>
<td style="height: 2rem;padding-left: 0.5rem;">4. {{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td><td></td><td></td><td></td>
</tr>
<tr>
<td style="height: 2rem;padding-left: 0.5rem;">5. {{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td><td></td><td></td><td></td>
</tr>
<tr>
<td style="height: 2rem;padding-left: 0.5rem;">6. {{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td><td></td><td></td><td></td>
</tr>
<tr>
<td style="height: 2rem;padding-left: 0.5rem;">7. {{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td><td></td><td></td><td></td>
</tr>
<tr>
<td style="height: 2rem;padding-left: 0.5rem;">8. {{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td><td></td><td></td><td></td>
</tr>
<tr>
<td style="height: 2rem;padding-left: 0.5rem;">9. {{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td><td></td><td></td><td></td>
</tr>
<tr>
<td style="height: 2rem;padding-left: 0.5rem;">10. {{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td><td></td><td></td><td></td>
</tr>
<tr>
<td style="height: 2rem;padding-left: 0.5rem;">11. {{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td><td></td><td></td><td></td>
</tr>
<tr>
<td style="height: 2rem;padding-left: 0.5rem;">12. {{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td><td></td><td></td><td></td>
</tr>
<tr>
<td style="height: 2rem;padding-left: 0.5rem;">13. {{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td><td></td><td></td><td></td>
</tr>
<tr>
<td style="height: 2rem;padding-left: 0.5rem;">14. {{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td><td></td><td></td><td></td>
</tr>
<tr>
<td style="height: 2rem;padding-left: 0.5rem;">15. {{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td><td></td><td></td><td></td>
</tr>
<tr>
<td style="height: 2rem;padding-left: 0.5rem;">16. {{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td><td></td><td></td><td></td>
</tr>
<tr>
<td style="height: 2rem;padding-left: 0.5rem;">17. {{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td><td></td><td></td><td></td>
</tr>
<tr>
<td style="height: 2rem;padding-left: 0.5rem;">18. {{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td><td></td><td></td><td></td>
</tr>
<tr>
<td style="height: 2rem;padding-left: 0.5rem;">19. {{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td><td></td><td></td><td></td>
</tr>
<tr>
<td style="height: 2rem;padding-left: 0.5rem;">20. {{ .Repalcable }}</td>
<td>{{ .Repalcable }}</td><td></td><td></td><td></td>
</tr>
</table>
<table style="margin-top: 2rem;">
<tr>
<td></td>
<td style="width: 15rem;">
Tempat & Tanggal<br>
Cap dan TTD Dr. SpKFR
</td>
</tr>
<tr><td style="height: 6rem;"></td></tr>
<tr>
<td></td>
<td style="width: 15rem;">
(.................................................)
</td>
</tr>
</table>
<div style="height: 3rem;"></div>
</body>
</html>
+241
View File
@@ -0,0 +1,241 @@
<html>
<head>
<meta charset="UTF-8" />
<title>General Consent</title>
<style>
body {
padding: 2rem 3rem;
}
table {
width: 100%;
border-collapse: collapse
}
td {
vertical-align: top;
}
.border-table,
.border-table td,
.border-table th {
border: 1px solid black;
}
.section-title {
margin-top: 1rem;
margin-bottom: 0rem;
}
.data-label {
width: 9rem;
}
.data-colon {
width: 0.1234rem;
}
</style>
</head>
<body style="font-family: Arial, sans-serif; line-height: 1.4">
<table style="width: 100%; border-collapse: collapse">
<tr>
<td style="text-align: center">
<img src="logo-1.png" alt="logo" style="height: 70px" />
</td>
<td style="text-align: center">
<div style="font-size: 14px; font-weight: bold">
PEMERINTAH PROVINSI JAWA TIMUR
</div>
<div style="font-size: 14px; font-weight: bold">
RUMAH SAKIT UMUM DAERAH Dr. SAIFUL ANWAR
</div>
<div style="font-size: 13px">
TERAKREDITASI KARS VERSI 2012 TINGKAT PARIPURNA
</div>
<div style="margin-top: 8px">
Jl. Jaksa Agung Suprapto No. 2 MALANG 65111
</div>
<div>Telp. (0341) 362101, Fax. (0341) 362110</div>
<div>Email: rsu-drsaifulanwar@jatimprov.go.id</div>
<div>Website: www.rsudsaifulanwar.jatimprov.go.id</div>
</td>
</tr>
</table>
<hr style="margin: 20px 0" />
<div style="position: relative;">
<h1 style="
text-align: center;
font-weight: bold;
font-size: 1rem;
margin: 0;
">
Lembar Formulir Rawat Jalan <br> Layanan Kedokteran Fisik dan Rehabilitasi
</h1>
</div>
<div style="
margin-top: 1.5rem;
border: 1px solid black;
padding: 0.3rem;
">
<table style="margin-top: 0.3rem;margin-bottom: 0.3rem;">
<tr>
<td style="width: 19rem;"><b>I. Identitas Pasien</b></td>
<td style="width: 4rem;">No. RM</td>
<td class="data-colon">: </td>
<td>{{ .Repalcable }}</td>
</tr>
</table>
<table>
<tr>
<td style="width: 10rem; height: 1.5rem;">
Nama Pasien
</td>
<td class="data-colon">: </td>
<td>{{ .Repalcable }}</td>
</tr>
<tr>
<td style="height: 1.5rem;">
Tanggal Lahir
</td>
<td class="data-colon">: </td>
<td>{{ .Repalcable }}</td></tr>
<tr>
<td style="height: 1.5rem;">
Aalamat
</td>
<td class="data-colon">: </td>
<td>{{ .Repalcable }}</td></tr>
<tr>
<td style="height: 1.5rem;">
Telp / HP
</td>
<td class="data-colon">: </td>
<td>{{ .Repalcable }}</td></tr>
<tr>
<td style="height: 1.5rem;">
Hubungan dengan Tertanggung
</td>
<td class="data-colon">: </td>
<td>
&#9745; Suami / Istri
&emsp;&emsp;
&#9634; Anak
</td>
</tr>
</table>
</div>
<div style="
margin-top: 1.5rem;
border: 1px solid black;
padding: 0.3rem;
">
<table style="margin-top: 0.3rem;margin-bottom: 0.3rem;">
<tr>
<td style="width: 19rem;"><b>II. Diisi oleh Dokter SpKFR</b></td>
</tr>
</table>
<table>
<tr>
<td style="width: 14rem; height: 1.5rem;">
Tanggal Pelayanan
</td>
<td class="data-colon">: </td>
<td>{{ .Repalcable }}</td></tr>
</tr>
<tr>
<td style="height: 1.5rem;">
Anamnesa
</td>
<td class="data-colon">: </td>
<td>{{ .Repalcable }}</td></tr>
</tr>
<tr>
<td style="height: 1.5rem;">
Pemeriksaan Fisik dan Uji Fungsi
</td>
<td class="data-colon">: </td>
<td>{{ .Repalcable }}</td></tr>
</tr>
<tr>
<td style="height: 1.5rem;">
Diagnosis Medis (ICD-10)
</td>
<td class="data-colon">: </td>
<td>{{ .Repalcable }}</td></tr>
</tr>
<tr>
<td style="height: 1.5rem;">
Diagnosis Fungsi (ICD-10)
</td>
<td class="data-colon">: </td>
<td>{{ .Repalcable }}</td></tr>
</tr>
<tr>
<td style="height: 1.5rem;">
Pemeriksaan Penunjang
</td>
<td class="data-colon">: </td>
<td>{{ .Repalcable }}</td></tr>
</tr>
<tr>
<td style="height: 1.5rem;">
Tata Laksana KFR (ICD 9 CM)
</td>
<td class="data-colon">: </td>
<td>{{ .Repalcable }}</td></tr>
</tr>
<tr>
<td style="height: 1.5rem;">
Anjuran
</td>
<td class="data-colon">: </td>
<td>{{ .Repalcable }}</td></tr>
</tr>
<tr>
<td style="height: 1.5rem;">
Evaluasi
</td>
<td class="data-colon">: </td>
<td>{{ .Repalcable }}</td></tr>
</tr>
<tr>
<td style="height: 1.5rem;">
Suspek Penyakit Akibat Kerja
</td>
<td class="data-colon">: </td>
<td>
&#9745; Ya &emsp; ( {{ .Repalcable }} )
<br>
&#9634; Tidak
</td>
</tr>
</table>
</div>
<table style="margin-top: 2rem;">
<tr>
<td style="text-align: center;">
TTD Pasien
</td>
<td style="text-align: center;">
Tempat & Tanggal<br>
Cap dan TTD Dr. SpKFR
</td>
</tr>
<tr><td style="height: 6rem;"></td></tr>
<tr>
<td style="height: 10rem;text-align: center;">
(........................................................)
</td>
<td style="height: 10rem;text-align: center;">
(........................................................)
</td>
</tr>
</table>
<div style="height: 3rem;"></div>
</body>
</html>
-3
View File
@@ -57,9 +57,6 @@ corsCfg:
satuSehatCfg:
host: localhost:8200
bpjsCfg:
host: localhost:8200
corsCfg:
allowedOrigins:
- http://example.com
+11 -4
View File
@@ -57,13 +57,20 @@ corsCfg:
satuSehatCfg:
host: localhost:8200
bpjsCfg:
host: localhost:8200
corsCfg:
allowedOrigins:
- http://example.com
allowedMethod:
bpjsCfg:
baseUrl:
baseUrl:
syncUrlCfg:
enable: false
targetHost:
prefix: new-to-old
source: old-app
secretKey: new-world-order!!
docsCfg:
path: ../../assets/docs/
+4
View File
@@ -16,3 +16,7 @@ apply:
## Calculate the schema hash
hash:
atlas migrate hash
## Apply non-linear
apply-non-linear:
atlas migrate apply --env $(ENV) --exec-order non-linear
@@ -0,0 +1,11 @@
-- Create "MedicineForm" table
CREATE TABLE "public"."MedicineForm" (
"Id" serial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Code" character varying(20) NULL,
"Name" character varying(50) NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "uni_MedicineForm_Code" UNIQUE ("Code")
);
@@ -0,0 +1,2 @@
-- Modify "Medicine" table
ALTER TABLE "public"."Medicine" ADD COLUMN "MedicineForm_Code" character varying(20) NULL, ADD CONSTRAINT "fk_Medicine_MedicineForm" FOREIGN KEY ("MedicineForm_Code") REFERENCES "public"."MedicineForm" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION;
@@ -0,0 +1,2 @@
-- Modify "TherapyProtocol" table
ALTER TABLE "public"."TherapyProtocol" ADD COLUMN "Status_Code" character varying(10) NULL;
@@ -0,0 +1,2 @@
-- Rename a column from "Count" to "Quantity"
ALTER TABLE "public"."DeviceOrderItem" RENAME COLUMN "Count" TO "Quantity";
@@ -0,0 +1,2 @@
-- Modify "GeneralConsent" table
ALTER TABLE "public"."GeneralConsent" ADD COLUMN "FileUrl" character varying(1024) NULL;
@@ -0,0 +1,2 @@
-- Modify "GeneralConsent" table
ALTER TABLE "public"."GeneralConsent" DROP CONSTRAINT "fk_GeneralConsent_Encounter", ADD CONSTRAINT "fk_Encounter_GeneralConsents" FOREIGN KEY ("Encounter_Id") REFERENCES "public"."Encounter" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION;
@@ -0,0 +1,4 @@
-- Modify "Person" table
ALTER TABLE "public"."Person" DROP CONSTRAINT "uni_Person_ResidentIdentityNumber", ALTER COLUMN "ResidentIdentityNumber" TYPE text;
-- Create index "idx_resident_identity" to table: "Person"
CREATE UNIQUE INDEX "idx_resident_identity" ON "public"."Person" ("ResidentIdentityNumber") WHERE ("DeletedAt" IS NULL);
@@ -0,0 +1,6 @@
-- Modify "Person" table
ALTER TABLE "public"."Person" DROP CONSTRAINT "uni_Person_DrivingLicenseNumber", DROP CONSTRAINT "uni_Person_PassportNumber", ALTER COLUMN "ResidentIdentityNumber" TYPE character varying(16), ALTER COLUMN "Nationality" TYPE character varying(50);
-- Create index "idx_driver_license" to table: "Person"
CREATE UNIQUE INDEX "idx_driver_license" ON "public"."Person" ("DrivingLicenseNumber") WHERE ("DeletedAt" IS NULL);
-- Create index "idx_passport" to table: "Person"
CREATE UNIQUE INDEX "idx_passport" ON "public"."Person" ("PassportNumber") WHERE ("DeletedAt" IS NULL);
@@ -0,0 +1,2 @@
-- Modify "VclaimSepPrint" table
ALTER TABLE "public"."VclaimSepPrint" DROP CONSTRAINT "fk_VclaimSepPrint_VclaimSep", ADD CONSTRAINT "fk_VclaimSep_Prints" FOREIGN KEY ("VclaimSep_Number") REFERENCES "public"."VclaimSep" ("Number") ON UPDATE NO ACTION ON DELETE NO ACTION;
@@ -0,0 +1,15 @@
-- Create "VclaimSepControlLetter" table
CREATE TABLE "public"."VclaimSepControlLetter" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"VclaimSep_Number" character varying(19) NULL,
"Number" character varying(20) NULL,
"Value" text NULL,
"FileUrl" character varying(1024) NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "uni_VclaimSepControlLetter_FileUrl" UNIQUE ("FileUrl"),
CONSTRAINT "uni_VclaimSepControlLetter_Number" UNIQUE ("Number"),
CONSTRAINT "fk_VclaimSep_ControlLetters" FOREIGN KEY ("VclaimSep_Number") REFERENCES "public"."VclaimSep" ("Number") ON UPDATE NO ACTION ON DELETE NO ACTION
);
@@ -0,0 +1,2 @@
-- Modify "McuOrderItem" table
ALTER TABLE "public"."McuOrderItem" ADD COLUMN "Note" character varying(1024) NULL;
@@ -0,0 +1,11 @@
-- Create "Resume" table
CREATE TABLE "public"."Resume" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Encounter_Id" bigint NOT NULL,
"Value" text NULL,
"FileUrl" character varying(1024) NULL,
PRIMARY KEY ("Id")
);
@@ -0,0 +1,14 @@
-- Create "VclaimReference" table
CREATE TABLE "public"."VclaimReference" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Encounter_Id" bigint NULL,
"Date" timestamptz NULL,
"SrcCode" text NULL,
"SrcName" text NULL,
"Number" text NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "fk_Encounter_VclaimReference" FOREIGN KEY ("Encounter_Id") REFERENCES "public"."Encounter" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION
);
@@ -0,0 +1,2 @@
-- Modify "Resume" table
ALTER TABLE "public"."Resume" ADD COLUMN "Doctor_Code" character varying(10) NULL, ADD COLUMN "Status_Code" character varying(10) NOT NULL, ADD CONSTRAINT "fk_Resume_Doctor" FOREIGN KEY ("Doctor_Code") REFERENCES "public"."Doctor" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION;
@@ -0,0 +1,2 @@
-- Modify "Encounter" table
ALTER TABLE "public"."Encounter" ADD COLUMN "Responsible_Nurse_Code" character varying(20) NULL, ADD CONSTRAINT "fk_Encounter_Responsible_Nurse" FOREIGN KEY ("Responsible_Nurse_Code") REFERENCES "public"."Nurse" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION;
@@ -0,0 +1,2 @@
-- Modify "InternalReference" table
ALTER TABLE "public"."InternalReference" ADD COLUMN "SrcDoctor_Code" character varying(20) NULL, ADD COLUMN "SrcNurse_Code" character varying(20) NULL, ADD COLUMN "Nurse_Code" character varying(20) NULL, ADD CONSTRAINT "fk_InternalReference_Nurse" FOREIGN KEY ("Nurse_Code") REFERENCES "public"."Nurse" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION, ADD CONSTRAINT "fk_InternalReference_SrcDoctor" FOREIGN KEY ("SrcDoctor_Code") REFERENCES "public"."Doctor" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION, ADD CONSTRAINT "fk_InternalReference_SrcNurse" FOREIGN KEY ("SrcNurse_Code") REFERENCES "public"."Nurse" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION;
@@ -0,0 +1,13 @@
-- Create "Screening" table
CREATE TABLE "public"."Screening" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Encounter_Id" bigint NULL,
"Employee_Id" bigint NULL,
"Type" text NULL,
"Value" text NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "fk_Screening_Employee" FOREIGN KEY ("Employee_Id") REFERENCES "public"."Employee" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION
);
@@ -0,0 +1,19 @@
-- Create "ActionReport" table
CREATE TABLE "public"."ActionReport" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Encounter_Id" bigint NULL,
"Date" character varying(20) NOT NULL,
"Doctor_Code" character varying(10) NULL,
"Operator_Employe_Id" bigint NULL,
"Assistant_Employe_Id" bigint NULL,
"Instrumentor_Employe_Id" bigint NULL,
"Diagnose" character varying(1024) NULL,
"Procedures" character varying(10240) NULL,
"Nurse_Code" character varying(10) NULL,
"Value" text NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "fk_ActionReport_Encounter" FOREIGN KEY ("Encounter_Id") REFERENCES "public"."Encounter" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION
);
@@ -0,0 +1,2 @@
-- Modify "ActionReport" table
ALTER TABLE "public"."ActionReport" DROP COLUMN "Date", DROP COLUMN "Procedures";
@@ -0,0 +1,2 @@
-- Modify "ActionReport" table
ALTER TABLE "public"."ActionReport" ADD COLUMN "Date" timestamptz NOT NULL;
@@ -0,0 +1,2 @@
-- Modify "ActionReport" table
ALTER TABLE "public"."ActionReport" ADD CONSTRAINT "fk_ActionReport_Instrumentor_Employe" FOREIGN KEY ("Instrumentor_Employe_Id") REFERENCES "public"."Employee" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION, ADD CONSTRAINT "fk_ActionReport_Nurse" FOREIGN KEY ("Nurse_Code") REFERENCES "public"."Nurse" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION, ADD CONSTRAINT "fk_ActionReport_Operator_Employe" FOREIGN KEY ("Operator_Employe_Id") REFERENCES "public"."Employee" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION;
@@ -0,0 +1,2 @@
-- Modify "ActionReport" table
ALTER TABLE "public"."ActionReport" ADD CONSTRAINT "fk_ActionReport_Doctor" FOREIGN KEY ("Doctor_Code") REFERENCES "public"."Doctor" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION;
@@ -0,0 +1,2 @@
-- Modify "Screening" table
ALTER TABLE "public"."Screening" ADD COLUMN "Status" text NULL, ADD COLUMN "FileUrl" character varying(1024) NULL;
@@ -0,0 +1,2 @@
-- Modify "Item" table
ALTER TABLE "public"."Item" ADD COLUMN "BuyingPrice" numeric NULL, ADD COLUMN "SellingPrice" numeric NULL;
@@ -0,0 +1,2 @@
-- Modify "Soapi" table
ALTER TABLE "public"."Soapi" ALTER COLUMN "TypeCode" TYPE character varying(15);
@@ -0,0 +1,101 @@
-- Modify "Consultation" table
ALTER TABLE "public"."Consultation" ALTER COLUMN "DstUnit_Code" TYPE character varying(20);
-- Modify "ControlLetter" table
ALTER TABLE "public"."ControlLetter" ALTER COLUMN "Unit_Code" TYPE character varying(20), ALTER COLUMN "Specialist_Code" TYPE character varying(20), ALTER COLUMN "Subspecialist_Code" TYPE character varying(20);
-- Modify "Encounter" table
ALTER TABLE "public"."Encounter" ALTER COLUMN "Specialist_Code" TYPE character varying(20), ALTER COLUMN "Subspecialist_Code" TYPE character varying(20), ALTER COLUMN "Unit_Code" TYPE character varying(20);
-- Modify "Chemo" table
ALTER TABLE "public"."Chemo" ALTER COLUMN "SrcUnit_Code" TYPE character varying(20);
-- Modify "Installation" table
ALTER TABLE "public"."Installation" ALTER COLUMN "Code" TYPE character varying(20);
-- Modify "InternalReference" table
ALTER TABLE "public"."InternalReference" ALTER COLUMN "Unit_Code" TYPE character varying(20);
-- Modify "PracticeSchedule" table
ALTER TABLE "public"."PracticeSchedule" ALTER COLUMN "Unit_Code" TYPE character varying(20);
-- Create "DevicePackage" table
CREATE TABLE "public"."DevicePackage" (
"Id" serial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Code" character varying(20) NOT NULL,
"Name" character varying(50) NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "uni_DevicePackage_Code" UNIQUE ("Code")
);
-- Create "DevicePackageItem" table
CREATE TABLE "public"."DevicePackageItem" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"DevicePackage_Code" character varying(20) NOT NULL,
"Device_Code" character varying(20) NOT NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "fk_DevicePackageItem_Device" FOREIGN KEY ("Device_Code") REFERENCES "public"."Device" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT "fk_DevicePackageItem_DevicePackage" FOREIGN KEY ("DevicePackage_Code") REFERENCES "public"."DevicePackage" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION
);
-- Create "MaterialPackage" table
CREATE TABLE "public"."MaterialPackage" (
"Id" serial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Code" character varying(20) NOT NULL,
"Name" character varying(50) NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "uni_MaterialPackage_Code" UNIQUE ("Code")
);
-- Create "MaterialPackageItem" table
CREATE TABLE "public"."MaterialPackageItem" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"MaterialPackage_Code" character varying(20) NOT NULL,
"Material_Code" character varying(20) NOT NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "fk_MaterialPackageItem_Material" FOREIGN KEY ("Material_Code") REFERENCES "public"."Material" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT "fk_MaterialPackageItem_MaterialPackage" FOREIGN KEY ("MaterialPackage_Code") REFERENCES "public"."MaterialPackage" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION
);
-- Modify "Infra" table
ALTER TABLE "public"."Infra" ALTER COLUMN "Code" TYPE character varying(20), ALTER COLUMN "InfraGroup_Code" TYPE character varying(20), ALTER COLUMN "Parent_Code" TYPE character varying(20);
-- Modify "Specialist" table
ALTER TABLE "public"."Specialist" ALTER COLUMN "Code" TYPE character varying(20), ALTER COLUMN "Unit_Code" TYPE character varying(20);
-- Modify "Subspecialist" table
ALTER TABLE "public"."Subspecialist" ALTER COLUMN "Code" TYPE character varying(20), ALTER COLUMN "Specialist_Code" TYPE character varying(20);
-- Modify "Unit" table
ALTER TABLE "public"."Unit" ALTER COLUMN "Code" TYPE character varying(20), ALTER COLUMN "Installation_Code" TYPE character varying(20);
-- Create "ProcedureRoom" table
CREATE TABLE "public"."ProcedureRoom" (
"Id" serial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Code" character varying(20) NULL,
"Infra_Code" character varying(20) NULL,
"Type_Code" character varying(10) NULL,
"Unit_Code" character varying(20) NULL,
"Specialist_Code" character varying(20) NULL,
"Subspecialist_Code" character varying(20) NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "uni_ProcedureRoom_Code" UNIQUE ("Code"),
CONSTRAINT "uni_ProcedureRoom_Infra_Code" UNIQUE ("Infra_Code"),
CONSTRAINT "fk_ProcedureRoom_Infra" FOREIGN KEY ("Infra_Code") REFERENCES "public"."Infra" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT "fk_ProcedureRoom_Specialist" FOREIGN KEY ("Specialist_Code") REFERENCES "public"."Specialist" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT "fk_ProcedureRoom_Subspecialist" FOREIGN KEY ("Subspecialist_Code") REFERENCES "public"."Subspecialist" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT "fk_ProcedureRoom_Unit" FOREIGN KEY ("Unit_Code") REFERENCES "public"."Unit" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION
);
-- Create "ProcedureRoomOrder" table
CREATE TABLE "public"."ProcedureRoomOrder" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Encounter_Id" bigint NULL,
"Infra_Code" character varying(20) NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "fk_ProcedureRoomOrder_ProcedureRoom" FOREIGN KEY ("Infra_Code") REFERENCES "public"."ProcedureRoom" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION
);
-- Drop "Room" table
DROP TABLE "public"."Room";
@@ -0,0 +1,2 @@
-- Modify "ProcedureRoomOrder" table
ALTER TABLE "public"."ProcedureRoomOrder" ADD COLUMN "MaterialPackage_Code" character varying(20) NULL, ADD CONSTRAINT "fk_ProcedureRoomOrder_MaterialPackage" FOREIGN KEY ("MaterialPackage_Code") REFERENCES "public"."MaterialPackage" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION;
@@ -0,0 +1,2 @@
-- Modify "ProcedureRoomOrder" table
ALTER TABLE "public"."ProcedureRoomOrder" ADD COLUMN "Status_Code" character varying(20) NULL;
@@ -0,0 +1,14 @@
-- Modify "MaterialPackageItem" table
ALTER TABLE "public"."MaterialPackageItem" ADD COLUMN "Count" integer NULL;
-- Create "ProcedureRoomOrderItem" table
CREATE TABLE "public"."ProcedureRoomOrderItem" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"ProcedureRoomOrder_Id" bigint NULL,
"ProcedureRoom_Code" character varying(20) NULL,
"Note" character varying(255) NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "fk_ProcedureRoomOrderItem_ProcedureRoom" FOREIGN KEY ("ProcedureRoom_Code") REFERENCES "public"."ProcedureRoom" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION
);
@@ -0,0 +1,4 @@
-- Modify "ProcedureRoomOrder" table
ALTER TABLE "public"."ProcedureRoomOrder" DROP COLUMN "Infra_Code";
-- Modify "ProcedureRoomOrderItem" table
ALTER TABLE "public"."ProcedureRoomOrderItem" ADD CONSTRAINT "fk_ProcedureRoomOrderItem_ProcedureRoomOrder" FOREIGN KEY ("ProcedureRoomOrder_Id") REFERENCES "public"."ProcedureRoomOrder" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION;
@@ -0,0 +1,23 @@
-- Modify "Chemo" table
ALTER TABLE "public"."Chemo" ADD COLUMN "Doctor_Code" character varying(20) NULL, ADD COLUMN "NextChemoDate" timestamptz NULL, ADD CONSTRAINT "fk_Chemo_Doctor" FOREIGN KEY ("Doctor_Code") REFERENCES "public"."Doctor" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION;
-- Rename a column from "Encounter_Id" to "Chemo_Id"
ALTER TABLE "public"."ChemoProtocol" RENAME COLUMN "Encounter_Id" TO "Chemo_Id";
-- Modify "ChemoProtocol" table
ALTER TABLE "public"."ChemoProtocol" DROP CONSTRAINT "fk_ChemoProtocol_Encounter", ALTER COLUMN "DurationUnit_Code" TYPE text, ADD COLUMN "Interval" bigint NULL, ADD COLUMN "Cycle" bigint NULL, ADD COLUMN "Series" integer NULL, ADD COLUMN "Status_Code" text NULL, ADD CONSTRAINT "fk_ChemoProtocol_Chemo" FOREIGN KEY ("Chemo_Id") REFERENCES "public"."Chemo" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION;
-- Create "ChemoPlan" table
CREATE TABLE "public"."ChemoPlan" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Parent_Id" bigint NULL,
"Protocol_Id" bigint NULL,
"SeriesNumber" integer NULL,
"CycleNumber" bigint NULL,
"PlanDate" timestamptz NULL,
"RealizationDate" timestamptz NULL,
"Notes" text NULL,
"Status" text NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "fk_ChemoPlan_Protocol" FOREIGN KEY ("Protocol_Id") REFERENCES "public"."ChemoProtocol" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION
);
@@ -0,0 +1,2 @@
-- Modify "ChemoPlan" table
ALTER TABLE "public"."ChemoPlan" DROP CONSTRAINT "fk_ChemoPlan_Protocol", ADD CONSTRAINT "fk_ChemoProtocol_ChemoPlans" FOREIGN KEY ("Protocol_Id") REFERENCES "public"."ChemoProtocol" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION;
@@ -0,0 +1,2 @@
-- Modify "ChemoProtocol" table
ALTER TABLE "public"."ChemoProtocol" ADD COLUMN "Patient_Id" bigint NULL;
@@ -0,0 +1,2 @@
-- Modify "ChemoProtocol" table
ALTER TABLE "public"."ChemoProtocol" ADD COLUMN "VerifiedAt" timestamptz NULL, ADD COLUMN "VerifiedBy_User_Id" bigint NULL, ADD CONSTRAINT "fk_ChemoProtocol_VerifiedBy" FOREIGN KEY ("VerifiedBy_User_Id") REFERENCES "public"."User" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION;
@@ -0,0 +1,26 @@
-- Create "ProcedureReport" table
CREATE TABLE "public"."ProcedureReport" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Encounter_Id" bigint NULL,
"Date" timestamptz NOT NULL,
"Doctor_Code" character varying(10) NULL,
"Operator_Name" text NULL,
"Assistant_Name" text NULL,
"Instrumentor_Name" text NULL,
"Diagnose" character varying(1024) NULL,
"Nurse_Name" character varying(10) NULL,
"Anesthesia_Doctor_Code" character varying(10) NULL,
"Anesthesia_Nurse_Name" text NULL,
"ProcedureValue" text NULL,
"ExecutionValue" text NULL,
"Type_Code" text NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "fk_ProcedureReport_Anesthesia_Doctor" FOREIGN KEY ("Anesthesia_Doctor_Code") REFERENCES "public"."Doctor" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT "fk_ProcedureReport_Doctor" FOREIGN KEY ("Doctor_Code") REFERENCES "public"."Doctor" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT "fk_ProcedureReport_Encounter" FOREIGN KEY ("Encounter_Id") REFERENCES "public"."Encounter" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION
);
-- Drop "ActionReport" table
DROP TABLE "public"."ActionReport";
@@ -0,0 +1,22 @@
-- Create "ApMcuOrder" table
CREATE TABLE "public"."ApMcuOrder" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"McuOrder_Id" smallint NULL,
"Substances" text NULL,
"Fictations" text NULL,
"Localization" text NULL,
"ClinicalDiagnoses" text NULL,
"Stadium" text NULL,
"ClinicalNotes" text NULL,
"PastHistory" text NULL,
"CurrentHistory" text NULL,
"PrevApMcu" text NULL,
"PrevApMcuNotes" text NULL,
"SupportingExams" text NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "uni_ApMcuOrder_McuOrder_Id" UNIQUE ("McuOrder_Id"),
CONSTRAINT "fk_ApMcuOrder_McuOrder" FOREIGN KEY ("McuOrder_Id") REFERENCES "public"."McuOrder" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION
);
@@ -0,0 +1,99 @@
-- Modify "ApMcuOrder" table
ALTER TABLE "public"."ApMcuOrder" DROP COLUMN "McuOrder_Id", ADD COLUMN "Encounter_Id" bigint NULL, ADD COLUMN "Number" bigint NULL, ADD COLUMN "Doctor_Code" character varying(20) NULL, ADD CONSTRAINT "uni_ApMcuOrder_Doctor_Code" UNIQUE ("Doctor_Code"), ADD CONSTRAINT "fk_ApMcuOrder_Doctor" FOREIGN KEY ("Doctor_Code") REFERENCES "public"."Doctor" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION, ADD CONSTRAINT "fk_ApMcuOrder_Encounter" FOREIGN KEY ("Encounter_Id") REFERENCES "public"."Encounter" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION;
-- Create "CpMcuOrder" table
CREATE TABLE "public"."CpMcuOrder" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Encounter_Id" bigint NULL,
"Number" bigint NULL,
"Doctor_Code" character varying(20) NULL,
"UrgencyLevel_Code" character varying(15) NOT NULL,
"OtherNotes" text NULL,
"ExamScheduleDate" timestamptz NULL,
"Resume" text NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "uni_CpMcuOrder_Doctor_Code" UNIQUE ("Doctor_Code"),
CONSTRAINT "fk_CpMcuOrder_Doctor" FOREIGN KEY ("Doctor_Code") REFERENCES "public"."Doctor" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT "fk_CpMcuOrder_Encounter" FOREIGN KEY ("Encounter_Id") REFERENCES "public"."Encounter" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION
);
-- Create "CpMcuOrderItem" table
CREATE TABLE "public"."CpMcuOrderItem" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"CpMcuOrder_Id" bigint NULL,
"McuSrc_Code" character varying(20) NULL,
"Note" character varying(1024) NULL,
"Result" text NULL,
"Status_Code" text NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "fk_CpMcuOrderItem_CpMcuOrder" FOREIGN KEY ("CpMcuOrder_Id") REFERENCES "public"."CpMcuOrder" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT "fk_CpMcuOrderItem_McuSrc" FOREIGN KEY ("McuSrc_Code") REFERENCES "public"."McuSrc" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION
);
-- Create "MicroMcuOrder" table
CREATE TABLE "public"."MicroMcuOrder" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Encounter_Id" bigint NULL,
"Number" bigint NULL,
"Doctor_Code" character varying(20) NULL,
"Stage_Code" character varying(10) NOT NULL,
"AxillaryTemp" numeric NULL,
"OtherNotes" text NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "uni_MicroMcuOrder_Doctor_Code" UNIQUE ("Doctor_Code"),
CONSTRAINT "fk_MicroMcuOrder_Doctor" FOREIGN KEY ("Doctor_Code") REFERENCES "public"."Doctor" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT "fk_MicroMcuOrder_Encounter" FOREIGN KEY ("Encounter_Id") REFERENCES "public"."Encounter" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION
);
-- Create "MicroMcuOrderItem" table
CREATE TABLE "public"."MicroMcuOrderItem" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"MicroMcuOrder_Id" bigint NULL,
"McuSrc_Code" character varying(20) NULL,
"Note" character varying(1024) NULL,
"Result" text NULL,
"Status_Code" text NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "fk_MicroMcuOrderItem_McuSrc" FOREIGN KEY ("McuSrc_Code") REFERENCES "public"."McuSrc" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT "fk_MicroMcuOrderItem_MicroMcuOrder" FOREIGN KEY ("MicroMcuOrder_Id") REFERENCES "public"."MicroMcuOrder" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION
);
-- Create "RadiologyMcuOrder" table
CREATE TABLE "public"."RadiologyMcuOrder" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Encounter_Id" bigint NULL,
"Number" bigint NULL,
"Doctor_Code" character varying(20) NULL,
"ClinicalNotes" text NULL,
"OtherNotes" text NULL,
"Resume" text NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "uni_RadiologyMcuOrder_Doctor_Code" UNIQUE ("Doctor_Code"),
CONSTRAINT "fk_RadiologyMcuOrder_Doctor" FOREIGN KEY ("Doctor_Code") REFERENCES "public"."Doctor" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT "fk_RadiologyMcuOrder_Encounter" FOREIGN KEY ("Encounter_Id") REFERENCES "public"."Encounter" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION
);
-- Create "RadiologyMcuOrderItem" table
CREATE TABLE "public"."RadiologyMcuOrderItem" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"RadiologyMcuOrder_Id" bigint NULL,
"McuSrc_Code" character varying(20) NULL,
"Note" character varying(1024) NULL,
"Result" text NULL,
"Status_Code" text NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "fk_RadiologyMcuOrderItem_McuSrc" FOREIGN KEY ("McuSrc_Code") REFERENCES "public"."McuSrc" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT "fk_RadiologyMcuOrderItem_RadiologyMcuOrder" FOREIGN KEY ("RadiologyMcuOrder_Id") REFERENCES "public"."RadiologyMcuOrder" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION
);
@@ -0,0 +1,8 @@
-- Modify "ApMcuOrder" table
ALTER TABLE "public"."ApMcuOrder" ADD COLUMN "Status_Code" character varying(10) NOT NULL;
-- Modify "CpMcuOrder" table
ALTER TABLE "public"."CpMcuOrder" ADD COLUMN "Status_Code" character varying(10) NOT NULL;
-- Modify "MicroMcuOrder" table
ALTER TABLE "public"."MicroMcuOrder" ADD COLUMN "Status_Code" character varying(10) NOT NULL;
-- Modify "RadiologyMcuOrder" table
ALTER TABLE "public"."RadiologyMcuOrder" ADD COLUMN "Status_Code" character varying(10) NOT NULL;
@@ -0,0 +1,2 @@
-- Modify "ChemoPlan" table
ALTER TABLE "public"."ChemoPlan" ADD COLUMN "Encounter_Id" bigint NULL, ADD CONSTRAINT "fk_ChemoPlan_Encounter" FOREIGN KEY ("Encounter_Id") REFERENCES "public"."Encounter" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION;
@@ -0,0 +1,2 @@
-- Modify "Chemo" table
ALTER TABLE "public"."Chemo" ADD COLUMN "Class_Code" text NULL;
@@ -0,0 +1,2 @@
-- Modify "ProcedureReport" table
ALTER TABLE "public"."ProcedureReport" ALTER COLUMN "Nurse_Name" TYPE text;
@@ -0,0 +1,12 @@
-- Create "Registration" table
CREATE TABLE "public"."Registration" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Employee_Id" bigint NULL,
"Installation_Code" character varying(20) NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "fk_Registration_Employee" FOREIGN KEY ("Employee_Id") REFERENCES "public"."Employee" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT "fk_Registration_Installation" FOREIGN KEY ("Installation_Code") REFERENCES "public"."Installation" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION
);
@@ -0,0 +1,2 @@
-- Modify "Person" table
ALTER TABLE "public"."Person" ADD COLUMN "BirthPlace" text NULL;
@@ -0,0 +1,14 @@
-- Create "Registrator" table
CREATE TABLE "public"."Registrator" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Employee_Id" bigint NULL,
"Installation_Code" character varying(20) NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "fk_Registrator_Employee" FOREIGN KEY ("Employee_Id") REFERENCES "public"."Employee" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT "fk_Registrator_Installation" FOREIGN KEY ("Installation_Code") REFERENCES "public"."Installation" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION
);
-- Drop "Registration" table
DROP TABLE "public"."Registration";
+52 -8
View File
@@ -1,5 +1,4 @@
h1:3V3a/T/te8iQqsolgRAJKr99GePHgSN9miJHUNngJ74=
h1:IAvX8SEd9TnVqJ7EYac7IGQ2CGS+5RhltXZ10G5+w7s=
h1:B/ZKq0d90aqLf0EvQfND4cd8ZRHcmxfzKF2N1lpSeIs=
20250904105930.sql h1:MEM6blCgke9DzWQSTnLzasbPIrcHssNNrJqZpSkEo6k=
20250904141448.sql h1:J8cmYNk4ZrG9fhfbi2Z1IWz7YkfvhFqTzrLFo58BPY0=
20250908062237.sql h1:Pu23yEW/aKkwozHoOuROvHS/GK4ngARJGdO7FB7HZuI=
@@ -109,9 +108,54 @@ h1:IAvX8SEd9TnVqJ7EYac7IGQ2CGS+5RhltXZ10G5+w7s=
20251110093522.sql h1:nsz8jCxGjEdr/bz9g+4ozfZzIP803xONjVmucad1GMc=
20251110100258.sql h1:IBqt1VZj5WjQ+l9aAFGHOCCBtzb03KlLLihFLut7itg=
20251110100545.sql h1:6/LV7751iyKxE2xI6vO1zly+aHUwxXD/IBwLcVpKxqM=
20251111072601.sql h1:dEhwrkT0hJ06/YcvQd5alvdskimcHcYT27QKAzVY5+8=
20251111073546.sql h1:JnJZ4SdOObSe6Jf8v/i/KiRxoCz5KMeXCYytQMZgkZM=
20251111074148.sql h1:95Ui1eo1P68itOz5kZDNFi2ha0ZhUF4gMYiYVcip6fo=
20251111074652.sql h1:vUZbN0qgktRQ2GAlCpdYrbld2grPiSbvcMePEQMfxPs=
20251111082257.sql h1:Zr3Xg5n+p4C8F6Evqm5PVC0pqUvPTBcq692PiUEJlT8=
20251111111017.sql h1:8Kr6FFtkSeaenB/n/aKlOaz/K33SqazxMuH26oI0JI4=
20251110155448.sql h1:kFPobJB+cpflsXBAWUwy3lohuWvrb/VRlXnhJWl7i3Y=
20251111072601.sql h1:ch8F+yVhsSM5xY+TwMLY3PxdLa4Wuhtj76oyw79R7Js=
20251111073546.sql h1:cCv0NPscADAOBahRVqtDWFs6G2t7n+4a+RwlF8vk/c4=
20251111074148.sql h1:70TsV83u1gQ5TktI13K7NQiyCCa35Td2aR6CNtKUa4U=
20251111074652.sql h1:ddfQ/sRKMezPM75xBFTGytUQX5AwZ3znrJVpg73gKPA=
20251111082257.sql h1:ZsdLY1ROouos0l3oS0lkeSiuKLEUGbVvBhpcM2AVhkw=
20251111111017.sql h1:qrJ93dNtQwcuAvpsP/lAK/H63C4cinXrsVaPmWsTqkU=
20251113101344.sql h1:xaOZvAUP1fFfnO+syEFOzJUIg5lTfBe5AWHPbBWuCLA=
20251113120533.sql h1:f3/U1Ve2yF2zSMhkt+xtwF8wUYfUKYwgbNeGfE37EW4=
20251114062746.sql h1:FInLaEFQByESEwFJKuKnuUSTKmcDpi3ZXaxkKwz2+D8=
20251117005942.sql h1:wD3BWrUSmo1HlW16V3lkaBkJvbAZ0fNk77te7J9NhOc=
20251117075427.sql h1:TqU9VKZa3I8YNXUGQWY3WVBYN+1FvyyaKy0hB1jgAho=
20251118074929.sql h1:p1KsWqCuR1JXA/jVO5BmOhCcaQ8clT7t0YRszAhPFbg=
20251119063438.sql h1:NVGM0X/LHD37EaPl8SNzkNiZDJ7AB1QR+LLwLh6WRdg=
20251119065730.sql h1:U5lzk1WvMB0bw3kwckou7jkEt4bwdYItwHr2Vxqe7w4=
20251119072302.sql h1:qCuI2WMEMF/XNbjV+RXPjBnuCKLu1Fia+mR9HiLWBIs=
20251119072450.sql h1:Xg+bTwqGyKPNFEQhJylvpz1wifdfmDJvcAq6vmNf0Ng=
20251120005512.sql h1:Ek6qpacAI/qVuTYxKno+uJyzn7s5z9pf3t7VA8gTzm4=
20251120074415.sql h1:NNUeJVA03EeBHJhHqPXEZoDv/PnC6yK1/cRhmukyaJo=
20251121033803.sql h1:/vfvFX/3pzSCIHnSbMUT9EMBDykOpVkvyfeTEle9Vas=
20251124071457.sql h1:qg2dhCL9YwD13xnfJ175lW/p6MGfzFKaBqd908FByRc=
20251125125303.sql h1:4JSFv1Pmhbe9tqpLXgO63OwYnGsalStgUXKVWPyc1YE=
20251126064057.sql h1:vAdhz5Nn/gGJy0UKZAEldeXv8HpHtJU/t8ygDVIbTsU=
20251201081333.sql h1:PoC8ADRdwDuohDTB74yW/DaB42igdYa4B6humbrEJBk=
20251201104439.sql h1:tpqdrOf9d2aGwZshqm62nG6SXnfVaO/g6A7z0efPS14=
20251201113804.sql h1:kIEmVoETJXBkab2Q+b3y/pP84eF8W2BdQ47amHCnc+c=
20251201113858.sql h1:KLXKZO5XTQPoEU0YLHE8Fhg9WPKpSN3wNgYPJ+RGFcg=
20251201114751.sql h1:HM17diiPknfSHAmP+kJGP6GzToaPU9/NT+KQBpf3Jq0=
20251201114913.sql h1:gqucFgHFFLA6n/Rdz486cZH5xkaJuwefESLJMJLDue8=
20251202030445.sql h1:QWBVfTepT7DaXP5E0BYoxNM0JwKIQ2qIMXzI4kbz/qE=
20251202044430.sql h1:4QZH9lz0GrQ9rzP1AJ+hJgGalNpp+8FCRckNK7xaTbU=
20251202064000.sql h1:/EN7sT1ol/91qW1aXWrzX+Mc3XOC/7f/LtfA0JRHpbg=
20251202130629.sql h1:9mvalqfhqGCdkcJepJDzHprU2xb0i5sYys1Htf62ioo=
20251202160848.sql h1:Kd2/TziKSMezrt4XgbjQcYvY/Lo9rX0qw7/Lz0/oyKk=
20251202180207.sql h1:IHmSMIO3ia+YV5GULixbdlV1joaUAWtnjQHPd8+HKiM=
20251202231005.sql h1:lua0KKoeBptSfs/6ehZE6Azo6YUlNkOJwGFyb1HQWkY=
20251203205052.sql h1:nk0VK2Uv4bHE3SBfHo/aevVZxtHzr7zAzvmMU8TCCtk=
20251205073858.sql h1:46qqXnArgJmzGE/WO7v7Ev8Jh7BudDiGbdANexq/5Dk=
20251205211957.sql h1:3fvtZ/mBWsTIXllXMFOuCLJsp4MivVP56dunehlU0yo=
20251205214433.sql h1:rn3++FEfX7ntcJcOmCEuOMnr27TZqH0KMGRppzFwFTc=
20251205221124.sql h1:CRruUvGZqlVDBmbQSVEl4wFm+uq30AurMMDI6sb8jxg=
20251206021053.sql h1:bpuEocu4lOhZ7oLuxd//22dzjfNgU2iaWEqSD1mVwoU=
20251207020537.sql h1:m6uh4NHVF3EKNTVMqOmuBSDFD9oCQk5mAwo05fT46G4=
20251207212015.sql h1:UPelYGTeUR6rm8mU8dfNzgRDEDun0UQ4tkgsaDljn30=
20251207221222.sql h1:bTfUCvCf2UPh+BA2IY2PHQafb9DwY9nhH5FRuMEHy+0=
20251209022744.sql h1:y5/PAiZH/fYCpDJpkQdNRJwWICHH2iNIwM1V+S1P6KA=
20251209025908.sql h1:p3kZA8kyEj+mQZSrdY3k2K1NojQzFJh/MlZJ0Oy6t/k=
20251209030538.sql h1:zltV6/Fu2zJW0/lVBl7MdnWuJcqNTUIRcqYYZ8Fi1wo=
20251209064304.sql h1:Mj6Zh+2b/4AkM1HjnJGjAs788kVN0UaL34jeaKQIjT0=
20251209070128.sql h1:ip4wNCIF/UFQlNo6KpFG87/XA08aG3/Rf5zpxz3xioY=
20251209084929.sql h1:Z5higP1Ecq5UPWhrWZ5UCrxddMNqiJi8PbCNvGBE48A=
-41
View File
@@ -1,41 +0,0 @@
appCfg:
fullName: SIMRS Sync
codeName: simrs-sync
version: 0.1.0
env: development
lang: en
dbCfg:
dsn:
maxOpenConns: 5
maxIdleConns: 5
maxIdleTime: 100
multiDbCfg:
dbs :
- name: simrs_sync
dsn:
maxOpenConns: 5
maxIdleConns: 5
maxIdleTime: 100
httpCfg:
host: 127.0.0.1
port: 8003
loggerCfg:
hideTime: true
hideLevel: true
langCfg:
active: en
path: ../../assets/language/en
fileName: data.json
corsCfg:
allowedOrigin:
allowedMethod: GET, POST, PUT, PATCH, DELETE, OPTIONS
syncUrlCfg:
target:
host:
-15
View File
@@ -1,15 +0,0 @@
package main
import (
a "github.com/karincake/apem"
h "simrs-vx/internal/interface/main-sync-handler"
d "github.com/karincake/apem/db-gorm-pg"
l "github.com/karincake/apem/logger-zerolog"
)
func main() {
a.Run(h.SetRoutes(), &l.O, &d.O)
}
+7 -3
View File
@@ -36,6 +36,10 @@ corsCfg:
allowedOrigin:
allowedMethod: GET, POST, PUT, PATCH, DELETE, OPTIONS
syncUrlCfg:
target:
host:
syncPartnerCfg:
oldSource
oldSecretKey
oldHost
newSource
newSecretKey
newHost
+18
View File
@@ -0,0 +1,18 @@
# Makefile for Atlas migrations
# Default environment
ENV ?= gorm
.PHONY: diff apply hash
## Generate a new migration diff
diff:
atlas migrate diff --env $(ENV)
## Apply migrations to the database
apply:
atlas migrate apply --env $(ENV)
## Calculate the schema hash
hash:
atlas migrate hash
+59
View File
@@ -0,0 +1,59 @@
# Database Migration with Atlas
This project uses [Atlas](https://atlasgo.io/) for database schema management and migrations.
## 📋 Prerequisites
1. **Download and Install Atlas CLI**
Run the following command in PowerShell or Git Bash:
```sh
curl -sSf https://atlasgo.sh | sh
```
Verify installation:
```sh
atlas version
```
2. Install GORM Provider
Run inside your Go project:
```sh
go get -u ariga.io/atlas-provider-gorm
```
3. Create atlas.hcl configuration file
Just create an atlas.hcl file in your project root as example given at atlas.hcl.example
4. Create migrations folder
```sh
mkdir migrations
```
5. Usage
You can use the provided Makefile for common commands:
Generate a migration diff
```sh
make diff
```
Apply migrations
```sh
make apply
```
Compute schema hash
```sh
make hash
```
If you dont have make installed, you can run the Atlas commands directly:
```sh
atlas migrate diff --env gorm
```
```sh
atlas migrate apply --env gorm
```
```sh
atlas migrate hash
```
@@ -0,0 +1,22 @@
data "external_schema" "gorm" {
program = [
"go",
"run",
"-mod=mod",
".",
]
}
env "gorm" {
src = data.external_schema.gorm.url
dev = "" // dsn db to check the diff
migration {
dir = "file://migrations"
}
url = "" // dsn db to apply
format {
migrate {
diff = "{{ sql . \" \" }}"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
package main
import (
m "simrs-vx/internal/interface/migration"
)
func main() {
m.Migrate(m.SimgosSync)
}
@@ -0,0 +1,36 @@
-- Create "InstallationLink" table
CREATE TABLE "public"."InstallationLink" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Simx_Id" bigint NULL,
"Simgos_Id" bigint NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "uni_InstallationLink_Simgos_Id" UNIQUE ("Simgos_Id"),
CONSTRAINT "uni_InstallationLink_Simx_Id" UNIQUE ("Simx_Id")
);
-- Create "InstallationSimgosLog" table
CREATE TABLE "public"."InstallationSimgosLog" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Value" text NULL,
"Date" timestamptz NULL,
"Status" text NULL,
"ErrMessage" text NULL,
PRIMARY KEY ("Id")
);
-- Create "InstallationSimxLog" table
CREATE TABLE "public"."InstallationSimxLog" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Value" text NULL,
"Date" timestamptz NULL,
"Status" text NULL,
"ErrMessage" text NULL,
PRIMARY KEY ("Id")
);
@@ -0,0 +1,36 @@
-- Create "UnitLink" table
CREATE TABLE "public"."UnitLink" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Simx_Id" bigint NULL,
"Simgos_Id" bigint NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "uni_UnitLink_Simgos_Id" UNIQUE ("Simgos_Id"),
CONSTRAINT "uni_UnitLink_Simx_Id" UNIQUE ("Simx_Id")
);
-- Create "UnitSimgosLog" table
CREATE TABLE "public"."UnitSimgosLog" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Value" text NULL,
"Date" timestamptz NULL,
"Status" text NULL,
"ErrMessage" text NULL,
PRIMARY KEY ("Id")
);
-- Create "UnitSimxLog" table
CREATE TABLE "public"."UnitSimxLog" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Value" text NULL,
"Date" timestamptz NULL,
"Status" text NULL,
"ErrMessage" text NULL,
PRIMARY KEY ("Id")
);
@@ -0,0 +1,108 @@
-- Create "DivisionLink" table
CREATE TABLE "public"."DivisionLink" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Simx_Id" bigint NULL,
"Simgos_Id" bigint NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "uni_DivisionLink_Simgos_Id" UNIQUE ("Simgos_Id"),
CONSTRAINT "uni_DivisionLink_Simx_Id" UNIQUE ("Simx_Id")
);
-- Create "DivisionSimgosLog" table
CREATE TABLE "public"."DivisionSimgosLog" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Value" text NULL,
"Date" timestamptz NULL,
"Status" text NULL,
"ErrMessage" text NULL,
PRIMARY KEY ("Id")
);
-- Create "DivisionSimxLog" table
CREATE TABLE "public"."DivisionSimxLog" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Value" text NULL,
"Date" timestamptz NULL,
"Status" text NULL,
"ErrMessage" text NULL,
PRIMARY KEY ("Id")
);
-- Create "SpecialistLink" table
CREATE TABLE "public"."SpecialistLink" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Simx_Id" bigint NULL,
"Simgos_Id" bigint NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "uni_SpecialistLink_Simgos_Id" UNIQUE ("Simgos_Id"),
CONSTRAINT "uni_SpecialistLink_Simx_Id" UNIQUE ("Simx_Id")
);
-- Create "SpecialistSimgosLog" table
CREATE TABLE "public"."SpecialistSimgosLog" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Value" text NULL,
"Date" timestamptz NULL,
"Status" text NULL,
"ErrMessage" text NULL,
PRIMARY KEY ("Id")
);
-- Create "SpecialistSimxLog" table
CREATE TABLE "public"."SpecialistSimxLog" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Value" text NULL,
"Date" timestamptz NULL,
"Status" text NULL,
"ErrMessage" text NULL,
PRIMARY KEY ("Id")
);
-- Create "SubspecialistLink" table
CREATE TABLE "public"."SubspecialistLink" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Simx_Id" bigint NULL,
"Simgos_Id" bigint NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "uni_SubspecialistLink_Simgos_Id" UNIQUE ("Simgos_Id"),
CONSTRAINT "uni_SubspecialistLink_Simx_Id" UNIQUE ("Simx_Id")
);
-- Create "SubspecialistSimgosLog" table
CREATE TABLE "public"."SubspecialistSimgosLog" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Value" text NULL,
"Date" timestamptz NULL,
"Status" text NULL,
"ErrMessage" text NULL,
PRIMARY KEY ("Id")
);
-- Create "SubspecialistSimxLog" table
CREATE TABLE "public"."SubspecialistSimxLog" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Value" text NULL,
"Date" timestamptz NULL,
"Status" text NULL,
"ErrMessage" text NULL,
PRIMARY KEY ("Id")
);
@@ -0,0 +1,36 @@
-- Create "PatientLink" table
CREATE TABLE "public"."PatientLink" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Simx_Id" bigint NULL,
"Simgos_Id" bigint NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "uni_PatientLink_Simgos_Id" UNIQUE ("Simgos_Id"),
CONSTRAINT "uni_PatientLink_Simx_Id" UNIQUE ("Simx_Id")
);
-- Create "PatientSimgosLog" table
CREATE TABLE "public"."PatientSimgosLog" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Value" text NULL,
"Date" timestamptz NULL,
"Status" text NULL,
"ErrMessage" text NULL,
PRIMARY KEY ("Id")
);
-- Create "PatientSimxLog" table
CREATE TABLE "public"."PatientSimxLog" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Value" text NULL,
"Date" timestamptz NULL,
"Status" text NULL,
"ErrMessage" text NULL,
PRIMARY KEY ("Id")
);
@@ -0,0 +1,36 @@
-- Create "EncounterLink" table
CREATE TABLE "public"."EncounterLink" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Simx_Id" bigint NULL,
"Simgos_Id" bigint NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "uni_EncounterLink_Simgos_Id" UNIQUE ("Simgos_Id"),
CONSTRAINT "uni_EncounterLink_Simx_Id" UNIQUE ("Simx_Id")
);
-- Create "EncounterSimgosLog" table
CREATE TABLE "public"."EncounterSimgosLog" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Value" text NULL,
"Date" timestamptz NULL,
"Status" text NULL,
"ErrMessage" text NULL,
PRIMARY KEY ("Id")
);
-- Create "EncounterSimxLog" table
CREATE TABLE "public"."EncounterSimxLog" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Value" text NULL,
"Date" timestamptz NULL,
"Status" text NULL,
"ErrMessage" text NULL,
PRIMARY KEY ("Id")
);
@@ -0,0 +1,36 @@
-- Create "InternalReferenceLink" table
CREATE TABLE "public"."InternalReferenceLink" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Simx_Id" bigint NULL,
"Simgos_Id" bigint NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "uni_InternalReferenceLink_Simgos_Id" UNIQUE ("Simgos_Id"),
CONSTRAINT "uni_InternalReferenceLink_Simx_Id" UNIQUE ("Simx_Id")
);
-- Create "InternalReferenceSimgosLog" table
CREATE TABLE "public"."InternalReferenceSimgosLog" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Value" text NULL,
"Date" timestamptz NULL,
"Status" text NULL,
"ErrMessage" text NULL,
PRIMARY KEY ("Id")
);
-- Create "InternalReferenceSimxLog" table
CREATE TABLE "public"."InternalReferenceSimxLog" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Value" text NULL,
"Date" timestamptz NULL,
"Status" text NULL,
"ErrMessage" text NULL,
PRIMARY KEY ("Id")
);
@@ -0,0 +1,36 @@
-- Create "SoapiLink" table
CREATE TABLE "public"."SoapiLink" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Simx_Id" bigint NULL,
"Simgos_Id" bigint NULL,
PRIMARY KEY ("Id"),
CONSTRAINT "uni_SoapiLink_Simgos_Id" UNIQUE ("Simgos_Id"),
CONSTRAINT "uni_SoapiLink_Simx_Id" UNIQUE ("Simx_Id")
);
-- Create "SoapiSimgosLog" table
CREATE TABLE "public"."SoapiSimgosLog" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Value" text NULL,
"Date" timestamptz NULL,
"Status" text NULL,
"ErrMessage" text NULL,
PRIMARY KEY ("Id")
);
-- Create "SoapiSimxLog" table
CREATE TABLE "public"."SoapiSimxLog" (
"Id" bigserial NOT NULL,
"CreatedAt" timestamptz NULL,
"UpdatedAt" timestamptz NULL,
"DeletedAt" timestamptz NULL,
"Value" text NULL,
"Date" timestamptz NULL,
"Status" text NULL,
"ErrMessage" text NULL,
PRIMARY KEY ("Id")
);
@@ -0,0 +1,8 @@
h1:6YZBXq/r79I5tuYyY1+CBzhZsSeukHSs8MyHCC5QuV4=
20251113035508.sql h1:rjDlu6yDdy5xv6nrCOr7NialrLSLT23pzduYNq29Hf0=
20251114071129.sql h1:Z0GQ5bJo3C+tplaWzxT8n3J9HLkEaVsRVp5nn7bmYow=
20251117041601.sql h1:l/RPG5mObqCSBjO4mzG+wTq2ieSycvlfOSz4czpUdWY=
20251118082246.sql h1:xLUwA+EvKWIg3X/TJvu7rqbtBzONiINfag5NJpMV29E=
20251118082915.sql h1:hP6FmUVFuADIN2cDg2Z1l7Wx7PQRb+IYQDvKD7J8VAM=
20251126115527.sql h1:Bvg+Y7k+h5s+/UaezUyJb7J7uzEJS7U5Z/RoCixcUtI=
20251201093443.sql h1:m18tksKG3OzbkxXkhfKUUqbkxnJ0VBPi3Cw34Tbywyc=
+3
View File
@@ -6,6 +6,8 @@ toolchain go1.24.6
require (
ariga.io/atlas-provider-gorm v0.5.6
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.1
github.com/SebastiaanKlippert/go-wkhtmltopdf v1.9.3
github.com/golang-jwt/jwt v3.2.2+incompatible
github.com/google/uuid v1.6.0
github.com/jackc/pgx/v5 v5.5.5
@@ -41,6 +43,7 @@ require (
github.com/karincake/pentol v0.0.3 // indirect
github.com/klauspost/compress v1.18.0 // indirect
github.com/klauspost/cpuid/v2 v2.2.11 // indirect
github.com/kylelemons/godebug v1.1.0 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.19 // indirect
github.com/mattn/go-sqlite3 v1.14.28 // indirect
+2
View File
@@ -19,6 +19,8 @@ github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0/go.mod h
github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.1 h1:DzHpqpoJVaCgOUdVHxE8QB52S6NiVdDQvGlny1qvPqA=
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
github.com/SebastiaanKlippert/go-wkhtmltopdf v1.9.3 h1:vrA6+R1BMLKMTbos8jAeuBrImHPGtY4gTlcue3OIej8=
github.com/SebastiaanKlippert/go-wkhtmltopdf v1.9.3/go.mod h1:SQq4xfIdvf6WYKSDxAJc+xOJdolt+/bc1jnQKMtPMvQ=
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
@@ -0,0 +1,7 @@
package controlplan
type ReadListDto struct {
PathValue1 string `json:"-"` // jenis kontrol
PathValue2 string `json:"-"` // kode poli
PathValue3 string `json:"-"` // tanggal
}
@@ -0,0 +1,22 @@
package controlplan
type Response struct {
MetaData MetaData `json:"metaData"`
Response *ResponseItems `json:"response"` // nullable
}
type MetaData struct {
Code string `json:"code"`
Message string `json:"message"`
}
type ResponseItems struct {
List []DoctorSchedule `json:"list"`
}
type DoctorSchedule struct {
JadwalPraktek string `json:"jadwalPraktek"`
Kapasitas string `json:"kapasitas"`
KodeDokter string `json:"kodeDokter"`
NamaDokter string `json:"namaDokter"`
}
@@ -0,0 +1,5 @@
package referral
type ReadDetailDto struct {
Number *string `json:"number"` // nomor rujukan
}
@@ -0,0 +1,96 @@
package referral
type Response struct {
MetaData MetaData `json:"metaData"`
Response *ReferralDetail `json:"response"` // nullable
}
type MetaData struct {
Code string `json:"code"`
Message string `json:"message"`
}
type ReferralDetail struct {
AsalFaskes string `json:"asalFaskes"`
Rujukan RujukanDetail `json:"rujukan"`
}
type RujukanDetail struct {
Diagnosa Diagnosa `json:"diagnosa"`
Keluhan *string `json:"keluhan"` // nullable
NoKunjungan string `json:"noKunjungan"`
Pelayanan Pelayanan `json:"pelayanan"`
Peserta Peserta `json:"peserta"`
PoliRujukan Poli `json:"poliRujukan"`
ProvPerujuk Provider `json:"provPerujuk"`
TglKunjungan string `json:"tglKunjungan"`
}
type Diagnosa struct {
Kode string `json:"kode"`
Nama string `json:"nama"`
}
type Pelayanan struct {
Kode string `json:"kode"`
Nama string `json:"nama"`
}
type Peserta struct {
Cob Cob `json:"cob"`
HakKelas KeteranganKode `json:"hakKelas"`
Informasi Informasi `json:"informasi"`
JenisPeserta KeteranganKode `json:"jenisPeserta"`
Mr Mr `json:"mr"`
Nama string `json:"nama"`
Nik string `json:"nik"`
NoKartu string `json:"noKartu"`
Pisa string `json:"pisa"`
ProvUmum Provider `json:"provUmum"`
Sex string `json:"sex"`
StatusPeserta KeteranganKode `json:"statusPeserta"`
TglCetakKartu string `json:"tglCetakKartu"`
TglLahir string `json:"tglLahir"`
TglTAT string `json:"tglTAT"`
TglTMT string `json:"tglTMT"`
Umur Umur `json:"umur"`
}
type Cob struct {
NmAsuransi *string `json:"nmAsuransi"` // nullable
NoAsuransi *string `json:"noAsuransi"`
TglTAT *string `json:"tglTAT"`
TglTMT *string `json:"tglTMT"`
}
type KeteranganKode struct {
Keterangan string `json:"keterangan"`
Kode string `json:"kode"`
}
type Informasi struct {
Dinsos *string `json:"dinsos"`
ESep *string `json:"eSEP"`
NoSKTM *string `json:"noSKTM"`
ProlanisPRB *string `json:"prolanisPRB"`
}
type Mr struct {
NoMR string `json:"noMR"`
NoTelepon string `json:"noTelepon"`
}
type Provider struct {
Kode string `son:"kode"`
NmProvider string `json:"nama"`
}
type Poli struct {
Kode string `json:"kode"`
Nama string `json:"nama"`
}
type Umur struct {
UmurSaatPelayanan string `json:"umurSaatPelayanan"`
UmurSekarang string `json:"umurSekarang"`
}
@@ -0,0 +1,73 @@
package vclaimreference
import (
ecore "simrs-vx/internal/domain/base-entities/core"
"time"
)
type CreateDto struct {
Encounter_Id *uint `json:"encounter_id"`
Date *time.Time `json:"date"`
SrcCode *string `json:"src_code"`
SrcName *string `json:"src_name"`
Number *string `json:"number"`
}
type ReadListDto struct {
FilterDto
Includes string `json:"includes"`
Sort string `json:"sort"`
Pagination ecore.Pagination
}
type FilterDto struct {
Encounter_Id *uint `json:"encounter-id"`
}
type ReadDetailDto struct {
Id uint `json:"id"`
}
type UpdateDto struct {
Id uint `json:"id"`
CreateDto
}
type DeleteDto struct {
Id uint `json:"id"`
}
type MetaDto struct {
PageNumber int `json:"page_number"`
PageSize int `json:"page_size"`
Count int `json:"count"`
}
type ResponseDto struct {
ecore.Main
Encounter_Id *uint `json:"encounter_id"`
Date *time.Time `json:"date"`
SrcCode *string `json:"src_code"`
SrcName *string `json:"src_name"`
Number *string `json:"number"`
}
func (d VclaimReference) ToResponse() ResponseDto {
resp := ResponseDto{
Encounter_Id: d.Encounter_Id,
Date: d.Date,
SrcCode: d.SrcCode,
SrcName: d.SrcName,
Number: d.Number,
}
resp.Main = d.Main
return resp
}
func ToResponseList(data []VclaimReference) []ResponseDto {
resp := make([]ResponseDto, len(data))
for i, u := range data {
resp[i] = u.ToResponse()
}
return resp
}
@@ -0,0 +1,15 @@
package vclaimreference
import (
ecore "simrs-vx/internal/domain/base-entities/core"
"time"
)
type VclaimReference struct {
ecore.Main
Encounter_Id *uint `json:"encounter_id"`
Date *time.Time `json:"date"`
SrcCode *string `json:"src_code"`
SrcName *string `json:"src_name"`
Number *string `json:"number"`
}
@@ -0,0 +1,71 @@
package vclaimsepcontrolletter
import (
ecore "simrs-vx/internal/domain/base-entities/core"
)
type CreateDto struct {
VclaimSep_Number *string `json:"vclaimSep_number"`
Number *string `json:"number" gorm:"unique;size:20"`
Value *string `json:"value"`
FileUrl *string `json:"fileUrl" gorm:"unique;size:1024"`
}
type ReadListDto struct {
FilterDto
Includes string `json:"includes"`
Sort string `json:"sort"`
Pagination ecore.Pagination
}
type FilterDto struct {
VclaimSep_Number *string `json:"vclaimSep_number"`
}
type ReadDetailDto struct {
Id *uint `json:"id"`
Number *string `json:"number"`
}
type UpdateDto struct {
Id uint `json:"id"`
CreateDto
}
type DeleteDto struct {
Id uint `json:"id"`
Number *string `json:"number"`
}
type MetaDto struct {
PageNumber int `json:"page_number"`
PageSize int `json:"page_size"`
Count int `json:"count"`
}
type ResponseDto struct {
ecore.Main
VclaimSep_Number *string `json:"vclaimSep_number"`
Number *string `json:"number"`
Value *string `json:"value"`
FileUrl *string `json:"fileUrl"`
}
func (d VclaimSepControlLetter) ToResponse() ResponseDto {
resp := ResponseDto{
VclaimSep_Number: d.VclaimSep_Number,
Number: d.Number,
Value: d.Value,
FileUrl: d.FileUrl,
}
resp.Main = d.Main
return resp
}
func ToResponseList(data []VclaimSepControlLetter) []ResponseDto {
resp := make([]ResponseDto, len(data))
for i, u := range data {
resp[i] = u.ToResponse()
}
return resp
}
@@ -0,0 +1,13 @@
package vclaimsepcontrolletter
import (
ecore "simrs-vx/internal/domain/base-entities/core"
)
type VclaimSepControlLetter struct {
ecore.Main
VclaimSep_Number *string `json:"vclaimSep_number"`
Number *string `json:"number" gorm:"unique;size:20"`
Value *string `json:"value"`
FileUrl *string `json:"fileUrl" gorm:"unique;size:1024"`
}
@@ -2,12 +2,10 @@ package vclaimsepprint
import (
ecore "simrs-vx/internal/domain/base-entities/core"
evs "simrs-vx/internal/domain/bpjs-entities/vclaim-sep"
)
type VclaimSepPrint struct {
ecore.Main
VclaimSep_Number *string `json:"vclaimSep_number"`
VclaimSep *evs.VclaimSep `json:"vclaimSep,omitempty" gorm:"foreignKey:VclaimSep_Number;references:Number"`
Counter *uint `json:"counter"`
VclaimSep_Number *string `json:"vclaimSep_number"`
Counter *uint `json:"counter"`
}
+136 -5
View File
@@ -1,6 +1,7 @@
package vclaimsep
import (
"encoding/json"
ecore "simrs-vx/internal/domain/base-entities/core"
evsh "simrs-vx/internal/domain/bpjs-entities/vclaim-sep-hist"
)
@@ -8,7 +9,7 @@ import (
type CreateDto struct {
Encounter_Id *uint `json:"encounter_id"`
Number *string `json:"number" validate:"maxLength=19"`
RequestPayload []byte `json:"requestPayload" validate:"maxLength=1024"`
RequestPayload string `json:"requestPayload" validate:"maxLength=1024"`
VclaimSepHist evsh.CreateDto
}
@@ -25,8 +26,9 @@ type FilterDto struct {
}
type ReadDetailDto struct {
Id uint `json:"id"`
Number *string `json:"number"`
Id uint `json:"id"`
Number *string `json:"number"`
Encounter_Id *uint `json:"encounter_id"`
}
type UpdateDto struct {
@@ -47,14 +49,16 @@ type MetaDto struct {
type ResponseDto struct {
ecore.Main
Encounter_Id *uint `json:"encounter_id"`
Number *string `json:"number"`
Encounter_Id *uint `json:"encounter_id"`
Number *string `json:"number"`
Detail *SepDetail `json:"detail,omitempty"`
}
func (d VclaimSep) ToResponse() ResponseDto {
resp := ResponseDto{
Encounter_Id: d.Encounter_Id,
Number: d.Number,
Detail: d.Detail,
}
resp.Main = d.Main
return resp
@@ -71,3 +75,130 @@ func ToResponseList(data []VclaimSep) []ResponseDto {
func (c CreateDto) IsMessageSuccess() bool {
return c.VclaimSepHist.Message == "Sukses"
}
func (c CreateDto) RequestPayloadIntoJson() ([]byte, error) {
payload := map[string]interface{}{}
err := json.Unmarshal([]byte(c.RequestPayload), &payload)
if err != nil {
return nil, err
}
return json.Marshal(payload)
}
func (c CreateDto) RequestPayloadWithEncounterId() ([]byte, error) {
payload := map[string]interface{}{}
err := json.Unmarshal([]byte(c.RequestPayload), &payload)
if err != nil {
return nil, err
}
payload["encounter_id"] = c.Encounter_Id
return json.Marshal(payload)
}
type SepResponse struct {
MetaData MetaData `json:"metaData"`
Response *SepDetail `json:"response"`
}
type MetaData struct {
Code string `json:"code"`
Message string `json:"message"`
}
type SepDetail struct {
AssestmenPel AssestmenPel `json:"assestmenPel"`
Catatan string `json:"catatan"`
Cob string `json:"cob"`
Diagnosa string `json:"diagnosa"`
Dpjp Dpjp `json:"dpjp"`
ESep string `json:"eSEP"`
FlagProcedure FlagProcedure `json:"flagProcedure"`
Informasi any `json:"informasi"` // null = interface{}
JnsPelayanan string `json:"jnsPelayanan"`
Katarak string `json:"katarak"`
KdPenunjang KdPenunjang `json:"kdPenunjang"`
KdStatusKecelakaan string `json:"kdStatusKecelakaan"`
KelasRawat string `json:"kelasRawat"`
KlsRawat KlsRawat `json:"klsRawat"`
Kontrol Kontrol `json:"kontrol"`
LokasiKejadian LokasiKejadian `json:"lokasiKejadian"`
NmStatusKecelakaan string `json:"nmstatusKecelakaan"`
NoRujukan string `json:"noRujukan"`
NoSep string `json:"noSep"`
Penjamin any `json:"penjamin"` // null
Peserta Peserta `json:"peserta"`
Poli string `json:"poli"`
PoliEksekutif string `json:"poliEksekutif"`
TglSep string `json:"tglSep"`
TujuanKunj TujuanKunj `json:"tujuanKunj"`
}
type AssestmenPel struct {
Kode string `json:"kode"`
Nama string `json:"nama"`
}
type Dpjp struct {
KdDPJP string `json:"kdDPJP"`
NmDPJP string `json:"nmDPJP"`
}
type FlagProcedure struct {
Kode string `json:"kode"`
Nama string `json:"nama"`
}
type KdPenunjang struct {
Kode string `json:"kode"`
Nama string `json:"nama"`
}
type KlsRawat struct {
KlsRawatHak string `json:"klsRawatHak"`
KlsRawatNaik *string `json:"klsRawatNaik"` // nullable
Pembiayaan *string `json:"pembiayaan"` // nullable
PenanggungJawab *string `json:"penanggungJawab"` // nullable
}
type Kontrol struct {
KdDokter *string `json:"kdDokter"` // null
NmDokter *string `json:"nmDokter"` // null
NoSurat *string `json:"noSurat"` // null
}
type LokasiKejadian struct {
KdKab *string `json:"kdKab"`
KdKec *string `json:"kdKec"`
KdProp *string `json:"kdProp"`
KetKejadian *string `json:"ketKejadian"`
Lokasi *string `json:"lokasi"`
TglKejadian *string `json:"tglKejadian"`
}
type Peserta struct {
Asuransi any `json:"asuransi"`
HakKelas string `json:"hakKelas"`
JnsPeserta string `json:"jnsPeserta"`
Kelamin string `json:"kelamin"`
Nama string `json:"nama"`
NoKartu string `json:"noKartu"`
NoMR string `json:"noMr"`
TglLahir string `json:"tglLahir"`
}
type TujuanKunj struct {
Kode string `json:"kode"`
Nama string `json:"nama"`
}
type SepDeleteRequest struct {
Request struct {
TSep struct {
NoSep string `json:"noSep"`
User string `json:"user"`
} `json:"t_sep"`
} `json:"request"`
}
@@ -2,10 +2,15 @@ package vclaimsep
import (
ecore "simrs-vx/internal/domain/base-entities/core"
evscl "simrs-vx/internal/domain/bpjs-entities/vclaim-sep-control-letter"
evsp "simrs-vx/internal/domain/bpjs-entities/vclaim-sep-print"
)
type VclaimSep struct {
ecore.Main
Encounter_Id *uint `json:"encounter_id"`
Number *string `json:"number" gorm:"unique;size:19"`
Encounter_Id *uint `json:"encounter_id"`
Number *string `json:"number" gorm:"unique;size:19"`
Prints []*evsp.VclaimSepPrint `json:"prints,omitempty" gorm:"foreignKey:VclaimSep_Number;references:Number"`
ControlLetters []*evscl.VclaimSepControlLetter `json:"controlLetters,omitempty" gorm:"foreignKey:VclaimSep_Number;references:Number"`
Detail *SepDetail `json:"detail,omitempty" gorm:"-"`
}
@@ -24,9 +24,11 @@ type FilterDto struct {
AntibioticSrc_Id *uint `json:"mcu-src-id"`
Result *string `json:"result"`
Status_Code erc.DataStatusCode `json:"status-code"`
Includes string `json:"includes"`
}
type ReadDetailDto struct {
Id uint `json:"id"`
Id uint `json:"id"`
Includes string `json:"includes"`
}
type UpdateDto struct {
@@ -0,0 +1,23 @@
package apmcuorder
type CreateDto struct {
Encounter_Id uint `json:"encounter_id"`
Number uint64 `json:"number"`
Doctor_Code string `json:"-"`
Substances string `json:"substances"`
Fictations string `json:"fictations"`
Localization string `json:"localization"`
ClinicalDiagnoses string `json:"clinicalDiagnoses"`
Stadium string `json:"stadium"`
ClinicalNotes string `json:"clinicalNotes"`
CurrentHistory string `json:"currentHistory"`
PastHistory string `json:"pastHistory"`
PrevApMcu string `json:"prevApMcu"`
PrevApMcuNotes string `json:"prevApMcuNotes"`
SupportingExams string `json:"supportingExams"`
}
type UpdateDto struct {
Id uint64 `json:"id"`
CreateDto
}
@@ -0,0 +1,25 @@
package apmcuorder
import (
ecore "simrs-vx/internal/domain/base-entities/core"
erc "simrs-vx/internal/domain/references/common"
)
type ApMcuOrder struct {
ecore.BigMain
Encounter_Id uint `json:"encounter_id"`
Number uint64 `json:"number"`
Doctor_Code string `json:"doctor_code" gorm:"unique;size:20"`
Substances string `json:"substances"`
Fictations string `json:"fictations"`
Localization string `json:"localization"`
ClinicalDiagnoses string `json:"clinicalDiagnoses"`
Stadium string `json:"stadium"`
ClinicalNotes *string `json:"clinicalNotes"`
CurrentHistory string `json:"currentHistory"`
PastHistory string `json:"pastHistory"`
PrevApMcu *string `json:"prevApMcu"`
PrevApMcuNotes *string `json:"prevApMcuNotes"`
SupportingExams *string `json:"supportingExams"`
Status_Code erc.DataStatusCode `json:"status_code" gorm:"not null;size:10"`
}
@@ -0,0 +1,96 @@
package apmcuorder
import (
la "simrs-vx/internal/lib/auth"
ecore "simrs-vx/internal/domain/base-entities/core"
eamob "simrs-vx/internal/domain/main-entities/ap-mcu-order/base"
ed "simrs-vx/internal/domain/main-entities/doctor"
ee "simrs-vx/internal/domain/main-entities/encounter"
)
type CreateDto struct {
eamob.CreateDto
la.AuthInfo
}
type ReadListDto struct {
FilterDto
Includes string `json:"includes"`
Sort string `json:"sort"`
Pagination ecore.Pagination
}
type FilterDto struct {
McuOrder_Id string `json:"mcu-order-id"`
}
type ReadDetailDto struct {
Id uint64 `json:"id"`
}
type UpdateDto struct {
Id uint64 `json:"id"`
CreateDto
}
type DeleteDto struct {
Id uint64 `json:"id"`
}
type MetaDto struct {
PageNumber int `json:"page_number"`
PageSize int `json:"page_size"`
Count int `json:"count"`
}
type ResponseDto struct {
ecore.BigMain
Encounter_Id uint `json:"encounter_id"`
Encounter *ee.Encounter
Number uint64 `json:"number"`
Doctor_Code string `json:"doctor_code"`
Doctor *ed.Doctor
Substances string `json:"substances"`
Fictations string `json:"fictations"`
Localization string `json:"localization"`
ClinicalDiagnoses string `json:"clinicalDiagnoses"`
Stadium string `json:"stadium"`
ClinicalNotes *string `json:"clinicalNotes"`
PastHistory string `json:"pastHistory"`
CurrentHistory string `json:"currentHistory"`
PrevApMcu *string `json:"prevApMcu"`
PrevApMcuNotes *string `json:"prevApMcuNotes"`
SupportingExams *string `json:"supportingExams"`
}
func (d ApMcuOrder) ToResponse() ResponseDto {
resp := ResponseDto{
Encounter_Id: d.Encounter_Id,
Encounter: d.Encounter,
Number: d.Number,
Doctor_Code: d.Doctor_Code,
Doctor: d.Doctor,
Substances: d.Substances,
Fictations: d.Fictations,
Localization: d.Localization,
ClinicalDiagnoses: d.ClinicalDiagnoses,
Stadium: d.Stadium,
ClinicalNotes: d.ClinicalNotes,
PastHistory: d.PastHistory,
CurrentHistory: d.CurrentHistory,
PrevApMcu: d.PrevApMcu,
PrevApMcuNotes: d.PrevApMcuNotes,
SupportingExams: d.SupportingExams,
}
resp.BigMain = d.BigMain
return resp
}
func ToResponseList(data []ApMcuOrder) []ResponseDto {
resp := make([]ResponseDto, len(data))
for i, u := range data {
resp[i] = u.ToResponse()
}
return resp
}
@@ -0,0 +1,26 @@
package apmcuorder
import (
eamob "simrs-vx/internal/domain/main-entities/ap-mcu-order/base"
ed "simrs-vx/internal/domain/main-entities/doctor"
ee "simrs-vx/internal/domain/main-entities/encounter"
erc "simrs-vx/internal/domain/references/common"
)
type ApMcuOrder struct {
eamob.ApMcuOrder
Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"`
Doctor *ed.Doctor `json:"doctor,omitempty" gorm:"foreignKey:Doctor_Code;references:Code"`
}
func (d ApMcuOrder) IsNotNew() bool {
return d.Status_Code != erc.DSCNew
}
func (d ApMcuOrder) IsCompleted() bool {
return d.Status_Code == erc.DSCDone
}
func (d ApMcuOrder) IsSameDoctor(doctor_code *string) bool {
return d.Doctor_Code == *doctor_code
}
@@ -0,0 +1,86 @@
package chemo_plan
import (
// std
"time"
ere "simrs-vx/internal/domain/references/encounter"
// internal - domain - main-entities
ecore "simrs-vx/internal/domain/base-entities/core"
)
type CreateDto struct {
Parent_Id *uint `json:"parent_id"`
SeriesNumber *uint16 `json:"seriesNumber"`
CycleNumber *uint `json:"cycleNumber"`
PlanDate *time.Time `json:"planDate"`
RealizationDate *time.Time `json:"realizationDate"`
Notes *string `json:"notes"`
Status ere.StatusProtocolChemo `json:"status"`
}
type ReadListDto struct {
FilterDto
Includes string `json:"includes"`
Pagination ecore.Pagination
}
type FilterDto struct {
Parent_Id *uint `json:"parent-id"`
Protocol_Id *uint `json:"protocol-id"`
}
type ReadDetailDto struct {
Id uint16 `json:"id"`
Includes string `json:"includes"`
}
type UpdateDto struct {
Id uint16 `json:"id"`
CreateDto
}
type DeleteDto struct {
Id uint16 `json:"id"`
}
type MetaDto struct {
PageNumber int `json:"page_number"`
PageSize int `json:"page_size"`
Count int `json:"count"`
}
type ResponseDto struct {
ecore.Main
Parent_Id *uint `json:"parent_id"` // chemo.Id
Protocol_Id *uint `json:"protocol_id"`
SeriesNumber *uint16 `json:"seriesNumber"` // series ke -
CycleNumber *uint `json:"cycleNumber"` // cycle ke -
PlanDate *time.Time `json:"planDate"`
RealizationDate *time.Time `json:"realizationDate"`
Notes *string `json:"notes"`
Status ere.StatusProtocolChemo `json:"status"`
}
func (d ChemoPlan) ToResponse() ResponseDto {
resp := ResponseDto{
Parent_Id: d.Parent_Id,
SeriesNumber: d.SeriesNumber,
CycleNumber: d.CycleNumber,
PlanDate: d.PlanDate,
RealizationDate: d.RealizationDate,
Notes: d.Notes,
Status: d.Status,
}
resp.Main = d.Main
return resp
}
func ToResponseList(data []ChemoPlan) []ResponseDto {
resp := make([]ResponseDto, len(data))
for i, u := range data {
resp[i] = u.ToResponse()
}
return resp
}
@@ -0,0 +1,24 @@
package chemo_plan
import (
ee "simrs-vx/internal/domain/main-entities/encounter"
"time"
ecore "simrs-vx/internal/domain/base-entities/core"
ere "simrs-vx/internal/domain/references/encounter"
)
type ChemoPlan struct {
ecore.Main
Parent_Id *uint `json:"parent_id"` // chemo.Id
Protocol_Id *uint `json:"protocol_id"`
SeriesNumber *uint16 `json:"seriesNumber"` // series ke -
CycleNumber *uint `json:"cycleNumber"` // cycle ke -
PlanDate *time.Time `json:"planDate"`
RealizationDate *time.Time `json:"realizationDate"`
Notes *string `json:"notes"`
Status ere.StatusProtocolChemo `json:"status"`
Encounter_Id *uint `json:"encounter_id"`
Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"`
}
@@ -9,18 +9,21 @@ import (
// internal - domain - main-entities
ecore "simrs-vx/internal/domain/base-entities/core"
ee "simrs-vx/internal/domain/main-entities/encounter"
ec "simrs-vx/internal/domain/main-entities/chemo"
)
type CreateDto struct {
Encounter_Id *uint `json:"encounter_id"`
Patient_Weight *float32 `json:"patient_weight"`
Patient_Height *float32 `json:"patient_height"`
Diagnoses *string `json:"diagnoses"`
Duration *uint `json:"duration"`
DurationUnit_Code *erc.TimeUnitCode `json:"durationUnit_code"`
StartDate *time.Time `json:"startDate"`
EndDate *time.Time `json:"endDate"`
Chemo_Id *uint `json:"chemo_id"`
Patient_Weight *float32 `json:"patient_weight"`
Patient_Height *float32 `json:"patient_height"`
Diagnoses *string `json:"diagnoses"`
Interval *uint `json:"interval"`
Cycle *uint `json:"cycle"`
Series *uint16 `json:"series"`
StartDate *time.Time `json:"startDate"`
EndDate *time.Time `json:"endDate"`
Status_Code erc.DataVerifiedCode `json:"-"`
}
type ReadListDto struct {
@@ -30,7 +33,7 @@ type ReadListDto struct {
}
type FilterDto struct {
Encounter_Id *uint `json:"encounter-id"`
Chemo_Id *uint `json:"chemo-id"`
}
type ReadDetailDto struct {
@@ -55,28 +58,32 @@ type MetaDto struct {
type ResponseDto struct {
ecore.Main
Encounter_Id *uint `json:"encounter_id"`
Encounter *ee.Encounter `json:"encounter,omitempty"`
Patient_Weight *float32 `json:"patient_weight"`
Patient_Height *float32 `json:"patient_height"`
Diagnoses *string `json:"diagnoses"`
Duration *uint `json:"duration"`
DurationUnit_Code *erc.TimeUnitCode `json:"durationUnit_code"`
StartDate *time.Time `json:"startDate"`
EndDate *time.Time `json:"endDate"`
Chemo_Id *uint `json:"chemo_id"`
Chemo *ec.Chemo `json:"chemo,omitempty"`
Patient_Weight *float32 `json:"patient_weight"`
Patient_Height *float32 `json:"patient_height"`
Diagnoses *string `json:"diagnoses"`
Interval *uint `json:"interval"`
Cycle *uint `json:"cycle"`
Series *uint16 `json:"series"`
StartDate *time.Time `json:"startDate"`
EndDate *time.Time `json:"endDate"`
Status_Code erc.DataVerifiedCode `json:"status_code"`
}
func (d ChemoProtocol) ToResponse() ResponseDto {
resp := ResponseDto{
Encounter_Id: d.Encounter_Id,
Encounter: d.Encounter,
Patient_Weight: d.Patient_Weight,
Patient_Height: d.Patient_Height,
Diagnoses: d.Diagnoses,
Duration: d.Duration,
DurationUnit_Code: d.DurationUnit_Code,
StartDate: d.StartDate,
EndDate: d.EndDate,
Chemo_Id: d.Chemo_Id,
Chemo: d.Chemo,
Patient_Weight: d.Patient_Weight,
Patient_Height: d.Patient_Height,
Diagnoses: d.Diagnoses,
Interval: d.Interval,
Cycle: d.Cycle,
Series: d.Series,
StartDate: d.StartDate,
EndDate: d.EndDate,
Status_Code: d.Status_Code,
}
resp.Main = d.Main
return resp
@@ -1,21 +1,34 @@
package chemo_protocol
import (
ecore "simrs-vx/internal/domain/base-entities/core"
ee "simrs-vx/internal/domain/main-entities/encounter"
"simrs-vx/internal/domain/references/common"
"time"
ecore "simrs-vx/internal/domain/base-entities/core"
erc "simrs-vx/internal/domain/references/common"
ec "simrs-vx/internal/domain/main-entities/chemo"
ecp "simrs-vx/internal/domain/main-entities/chemo-plan"
eus "simrs-vx/internal/domain/main-entities/user"
)
type ChemoProtocol struct {
ecore.Main
Encounter_Id *uint `json:"encounter_id"`
Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"`
Patient_Weight *float32 `json:"patient_weight"`
Patient_Height *float32 `json:"patient_height"`
Diagnoses *string `json:"diagnoses"`
Duration *uint `json:"duration"`
DurationUnit_Code *common.TimeUnitCode `json:"durationUnit_code" gorm:"size:10"`
StartDate *time.Time `json:"startDate"`
EndDate *time.Time `json:"endDate"`
Chemo_Id *uint `json:"chemo_id"`
Chemo *ec.Chemo `json:"chemo,omitempty" gorm:"foreignKey:Chemo_Id;references:Id"`
Patient_Weight *float32 `json:"patient_weight"`
Patient_Height *float32 `json:"patient_height"`
Diagnoses *string `json:"diagnoses"`
Duration *uint `json:"duration"` // not used
DurationUnit_Code *erc.TimeUnitCode `json:"durationUnit_code"` // not used
Interval *uint `json:"interval"`
Cycle *uint `json:"cycle"` // total cycle
Series *uint16 `json:"series"` // total series
StartDate *time.Time `json:"startDate"`
EndDate *time.Time `json:"endDate"`
Status_Code erc.DataVerifiedCode `json:"status_code"`
VerifiedAt *time.Time `json:"verifiedAt"`
VerifiedBy_User_Id *uint `json:"verifiedBy_user_id"`
VerifiedBy *eus.User `json:"verifiedBy,omitempty" gorm:"foreignKey:VerifiedBy_User_Id;references:Id"`
ChemoPlans *[]ecp.ChemoPlan `json:"chemoPlans,omitempty" gorm:"foreignKey:Protocol_Id;references:Id"`
Patient_Id *uint `json:"patient_id"`
}
+13 -4
View File
@@ -1,6 +1,7 @@
package chemo
import (
ed "simrs-vx/internal/domain/main-entities/doctor"
// std
"time"
@@ -50,10 +51,12 @@ type DeleteDto struct {
}
type VerifyDto struct {
Id uint16 `json:"id"`
Status_Code erc.DataVerifiedCode `json:"status_code"`
Bed *string `json:"bed" validate:"required"`
Needs *string `json:"needs" validate:"required"`
Id uint16 `json:"id"`
Status_Code erc.DataVerifiedCode `json:"status_code"`
Bed *string `json:"bed"`
Needs *string `json:"needs"`
Doctor_Code *string `json:"doctor_code" validate:"required"`
NextChemoDate *time.Time `json:"nextChemoDate"`
pa.AuthInfo
}
@@ -74,6 +77,9 @@ type ResponseDto struct {
VerifiedBy *eus.User `json:"verifiedBy,omitempty"`
SrcUnit_Code *string `json:"srcUnit_code"`
SrcUnit *eun.Unit `json:"srcUnit,omitempty"`
Doctor_Code *string `json:"doctor_code"`
Doctor *ed.Doctor `json:"doctor,omitempty"`
NextChemoDate *time.Time `json:"nextChemoDate"`
}
func (d Chemo) ToResponse() ResponseDto {
@@ -86,6 +92,9 @@ func (d Chemo) ToResponse() ResponseDto {
VerifiedBy: d.VerifiedBy,
SrcUnit_Code: d.SrcUnit_Code,
SrcUnit: d.SrcUnit,
Doctor_Code: d.Doctor_Code,
Doctor: d.Doctor,
NextChemoDate: d.NextChemoDate,
}
resp.Main = d.Main
return resp
@@ -1,14 +1,16 @@
package chemo
import (
ere "simrs-vx/internal/domain/references/encounter"
"time"
ecore "simrs-vx/internal/domain/base-entities/core"
erc "simrs-vx/internal/domain/references/common"
ed "simrs-vx/internal/domain/main-entities/doctor"
ee "simrs-vx/internal/domain/main-entities/encounter"
eun "simrs-vx/internal/domain/main-entities/unit"
eus "simrs-vx/internal/domain/main-entities/user"
erc "simrs-vx/internal/domain/references/common"
)
type Chemo struct {
@@ -19,8 +21,12 @@ type Chemo struct {
VerifiedAt *time.Time `json:"verifiedAt"`
VerifiedBy_User_Id *uint `json:"verifiedBy_user_id"`
VerifiedBy *eus.User `json:"verifiedBy,omitempty" gorm:"foreignKey:VerifiedBy_User_Id;references:Id"`
SrcUnit_Code *string `json:"src_unit_code"`
SrcUnit_Code *string `json:"src_unit_code"` // klinik asal
SrcUnit *eun.Unit `json:"src_unit,omitempty" gorm:"foreignKey:SrcUnit_Code;references:Code"`
Bed *string `json:"bed" gorm:"size:1024"`
Needs *string `json:"needs" gorm:"size:2048"`
Doctor_Code *string `json:"doctor_code"`
Doctor *ed.Doctor `json:"doctor" gorm:"foreignKey:Doctor_Code;references:Code"`
NextChemoDate *time.Time `json:"nextChemoDate"`
Class_Code ere.ChemoClassCode `json:"class_code"`
}
@@ -0,0 +1,6 @@
package cpmcuorderitem
type SubCreateDto struct {
McuSrc_Code string `json:"mcuSrc_code" validate:"required"`
Note string `json:"note"`
}
@@ -0,0 +1,17 @@
package cpmcuorderitem
import (
ecore "simrs-vx/internal/domain/base-entities/core"
ems "simrs-vx/internal/domain/main-entities/mcu-src"
erc "simrs-vx/internal/domain/references/common"
)
type CpMcuOrderItem struct {
ecore.BigMain // adjust this according to the needs
CpMcuOrder_Id uint64 `json:"cpMcuOrder_id" gorm:"uniqueIndex:idx_order_src"`
McuSrc_Code string `json:"mcuSrc_code" gorm:"uniqueIndex:idx_order_src"`
McuSrc *ems.McuSrc `json:"mcuSrc,omitempty" gorm:"foreignKey:McuSrc_Code;references:Code"`
Note *string `json:"note" gorm:"size:1024"`
Result *string `json:"result"`
Status_Code erc.DataStatusCode `json:"status_code"`
}
@@ -0,0 +1,80 @@
package cpmcuorderitem
import (
ecore "simrs-vx/internal/domain/base-entities/core"
emro "simrs-vx/internal/domain/main-entities/cp-mcu-order"
ems "simrs-vx/internal/domain/main-entities/mcu-src"
erc "simrs-vx/internal/domain/references/common"
"time"
)
type CreateDto struct {
CpMcuOrder_Id uint64 `json:"cpMcuOrder_id"`
McuSrc_Code string `json:"mcuSrc_code"`
}
type ReadListDto struct {
FilterDto
Includes string `json:"includes"`
Pagination ecore.Pagination
}
type FilterDto struct {
CpMcuOrder_Id *uint64 `json:"cp-mcu-order-id"`
McuSrc_Code *string `json:"mcu-src-code"`
Status_Code erc.DataStatusCode `json:"status-code"`
}
type ReadDetailDto struct {
Id uint `json:"id"`
}
type UpdateDto struct {
Id uint `json:"id"`
CreateDto
}
type DeleteDto struct {
Id uint `json:"id"`
}
type SetScheduleDto struct {
Id uint `json:"id"`
ExaminationDate *time.Time `json:"examinationDate"`
}
type MetaDto struct {
PageNumber int `json:"page_number"`
PageSize int `json:"page_size"`
Count int `json:"count"`
}
type ResponseDto struct {
ecore.BigMain
CpMcuOrder_Id uint64 `json:"cpMcuOrder_id"`
CpMcuOrder *emro.CpMcuOrder `json:"cpMcuOrder,omitempty"`
McuSrc_Code string `json:"mcuSrc_code"`
McuSrc *ems.McuSrc `json:"mcuSrc,omitempty"`
Result *string `json:"result"`
Status_Code erc.DataStatusCode `json:"status_code"`
}
func (d CpMcuOrderItem) ToResponse() ResponseDto {
resp := ResponseDto{
CpMcuOrder_Id: d.CpMcuOrder_Id,
CpMcuOrder: d.CpMcuOrder,
McuSrc_Code: d.McuSrc_Code,
McuSrc: d.McuSrc,
Result: d.Result,
Status_Code: d.Status_Code,
}
resp.BigMain = d.BigMain
return resp
}
func ToResponseList(data []CpMcuOrderItem) []ResponseDto {
resp := make([]ResponseDto, len(data))
for i, u := range data {
resp[i] = u.ToResponse()
}
return resp
}
@@ -0,0 +1,17 @@
package cpmcuorderitem
import (
emo "simrs-vx/internal/domain/main-entities/cp-mcu-order"
emoib "simrs-vx/internal/domain/main-entities/cp-mcu-order-item/base"
erc "simrs-vx/internal/domain/references/common"
)
type CpMcuOrderItem struct {
emoib.CpMcuOrderItem
CpMcuOrder *emo.CpMcuOrder `json:"cpMcuOrder,omitempty" gorm:"foreignKey:CpMcuOrder_Id;references:Id"`
}
func (d CpMcuOrderItem) IsCompleted() bool {
return d.Status_Code == erc.DSCDone
}
@@ -0,0 +1,21 @@
package cpmcuorder
import (
"time"
ecore "simrs-vx/internal/domain/base-entities/core"
ercl "simrs-vx/internal/domain/references/clinical"
erc "simrs-vx/internal/domain/references/common"
)
type CpMcuOrder struct {
ecore.BigMain
Encounter_Id uint `json:"encounter_id"`
Number uint64 `json:"number"`
Doctor_Code string `json:"doctor_code" gorm:"unique;size:20"`
UrgencyLevel_Code ercl.McuUrgencyLevelCode `json:"urgencyLevel_code" gorm:"not null;size:15"`
OtherNotes *string `json:"otherNotes"`
ExamScheduleDate *time.Time `json:"examinationDate"`
Resume *string `json:"resume"`
Status_Code erc.DataStatusCode `json:"status_code" gorm:"not null;size:10"`
}

Some files were not shown because too many files have changed in this diff Show More