From 11abb0f49a1816a1f89df42b8899bb2cd1f4d69a97923039bb759ff1040b64f7 Mon Sep 17 00:00:00 2001 From: ahdan15 Date: Wed, 16 Jul 2025 07:35:04 +0700 Subject: [PATCH] update surkon terbaru --- .../satu_data/surat_kontrol/surat_kontrol.go | 34 ++++-- handlers/bpjs/surat_kontrol/surat_kontrol.go | 110 ++++++++++++++---- models/bpjs/surat_kontrol/surat_kontrol.go | 11 ++ 3 files changed, 120 insertions(+), 35 deletions(-) diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index b41e0a2..1047acf 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -56,8 +56,8 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.DataSuratKontrol) error { log.Println("Req Insert Database : ", reqInsert) insertQuery := `insert into "data_surat_kontrol" ("id", "date_created", "Tanggal_cetak_surat_kontrol", "Tanggal_rencana_kontrol", "Nomor_surat_kontrol", "Kunjungan_pasien", "Ruangan_surat_kontrol", "DPJP_surat_kontrol", "Status_surat_kontrol", - "User_created_surat_kontrol", "Tipe_surat_kontrol", "User_updated_surat_kontrol", "Tipe_rawat","Nomor_kartu") - values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?)` + "User_created_surat_kontrol", "Tipe_surat_kontrol", "User_updated_surat_kontrol", "Tipe_rawat","Nomor_kartu","Kode_icd","Diagnosa") + values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?,?)` err := config.SatuDataDB.Exec(insertQuery, reqInsert.ID, reqInsert.DateCreated, @@ -73,6 +73,8 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.DataSuratKontrol) error { reqInsert.UserUpdatedSurKon, reqInsert.TipeRawat, reqInsert.NomorKartu, + reqInsert.KodeIcd, + reqInsert.Diagnosa, ).Error if err != nil { log.Println(err) @@ -178,7 +180,7 @@ func GetDataSuratKontrolByIDTipe(idxdaftar string, tipe string) (*suratkontrol.G func GetDataSuratKontrolByIDnomor(idxdaftar string, nomor string) (*suratkontrol.GetDataSuratKontrol, error) { var dataSurKon *suratkontrol.GetDataSuratKontrol - err := config.SatuDataDB.Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",dsk."Nomor_surat_kontrol", + err := config.SatuDataDB.Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",dsk."Nomor_surat_kontrol",dsk."Kode_icd",dsk."Diagnosa", (select dlr."Nama" from data_kunjungan_pasien dkp left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id where dkp."id" = dsk."Kunjungan_pasien" LIMIT 1) as "Poli_asal", @@ -205,7 +207,8 @@ func GetDataSuratKontrolByIDnomor(idxdaftar string, nomor string) (*suratkontrol dkp2."Diagnosis_primer_utama" as "Kode_diagnosa", dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa", dsk."Tipe_surat_kontrol" as "Tipe_SurKon", - dsk."User_created_surat_kontrol" as "User" + dsk."User_created_surat_kontrol" as "User", + dsk."Nomor_kartu" from data_surat_kontrol dsk left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien" left join daftar_lokasi_ruang dlr on dsk."Ruangan_surat_kontrol" = dlr."id" @@ -225,7 +228,7 @@ func GetDataSuratKontrolByIDnomor(idxdaftar string, nomor string) (*suratkontrol func GetDataSuratKontrolnomor(nomor string) (*suratkontrol.GetDataSuratKontrol, error) { var dataSurKon *suratkontrol.GetDataSuratKontrol - err := config.SatuDataDB.Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",dsk."Nomor_surat_kontrol", + err := config.SatuDataDB.Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",dsk."Nomor_surat_kontrol",dsk."Kode_icd",dsk."Diagnosa", (select dlr."Nama" from data_kunjungan_pasien dkp left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id where dkp."id" = dsk."Kunjungan_pasien" LIMIT 1) as "Poli_asal", @@ -252,7 +255,8 @@ func GetDataSuratKontrolnomor(nomor string) (*suratkontrol.GetDataSuratKontrol, dkp2."Diagnosis_primer_utama" as "Kode_diagnosa", dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa", dsk."Tipe_surat_kontrol" as "Tipe_SurKon", - dsk."User_created_surat_kontrol" as "User" + dsk."User_created_surat_kontrol" as "User", + dsk."Nomor_kartu" from data_surat_kontrol dsk left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien" left join daftar_lokasi_ruang dlr on dsk."Ruangan_surat_kontrol" = dlr."id" @@ -299,7 +303,10 @@ func GetDataSuratKontrolByIDsrukon(idxdaftar string, id string) (*suratkontrol.G dkp2."Diagnosis_primer_utama" as "Kode_diagnosa", dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa", dsk."Tipe_surat_kontrol" as "Tipe_SurKon", - dsk."User_created_surat_kontrol" as "User" + dsk."User_created_surat_kontrol" as "User", + dsk."Nomor_kartu", + dsk."Kode_icd", + dsk."Diagnosa" from data_surat_kontrol dsk left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien" left join daftar_lokasi_ruang dlr on dsk."Ruangan_surat_kontrol" = dlr."id" @@ -345,7 +352,10 @@ func GetDataSuratKontrolidsurkon(id string) (*suratkontrol.GetDataSuratKontrol, dkp2."Diagnosis_primer_utama" as "Kode_diagnosa", dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa", dsk."Tipe_surat_kontrol" as "Tipe_SurKon", - dsk."User_created_surat_kontrol" as "User" + dsk."User_created_surat_kontrol" as "User", + dsk."Nomor_kartu", + dsk."Kode_icd", + dsk."Diagnosa" from data_surat_kontrol dsk left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien" left join daftar_lokasi_ruang dlr on dsk."Ruangan_surat_kontrol" = dlr."id" @@ -429,11 +439,11 @@ func GetIdDokterByHFIS(KodeHFIS string) (string, error) { return idDokter, err } -func GetUserCreated(user string) (string, error) { - var UserCreated string - err := config.SatuDataDB.Raw(`select "User_created_surat_kontrol" from data_surat_kontrol where "id" = ? `, user).Scan(&UserCreated).Error +func GetUserCreated(user string) (*suratkontrol.Created, error) { + var UserCreated *suratkontrol.Created + err := config.SatuDataDB.Raw(`select "User_created_surat_kontrol","date_created" from data_surat_kontrol where "id" = ? `, user).Scan(&UserCreated).Error if err != nil { - return "", err + return nil, err } return UserCreated, err } diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 656dc6c..ae1dbbb 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -34,7 +34,7 @@ func InsertSuratkontrolNew(c *gin.Context) { timeNow := time.Now().Format("2006-01-02 15:04:05") conf := config.ConfigBpjs{} - header := cfg.SetHeaderDev(false, conf) + header := cfg.SetHeader(false, conf) headers := map[string]string{ "X-cons-id": header.ConsID, @@ -63,6 +63,24 @@ func InsertSuratkontrolNew(c *gin.Context) { }) return } + + jadwalLibur, isLibur, errLibur := jadwal.GetJadwalLibur(req.TglRencanaKontrol) + if errLibur != nil { + log.Println(errLibur) + c.JSON(http.StatusCreated, &sk.MetadataString{ + Code: "201", + Message: err.Error(), + }) + return + } else if isLibur { + log.Println(jadwalLibur.KeteranganLiburPelayanan) + c.JSON(http.StatusCreated, &sk.MetadataString{ + Code: "201", + Message: "Hari Libur " + jadwalLibur.NamaLiburPelayanan, + }) + return + } + kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) if err != nil { log.Println(err) @@ -181,6 +199,16 @@ func InsertSuratkontrolNew(c *gin.Context) { return } + parts := strings.SplitN(res.Response.NamaDiagnosa, " - ", 2) + var kodeICD, diagnosa string + if len(parts) == 2 { + kodeICD = parts[0] + diagnosa = parts[1] + } else { + kodeICD = res.Response.NamaDiagnosa + diagnosa = "" + } + logTimeEnd := time.Now().Format("2006-01-02 15:04:05") reqInsert := &sk.DataSuratKontrol{ ID: uuid, @@ -196,6 +224,8 @@ func InsertSuratkontrolNew(c *gin.Context) { UserCreatedSurKon: req.User, TipeSurKon: req.TipeSurKon, TipeRawat: req.TipeRawat, + KodeIcd: kodeICD, + Diagnosa: diagnosa, } err = suratkontrol.InsertDataSuratKontrol(reqInsert) @@ -980,7 +1010,7 @@ func UpdateSuratKontrolnew(c *gin.Context) { conf := config.ConfigBpjs{} - header := cfg.SetHeaderDev(false, conf) + header := cfg.SetHeader(false, conf) headers := map[string]string{ "X-cons-id": header.ConsID, @@ -1009,6 +1039,22 @@ func UpdateSuratKontrolnew(c *gin.Context) { return } + jadwalLibur, isLibur, errLibur := jadwal.GetJadwalLibur(req.TglRencanaKontrol) + if errLibur != nil { + log.Println(errLibur) + c.JSON(http.StatusCreated, &sk.MetadataString{ + Code: "201", + Message: err.Error(), + }) + return + } else if isLibur { + log.Println(jadwalLibur.KeteranganLiburPelayanan) + c.JSON(http.StatusCreated, &sk.MetadataString{ + Code: "201", + Message: "Hari Libur " + jadwalLibur.NamaLiburPelayanan, + }) + return + } timeNow := time.Now().Format("2006-01-02 15:04:05") kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) @@ -1020,6 +1066,16 @@ func UpdateSuratKontrolnew(c *gin.Context) { }) return } + UserCreated, err := suratkontrol.GetUserCreated(req.IDSurKon) + if err != nil { + log.Println(err) + c.JSON(http.StatusCreated, &sk.MetadataString{ + Code: "201", + Message: err.Error(), + }) + } + dateCetakSurkon, _ := time.Parse(time.RFC3339, UserCreated.DataCreate) + dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02") uuid := uuid.New().String() if req.TipeSurKon == "2" { @@ -1126,14 +1182,7 @@ func UpdateSuratKontrolnew(c *gin.Context) { }) return } - UserCreated, err := suratkontrol.GetUserCreated(req.IDSurKon) - if err != nil { - log.Println(err) - c.JSON(http.StatusCreated, &sk.MetadataString{ - Code: "201", - Message: err.Error(), - }) - } + idDokter, err := suratkontrol.GetIdDokterByHFIS(req.KodeHFIS) if err != nil { log.Println(err) @@ -1143,9 +1192,20 @@ func UpdateSuratKontrolnew(c *gin.Context) { }) } + parts := strings.SplitN(res.Response.NamaDiagnosa, " - ", 2) + var kodeICD, diagnosa string + if len(parts) == 2 { + kodeICD = parts[0] + diagnosa = parts[1] + } else { + kodeICD = res.Response.NamaDiagnosa + diagnosa = "" + } + reqInsert := &sk.DataSuratKontrol{ ID: uuid, - DateCreated: timeNow, + DateUpdated: timeNow, + DateCreated: dateCetakSurkonString, TglCetakSurKon: timeNow, TglRencanaKontrol: res.Response.TglRencanaKontrol, NomorSurKon: res.Response.NoSuratKontrol, @@ -1155,8 +1215,10 @@ func UpdateSuratKontrolnew(c *gin.Context) { StatusSurKon: 1, // Insert status always set to 1 TipeSurKon: req.TipeSurKon, TipeRawat: req.TipeRawat, - UserCreatedSurKon: UserCreated, + UserCreatedSurKon: UserCreated.UserCreate, UserUpdatedSurKon: req.User, + KodeIcd: kodeICD, + Diagnosa: diagnosa, } if reqInsert.DPJPSurKon == "" { @@ -1249,7 +1311,8 @@ func UpdateSuratKontrolnew(c *gin.Context) { } reqInsert := &sk.DataSuratKontrol{ ID: uuid, - DateCreated: timeNow, + DateCreated: dateCetakSurkonString, + DateUpdated: timeNow, TglCetakSurKon: timeNow, TglRencanaKontrol: req.TglRencanaKontrol, NomorSurKon: dataSurkon, //TODO How to get Nomor SurKon @@ -1258,7 +1321,7 @@ func UpdateSuratKontrolnew(c *gin.Context) { DPJPSurKon: idDokter, StatusSurKon: 1, // First Insert status always set to 1 TipeSurKon: req.TipeSurKon, - UserCreatedSurKon: UserCreated, + UserCreatedSurKon: UserCreated.UserCreate, UserUpdatedSurKon: req.User, TipeRawat: req.TipeRawat, } @@ -1292,7 +1355,7 @@ func DeleteSuratKontrolNew(c *gin.Context) { conf := config.ConfigBpjs{} - header := cfg.SetHeaderDev(false, conf) + header := cfg.SetHeader(false, conf) headers := map[string]string{ "X-cons-id": header.ConsID, @@ -1884,7 +1947,7 @@ func GetDataSurKonByNoSurkon(c *gin.Context) { NomorSEP: dataSurKon.NomorSEP, NamaPasien: dataSurKon.NamaPasien, NamaDokter: namaLengkap, - NomorKartu: "", + NomorKartu: dataSurKon.NomorKartu, Subspesialis: dataSurKon.Subspesialis, KodePoli: dataSurKon.KodePoli, KodeDokter: dataSurKon.KodeDokter, @@ -1892,8 +1955,8 @@ func GetDataSurKonByNoSurkon(c *gin.Context) { IDDokter: dataSurKon.IDDokter, KodeDPJP: dataSurKon.KodeDPJP, NoRM: dataSurKon.NoRM, - KodeDiagnosa: dataSurKon.KodeDiagnosa, - NamaDiagnosa: dataSurKon.NamaDiagnosa, + KodeDiagnosa: dataSurKon.KodeIcd, + NamaDiagnosa: dataSurKon.Diagnosa, TipeSurKon: dataSurKon.TipeSurKon, User: dataSurKon.User, } @@ -1946,7 +2009,7 @@ func GetDataSurKonByIDSurkon(c *gin.Context) { NomorSEP: dataSurKon.NomorSEP, NamaPasien: dataSurKon.NamaPasien, NamaDokter: namaLengkap, - NomorKartu: "", + NomorKartu: dataSurKon.NomorKartu, Subspesialis: dataSurKon.Subspesialis, KodePoli: dataSurKon.KodePoli, KodeDokter: dataSurKon.KodeDokter, @@ -1954,8 +2017,8 @@ func GetDataSurKonByIDSurkon(c *gin.Context) { IDDokter: dataSurKon.IDDokter, KodeDPJP: dataSurKon.KodeDPJP, NoRM: dataSurKon.NoRM, - KodeDiagnosa: dataSurKon.KodeDiagnosa, - NamaDiagnosa: dataSurKon.NamaDiagnosa, + KodeDiagnosa: dataSurKon.KodeIcd, + NamaDiagnosa: dataSurKon.Diagnosa, TipeSurKon: dataSurKon.TipeSurKon, User: dataSurKon.User, } @@ -2606,7 +2669,8 @@ func UpdateSpri(c *gin.Context) { reqInsert := &sk.DataSuratKontrol{ ID: uuid, - DateCreated: timeNow, + DateCreated: UserCreated.DataCreate, + DateUpdated: timeNow, TglCetakSurKon: timeNow, TglRencanaKontrol: res.Response.TglRencanaKontrol, NomorSurKon: res.Response.NoSPRI, @@ -2617,7 +2681,7 @@ func UpdateSpri(c *gin.Context) { StatusSurKon: 1, // Insert status always set to 1 TipeSurKon: req.TipeSurKon, TipeRawat: req.TipeRawat, - UserCreatedSurKon: UserCreated, + UserCreatedSurKon: UserCreated.UserCreate, UserUpdatedSurKon: req.User, } diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index 127ff78..e816fe8 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -263,6 +263,8 @@ type DataSuratKontrol struct { TglRencanaKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"` NomorSurKon string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_kontrol"` NomorKartu string `gorm:"column:Nomor_kartu" json:"Nomor_kartu"` + KodeIcd string `gorm:"column:kode_icd" json:"kode_icd"` + Diagnosa string `gorm:"column:Diagnosa" json:"Diagnosa"` KunjunganPasien string `gorm:"column:Kunjungan_pasien" json:"Kunjungan_pasien"` RuanganSurKon int `gorm:"column:Ruangan_surat_kontrol" json:"Ruangan_surat_kontrol"` DPJPSurKon string `gorm:"column:DPJP_surat_kontrol" json:"DPJP_surat_kontrol"` @@ -307,6 +309,8 @@ type GetDataSuratKontrol struct { NoRM string `gorm:"column:No_rm" json:"No_rm"` KodeDiagnosa string `gorm:"column:Kode_diagnosa" json:"Kode_diagnosa"` NamaDiagnosa string `gorm:"column:Nama_diagnosa" json:"Nama_diagnosa"` + KodeIcd string `gorm:"column:Kode_icd" json:"Kode_icd"` + Diagnosa string `gorm:"column:Diagnosa" json:"Diagnosa"` TipeSurKon string `gorm:"column:Tipe_SurKon" json:"Tipe_SurKon"` TipeRawat string `gorm:"column:Tipe_rawat" json:"Tipe_rawat"` User string `gorm:"column:User" json:"User"` @@ -333,6 +337,8 @@ type ResponseGetDataSuratKontrol struct { NoRM string `json:"No_rm"` KodeDiagnosa string `json:"Kode_diagnosa"` NamaDiagnosa string `json:"Nama_diagnosa"` + KodeIcd string `json:"Kode_icd"` + Diagnosa string `json:"Diagnosa"` TipeSurKon string `json:"Tipe_SurKon"` TipeRawat string `json:"Tipe_rawat"` User string `json:"User"` @@ -428,3 +434,8 @@ type ResponseDataSPRI struct { TglLahir string `json:"tglLahir"` NamaDiagnosa string `json:"namaDiagnosa"` } + +type Created struct { + UserCreate string `json:"User_created_surat_kontrol"` + DataCreate string `json:"date_created"` +}