From 87d5a964ef551197ac8102febe883c19ca198642afd58ce797937d737fc6c26e Mon Sep 17 00:00:00 2001 From: mirza Date: Thu, 17 Oct 2024 10:44:35 +0700 Subject: [PATCH] make query cari dynamic --- .../satu_data/surat_kontrol/surat_kontrol.go | 157 +++++++++--------- handlers/bpjs/surat_kontrol/response.go | 2 +- handlers/bpjs/surat_kontrol/surat_kontrol.go | 17 +- 3 files changed, 95 insertions(+), 81 deletions(-) diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index defe43a..1e9a7b2 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -174,9 +174,10 @@ func GetAllDataSuratKontrol(idSurKon string) (*suratkontrol.DataSuratKontrol, er return dataSurKon, nil } -func GetDataSurKonByNoRM(req suratkontrol.RequestCariPasien) ([]*suratkontrol.GetDataSuratKontrol, error) { +func GetDataSurKonByNoRM(req suratkontrol.RequestCariPasien, query string, condition string) ([]*suratkontrol.GetDataSuratKontrol, error) { var dataSurKon []*suratkontrol.GetDataSuratKontrol - err := config.SatuDataDB.Debug().Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol", + query += ` and date(dsk."Tanggal_rencana_kontrol") between ? and ?` + querySelect := `select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol", dsk."Nomor_surat_kontrol", (select dlr."Nama" from data_kunjungan_pasien dkp @@ -203,7 +204,9 @@ func GetDataSurKonByNoRM(req suratkontrol.RequestCariPasien) ([]*suratkontrol.Ge 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 dkp2."NOMR" = ? and date(dsk."Tanggal_rencana_kontrol") between ? and ?`, req.NoRM, req.TanggalAwal, req.TanggalAkhir).Find(&dataSurKon).Error + where dsk."Status_surat_kontrol" = '1' ` + querySelect += query + err := config.SatuDataDB.Debug().Raw(querySelect, condition, req.TanggalAwal, req.TanggalAkhir).Find(&dataSurKon).Error if err != nil { log.Println(err) return nil, err @@ -212,78 +215,78 @@ func GetDataSurKonByNoRM(req suratkontrol.RequestCariPasien) ([]*suratkontrol.Ge return dataSurKon, nil } -func GetDataSurKonByNoSEP(req suratkontrol.RequestCariPasien) ([]*suratkontrol.GetDataSuratKontrol, error) { - var dataSurKon []*suratkontrol.GetDataSuratKontrol - err := config.SatuDataDB.Debug().Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol", - dsk."Nomor_surat_kontrol", - (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", - dlr."Nama" as "Poli_tuju", - dkp2."Nomor_sep", dkp2."Nama_lengkap", dkp2."IDXDAFTAR", - array( - select dgd. "Gelar_depan" - from data_pegawai_daftar_gelar_depan dpdgd - left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id - ) AS gelardepan , - dk."Nama_lengkap" as "Nama_lengkap_dokter", - array( - select dgb. "Gelar_belakang" - from data_pegawai_daftar_gelar_belakang dpdgb - left join daftar_gelar_belakang dgb on dpdgb.daftar_gelar_belakang_id = dgb.id where dpdgb.data_pegawai_id = dp.id - ) AS gelarbelakang, - ds."Subspesialis", - ds."Kode" as "Kode_poli", - dp."HFIS_code" as "Kode_dokter" - 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 dkp2."Nomor_sep" = ? and date(dsk."Tanggal_rencana_kontrol") between ? and ?`, req.NoSEP, req.TanggalAwal, req.TanggalAkhir).Find(&dataSurKon).Error - if err != nil { - log.Println(err) - return nil, err - } - log.Println("Data Surat Kontrol : ", dataSurKon) - return dataSurKon, nil -} +// func GetDataSurKonByNoSEP(req suratkontrol.RequestCariPasien) ([]*suratkontrol.GetDataSuratKontrol, error) { +// var dataSurKon []*suratkontrol.GetDataSuratKontrol +// err := config.SatuDataDB.Debug().Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol", +// dsk."Nomor_surat_kontrol", +// (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", +// dlr."Nama" as "Poli_tuju", +// dkp2."Nomor_sep", dkp2."Nama_lengkap", dkp2."IDXDAFTAR", +// array( +// select dgd. "Gelar_depan" +// from data_pegawai_daftar_gelar_depan dpdgd +// left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id +// ) AS gelardepan , +// dk."Nama_lengkap" as "Nama_lengkap_dokter", +// array( +// select dgb. "Gelar_belakang" +// from data_pegawai_daftar_gelar_belakang dpdgb +// left join daftar_gelar_belakang dgb on dpdgb.daftar_gelar_belakang_id = dgb.id where dpdgb.data_pegawai_id = dp.id +// ) AS gelarbelakang, +// ds."Subspesialis", +// ds."Kode" as "Kode_poli", +// dp."HFIS_code" as "Kode_dokter" +// 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 dkp2."Nomor_sep" = ? and date(dsk."Tanggal_rencana_kontrol") between ? and ?`, req.NoSEP, req.TanggalAwal, req.TanggalAkhir).Find(&dataSurKon).Error +// if err != nil { +// log.Println(err) +// return nil, err +// } +// log.Println("Data Surat Kontrol : ", dataSurKon) +// return dataSurKon, nil +// } -func GetDataSurKonByPoliklinik(req suratkontrol.RequestCariPasien) ([]*suratkontrol.GetDataSuratKontrol, error) { - var dataSurKon []*suratkontrol.GetDataSuratKontrol - err := config.SatuDataDB.Debug().Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol", - dsk."Nomor_surat_kontrol", - (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", - dlr."Nama" as "Poli_tuju", - dkp2."Nomor_sep", dkp2."Nama_lengkap", dkp2."IDXDAFTAR", - array( - select dgd. "Gelar_depan" - from data_pegawai_daftar_gelar_depan dpdgd - left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id - ) AS gelardepan , - dk."Nama_lengkap" as "Nama_lengkap_dokter", - array( - select dgb. "Gelar_belakang" - from data_pegawai_daftar_gelar_belakang dpdgb - left join daftar_gelar_belakang dgb on dpdgb.daftar_gelar_belakang_id = dgb.id where dpdgb.data_pegawai_id = dp.id - ) AS gelarbelakang, - ds."Subspesialis", - ds."Kode" as "Kode_poli", - dp."HFIS_code" as "Kode_dokter" - 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 ds."id" = ? and date(dsk."Tanggal_rencana_kontrol") between ? and ?`, req.PoliKlinik, req.TanggalAwal, req.TanggalAkhir).Find(&dataSurKon).Error - if err != nil { - log.Println(err) - return nil, err - } - log.Println("Data Surat Kontrol : ", dataSurKon) - return dataSurKon, nil -} +// func GetDataSurKonByPoliklinik(req suratkontrol.RequestCariPasien) ([]*suratkontrol.GetDataSuratKontrol, error) { +// var dataSurKon []*suratkontrol.GetDataSuratKontrol +// err := config.SatuDataDB.Debug().Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol", +// dsk."Nomor_surat_kontrol", +// (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", +// dlr."Nama" as "Poli_tuju", +// dkp2."Nomor_sep", dkp2."Nama_lengkap", dkp2."IDXDAFTAR", +// array( +// select dgd. "Gelar_depan" +// from data_pegawai_daftar_gelar_depan dpdgd +// left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id +// ) AS gelardepan , +// dk."Nama_lengkap" as "Nama_lengkap_dokter", +// array( +// select dgb. "Gelar_belakang" +// from data_pegawai_daftar_gelar_belakang dpdgb +// left join daftar_gelar_belakang dgb on dpdgb.daftar_gelar_belakang_id = dgb.id where dpdgb.data_pegawai_id = dp.id +// ) AS gelarbelakang, +// ds."Subspesialis", +// ds."Kode" as "Kode_poli", +// dp."HFIS_code" as "Kode_dokter" +// 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 ds."id" = ? and date(dsk."Tanggal_rencana_kontrol") between ? and ?`, req.PoliKlinik, req.TanggalAwal, req.TanggalAkhir).Find(&dataSurKon).Error +// if err != nil { +// log.Println(err) +// return nil, err +// } +// log.Println("Data Surat Kontrol : ", dataSurKon) +// return dataSurKon, nil +// } diff --git a/handlers/bpjs/surat_kontrol/response.go b/handlers/bpjs/surat_kontrol/response.go index 9ee8c41..e3bec90 100644 --- a/handlers/bpjs/surat_kontrol/response.go +++ b/handlers/bpjs/surat_kontrol/response.go @@ -124,7 +124,7 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s responses := &suratkontrol.Response{} response, err := client.Do(req) if err != nil { - if strings.Contains(strings.ToLower(err.Error()), "deadline-exceeded") { + if strings.Contains(strings.ToLower(err.Error()), "deadline exceeded") { errMsg := errors.New("context deadline exceeded") log.Printf("error : %v", errMsg) responses.MetaData.Message = errMsg.Error() diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 2ae4ac8..df568a0 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -550,23 +550,34 @@ func CariPasienTPP(c *gin.Context) { log.Println("request :", req) + query := `` var data []*sk.GetDataSuratKontrol if req.NoRM != "" { - data, err = suratkontrol.GetDataSurKonByNoRM(req) + query += `and dkp2."NOMR" = ?` + data, err = suratkontrol.GetDataSurKonByNoRM(req, query, req.NoRM) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) return } } else if req.NoSEP != "" { - data, err = suratkontrol.GetDataSurKonByNoSEP(req) + query += `and dkp2."Nomor_sep" = ?` + data, err = suratkontrol.GetDataSurKonByNoRM(req, query, req.NoSEP) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) return } } else if req.PoliKlinik != "" { - data, err = suratkontrol.GetDataSurKonByPoliklinik(req) + query += `and ds."id" = ?` + data, err = suratkontrol.GetDataSurKonByNoRM(req, query, req.PoliKlinik) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + } else { + data, err = suratkontrol.GetDataSurKonByNoRM(req, query, req.PoliKlinik) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err)