diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index 859bebb..7b512b4 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -30,7 +30,8 @@ func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, er where dpdgb.data_pegawai_id = dp.id ) AS gelarbelakang, dkp."Ruangan" as ruangan, - dkp."DPJP" as id_dokter + dkp."DPJP" as id_dokter, + dkp."NOMR" as "No_rm" from data_kunjungan_pasien dkp left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id left join data_pegawai dp on dkp."DPJP" = dp.id @@ -103,6 +104,7 @@ func GetDataSuratKontrol(offset, limit string) ([]*suratkontrol.GetDataSuratKont ds."id" as "ID_poli", dp."HFIS_code" as "Kode_dokter", dp."id" as "id_dokter", + dp."Code_dpjp" as "Kode_dpjp", dkp2."NOMR" as "No_rm", dkp2."Diagnosis_primer_utama" as "Kode_diagnosa", dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa", @@ -149,6 +151,7 @@ func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontro ds."id" as "ID_poli", dp."HFIS_code" as "Kode_dokter", dp."id" as "id_dokter", + dp."Code_dpjp" as "Kode_dpjp", dkp2."NOMR" as "No_rm", dkp2."Diagnosis_primer_utama" as "Kode_diagnosa", dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa", @@ -204,7 +207,7 @@ func GetAllDataSuratKontrol(idSurKon string) (*suratkontrol.DataSuratKontrol, er func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []interface{}) ([]*suratkontrol.GetDataSuratKontrol, error) { var dataSurKon []*suratkontrol.GetDataSuratKontrol - query += ` and date(dsk."Tanggal_rencana_kontrol") between ? and ?` + query += ` and date(dsk."Tanggal_rencana_kontrol") between ? and ? offset ? limit ?` querySelect := `select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol", dsk."Nomor_surat_kontrol", (select dlr."Nama" @@ -228,6 +231,7 @@ func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []i ds."id" as "ID_poli", dp."HFIS_code" as "Kode_dokter", dp."id" as "id_dokter", + dp."Code_dpjp" as "Kode_dpjp", dkp2."NOMR" as "No_rm", dkp2."Diagnosis_primer_utama" as "Kode_diagnosa", dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa", @@ -238,7 +242,7 @@ func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []i left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id" left join data_ktp dk on dp."KTP" = dk. "id" left join daftar_subspesialis ds on dp."Subspesialis" = ds."id" - where dsk."Status_surat_kontrol" = '1' ` + where dsk."Status_surat_kontrol" = '1' and dsk."Tipe_surat_kontrol" = ? ` querySelect += query err := config.SatuDataDB.Debug().Raw(querySelect, args...).Find(&dataSurKon).Error if err != nil { @@ -247,3 +251,35 @@ func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []i } return dataSurKon, nil } + +func CountDataSurKon(req suratkontrol.RequestCariPasien, query string, args []interface{}) (int, error) { + var jumlahData int + query += ` and date(dsk."Tanggal_rencana_kontrol") between ? and ?` + querySelect := `select count(dsk.*) + 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" + left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id" + left join data_ktp dk on dp."KTP" = dk. "id" + left join daftar_subspesialis ds on dp."Subspesialis" = ds."id" + where dsk."Status_surat_kontrol" = '1' and dsk."Tipe_surat_kontrol" = ? ` + querySelect += query + err := config.SatuDataDB.Debug().Raw(querySelect, args...).Find(&jumlahData).Error + if err != nil { + log.Println(err) + return 0, err + } + return jumlahData, nil +} + +func GetNomorSurKon(idPasien string) (string, error) { + var noSurKon string + querySelect := `select dsk."Nomor_surat_kontrol" from data_surat_kontrol dsk where dsk."Kunjungan_pasien" = ? and dsk."Tipe_surat_kontrol" <> '1' order by dsk."date_created"` + err := config.SatuDataDB.Debug().Raw(querySelect, idPasien).Scan(&noSurKon).Error + if err != nil { + log.Println(err) + return "", err + } + log.Println("Nomor SurKon :", noSurKon) + return noSurKon, nil +} diff --git a/docs/utils/utils.go b/docs/utils/utils.go index 2a5f1d1..bf6d46b 100644 --- a/docs/utils/utils.go +++ b/docs/utils/utils.go @@ -1,7 +1,9 @@ package utils import ( + "fmt" "log" + "strconv" "strings" ) @@ -43,3 +45,17 @@ func ReplaceGelar(gelar string) string { gelar = strings.ReplaceAll(gelar, ",", " ") return gelar } + +func GetNoUrut(noSurKon string) (string, error) { + noSurKonSlice := strings.Split(noSurKon, "/") + noUrut := noSurKonSlice[3] + noUrutInt, err := strconv.Atoi(noUrut) + if err != nil { + return "", err + } + + noUrutInt++ + noUrutStr := fmt.Sprintf("%03d", noUrutInt) + log.Println("No Urut: ", noUrutStr) + return noUrutStr, nil +} diff --git a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go index ec82326..6487783 100644 --- a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go @@ -189,7 +189,7 @@ func GetDokterByDPJP(c *gin.Context) { Kode: listSubspesialis.Kode, Spesialis: listSubspesialis.Spesialis, Subspesialis: listSubspesialis.Subspesialis, - IDSubspesialis: listSubspesialis.Kode, + IDSubspesialis: listSubspesialis.ID, NamaLengkap: namaLengkap, HFISCode: hfisCode, KodeDPJP: dpjp, @@ -207,7 +207,7 @@ func GetSpesialisByDate(c *gin.Context) { if err != nil { c.JSON(http.StatusInternalServerError, err) } - hari := date.Local().Weekday().String() + hari := date.Local().Weekday().String() hari = utils.ConvertDay(hari) idSpesialis, err := dokter.GetJadwalDokterByDate(hari) if err != nil { diff --git a/handlers/bpjs/surat_kontrol/response.go b/handlers/bpjs/surat_kontrol/response.go index a469c14..de04e59 100644 --- a/handlers/bpjs/surat_kontrol/response.go +++ b/handlers/bpjs/surat_kontrol/response.go @@ -36,14 +36,34 @@ func PostData(url string, header *config.Header, headers map[string]string, requ } log.Println("REQ", req.Header) - client := http.Client{} + client := http.Client{ + Timeout: 10 * time.Second, + } + + responses := &suratkontrol.Response{} response, err := client.Do(req) if err != nil { + if strings.Contains(strings.ToLower(err.Error()), "deadline exceeded") { + errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi") + log.Printf("error : %v", errMsg) + responses.MetaData.Message = errMsg.Error() + log.Println("responses: ", responses) + return responses, err + } log.Printf("Error making external API request: %v", err) - return nil, err + return responses, err } log.Println("RESPONSE: ", response) + if response.StatusCode == http.StatusGatewayTimeout { // 504 + errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi") + log.Printf("error : %v", errMsg) + responses.MetaData.Code = "504" + responses.MetaData.Message = errMsg.Error() + log.Println("responses: ", responses) + return responses, err + } + key := header.ConsID + header.SecretKey + header.TimeStamp res, err := io.ReadAll(response.Body) if err != nil { @@ -62,9 +82,12 @@ func PostData(url string, header *config.Header, headers map[string]string, requ log.Println("ResponseRaw : ", resSuratKontrolRaw) - responses := &suratkontrol.Response{} if resSuratKontrolRaw.MetaData.Code != "200" { errMsg := errors.New(resSuratKontrolRaw.MetaData.Message) + if strings.Contains(strings.ToLower(resSuratKontrolRaw.MetaData.Message), "Gagal simpan!") { + message := "Surat kontrol gagal diterbitkan, pastikan klinik tujuan sama dengan klinik asal pada rujukan awal" + resSuratKontrolRaw.MetaData.Message = message + } log.Printf("error : %v", errMsg) responses.MetaData.Code = resSuratKontrolRaw.MetaData.Code responses.MetaData.Message = resSuratKontrolRaw.MetaData.Message @@ -125,7 +148,7 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s response, err := client.Do(req) if err != nil { if strings.Contains(strings.ToLower(err.Error()), "deadline exceeded") { - errMsg := errors.New("Gagal Proses Selama 10 Detik, Silahkan Coba Lagi") + errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi") log.Printf("error : %v", errMsg) responses.MetaData.Message = errMsg.Error() log.Println("responses: ", responses) @@ -137,7 +160,7 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s log.Println("RESPONSE: ", response) if response.StatusCode == http.StatusGatewayTimeout { // 504 - errMsg := errors.New("Gagal Proses Selama 10 Detik, Silahkan Coba Lagi") + errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi") log.Printf("error : %v", errMsg) responses.MetaData.Code = "504" responses.MetaData.Message = errMsg.Error() @@ -163,6 +186,10 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s if resSuratKontrolRaw.MetaData.Code != "200" { errMsg := errors.New(resSuratKontrolRaw.MetaData.Message) + if strings.Contains(strings.ToLower(resSuratKontrolRaw.MetaData.Message), "gagal simpan") { + message := "Surat kontrol gagal diterbitkan, pastikan klinik tujuan sama dengan klinik asal pada rujukan awal" + resSuratKontrolRaw.MetaData.Message = message + } log.Printf("error : %v", errMsg) responses.MetaData.Code = resSuratKontrolRaw.MetaData.Code responses.MetaData.Message = resSuratKontrolRaw.MetaData.Message @@ -237,7 +264,17 @@ func ResponseDeleteSuratKontrol(url string, header *config.Header, headers map[s return nil, err } - responses := &suratkontrol.Response{ + responses := &suratkontrol.Response{} + if resSuratKontrolRaw.MetaData.Code != "200" { + errMsg := errors.New(resSuratKontrolRaw.MetaData.Message) + log.Printf("error : %v", errMsg) + responses.MetaData.Code = resSuratKontrolRaw.MetaData.Code + responses.MetaData.Message = resSuratKontrolRaw.MetaData.Message + log.Println("responses: ", responses) + return responses, errMsg + } + + responses = &suratkontrol.Response{ MetaData: resSuratKontrolRaw.MetaData, } @@ -280,6 +317,16 @@ func ResponseGetNomorSuratKontrol(url string, header *config.Header, headers map return nil, err } + responses := &suratkontrol.ResponseGetSuratKontrol{} + if resNoSuratKontrolRaw.MetaData.Code != "200" { + errMsg := errors.New(resNoSuratKontrolRaw.MetaData.Message) + log.Printf("error : %v", errMsg) + responses.MetaData.Code = resNoSuratKontrolRaw.MetaData.Code + responses.MetaData.Message = resNoSuratKontrolRaw.MetaData.Message + log.Println("responses: ", responses) + return responses, errMsg + } + dataResp, err := docs.StringDecrypt(key, resNoSuratKontrolRaw.Response) if err != nil { log.Printf("Error Decrypt: %v", err) @@ -295,7 +342,7 @@ func ResponseGetNomorSuratKontrol(url string, header *config.Header, headers map return nil, err } - responses := &suratkontrol.ResponseGetSuratKontrol{ + responses = &suratkontrol.ResponseGetSuratKontrol{ MetaData: resNoSuratKontrolRaw.MetaData, Response: responseNoSuratKontrol, } @@ -337,6 +384,16 @@ func ResponseGetSuratKontrolBySEP(url string, header *config.Header, headers map return nil, err } + responses := &suratkontrol.ResponseGetSuratKontrolBySEP{} + if resSurKonSEP.MetaData.Code != "200" { + errMsg := errors.New(resSurKonSEP.MetaData.Message) + log.Printf("error : %v", errMsg) + responses.MetaData.Code = resSurKonSEP.MetaData.Code + responses.MetaData.Message = resSurKonSEP.MetaData.Message + log.Println("responses: ", responses) + return responses, errMsg + } + dataResp, err := docs.StringDecrypt(key, resSurKonSEP.Response) if err != nil { log.Printf("Error Decrypt: %v", err) @@ -354,7 +411,7 @@ func ResponseGetSuratKontrolBySEP(url string, header *config.Header, headers map log.Println("res: ", resSurKonSEP) - responses := &suratkontrol.ResponseGetSuratKontrolBySEP{ + responses = &suratkontrol.ResponseGetSuratKontrolBySEP{ MetaData: resSurKonSEP.MetaData, Response: responseNoSuratKontrol, } diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 3a6f0ee..42369bb 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -50,7 +50,7 @@ func InsertSuratKontrol(c *gin.Context) { return } - log.Println("Request: ", reqJson) + log.Println("Request: ", string(reqJson)) conf := config.ConfigBpjs{} @@ -70,7 +70,6 @@ func InsertSuratKontrol(c *gin.Context) { headerStringBuilder.WriteString(fmt.Sprintf("%s: %s; ", key, value)) } headerString := strings.TrimSuffix(headerStringBuilder.String(), "; ") - tipeSurKon := "1" kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) if err != nil { @@ -83,20 +82,43 @@ func InsertSuratKontrol(c *gin.Context) { } uuid := uuid.New().String() - if req.NoSEP == "" { - tipeSurKon = "0" + if req.TipeSurKon != "1" { + dataSurkon, err := suratkontrol.GetNomorSurKon(kunjunganPasien.ID) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + + noUrut := "001" + if dataSurkon != "" { + noUrut, err = utils.GetNoUrut(dataSurkon) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + } + + noSurKon := "SI/" + req.TipeRawat + "/" + kunjunganPasien.NomorRM + "/" + noUrut reqInsert := &sk.DataSuratKontrol{ ID: uuid, DateCreated: timeNow, TglCetakSurKon: timeNow, TglRencanaKontrol: req.TglRencanaKontrol, - NomorSurKon: "", //TODO How to get Nomor SurKon + NomorSurKon: noSurKon, KunjunganPasien: kunjunganPasien.ID, RuanganSurKon: kunjunganPasien.Ruangan, DPJPSurKon: req.IDDokter, StatusSurKon: 1, // First Insert status always set to 1 UserCreatedSurKon: req.User, - TipeSurKon: tipeSurKon, + TipeSurKon: req.TipeSurKon, } err = suratkontrol.InsertDataSuratKontrol(reqInsert) if err != nil { @@ -107,7 +129,20 @@ func InsertSuratKontrol(c *gin.Context) { }) return } - c.JSON(http.StatusOK, nil) + + err = suratkontrol.UpdateKunjunganPasien(req) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "200", + Message: "Berhasil Insert Surat Kontrol", + }) return } @@ -185,7 +220,7 @@ func InsertSuratKontrol(c *gin.Context) { DPJPSurKon: req.IDDokter, StatusSurKon: 1, // First Insert status always set to 1 UserCreatedSurKon: req.User, - TipeSurKon: tipeSurKon, + TipeSurKon: "1", } err = suratkontrol.InsertDataSuratKontrol(reqInsert) @@ -279,7 +314,17 @@ func UpdateSuratKontrol(c *gin.Context) { return } - log.Println("Request: ", req) + reqJson, err := json.Marshal(req) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + + log.Println("Request: ", string(reqJson)) timeNow := time.Now().Format("2006-01-02 15:04:05") @@ -292,22 +337,43 @@ func UpdateSuratKontrol(c *gin.Context) { }) return } - uuid := uuid.New().String() - tipeSurKon := "1" - if req.NoSEP == "" { - tipeSurKon = "0" + uuid := uuid.New().String() + if req.TipeSurKon != "1" { + dataSurkon, err := suratkontrol.GetNomorSurKon(kunjunganPasien.ID) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + + noUrut := "001" + if dataSurkon != "" { + noUrut, err = utils.GetNoUrut(dataSurkon) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + } + noSurKon := "SI/" + req.TipeRawat + "/" + kunjunganPasien.NomorRM + "/" + noUrut reqInsert := &sk.DataSuratKontrol{ ID: uuid, DateCreated: timeNow, TglCetakSurKon: timeNow, TglRencanaKontrol: req.TglRencanaKontrol, - NomorSurKon: "", //TODO How to get Nomor SurKon + NomorSurKon: noSurKon, //TODO How to get Nomor SurKon KunjunganPasien: kunjunganPasien.ID, RuanganSurKon: kunjunganPasien.Ruangan, DPJPSurKon: req.IDDokter, StatusSurKon: 1, // First Insert status always set to 1 - TipeSurKon: tipeSurKon, + TipeSurKon: req.TipeSurKon, UserUpdatedSurKon: req.User, } reqUpdate := &sk.DataSuratKontrol{ @@ -334,16 +400,9 @@ func UpdateSuratKontrol(c *gin.Context) { }) return } - c.JSON(http.StatusOK, nil) - return - } - - reqJson, err := json.Marshal(req) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", - Message: err.Error(), + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "200", + Message: "Berhasil Update Surat Kontrol", }) return } @@ -465,7 +524,7 @@ func UpdateSuratKontrol(c *gin.Context) { RuanganSurKon: kunjunganPasien.Ruangan, DPJPSurKon: req.IDDokter, StatusSurKon: 1, // Insert status always set to 1 - TipeSurKon: tipeSurKon, + TipeSurKon: "1", UserUpdatedSurKon: req.User, } @@ -534,7 +593,7 @@ func DeleteSuratKontrol(c *gin.Context) { timeNow := time.Now().Format("2006-01-02 15:04:05") - if req.NomorSurKon == "" { + if req.TipeSurKon != "1" { reqUpdate := &sk.DataSuratKontrol{ DateUpdated: timeNow, ID: req.IDDataSurKon, @@ -556,6 +615,7 @@ func DeleteSuratKontrol(c *gin.Context) { Message: "Berhasil Hapus Data", } c.JSON(http.StatusOK, res) + return } conf := config.ConfigBpjs{} @@ -704,6 +764,8 @@ func GetDataSurKon(c *gin.Context) { Subspesialis: v.Subspesialis, KodePoli: v.KodePoli, KodeDokter: v.KodeDokter, + IDDokter: v.IDDokter, + KodeDPJP: v.KodeDPJP, NoRM: v.NoRM, KodeDiagnosa: v.KodeDiagnosa, NamaDiagnosa: v.NamaDiagnosa, @@ -751,6 +813,7 @@ func GetDataSurKonByID(c *gin.Context) { KodeDokter: data.KodeDokter, IDPoli: data.IDPoli, IDDokter: data.IDDokter, + KodeDPJP: data.KodeDPJP, NoRM: data.NoRM, KodeDiagnosa: data.KodeDiagnosa, NamaDiagnosa: data.NamaDiagnosa, @@ -815,10 +878,22 @@ func CariPasienTPP(c *gin.Context) { query := `` var args []interface{} + var argsCount []interface{} var data []*sk.GetDataSuratKontrol + var count int if req.NoRM != "" { query += `and dkp2."NOMR" = ?` - args = append(args, req.NoRM, req.TanggalAwal, req.TanggalAkhir) + argsCount = append(argsCount, req.TipeSurKon, req.NoRM, req.TanggalAwal, req.TanggalAkhir) + count, err = suratkontrol.CountDataSurKon(req, query, argsCount) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + args = append(args, req.TipeSurKon, req.NoRM, req.TanggalAwal, req.TanggalAkhir, req.Offset, req.Limit) data, err = suratkontrol.SearchDataSurKon(req, query, args) if err != nil { log.Println(err) @@ -830,7 +905,17 @@ func CariPasienTPP(c *gin.Context) { } } else if req.NoSEP != "" { query += `and dkp2."Nomor_sep" = ?` - args = append(args, req.NoSEP, req.TanggalAwal, req.TanggalAkhir) + argsCount = append(argsCount, req.TipeSurKon, req.NoSEP, req.TanggalAwal, req.TanggalAkhir) + count, err = suratkontrol.CountDataSurKon(req, query, argsCount) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + args = append(args, req.TipeSurKon, req.NoSEP, req.TanggalAwal, req.TanggalAkhir, req.Offset, req.Limit) data, err = suratkontrol.SearchDataSurKon(req, query, args) if err != nil { log.Println(err) @@ -842,7 +927,17 @@ func CariPasienTPP(c *gin.Context) { } } else if req.PoliKlinik != "" { query += `and ds."id" = ?` - args = append(args, req.PoliKlinik, req.TanggalAwal, req.TanggalAkhir) + argsCount = append(argsCount, req.TipeSurKon, req.PoliKlinik, req.TanggalAwal, req.TanggalAkhir) + count, err = suratkontrol.CountDataSurKon(req, query, argsCount) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + args = append(args, req.TipeSurKon, req.PoliKlinik, req.TanggalAwal, req.TanggalAkhir, req.Offset, req.Limit) data, err = suratkontrol.SearchDataSurKon(req, query, args) if err != nil { log.Println(err) @@ -853,7 +948,17 @@ func CariPasienTPP(c *gin.Context) { return } } else { - args = append(args, req.TanggalAwal, req.TanggalAkhir) + argsCount = append(argsCount, req.TipeSurKon, req.TanggalAwal, req.TanggalAkhir) + count, err = suratkontrol.CountDataSurKon(req, query, argsCount) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + args = append(args, req.TipeSurKon, req.TanggalAwal, req.TanggalAkhir, req.Offset, req.Limit) data, err = suratkontrol.SearchDataSurKon(req, query, args) if err != nil { log.Println(err) @@ -864,8 +969,7 @@ func CariPasienTPP(c *gin.Context) { return } } - - var resSurKon []*sk.ResponseGetDataSuratKontrol + var listData []*sk.ResponseGetDataSuratKontrol for _, v := range data { gelarDepan := utils.ReplaceGelar(v.GelarDepan) gelarBelakang := utils.ReplaceGelar(v.GelarBelakang) @@ -876,7 +980,7 @@ func CariPasienTPP(c *gin.Context) { dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02") dateRencanaSurkon, _ := time.Parse(time.RFC3339, v.TglRencanaKontrol) dateRencanaSurkonString := dateRencanaSurkon.Format("2006-01-02") - resSurKon = append(resSurKon, &sk.ResponseGetDataSuratKontrol{ + listData = append(listData, &sk.ResponseGetDataSuratKontrol{ IDDataSurKon: v.IDDataSurKon, IDXDaftar: v.IDXDaftar, TglCetakSurKon: dateCetakSurkonString, @@ -891,11 +995,18 @@ func CariPasienTPP(c *gin.Context) { Subspesialis: v.Subspesialis, KodePoli: v.KodePoli, KodeDokter: v.KodeDokter, + IDDokter: v.IDDokter, + KodeDPJP: v.KodeDPJP, NoRM: v.NoRM, KodeDiagnosa: v.KodeDiagnosa, NamaDiagnosa: v.NamaDiagnosa, TipeSurKon: v.TipeSurKon, }) } + + resSurKon := &sk.ResponseCariDataSuratKontrol{ + JumlahData: count, + ListDataSuratKontrol: listData, + } c.JSON(http.StatusOK, resSurKon) } diff --git a/models/bpjs/jadwal_dokter/jadwal_dokter.go b/models/bpjs/jadwal_dokter/jadwal_dokter.go index cbbe6b0..796d0ec 100644 --- a/models/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/models/bpjs/jadwal_dokter/jadwal_dokter.go @@ -57,7 +57,7 @@ type ResponseListHari struct { Kode string `json:"Kode"` Spesialis string `json:"Spesialis"` Subspesialis string `json:"Subspesialis"` - IDSubspesialis string `json:"id_subspesialis"` + IDSubspesialis int `json:"id_subspesialis"` NamaLengkap string `json:"nama_lengkap"` HFISCode string `json:"HFIS_code"` KodeDPJP string `json:"DPJP_code"` diff --git a/models/bpjs/surat_kontrol/kunjugan_pasien.go b/models/bpjs/surat_kontrol/kunjugan_pasien.go index 3410c6f..243682b 100644 --- a/models/bpjs/surat_kontrol/kunjugan_pasien.go +++ b/models/bpjs/surat_kontrol/kunjugan_pasien.go @@ -21,4 +21,5 @@ type KunjunganPasien struct { DisplayDiagnosisAkhirKeluar string `gorm:"column:Display_diagnosis_akhir_keluar" json:"Display_diagnosis_akhir_keluar"` DiagnosisPrimerUtama string `gorm:"column:Diagnosis_primer_utama" json:"Diagnosis_primer_utama"` DisplayDiagnosisPrimerUtama string `gorm:"column:Display_diagnosis_primer_utama" json:"Display_diagnosis_primer_utama"` + NomorRM string `gorm:"column:No_rm" json:"No_rm"` } diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index 4e1271b..ec209cd 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -30,14 +30,17 @@ type RequestInsertRencanaKontrol struct { TglRencanaKontrol string `json:"tglRencanaKontrol"` User string `json:"user"` IDDokter string `json:"id_dokter"` - KodeDiagnosa string `json:"kode_diagnosa"` - NamaDiagnosa string `json:"nama_diagnosa"` + KodeDiagnosa string `json:"Kode_diagnosa"` + NamaDiagnosa string `json:"Nama_diagnosa"` + TipeSurKon string `json:"tipe_surkon"` + TipeRawat string `json:"tipe_rawat"` } type ReqDeleteRencanaKontrol struct { IDDataSurKon string `json:"id_surat_kontrol"` NomorSurKon string `json:"Nomor_surat_kontrol"` User string `json:"user"` + TipeSurKon string `json:"tipe_surkon"` } type RequestUpdateRencanaKontrol struct { @@ -52,6 +55,8 @@ type RequestUpdateRencanaKontrol struct { User string `json:"user"` KodeDiagnosa string `json:"Kode_diagnosa"` NamaDiagnosa string `json:"Nama_diagnosa"` + TipeSurKon string `json:"tipe_surkon"` + TipeRawat string `json:"tipe_rawat"` } type TSuratKontrol struct { @@ -181,8 +186,8 @@ type Peserta struct { } type ProvUmum struct { - KodedProvider string `json:"kdProvider"` - NamaProvider string `json:"nmProvider"` + KodeProvider string `json:"kdProvider"` + NamaProvider string `json:"nmProvider"` } type ProvPerujuk struct { @@ -243,6 +248,7 @@ type GetDataSuratKontrol struct { NomorKartu string `gorm:"column:No_kartu" json:"No_kartu"` IDPoli string `gorm:"column:ID_poli" json:"id_poli"` IDDokter string `gorm:"column:id_dokter" json:"id_dokter"` + KodeDPJP string `gorm:"column:Kode_dpjp" json:"Kode_dpjp"` 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"` @@ -264,6 +270,7 @@ type ResponseGetDataSuratKontrol struct { Subspesialis string `json:"Subspesialis"` KodePoli string `json:"Kode_poli"` KodeDokter string `json:"Kode_dokter"` + KodeDPJP string `json:"Kode_dpjp"` IDPoli string `json:"id_poli"` IDDokter string `json:"id_dokter"` NoRM string `json:"No_rm"` @@ -272,12 +279,18 @@ type ResponseGetDataSuratKontrol struct { TipeSurKon string `json:"Tipe_SurKon"` } +type ResponseCariDataSuratKontrol struct { + JumlahData int `json:"jumlah_data"` + ListDataSuratKontrol []*ResponseGetDataSuratKontrol `json:"list_data"` +} + type RequestCariPasien struct { NoRM string `json:"no_rm"` NoSEP string `json:"no_sep"` PoliKlinik string `json:"poliklinik"` TanggalAwal string `json:"tanggal_awal"` TanggalAkhir string `json:"tanggal_akhir"` + TipeSurKon string `json:"tipe_surkon"` Offset string `json:"offset"` Limit string `json:"limit"` -} \ No newline at end of file +}