diff --git a/.env b/.env index 713dd2f..8258c7e 100644 --- a/.env +++ b/.env @@ -16,6 +16,7 @@ SECRET_KEY_DEV=8pP3D5431E BASEURL_BPJS_DEV=https://apijkn-dev.bpjs-kesehatan.go.id/ VCLAIM_RS_DEV=vclaim-rest-dev +SURAT_KONTROL_RS=vclaim-rest INSERT_SURAT_KONTROL=/RencanaKontrol/insert UPDATE_SURAT_KONTROL=/RencanaKontrol/Update DELETE_SURAT_KONTROL=/RencanaKontrol/Delete diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index d25e5ad..8ea8d29 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -1,246 +1,252 @@ -package suratkontrol - -import ( - "bridging-rssa/config" - suratkontrol "bridging-rssa/models/bpjs/surat_kontrol" - "errors" - "log" - - "gorm.io/gorm" -) - -func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, error) { - var kunjunganPasien *suratkontrol.KunjunganPasien - err := config.SatuDataDB.Debug().Raw(`select dkp."id", dkp."IDXDAFTAR" as idxdaftar, dkp."Nomor_sep" as nomorsep, - dlr."Nama" as namaklinik, dlr."Id_location_simgos" as idkliniksimgos, dlr."Kode_hfis_bpjs" as kodehfisklinik, - dk."Nama_lengkap" as namadokter, - dp."KDDOKTER" as kodedokter, dp."HFIS_code" as kodehfisdokter, - dsu."Kode" as kodesubspesialis, dsu."Subspesialis" as subspesialis, - ds."Spesialis" as spesialis, - 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, - 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, - dkp."Ruangan" as ruangan, - dkp."DPJP" as id_dokter - 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 - left join data_ktp dk on dp."KTP" = dk.id - left join daftar_subspesialis dsu on dp."Subspesialis" = dsu.id - left join daftar_spesialis ds on dsu."FK_daftar_spesialis_ID" = ds.id - where dkp."IDXDAFTAR" = ?`, idxdaftar).First(&kunjunganPasien).Error - if err != nil { - if errors.Is(err, gorm.ErrRecordNotFound) { - errMsg := errors.New("Data Tidak Ditemukan") - log.Println(errMsg) - return nil, errMsg - } - log.Println(err) - return nil, err - } - log.Println("Data Kunjungan Pasien : ", kunjunganPasien) - return kunjunganPasien, nil -} - -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") - values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)` - err := config.SatuDataDB.Debug().Exec(insertQuery, - reqInsert.ID, - reqInsert.DateCreated, - reqInsert.TglCetakSurKon, - reqInsert.TglRencanaKontrol, - reqInsert.NomorSurKon, - reqInsert.KunjunganPasien, - reqInsert.RuanganSurKon, - reqInsert.DPJPSurKon, - reqInsert.StatusSurKon, - reqInsert.UserCreatedSurKon, - reqInsert.TipeSurKon, - reqInsert.UserUpdatedSurKon, - ).Error - if err != nil { - log.Println(err) - return err - } - return nil -} - -func GetDataSuratKontrol(offset, limit 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", - 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", - ds."id" as "ID_poli", - dp."HFIS_code" as "Kode_dokter", - dp."id" as "id_dokter", - dkp2."NOMR" as "No_rm", - dkp2."Diagnosis_primer_utama" as "Kode_diagnosa", - dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa", - dsk."Tipe_surat_kontrol" as "Tipe_SurKon" - 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' offset ? limit ?`, offset, limit).Scan(&dataSurKon).Error - if err != nil { - log.Println(err) - return nil, err - } - log.Println("Data Surat Kontrol : ", dataSurKon) - return dataSurKon, nil -} - -func GetDataSuratKontrolByID(idxdaftar 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", - 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", - ds."id" as "ID_poli", - dp."HFIS_code" as "Kode_dokter", - dp."id" as "id_dokter", - dkp2."NOMR" as "No_rm", - dkp2."Diagnosis_primer_utama" as "Kode_diagnosa", - dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa", - dsk."Tipe_surat_kontrol" as "Tipe_SurKon" - 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."IDXDAFTAR" = ?`, idxdaftar).First(&dataSurKon).Error - if err != nil { - log.Println(err) - return nil, err - } - log.Println("Data Surat Kontrol : ", dataSurKon) - return dataSurKon, nil -} - -func UpdateDataSuratKontrol(reqUpdate *suratkontrol.DataSuratKontrol) error { - err := config.SatuDataDB.Debug().Exec(`update "data_surat_kontrol" set "date_updated" = ?, "Status_surat_kontrol" = ?, "User_updated_surat_kontrol" = ? where "id" = ?`, reqUpdate.DateUpdated, reqUpdate.StatusSurKon, reqUpdate.UserUpdatedSurKon, reqUpdate.ID).Error - if err != nil { - log.Println(err) - return err - } - return nil -} - -func GetIDXDaftarBySurKon(idSurKon string) (string, error) { - var idxDaftar string - err := config.SatuDataDB.Debug().Raw(`select dkp."IDXDAFTAR" - from "data_surat_kontrol" dsk - left join "data_kunjungan_pasien" dkp on dkp."id" = dsk."Kunjungan_pasien" - where dsk."id" = ?`, idSurKon).First(&idxDaftar).Error - if err != nil { - log.Println(err) - return "", err - } - return idxDaftar, err -} - -func GetAllDataSuratKontrol(idSurKon string) (*suratkontrol.DataSuratKontrol, error) { - var dataSurKon *suratkontrol.DataSuratKontrol - err := config.SatuDataDB.Debug().Raw(`select * from "data_surat_kontrol" where "id" = ?`, idSurKon).First(&dataSurKon).Error - if err != nil { - log.Println(err) - return nil, err - } - return dataSurKon, nil -} - -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 ? offset ? limit ?` - 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 - 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", - ds."id" as "ID_poli", - dp."HFIS_code" as "Kode_dokter", - dp."id" as "id_dokter", - dkp2."NOMR" as "No_rm", - dkp2."Diagnosis_primer_utama" as "Kode_diagnosa", - dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa", - dsk."Tipe_surat_kontrol" as "Tipe_SurKon" - 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' ` - querySelect += query - err := config.SatuDataDB.Debug().Raw(querySelect, args...).Find(&dataSurKon).Error - if err != nil { - log.Println(err) - return nil, err - } - log.Println("Data Surat Kontrol : ", dataSurKon) - return dataSurKon, nil -} +package suratkontrol + +import ( + "bridging-rssa/config" + suratkontrol "bridging-rssa/models/bpjs/surat_kontrol" + "errors" + "log" + + "gorm.io/gorm" +) + +func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, error) { + var kunjunganPasien *suratkontrol.KunjunganPasien + err := config.SatuDataDB.Debug().Raw(`select dkp."id", dkp."IDXDAFTAR" as idxdaftar, dkp."Nomor_sep" as nomorsep, + dlr."Nama" as namaklinik, dlr."Id_location_simgos" as idkliniksimgos, dlr."Kode_hfis_bpjs" as kodehfisklinik, + dk."Nama_lengkap" as namadokter, + dp."KDDOKTER" as kodedokter, dp."HFIS_code" as kodehfisdokter, + dsu."Kode" as kodesubspesialis, dsu."Subspesialis" as subspesialis, + ds."Spesialis" as spesialis, + 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, + 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, + dkp."Ruangan" as ruangan, + dkp."DPJP" as id_dokter + 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 + left join data_ktp dk on dp."KTP" = dk.id + left join daftar_subspesialis dsu on dp."Subspesialis" = dsu.id + left join daftar_spesialis ds on dsu."FK_daftar_spesialis_ID" = ds.id + where dkp."IDXDAFTAR" = ?`, idxdaftar).First(&kunjunganPasien).Error + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + errMsg := errors.New("Data Tidak Ditemukan") + log.Println(errMsg) + return nil, errMsg + } + log.Println(err) + return nil, err + } + log.Println("Data Kunjungan Pasien : ", kunjunganPasien) + return kunjunganPasien, nil +} + +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") + values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)` + err := config.SatuDataDB.Debug().Exec(insertQuery, + reqInsert.ID, + reqInsert.DateCreated, + reqInsert.TglCetakSurKon, + reqInsert.TglRencanaKontrol, + reqInsert.NomorSurKon, + reqInsert.KunjunganPasien, + reqInsert.RuanganSurKon, + reqInsert.DPJPSurKon, + reqInsert.StatusSurKon, + reqInsert.UserCreatedSurKon, + reqInsert.TipeSurKon, + reqInsert.UserUpdatedSurKon, + ).Error + if err != nil { + log.Println(err) + return err + } + return nil +} + +func GetDataSuratKontrol(offset, limit 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", + 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", + ds."id" as "ID_poli", + dp."HFIS_code" as "Kode_dokter", + dp."id" as "id_dokter", + dkp2."NOMR" as "No_rm", + dkp2."Diagnosis_primer_utama" as "Kode_diagnosa", + dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa", + dsk."Tipe_surat_kontrol" as "Tipe_SurKon" + 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' offset ? limit ?`, offset, limit).Scan(&dataSurKon).Error + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + errMsg := errors.New("Data Tidak Ditemukan") + log.Println(errMsg) + return nil, errMsg + } + } + log.Println("Data Surat Kontrol : ", dataSurKon) + return dataSurKon, nil +} + +func GetDataSuratKontrolByID(idxdaftar 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", + 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", + ds."id" as "ID_poli", + dp."HFIS_code" as "Kode_dokter", + dp."id" as "id_dokter", + dkp2."NOMR" as "No_rm", + dkp2."Diagnosis_primer_utama" as "Kode_diagnosa", + dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa", + dsk."Tipe_surat_kontrol" as "Tipe_SurKon" + 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."IDXDAFTAR" = ?`, idxdaftar).First(&dataSurKon).Error + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + errMsg := errors.New("Data Tidak Ditemukan") + log.Println(errMsg) + return nil, errMsg + } + } + log.Println("Data Surat Kontrol : ", &dataSurKon) + return dataSurKon, nil +} + +func UpdateDataSuratKontrol(reqUpdate *suratkontrol.DataSuratKontrol) error { + err := config.SatuDataDB.Debug().Exec(`update "data_surat_kontrol" set "date_updated" = ?, "Status_surat_kontrol" = ?, "User_updated_surat_kontrol" = ? where "id" = ?`, reqUpdate.DateUpdated, reqUpdate.StatusSurKon, reqUpdate.UserUpdatedSurKon, reqUpdate.ID).Error + if err != nil { + log.Println(err) + return err + } + return nil +} + +func GetIDXDaftarBySurKon(idSurKon string) (string, error) { + var idxDaftar string + err := config.SatuDataDB.Debug().Raw(`select dkp."IDXDAFTAR" + from "data_surat_kontrol" dsk + left join "data_kunjungan_pasien" dkp on dkp."id" = dsk."Kunjungan_pasien" + where dsk."id" = ?`, idSurKon).First(&idxDaftar).Error + if err != nil { + log.Println(err) + return "", err + } + return idxDaftar, err +} + +func GetAllDataSuratKontrol(idSurKon string) (*suratkontrol.DataSuratKontrol, error) { + var dataSurKon *suratkontrol.DataSuratKontrol + err := config.SatuDataDB.Debug().Raw(`select * from "data_surat_kontrol" where "id" = ?`, idSurKon).First(&dataSurKon).Error + if err != nil { + log.Println(err) + return nil, err + } + return dataSurKon, nil +} + +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 ? offset ? limit ?` + 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 + 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", + ds."id" as "ID_poli", + dp."HFIS_code" as "Kode_dokter", + dp."id" as "id_dokter", + dkp2."NOMR" as "No_rm", + dkp2."Diagnosis_primer_utama" as "Kode_diagnosa", + dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa", + dsk."Tipe_surat_kontrol" as "Tipe_SurKon" + 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' ` + querySelect += query + err := config.SatuDataDB.Debug().Raw(querySelect, args...).Find(&dataSurKon).Error + if err != nil { + log.Println(err) + return nil, err + } + log.Println("Data Surat Kontrol : ", dataSurKon) + return dataSurKon, nil +} \ No newline at end of file diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index ff81897..87b2512 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -1,654 +1,660 @@ -package suratkontrol - -import ( - cfg "bridging-rssa/config" - suratkontrol "bridging-rssa/database/satu_data/surat_kontrol" - "bridging-rssa/docs/utils" - sk "bridging-rssa/models/bpjs/surat_kontrol" - "bridging-rssa/models/config" - "log" - "net/http" - "os" - "strings" - "time" - - "github.com/gin-gonic/gin" - "github.com/google/uuid" -) - -func InsertSuratKontrol(c *gin.Context) { - baseUrl := os.Getenv("BASEURL_BPJS_DEV") - endpoint := os.Getenv("VCLAIM_RS_DEV") - param := os.Getenv("INSERT_SURAT_KONTROL") - url := baseUrl + endpoint + param - - timeNow := time.Now().Format("2006-01-02 15:04:05") - - var req sk.RequestInsertRencanaKontrol - - err := c.Bind(&req) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } - - log.Println("Request: ", req) - - conf := config.ConfigBpjs{} - - header := cfg.SetHeaderDev(conf) - - headers := map[string]string{ - "X-cons-id": header.ConsID, - "X-timestamp": header.TimeStamp, - "X-signature": header.XSignature, - "user_key": header.UserKey, - "Content-Type": "Application/x-www-form-urlencoded", - } - log.Println("Headers : ", headers) - - tipeSurKon := "1" - - kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", - Message: err.Error(), - }) - return - } - - uuid := uuid.New().String() - if req.NoSEP == "" { - tipeSurKon = "0" - reqInsert := &sk.DataSuratKontrol{ - ID: uuid, - DateCreated: timeNow, - TglCetakSurKon: timeNow, - TglRencanaKontrol: req.TglRencanaKontrol, - NomorSurKon: "", //TODO How to get Nomor SurKon - KunjunganPasien: kunjunganPasien.ID, - RuanganSurKon: kunjunganPasien.Ruangan, - DPJPSurKon: req.IDDokter, - StatusSurKon: 1, // First Insert status always set to 1 - UserCreatedSurKon: req.User, - TipeSurKon: tipeSurKon, - } - err = suratkontrol.InsertDataSuratKontrol(reqInsert) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } - c.JSON(http.StatusOK, nil) - return - } - - reqSuratKontrol := &sk.RequestHeaderRencanaKontrol{ - Request: &sk.ReqInsertRencanaKontrol{ - NoSEP: req.NoSEP, - KodeDokter: req.KodeHFIS, - PoliKontrol: req.KodePoli, - TglRencanaKontrol: req.TglRencanaKontrol, - User: req.User, - }, - } - res, err := PostData(url, header, headers, reqSuratKontrol) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, res.MetaData) - return - } - - reqInsert := &sk.DataSuratKontrol{ - ID: uuid, - DateCreated: timeNow, - TglCetakSurKon: timeNow, - TglRencanaKontrol: res.Response.TglRencanaKontrol, - NomorSurKon: res.Response.NoSuratKontrol, - KunjunganPasien: kunjunganPasien.ID, - RuanganSurKon: kunjunganPasien.Ruangan, - DPJPSurKon: req.IDDokter, - StatusSurKon: 1, // First Insert status always set to 1 - UserCreatedSurKon: req.User, - TipeSurKon: tipeSurKon, - } - - err = suratkontrol.InsertDataSuratKontrol(reqInsert) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } - - if req.KodeDiagnosa == "" || req.NamaDiagnosa == "" { - diagnosa := strings.Split(res.Response.NamaDiagnosa, " - ") - req.KodeDiagnosa = diagnosa[0] - req.NamaDiagnosa = diagnosa[1] - } - - err = suratkontrol.UpdateKunjunganPasien(req) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } - - response := &sk.ResponseInsertSuratKontrol{ - MetaData: res.MetaData, - Response: sk.ResponseData{ - NoSuratKontrol: res.Response.NoSuratKontrol, - TglRencanaKontrol: res.Response.TglRencanaKontrol, - NamaDokter: res.Response.NamaDokter, - NoKartu: res.Response.NoKartu, - Nama: res.Response.Nama, - Kelamin: res.Response.Kelamin, - TglLahir: res.Response.TglLahir, - NamaDiagnosa: res.Response.NamaDiagnosa, - SubSpesialis: req.Subspesialis, - }, - } - - log.Println("Response: ", response) - - c.JSON(http.StatusOK, response) -} - -func UpdateSuratKontrol(c *gin.Context) { - baseUrl := os.Getenv("BASEURL_BPJS_DEV") - endpoint := os.Getenv("VCLAIM_RS_DEV") - param := os.Getenv("UPDATE_SURAT_KONTROL") - url := baseUrl + endpoint + param - - var req sk.RequestUpdateRencanaKontrol - - err := c.Bind(&req) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } - - log.Println("Request: ", req) - - timeNow := time.Now().Format("2006-01-02 15:04:05") - - kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", - Message: err.Error(), - }) - return - } - uuid := uuid.New().String() - tipeSurKon := "1" - - if req.NoSEP == "" { - tipeSurKon = "0" - reqInsert := &sk.DataSuratKontrol{ - ID: uuid, - DateCreated: timeNow, - TglCetakSurKon: timeNow, - TglRencanaKontrol: req.TglRencanaKontrol, - NomorSurKon: "", //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, - UserUpdatedSurKon: req.User, - } - reqUpdate := &sk.DataSuratKontrol{ - DateUpdated: timeNow, - ID: req.IDSurKon, - StatusSurKon: 2, - } - - err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } - err = suratkontrol.InsertDataSuratKontrol(reqInsert) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } - c.JSON(http.StatusOK, nil) - return - } - conf := config.ConfigBpjs{} - - header := cfg.SetHeaderDev(conf) - - headers := map[string]string{ - "X-cons-id": header.ConsID, - "X-timestamp": header.TimeStamp, - "X-signature": header.XSignature, - "user_key": header.UserKey, - "Content-Type": "Application/x-www-form-urlencoded", - } - log.Println("Headers : ", headers) - - reqSuratKontrol := &sk.RequestHeaderRencanaKontrol{ - Request: &sk.ReqUpdateRencanaKontrol{ - NoSuratKontrol: req.NoSuratKontrol, - NoSEP: req.NoSEP, - KodeDokter: req.KodeHFIS, - PoliKontrol: req.KodePoli, - TglRencanaKontrol: req.TglRencanaKontrol, - User: req.User, - }, - } - res, err := ResponseUpdateSuratKontrol(url, header, headers, reqSuratKontrol) - if err != nil { - if res.MetaData.Code == "504" { - log.Println(err) - c.JSON(http.StatusGatewayTimeout, res.MetaData) - return - } - log.Println(err) - c.JSON(http.StatusInternalServerError, res.MetaData) - return - } - reqUpdate := &sk.DataSuratKontrol{ - DateUpdated: timeNow, - ID: req.IDSurKon, - StatusSurKon: 2, - } - - err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } - - reqInsert := &sk.DataSuratKontrol{ - ID: uuid, - DateCreated: timeNow, - TglCetakSurKon: timeNow, - TglRencanaKontrol: res.Response.TglRencanaKontrol, - NomorSurKon: res.Response.NoSuratKontrol, - KunjunganPasien: kunjunganPasien.ID, - RuanganSurKon: kunjunganPasien.Ruangan, - DPJPSurKon: req.IDDokter, - StatusSurKon: 1, // Insert status always set to 1 - TipeSurKon: tipeSurKon, - UserUpdatedSurKon: req.User, - } - - if reqInsert.DPJPSurKon == "" { - reqInsert.DPJPSurKon = kunjunganPasien.DPJP - } - - err = suratkontrol.InsertDataSuratKontrol(reqInsert) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } - - c.JSON(http.StatusOK, res) -} - -func DeleteSuratKontrol(c *gin.Context) { - baseUrl := os.Getenv("BASEURL_BPJS_DEV") - endpoint := os.Getenv("VCLAIM_RS_DEV") - param := os.Getenv("DELETE_SURAT_KONTROL") - url := baseUrl + endpoint + param - - var req sk.ReqDeleteRencanaKontrol - - err := c.Bind(&req) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } - - log.Println("REQUEST: ", req) - - timeNow := time.Now().Format("2006-01-02 15:04:05") - - if req.NomorSurKon == "" { - reqUpdate := &sk.DataSuratKontrol{ - DateUpdated: timeNow, - ID: req.IDDataSurKon, - StatusSurKon: 0, - UserUpdatedSurKon: req.User, - } - - err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } - res := &sk.MetadataString{ - Code: "200", - Message: "Berhasil Hapus Data", - } - c.JSON(http.StatusOK, res) - } - - conf := config.ConfigBpjs{} - - header := cfg.SetHeaderDev(conf) - - headers := map[string]string{ - "X-cons-id": header.ConsID, - "X-timestamp": header.TimeStamp, - "X-signature": header.XSignature, - "user_key": header.UserKey, - "Content-Type": "Application/x-www-form-urlencoded", - } - log.Println("Headers : ", headers) - - request := &sk.RequestHeaderRencanaKontrol{ - Request: &sk.TSuratKontrol{ - RequestDelete: sk.RequestDeleteRencanaKontrol{ - NoSuratKontrol: req.NomorSurKon, - User: req.User, - }, - }, - } - - res, err := ResponseDeleteSuratKontrol(url, header, headers, request) - if err != nil { - log.Printf("Error making external API request: %v", err) - c.JSON(http.StatusInternalServerError, err) - return - } - - reqUpdate := &sk.DataSuratKontrol{ - DateUpdated: timeNow, - ID: req.IDDataSurKon, - StatusSurKon: 0, - UserUpdatedSurKon: req.User, - } - - err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } - c.JSON(http.StatusOK, res) -} - -func GetNomorSuratKontrol(c *gin.Context) { - baseUrl := os.Getenv("BASEURL_BPJS_DEV") - endpoint := os.Getenv("VCLAIM_RS_DEV") - param := os.Getenv("GET_NOMOR_SURAT_KONTROL") - noSurat := c.Param("noSuratKontrol") - url := baseUrl + endpoint + param + noSurat - - conf := config.ConfigBpjs{} - - header := cfg.SetHeaderDev(conf) - - headers := map[string]string{ - "X-cons-id": header.ConsID, - "X-timestamp": header.TimeStamp, - "X-signature": header.XSignature, - "user_key": header.UserKey, - "Content-Type": "Application/x-www-form-urlencoded", - } - log.Println("Headers : ", headers) - - res, err := ResponseGetNomorSuratKontrol(url, header, headers) - if err != nil { - log.Printf("Error making external API request: %v", err) - c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) - return - } - - c.JSON(http.StatusOK, res) -} - -func GetSuratKontrolBySEP(c *gin.Context) { - baseUrl := os.Getenv("BASEURL_BPJS_DEV") - endpoint := os.Getenv("VCLAIM_RS_DEV") - param := os.Getenv("GET_SURAT_KONTROL_SEP") - noSEP := c.Param("noSEP") - url := baseUrl + endpoint + param + noSEP - - conf := config.ConfigBpjs{} - - header := cfg.SetHeaderDev(conf) - - headers := map[string]string{ - "X-cons-id": header.ConsID, - "X-timestamp": header.TimeStamp, - "X-signature": header.XSignature, - "user_key": header.UserKey, - "Content-Type": "Application/x-www-form-urlencoded", - } - log.Println("Headers : ", headers) - - res, err := ResponseGetSuratKontrolBySEP(url, header, headers) - if err != nil { - log.Printf("Error making external API request: %v", err) - c.JSON(http.StatusInternalServerError, err) - return - } - - c.JSON(http.StatusOK, res) -} - -func GetDataSurKon(c *gin.Context) { - offset := c.Param("offset") - limit := c.Param("limit") - data, err := suratkontrol.GetDataSuratKontrol(offset, limit) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } - var resSurKon []*sk.ResponseGetDataSuratKontrol - for _, v := range data { - gelarDepan := utils.ReplaceGelar(v.GelarDepan) - gelarBelakang := utils.ReplaceGelar(v.GelarBelakang) - namaLengkap := gelarDepan + " " + v.NamaLengkapDokter + " " + gelarBelakang - namaLengkap = strings.TrimPrefix(namaLengkap, " ") - namaLengkap = strings.TrimSuffix(namaLengkap, " ") - dateCetakSurkon, _ := time.Parse(time.RFC3339, v.TglCetakSurKon) - dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02") - dateRencanaSurkon, _ := time.Parse(time.RFC3339, v.TglRencanaKontrol) - dateRencanaSurkonString := dateRencanaSurkon.Format("2006-01-02") - resSurKon = append(resSurKon, &sk.ResponseGetDataSuratKontrol{ - IDDataSurKon: v.IDDataSurKon, - IDXDaftar: v.IDXDaftar, - TglCetakSurKon: dateCetakSurkonString, - TglRencanaKontrol: dateRencanaSurkonString, - NomorSurKon: v.NomorSurKon, - PoliAsal: v.PoliAsal, - PoliTujuan: v.PoliTujuan, - NomorSEP: v.NomorSEP, - NamaPasien: v.NamaPasien, - NamaDokter: namaLengkap, - NomorKartu: "", - Subspesialis: v.Subspesialis, - KodePoli: v.KodePoli, - KodeDokter: v.KodeDokter, - NoRM: v.NoRM, - KodeDiagnosa: v.KodeDiagnosa, - NamaDiagnosa: v.NamaDiagnosa, - TipeSurKon: v.TipeSurKon, - }) - } - c.JSON(http.StatusOK, resSurKon) -} - -func GetDataSurKonByID(c *gin.Context) { - id := c.Param("idxdaftar") - data, err := suratkontrol.GetDataSuratKontrolByID(id) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } - - gelarDepan := utils.ReplaceGelar(data.GelarDepan) - gelarBelakang := utils.ReplaceGelar(data.GelarBelakang) - namaLengkap := gelarDepan + " " + data.NamaLengkapDokter + " " + gelarBelakang - namaLengkap = strings.TrimPrefix(namaLengkap, " ") - namaLengkap = strings.TrimSuffix(namaLengkap, " ") - dateCetakSurkon, _ := time.Parse(time.RFC3339, data.TglCetakSurKon) - dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02") - dateRencanaSurkon, _ := time.Parse(time.RFC3339, data.TglRencanaKontrol) - dateRencanaSurkonString := dateRencanaSurkon.Format("2006-01-02") - resSurKon := &sk.ResponseGetDataSuratKontrol{ - IDDataSurKon: data.IDDataSurKon, - IDXDaftar: data.IDXDaftar, - TglCetakSurKon: dateCetakSurkonString, - TglRencanaKontrol: dateRencanaSurkonString, - NomorSurKon: data.NomorSurKon, - PoliAsal: data.PoliAsal, - PoliTujuan: data.PoliTujuan, - NomorSEP: data.NomorSEP, - NamaPasien: data.NamaPasien, - NamaDokter: namaLengkap, - NomorKartu: "", - Subspesialis: data.Subspesialis, - KodePoli: data.KodePoli, - KodeDokter: data.KodeDokter, - IDPoli: data.IDPoli, - IDDokter: data.IDDokter, - NoRM: data.NoRM, - KodeDiagnosa: data.KodeDiagnosa, - NamaDiagnosa: data.NamaDiagnosa, - TipeSurKon: data.TipeSurKon, - } - c.JSON(http.StatusOK, resSurKon) -} - -func PrintSurKon(c *gin.Context) { - id := c.Param("idxdaftar") - data, err := suratkontrol.GetDataSuratKontrolByID(id) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } - - gelarDepan := utils.ReplaceGelar(data.GelarDepan) - gelarBelakang := utils.ReplaceGelar(data.GelarBelakang) - namaLengkap := gelarDepan + " " + data.NamaLengkapDokter + " " + gelarBelakang - namaLengkap = strings.TrimPrefix(namaLengkap, " ") - namaLengkap = strings.TrimSuffix(namaLengkap, " ") - dateCetakSurkon, _ := time.Parse(time.RFC3339, data.TglCetakSurKon) - dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02") - dateRencanaSurkon, _ := time.Parse(time.RFC3339, data.TglRencanaKontrol) - dateRencanaSurkonString := dateRencanaSurkon.Format("2006-01-02") - resSurKon := &sk.ResponseGetDataSuratKontrol{ - IDDataSurKon: data.IDDataSurKon, - IDXDaftar: data.IDXDaftar, - TglCetakSurKon: dateCetakSurkonString, - TglRencanaKontrol: dateRencanaSurkonString, - NomorSurKon: data.NomorSurKon, - PoliAsal: data.PoliAsal, - PoliTujuan: data.PoliTujuan, - NomorSEP: data.NomorSEP, - NamaPasien: data.NamaPasien, - NamaDokter: namaLengkap, - NomorKartu: "", - Subspesialis: data.Subspesialis, - } - log.Println("Data surkon", resSurKon) - c.JSON(http.StatusOK, resSurKon) -} - -func CariPasienTPP(c *gin.Context) { - var req sk.RequestCariPasien - - err := c.ShouldBindJSON(&req) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } - - log.Println("request :", req) - - query := `` - var args []interface{} - var data []*sk.GetDataSuratKontrol - if req.NoRM != "" { - query += `and dkp2."NOMR" = ?` - args = append(args, req.NoRM, req.TanggalAwal, req.TanggalAkhir, req.Offset, req.Limit) - data, err = suratkontrol.SearchDataSurKon(req, query, args) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } - } else if req.NoSEP != "" { - query += `and dkp2."Nomor_sep" = ?` - args = append(args, req.NoSEP, req.TanggalAwal, req.TanggalAkhir, req.Offset, req.Limit) - data, err = suratkontrol.SearchDataSurKon(req, query, args) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } - } else if req.PoliKlinik != "" { - query += `and ds."id" = ?` - args = append(args, req.PoliKlinik, req.TanggalAwal, req.TanggalAkhir, req.Offset, req.Limit) - data, err = suratkontrol.SearchDataSurKon(req, query, args) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } - } else { - args = append(args, req.TanggalAwal, req.TanggalAkhir, req.Offset, req.Limit) - data, err = suratkontrol.SearchDataSurKon(req, query, args) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } - } - - var resSurKon []*sk.ResponseGetDataSuratKontrol - for _, v := range data { - gelarDepan := utils.ReplaceGelar(v.GelarDepan) - gelarBelakang := utils.ReplaceGelar(v.GelarBelakang) - namaLengkap := gelarDepan + " " + v.NamaLengkapDokter + " " + gelarBelakang - namaLengkap = strings.TrimPrefix(namaLengkap, " ") - namaLengkap = strings.TrimSuffix(namaLengkap, " ") - dateCetakSurkon, _ := time.Parse(time.RFC3339, v.TglCetakSurKon) - dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02") - dateRencanaSurkon, _ := time.Parse(time.RFC3339, v.TglRencanaKontrol) - dateRencanaSurkonString := dateRencanaSurkon.Format("2006-01-02") - resSurKon = append(resSurKon, &sk.ResponseGetDataSuratKontrol{ - IDDataSurKon: v.IDDataSurKon, - IDXDaftar: v.IDXDaftar, - TglCetakSurKon: dateCetakSurkonString, - TglRencanaKontrol: dateRencanaSurkonString, - NomorSurKon: v.NomorSurKon, - PoliAsal: v.PoliAsal, - PoliTujuan: v.PoliTujuan, - NomorSEP: v.NomorSEP, - NamaPasien: v.NamaPasien, - NamaDokter: namaLengkap, - NomorKartu: "", - Subspesialis: v.Subspesialis, - KodePoli: v.KodePoli, - KodeDokter: v.KodeDokter, - NoRM: v.NoRM, - KodeDiagnosa: v.KodeDiagnosa, - NamaDiagnosa: v.NamaDiagnosa, - TipeSurKon: v.TipeSurKon, - }) - } - c.JSON(http.StatusOK, resSurKon) -} +package suratkontrol + +import ( + cfg "bridging-rssa/config" + suratkontrol "bridging-rssa/database/satu_data/surat_kontrol" + "bridging-rssa/docs/utils" + sk "bridging-rssa/models/bpjs/surat_kontrol" + "bridging-rssa/models/config" + "log" + "net/http" + "os" + "strings" + "time" + + "github.com/gin-gonic/gin" + "github.com/google/uuid" +) + +func InsertSuratKontrol(c *gin.Context) { + baseUrl := os.Getenv("BASEURL_BPJS") + endpoint := os.Getenv("VCLAIM_RS_DEV") + param := os.Getenv("INSERT_SURAT_KONTROL") + url := baseUrl + endpoint + param + + timeNow := time.Now().Format("2006-01-02 15:04:05") + + var req sk.RequestInsertRencanaKontrol + + err := c.Bind(&req) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + + log.Println("Request: ", req) + + conf := config.ConfigBpjs{} + + header := cfg.SetHeaderDev(conf) + + headers := map[string]string{ + "X-cons-id": header.ConsID, + "X-timestamp": header.TimeStamp, + "X-signature": header.XSignature, + "user_key": header.UserKey, + "Content-Type": "Application/x-www-form-urlencoded", + } + log.Println("Headers : ", headers) + + tipeSurKon := "1" + + kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + + uuid := uuid.New().String() + if req.NoSEP == "" { + tipeSurKon = "0" + reqInsert := &sk.DataSuratKontrol{ + ID: uuid, + DateCreated: timeNow, + TglCetakSurKon: timeNow, + TglRencanaKontrol: req.TglRencanaKontrol, + NomorSurKon: "", //TODO How to get Nomor SurKon + KunjunganPasien: kunjunganPasien.ID, + RuanganSurKon: kunjunganPasien.Ruangan, + DPJPSurKon: req.IDDokter, + StatusSurKon: 1, // First Insert status always set to 1 + UserCreatedSurKon: req.User, + TipeSurKon: tipeSurKon, + } + err = suratkontrol.InsertDataSuratKontrol(reqInsert) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + c.JSON(http.StatusOK, nil) + return + } + + reqSuratKontrol := &sk.RequestHeaderRencanaKontrol{ + Request: &sk.ReqInsertRencanaKontrol{ + NoSEP: req.NoSEP, + KodeDokter: req.KodeHFIS, + PoliKontrol: req.KodePoli, + TglRencanaKontrol: req.TglRencanaKontrol, + User: req.User, + }, + } + res, err := PostData(url, header, headers, reqSuratKontrol) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, res.MetaData) + return + } + + reqInsert := &sk.DataSuratKontrol{ + ID: uuid, + DateCreated: timeNow, + TglCetakSurKon: timeNow, + TglRencanaKontrol: res.Response.TglRencanaKontrol, + NomorSurKon: res.Response.NoSuratKontrol, + KunjunganPasien: kunjunganPasien.ID, + RuanganSurKon: kunjunganPasien.Ruangan, + DPJPSurKon: req.IDDokter, + StatusSurKon: 1, // First Insert status always set to 1 + UserCreatedSurKon: req.User, + TipeSurKon: tipeSurKon, + } + + err = suratkontrol.InsertDataSuratKontrol(reqInsert) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + + if req.KodeDiagnosa == "" || req.NamaDiagnosa == "" { + diagnosa := strings.Split(res.Response.NamaDiagnosa, " - ") + req.KodeDiagnosa = diagnosa[0] + req.NamaDiagnosa = diagnosa[1] + } + + err = suratkontrol.UpdateKunjunganPasien(req) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + + response := &sk.ResponseInsertSuratKontrol{ + MetaData: res.MetaData, + Response: sk.ResponseData{ + NoSuratKontrol: res.Response.NoSuratKontrol, + TglRencanaKontrol: res.Response.TglRencanaKontrol, + NamaDokter: res.Response.NamaDokter, + NoKartu: res.Response.NoKartu, + Nama: res.Response.Nama, + Kelamin: res.Response.Kelamin, + TglLahir: res.Response.TglLahir, + NamaDiagnosa: res.Response.NamaDiagnosa, + SubSpesialis: req.Subspesialis, + }, + } + + log.Println("Response: ", response) + + c.JSON(http.StatusOK, response) +} + +func UpdateSuratKontrol(c *gin.Context) { + baseUrl := os.Getenv("BASEURL_BPJS") + endpoint := os.Getenv("VCLAIM_RS_DEV") + param := os.Getenv("UPDATE_SURAT_KONTROL") + url := baseUrl + endpoint + param + + var req sk.RequestUpdateRencanaKontrol + + err := c.Bind(&req) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + + log.Println("Request: ", req) + + timeNow := time.Now().Format("2006-01-02 15:04:05") + + kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + uuid := uuid.New().String() + tipeSurKon := "1" + + if req.NoSEP == "" { + tipeSurKon = "0" + reqInsert := &sk.DataSuratKontrol{ + ID: uuid, + DateCreated: timeNow, + TglCetakSurKon: timeNow, + TglRencanaKontrol: req.TglRencanaKontrol, + NomorSurKon: "", //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, + UserUpdatedSurKon: req.User, + } + reqUpdate := &sk.DataSuratKontrol{ + DateUpdated: timeNow, + ID: req.IDSurKon, + StatusSurKon: 2, + } + + err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + err = suratkontrol.InsertDataSuratKontrol(reqInsert) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + c.JSON(http.StatusOK, nil) + return + } + conf := config.ConfigBpjs{} + + header := cfg.SetHeaderDev(conf) + + headers := map[string]string{ + "X-cons-id": header.ConsID, + "X-timestamp": header.TimeStamp, + "X-signature": header.XSignature, + "user_key": header.UserKey, + "Content-Type": "Application/x-www-form-urlencoded", + } + log.Println("Headers : ", headers) + + reqSuratKontrol := &sk.RequestHeaderRencanaKontrol{ + Request: &sk.ReqUpdateRencanaKontrol{ + NoSuratKontrol: req.NoSuratKontrol, + NoSEP: req.NoSEP, + KodeDokter: req.KodeHFIS, + PoliKontrol: req.KodePoli, + TglRencanaKontrol: req.TglRencanaKontrol, + User: req.User, + }, + } + res, err := ResponseUpdateSuratKontrol(url, header, headers, reqSuratKontrol) + if err != nil { + if res.MetaData.Code == "504" { + log.Println(err) + c.JSON(http.StatusGatewayTimeout, res.MetaData) + return + } + log.Println(err) + c.JSON(http.StatusInternalServerError, res.MetaData) + return + } + reqUpdate := &sk.DataSuratKontrol{ + DateUpdated: timeNow, + ID: req.IDSurKon, + StatusSurKon: 2, + } + + err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + + reqInsert := &sk.DataSuratKontrol{ + ID: uuid, + DateCreated: timeNow, + TglCetakSurKon: timeNow, + TglRencanaKontrol: res.Response.TglRencanaKontrol, + NomorSurKon: res.Response.NoSuratKontrol, + KunjunganPasien: kunjunganPasien.ID, + RuanganSurKon: kunjunganPasien.Ruangan, + DPJPSurKon: req.IDDokter, + StatusSurKon: 1, // Insert status always set to 1 + TipeSurKon: tipeSurKon, + UserUpdatedSurKon: req.User, + } + + if reqInsert.DPJPSurKon == "" { + reqInsert.DPJPSurKon = kunjunganPasien.DPJP + } + + err = suratkontrol.InsertDataSuratKontrol(reqInsert) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + + c.JSON(http.StatusOK, res) +} + +func DeleteSuratKontrol(c *gin.Context) { + baseUrl := os.Getenv("BASEURL_BPJS") + endpoint := os.Getenv("VCLAIM_RS_DEV") + param := os.Getenv("DELETE_SURAT_KONTROL") + url := baseUrl + endpoint + param + + var req sk.ReqDeleteRencanaKontrol + + err := c.Bind(&req) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + + log.Println("REQUEST: ", req) + + timeNow := time.Now().Format("2006-01-02 15:04:05") + + if req.NomorSurKon == "" { + reqUpdate := &sk.DataSuratKontrol{ + DateUpdated: timeNow, + ID: req.IDDataSurKon, + StatusSurKon: 0, + UserUpdatedSurKon: req.User, + } + + err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + res := &sk.MetadataString{ + Code: "200", + Message: "Berhasil Hapus Data", + } + c.JSON(http.StatusOK, res) + } + + conf := config.ConfigBpjs{} + + header := cfg.SetHeaderDev(conf) + + headers := map[string]string{ + "X-cons-id": header.ConsID, + "X-timestamp": header.TimeStamp, + "X-signature": header.XSignature, + "user_key": header.UserKey, + "Content-Type": "Application/x-www-form-urlencoded", + } + log.Println("Headers : ", headers) + + request := &sk.RequestHeaderRencanaKontrol{ + Request: &sk.TSuratKontrol{ + RequestDelete: sk.RequestDeleteRencanaKontrol{ + NoSuratKontrol: req.NomorSurKon, + User: req.User, + }, + }, + } + + res, err := ResponseDeleteSuratKontrol(url, header, headers, request) + if err != nil { + log.Printf("Error making external API request: %v", err) + c.JSON(http.StatusInternalServerError, err) + return + } + + reqUpdate := &sk.DataSuratKontrol{ + DateUpdated: timeNow, + ID: req.IDDataSurKon, + StatusSurKon: 0, + UserUpdatedSurKon: req.User, + } + + err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + c.JSON(http.StatusOK, res) +} + +func GetNomorSuratKontrol(c *gin.Context) { + baseUrl := os.Getenv("BASEURL_BPJS") + endpoint := os.Getenv("VCLAIM_RS_DEV") + param := os.Getenv("GET_NOMOR_SURAT_KONTROL") + noSurat := c.Param("noSuratKontrol") + url := baseUrl + endpoint + param + noSurat + + conf := config.ConfigBpjs{} + + header := cfg.SetHeaderDev(conf) + + headers := map[string]string{ + "X-cons-id": header.ConsID, + "X-timestamp": header.TimeStamp, + "X-signature": header.XSignature, + "user_key": header.UserKey, + "Content-Type": "Application/x-www-form-urlencoded", + } + log.Println("Headers : ", headers) + + res, err := ResponseGetNomorSuratKontrol(url, header, headers) + if err != nil { + log.Printf("Error making external API request: %v", err) + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + + c.JSON(http.StatusOK, res) +} + +func GetSuratKontrolBySEP(c *gin.Context) { + baseUrl := os.Getenv("BASEURL_BPJS") + endpoint := os.Getenv("VCLAIM_RS_DEV") + param := os.Getenv("GET_SURAT_KONTROL_SEP") + noSEP := c.Param("noSEP") + url := baseUrl + endpoint + param + noSEP + + conf := config.ConfigBpjs{} + + header := cfg.SetHeaderDev(conf) + + headers := map[string]string{ + "X-cons-id": header.ConsID, + "X-timestamp": header.TimeStamp, + "X-signature": header.XSignature, + "user_key": header.UserKey, + "Content-Type": "Application/x-www-form-urlencoded", + } + log.Println("Headers : ", headers) + + res, err := ResponseGetSuratKontrolBySEP(url, header, headers) + if err != nil { + log.Printf("Error making external API request: %v", err) + c.JSON(http.StatusInternalServerError, err) + return + } + + c.JSON(http.StatusOK, res) +} + +func GetDataSurKon(c *gin.Context) { + offset := c.Param("offset") + limit := c.Param("limit") + data, err := suratkontrol.GetDataSuratKontrol(offset, limit) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + var resSurKon []*sk.ResponseGetDataSuratKontrol + for _, v := range data { + gelarDepan := utils.ReplaceGelar(v.GelarDepan) + gelarBelakang := utils.ReplaceGelar(v.GelarBelakang) + namaLengkap := gelarDepan + " " + v.NamaLengkapDokter + " " + gelarBelakang + namaLengkap = strings.TrimPrefix(namaLengkap, " ") + namaLengkap = strings.TrimSuffix(namaLengkap, " ") + dateCetakSurkon, _ := time.Parse(time.RFC3339, v.TglCetakSurKon) + dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02") + dateRencanaSurkon, _ := time.Parse(time.RFC3339, v.TglRencanaKontrol) + dateRencanaSurkonString := dateRencanaSurkon.Format("2006-01-02") + resSurKon = append(resSurKon, &sk.ResponseGetDataSuratKontrol{ + IDDataSurKon: v.IDDataSurKon, + IDXDaftar: v.IDXDaftar, + TglCetakSurKon: dateCetakSurkonString, + TglRencanaKontrol: dateRencanaSurkonString, + NomorSurKon: v.NomorSurKon, + PoliAsal: v.PoliAsal, + PoliTujuan: v.PoliTujuan, + NomorSEP: v.NomorSEP, + NamaPasien: v.NamaPasien, + NamaDokter: namaLengkap, + NomorKartu: "", + Subspesialis: v.Subspesialis, + KodePoli: v.KodePoli, + KodeDokter: v.KodeDokter, + NoRM: v.NoRM, + KodeDiagnosa: v.KodeDiagnosa, + NamaDiagnosa: v.NamaDiagnosa, + TipeSurKon: v.TipeSurKon, + }) + } + c.JSON(http.StatusOK, resSurKon) +} + +func GetDataSurKonByID(c *gin.Context) { + id := c.Param("idxdaftar") + data, err := suratkontrol.GetDataSuratKontrolByID(id) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + + gelarDepan := utils.ReplaceGelar(data.GelarDepan) + gelarBelakang := utils.ReplaceGelar(data.GelarBelakang) + namaLengkap := gelarDepan + " " + data.NamaLengkapDokter + " " + gelarBelakang + namaLengkap = strings.TrimPrefix(namaLengkap, " ") + namaLengkap = strings.TrimSuffix(namaLengkap, " ") + dateCetakSurkon, _ := time.Parse(time.RFC3339, data.TglCetakSurKon) + dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02") + dateRencanaSurkon, _ := time.Parse(time.RFC3339, data.TglRencanaKontrol) + dateRencanaSurkonString := dateRencanaSurkon.Format("2006-01-02") + resSurKon := &sk.ResponseGetDataSuratKontrol{ + IDDataSurKon: data.IDDataSurKon, + IDXDaftar: data.IDXDaftar, + TglCetakSurKon: dateCetakSurkonString, + TglRencanaKontrol: dateRencanaSurkonString, + NomorSurKon: data.NomorSurKon, + PoliAsal: data.PoliAsal, + PoliTujuan: data.PoliTujuan, + NomorSEP: data.NomorSEP, + NamaPasien: data.NamaPasien, + NamaDokter: namaLengkap, + NomorKartu: "", + Subspesialis: data.Subspesialis, + KodePoli: data.KodePoli, + KodeDokter: data.KodeDokter, + IDPoli: data.IDPoli, + IDDokter: data.IDDokter, + NoRM: data.NoRM, + KodeDiagnosa: data.KodeDiagnosa, + NamaDiagnosa: data.NamaDiagnosa, + TipeSurKon: data.TipeSurKon, + } + c.JSON(http.StatusOK, resSurKon) +} + +func PrintSurKon(c *gin.Context) { + id := c.Param("idxdaftar") + data, err := suratkontrol.GetDataSuratKontrolByID(id) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + + gelarDepan := utils.ReplaceGelar(data.GelarDepan) + gelarBelakang := utils.ReplaceGelar(data.GelarBelakang) + namaLengkap := gelarDepan + " " + data.NamaLengkapDokter + " " + gelarBelakang + namaLengkap = strings.TrimPrefix(namaLengkap, " ") + namaLengkap = strings.TrimSuffix(namaLengkap, " ") + dateCetakSurkon, _ := time.Parse(time.RFC3339, data.TglCetakSurKon) + dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02") + dateRencanaSurkon, _ := time.Parse(time.RFC3339, data.TglRencanaKontrol) + dateRencanaSurkonString := dateRencanaSurkon.Format("2006-01-02") + resSurKon := &sk.ResponseGetDataSuratKontrol{ + IDDataSurKon: data.IDDataSurKon, + IDXDaftar: data.IDXDaftar, + TglCetakSurKon: dateCetakSurkonString, + TglRencanaKontrol: dateRencanaSurkonString, + NomorSurKon: data.NomorSurKon, + PoliAsal: data.PoliAsal, + PoliTujuan: data.PoliTujuan, + NomorSEP: data.NomorSEP, + NamaPasien: data.NamaPasien, + NamaDokter: namaLengkap, + NomorKartu: "", + Subspesialis: data.Subspesialis, + } + log.Println("Data surkon", resSurKon) + c.JSON(http.StatusOK, resSurKon) +} + +func CariPasienTPP(c *gin.Context) { + var req sk.RequestCariPasien + + err := c.ShouldBindJSON(&req) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + + log.Println("request :", req) + + query := `` + var args []interface{} + var data []*sk.GetDataSuratKontrol + if req.NoRM != "" { + query += `and dkp2."NOMR" = ?` + args = append(args, req.NoRM, req.TanggalAwal, req.TanggalAkhir, req.Offset, req.Limit) + data, err = suratkontrol.SearchDataSurKon(req, query, args) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + } else if req.NoSEP != "" { + query += `and dkp2."Nomor_sep" = ?` + args = append(args, req.NoSEP, req.TanggalAwal, req.TanggalAkhir, req.Offset, req.Limit) + data, err = suratkontrol.SearchDataSurKon(req, query, args) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + } else if req.PoliKlinik != "" { + query += `and ds."id" = ?` + args = append(args, req.PoliKlinik, req.TanggalAwal, req.TanggalAkhir, req.Offset, req.Limit) + data, err = suratkontrol.SearchDataSurKon(req, query, args) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + } else { + args = append(args, req.TanggalAwal, req.TanggalAkhir, req.Offset, req.Limit) + data, err = suratkontrol.SearchDataSurKon(req, query, args) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + } + + var resSurKon []*sk.ResponseGetDataSuratKontrol + for _, v := range data { + gelarDepan := utils.ReplaceGelar(v.GelarDepan) + gelarBelakang := utils.ReplaceGelar(v.GelarBelakang) + namaLengkap := gelarDepan + " " + v.NamaLengkapDokter + " " + gelarBelakang + namaLengkap = strings.TrimPrefix(namaLengkap, " ") + namaLengkap = strings.TrimSuffix(namaLengkap, " ") + dateCetakSurkon, _ := time.Parse(time.RFC3339, v.TglCetakSurKon) + dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02") + dateRencanaSurkon, _ := time.Parse(time.RFC3339, v.TglRencanaKontrol) + dateRencanaSurkonString := dateRencanaSurkon.Format("2006-01-02") + resSurKon = append(resSurKon, &sk.ResponseGetDataSuratKontrol{ + IDDataSurKon: v.IDDataSurKon, + IDXDaftar: v.IDXDaftar, + TglCetakSurKon: dateCetakSurkonString, + TglRencanaKontrol: dateRencanaSurkonString, + NomorSurKon: v.NomorSurKon, + PoliAsal: v.PoliAsal, + PoliTujuan: v.PoliTujuan, + NomorSEP: v.NomorSEP, + NamaPasien: v.NamaPasien, + NamaDokter: namaLengkap, + NomorKartu: "", + Subspesialis: v.Subspesialis, + KodePoli: v.KodePoli, + KodeDokter: v.KodeDokter, + NoRM: v.NoRM, + KodeDiagnosa: v.KodeDiagnosa, + NamaDiagnosa: v.NamaDiagnosa, + TipeSurKon: v.TipeSurKon, + }) + } + c.JSON(http.StatusOK, resSurKon) +} diff --git a/main.go b/main.go index 2460d28..6840d6d 100644 --- a/main.go +++ b/main.go @@ -56,7 +56,7 @@ func main() { suratKontrol.GET("/idxdaftar/:idxdaftar", suratkontrol.GetDataSurKonByID) suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol) suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP) - suratKontrol.GET("/printSurKon/:idSurKon", suratkontrol.PrintSurKon) + suratKontrol.GET("/printSurKon/:idxdaftar", suratkontrol.PrintSurKon) suratKontrol.POST("/cari", suratkontrol.CariPasienTPP) suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol) suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol) diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index 4dd9681..712f0c1 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -1,283 +1,283 @@ -package suratkontrol - -type RequestHeaderRencanaKontrol struct { - Request interface{} `json:"request"` -} - -type ReqInsertRencanaKontrol struct { - NoSEP string `json:"noSEP"` - KodeDokter string `json:"kodeDokter"` - PoliKontrol string `json:"poliKontrol"` - TglRencanaKontrol string `json:"tglRencanaKontrol"` - User string `json:"user"` -} - -type ReqUpdateRencanaKontrol struct { - NoSuratKontrol string `json:"noSuratKontrol"` - NoSEP string `json:"noSEP"` - KodeDokter string `json:"kodeDokter"` - PoliKontrol string `json:"poliKontrol"` - TglRencanaKontrol string `json:"tglRencanaKontrol"` - User string `json:"user"` -} - -type RequestInsertRencanaKontrol struct { - IDXDaftar string `json:"idxdaftar"` - NoSEP string `json:"noSEP"` - KodeHFIS string `json:"kodeHFIS"` - KodePoli string `json:"kodePoli"` - Subspesialis string `json:"subspesialis"` - TglRencanaKontrol string `json:"tglRencanaKontrol"` - User string `json:"user"` - IDDokter string `json:"id_dokter"` - KodeDiagnosa string `json:"kode_diagnosa"` - NamaDiagnosa string `json:"nama_diagnosa"` -} - -type ReqDeleteRencanaKontrol struct { - IDDataSurKon string `json:"id_surat_kontrol"` - NomorSurKon string `json:"Nomor_surat_kontrol"` - User string `json:"user"` -} - -type RequestUpdateRencanaKontrol struct { - IDXDaftar string `json:"idxdaftar"` - IDSurKon string `json:"idSurKon"` - IDDokter string `json:"id_dokter"` - NoSuratKontrol string `json:"noSuratKontrol"` - NoSEP string `json:"noSEP"` - KodeHFIS string `json:"kodeHFIS"` - KodePoli string `json:"kodePoli"` - TglRencanaKontrol string `json:"tglRencanaKontrol"` - User string `json:"user"` - KodeDiagnosa string `json:"Kode_diagnosa"` - NamaDiagnosa string `json:"Nama_diagnosa"` -} - -type TSuratKontrol struct { - RequestDelete RequestDeleteRencanaKontrol `json:"t_suratkontrol"` -} - -type RequestDeleteRencanaKontrol struct { - NoSuratKontrol string `json:"noSuratKontrol"` - User string `json:"user"` -} - -type ResponseRaw struct { - Response string `json:"response"` - MetaData MetadataString `json:"metadata"` -} - -type ResponseRawUpper struct { - Response string `json:"response"` - MetaData MetadataString `json:"metaData"` -} - -type Metadata struct { - Code int `json:"code"` - Message string `json:"message"` -} - -type ResponseInsertRaw struct { - Response string `json:"response"` - MetaData MetadataString `json:"metaData"` -} - -type MetadataString struct { - Code string `json:"code"` - Message string `json:"message"` -} - -type ResponseGetSuratKontrol struct { - MetaData MetadataString `json:"metaData"` - Response ResponseNomorSuratKontrol `json:"response"` -} - -type ResponseGetSuratKontrolBySEP struct { - MetaData MetadataString `json:"metaData"` - Response ResponseSuratKontrolBySEP `json:"response"` -} - -type Response struct { - MetaData MetadataString `json:"metadata"` - Response ResponseSuratKontrol `json:"response"` -} - -type ResponseUpper struct { - MetaData MetadataString `json:"metaData"` - Response ResponseSuratKontrol `json:"response"` -} - -type ResponseInsertSuratKontrol struct { - MetaData MetadataString `json:"metaData"` - Response ResponseData `json:"response"` -} - -type ResponseData struct { - NoSuratKontrol string `json:"noSuratKontrol"` - TglRencanaKontrol string `json:"tglRencanaKontrol"` - NamaDokter string `json:"namaDokter"` - NoKartu string `json:"noKartu"` - Nama string `json:"nama"` - Kelamin string `json:"kelamin"` - TglLahir string `json:"tglLahir"` - NamaDiagnosa string `json:"namaDiagnosa"` - SubSpesialis string `json:"subspesialis"` -} - -type ResponseSuratKontrol struct { - NoSuratKontrol string `json:"noSuratKontrol"` - TglRencanaKontrol string `json:"tglRencanaKontrol"` - NamaDokter string `json:"namaDokter"` - NoKartu string `json:"noKartu"` - Nama string `json:"nama"` - Kelamin string `json:"kelamin"` - TglLahir string `json:"tglLahir"` - NamaDiagnosa string `json:"namaDiagnosa"` -} - -type RequestRencanaKontrol struct { - IDXDaftar string `json:"idxdaftar"` - NoSEP string `json:"noSEP"` - KodeHFIS string `json:"kodeHFIS"` - KodePoli string `json:"kodePoli"` - TglRencanaKontrol string `json:"tglRencanaKontrol"` - User string `json:"user"` -} - -type ResponseNomorSuratKontrol struct { - NoSuratKontrol string `json:"noSuratKontrol"` - TglRencanaKontrol string `json:"tglRencanaKontrol"` - TglTerbit string `json:"tglTerbit"` - JnsKontrol string `json:"jnsKontrol"` - PoliTujuan string `json:"poliTujuan"` - NamaPoliTujuan string `json:"namaPoliTujuan"` - KodeDokter string `json:"kodeDokter"` - NamaDokter string `json:"namaDokter"` - FlagKontrol string `json:"flagKontrol"` - KodeDokterPembuat string `json:"kodeDokterPembuat"` - NamaDokterPembuat string `json:"namaDokterPembuat"` - NamaJnsKontrol string `json:"namaJnsKontrol"` - Sep Sep `json:"sep"` -} - -type Sep struct { - NoSep string `json:"noSep"` - TglSep string `json:"tglSep"` - JnsPelayanan string `json:"jnsPelayanan"` - Poli string `json:"poli"` - Diagnosa string `json:"diagnosa"` - Peserta Peserta `json:"peserta"` - ProvUmum ProvUmum `json:"provUmum"` - ProvPerujuk ProvPerujuk `json:"provPerujuk"` -} - -type Peserta struct { - NoKartu string `json:"noKartu"` - Nama string `json:"nama"` - TglLahir string `json:"tglLahir"` - Kelamin string `json:"kelamin"` - HakKelas string `json:"hakKelas"` -} - -type ProvUmum struct { - KodeProvider string `json:"kdProvider"` - NamaProvider string `json:"nmProvider"` -} - -type ProvPerujuk struct { - KodeProviderPerujuk string `json:"kdProviderPerujuk"` - NamaProviderPerujuk string `json:"nmProviderPerujuk"` - AsalRujukan string `json:"asalRujukan"` - NoRujukan string `json:"noRujukan"` - TglRujukan string `json:"tglRujukan"` -} - -type DataSuratKontrol struct { - ID string `gorm:"column:id" json:"id"` - Status string `gorm:"column:status" json:"status"` - Sort int `gorm:"column:sort" json:"sort"` - UserCreated string `gorm:"column:user_created" json:"user_created"` - DateCreated string `gorm:"column:date_created" json:"date_created"` - UserUpdated string `gorm:"column:user_updated" json:"user_updated"` - DateUpdated string `gorm:"column:date_updated" json:"date_updated"` - TglCetakSurKon string `gorm:"column:Tanggal_cetak_surat_kontrol" json:"Tanggal_cetak_surat_kontrol"` - TglRencanaKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"` - NomorSurKon string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_kontrol"` - 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"` - StatusSurKon int `gorm:"column:Status_surat_kontrol" json:"Status_surat_kontrol"` - UserCreatedSurKon string `gorm:"column:User_created_surat_kontrol" json:"User_created_surat_kontrol"` - TipeSurKon string `gorm:"column:Tipe_surat_kontrol" json:"Tipe_surat_kontrol"` - UserUpdatedSurKon string `gorm:"column:User_updated_surat_kontrol" json:"User_updated_surat_kontrol"` -} - -type ResponseSuratKontrolBySEP struct { - NoSEP string `json:"noSep"` - TglSEP string `json:"tglSep"` - JenisPelayanan string `json:"jnsPelayanan"` - Poli string `json:"poli"` - Diagnosa string `json:"diagnosa"` - Peserta Peserta `json:"peserta"` - ProvUmum ProvUmum `json:"provUmum"` - ProvPerujuk ProvPerujuk `json:"provPerujuk"` -} - -type GetDataSuratKontrol struct { - IDDataSurKon string `gorm:"column:id" json:"id"` - IDXDaftar string `gorm:"column:IDXDAFTAR" json:"IDXDAFTAR"` - TglCetakSurKon string `gorm:"column:Tanggal_cetak_surat_kontrol" json:"Tanggal_cetak_surat_kontrol"` - TglRencanaKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"` - NomorSurKon string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_kontrol"` - PoliAsal string `gorm:"column:Poli_asal" json:"Poli_asal"` - PoliTujuan string `gorm:"column:Poli_tuju" json:"Poli_tuju"` - NomorSEP string `gorm:"column:Nomor_sep" json:"Nomor_sep"` - NamaPasien string `gorm:"column:Nama_lengkap" json:"Nama_lengkap"` - GelarDepan string `gorm:"column:gelardepan" json:"gelardepan"` - NamaLengkapDokter string `gorm:"column:Nama_lengkap_dokter" json:"Nama_lengkap_dokter"` - GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"` - Subspesialis string `gorm:"column:Subspesialis" json:"Subspesialis"` - KodePoli string `gorm:"column:Kode_poli" json:"Kode_poli"` - KodeDokter string `gorm:"column:Kode_dokter" json:"Kode_dokter"` - 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"` - 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"` - TipeSurKon string `gorm:"column:Tipe_SurKon" json:"Tipe_SurKon"` -} - -type ResponseGetDataSuratKontrol struct { - IDDataSurKon string `json:"id"` - IDXDaftar string `json:"Idx_daftar"` - TglCetakSurKon string `json:"Tanggal_cetak_surat_kontrol"` - TglRencanaKontrol string `json:"Tanggal_rencana_kontrol"` - NomorSurKon string `json:"Nomor_surat_kontrol"` - PoliAsal string `json:"Poli_asal"` - PoliTujuan string `json:"Poli_tuju"` - NomorSEP string `json:"Nomor_sep"` - NamaPasien string `json:"Nama_pasien"` - NamaDokter string `json:"NamaDokter"` - NomorKartu string `json:"Nomor_kartu"` - Subspesialis string `json:"Subspesialis"` - KodePoli string `json:"Kode_poli"` - KodeDokter string `json:"Kode_dokter"` - IDPoli string `json:"id_poli"` - IDDokter string `json:"id_dokter"` - NoRM string `json:"No_rm"` - KodeDiagnosa string `json:"Kode_diagnosa"` - NamaDiagnosa string `json:"Nama_diagnosa"` - TipeSurKon string `json:"Tipe_SurKon"` -} - -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"` - Offset string `json:"offset"` - Limit string `json:"limit"` -} +package suratkontrol + +type RequestHeaderRencanaKontrol struct { + Request interface{} `json:"request"` +} + +type ReqInsertRencanaKontrol struct { + NoSEP string `json:"noSEP"` + KodeDokter string `json:"kodeDokter"` + PoliKontrol string `json:"poliKontrol"` + TglRencanaKontrol string `json:"tglRencanaKontrol"` + User string `json:"user"` +} + +type ReqUpdateRencanaKontrol struct { + NoSuratKontrol string `json:"noSuratKontrol"` + NoSEP string `json:"noSEP"` + KodeDokter string `json:"kodeDokter"` + PoliKontrol string `json:"poliKontrol"` + TglRencanaKontrol string `json:"tglRencanaKontrol"` + User string `json:"user"` +} + +type RequestInsertRencanaKontrol struct { + IDXDaftar string `json:"idxdaftar"` + NoSEP string `json:"noSEP"` + KodeHFIS string `json:"kodeHFIS"` + KodePoli string `json:"kodePoli"` + Subspesialis string `json:"subspesialis"` + TglRencanaKontrol string `json:"tglRencanaKontrol"` + User string `json:"user"` + IDDokter string `json:"id_dokter"` + KodeDiagnosa string `json:"kode_diagnosa"` + NamaDiagnosa string `json:"nama_diagnosa"` +} + +type ReqDeleteRencanaKontrol struct { + IDDataSurKon string `json:"id_surat_kontrol"` + NomorSurKon string `json:"Nomor_surat_kontrol"` + User string `json:"user"` +} + +type RequestUpdateRencanaKontrol struct { + IDXDaftar string `json:"idxdaftar"` + IDSurKon string `json:"idSurKon"` + IDDokter string `json:"id_dokter"` + NoSuratKontrol string `json:"noSuratKontrol"` + NoSEP string `json:"noSEP"` + KodeHFIS string `json:"kodeHFIS"` + KodePoli string `json:"kodePoli"` + TglRencanaKontrol string `json:"tglRencanaKontrol"` + User string `json:"user"` + KodeDiagnosa string `json:"Kode_diagnosa"` + NamaDiagnosa string `json:"Nama_diagnosa"` +} + +type TSuratKontrol struct { + RequestDelete RequestDeleteRencanaKontrol `json:"t_suratkontrol"` +} + +type RequestDeleteRencanaKontrol struct { + NoSuratKontrol string `json:"noSuratKontrol"` + User string `json:"user"` +} + +type ResponseRaw struct { + Response string `json:"response"` + MetaData MetadataString `json:"metadata"` +} + +type ResponseRawUpper struct { + Response string `json:"response"` + MetaData MetadataString `json:"metaData"` +} + +type Metadata struct { + Code int `json:"code"` + Message string `json:"message"` +} + +type ResponseInsertRaw struct { + Response string `json:"response"` + MetaData MetadataString `json:"metaData"` +} + +type MetadataString struct { + Code string `json:"code"` + Message string `json:"message"` +} + +type ResponseGetSuratKontrol struct { + MetaData MetadataString `json:"metaData"` + Response ResponseNomorSuratKontrol `json:"response"` +} + +type ResponseGetSuratKontrolBySEP struct { + MetaData MetadataString `json:"metaData"` + Response ResponseSuratKontrolBySEP `json:"response"` +} + +type Response struct { + MetaData MetadataString `json:"metadata"` + Response ResponseSuratKontrol `json:"response"` +} + +type ResponseUpper struct { + MetaData MetadataString `json:"metaData"` + Response ResponseSuratKontrol `json:"response"` +} + +type ResponseInsertSuratKontrol struct { + MetaData MetadataString `json:"metaData"` + Response ResponseData `json:"response"` +} + +type ResponseData struct { + NoSuratKontrol string `json:"noSuratKontrol"` + TglRencanaKontrol string `json:"tglRencanaKontrol"` + NamaDokter string `json:"namaDokter"` + NoKartu string `json:"noKartu"` + Nama string `json:"nama"` + Kelamin string `json:"kelamin"` + TglLahir string `json:"tglLahir"` + NamaDiagnosa string `json:"namaDiagnosa"` + SubSpesialis string `json:"subspesialis"` +} + +type ResponseSuratKontrol struct { + NoSuratKontrol string `json:"noSuratKontrol"` + TglRencanaKontrol string `json:"tglRencanaKontrol"` + NamaDokter string `json:"namaDokter"` + NoKartu string `json:"noKartu"` + Nama string `json:"nama"` + Kelamin string `json:"kelamin"` + TglLahir string `json:"tglLahir"` + NamaDiagnosa string `json:"namaDiagnosa"` +} + +type RequestRencanaKontrol struct { + IDXDaftar string `json:"idxdaftar"` + NoSEP string `json:"noSEP"` + KodeHFIS string `json:"kodeHFIS"` + KodePoli string `json:"kodePoli"` + TglRencanaKontrol string `json:"tglRencanaKontrol"` + User string `json:"user"` +} + +type ResponseNomorSuratKontrol struct { + NoSuratKontrol string `json:"noSuratKontrol"` + TglRencanaKontrol string `json:"tglRencanaKontrol"` + TglTerbit string `json:"tglTerbit"` + JnsKontrol string `json:"jnsKontrol"` + PoliTujuan string `json:"poliTujuan"` + NamaPoliTujuan string `json:"namaPoliTujuan"` + KodeDokter string `json:"kodeDokter"` + NamaDokter string `json:"namaDokter"` + FlagKontrol string `json:"flagKontrol"` + KodeDokterPembuat string `json:"kodeDokterPembuat"` + NamaDokterPembuat string `json:"namaDokterPembuat"` + NamaJnsKontrol string `json:"namaJnsKontrol"` + Sep Sep `json:"sep"` +} + +type Sep struct { + NoSep string `json:"noSep"` + TglSep string `json:"tglSep"` + JnsPelayanan string `json:"jnsPelayanan"` + Poli string `json:"poli"` + Diagnosa string `json:"diagnosa"` + Peserta Peserta `json:"peserta"` + ProvUmum ProvUmum `json:"provUmum"` + ProvPerujuk ProvPerujuk `json:"provPerujuk"` +} + +type Peserta struct { + NoKartu string `json:"noKartu"` + Nama string `json:"nama"` + TglLahir string `json:"tglLahir"` + Kelamin string `json:"kelamin"` + HakKelas string `json:"hakKelas"` +} + +type ProvUmum struct { + KodeProvider string `json:"kdProvider"` + NamaProvider string `json:"nmProvider"` +} + +type ProvPerujuk struct { + KodeProviderPerujuk string `json:"kdProviderPerujuk"` + NamaProviderPerujuk string `json:"nmProviderPerujuk"` + AsalRujukan string `json:"asalRujukan"` + NoRujukan string `json:"noRujukan"` + TglRujukan string `json:"tglRujukan"` +} + +type DataSuratKontrol struct { + ID string `gorm:"column:id" json:"id"` + Status string `gorm:"column:status" json:"status"` + Sort int `gorm:"column:sort" json:"sort"` + UserCreated string `gorm:"column:user_created" json:"user_created"` + DateCreated string `gorm:"column:date_created" json:"date_created"` + UserUpdated string `gorm:"column:user_updated" json:"user_updated"` + DateUpdated string `gorm:"column:date_updated" json:"date_updated"` + TglCetakSurKon string `gorm:"column:Tanggal_cetak_surat_kontrol" json:"Tanggal_cetak_surat_kontrol"` + TglRencanaKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"` + NomorSurKon string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_kontrol"` + 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"` + StatusSurKon int `gorm:"column:Status_surat_kontrol" json:"Status_surat_kontrol"` + UserCreatedSurKon string `gorm:"column:User_created_surat_kontrol" json:"User_created_surat_kontrol"` + TipeSurKon string `gorm:"column:Tipe_surat_kontrol" json:"Tipe_surat_kontrol"` + UserUpdatedSurKon string `gorm:"column:User_updated_surat_kontrol" json:"User_updated_surat_kontrol"` +} + +type ResponseSuratKontrolBySEP struct { + NoSEP string `json:"noSep"` + TglSEP string `json:"tglSep"` + JenisPelayanan string `json:"jnsPelayanan"` + Poli string `json:"poli"` + Diagnosa string `json:"diagnosa"` + Peserta Peserta `json:"peserta"` + ProvUmum ProvUmum `json:"provUmum"` + ProvPerujuk ProvPerujuk `json:"provPerujuk"` +} + +type GetDataSuratKontrol struct { + IDDataSurKon string `gorm:"column:id" json:"id"` + IDXDaftar string `gorm:"column:IDXDAFTAR" json:"IDXDAFTAR"` + TglCetakSurKon string `gorm:"column:Tanggal_cetak_surat_kontrol" json:"Tanggal_cetak_surat_kontrol"` + TglRencanaKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"` + NomorSurKon string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_kontrol"` + PoliAsal string `gorm:"column:Poli_asal" json:"Poli_asal"` + PoliTujuan string `gorm:"column:Poli_tuju" json:"Poli_tuju"` + NomorSEP string `gorm:"column:Nomor_sep" json:"Nomor_sep"` + NamaPasien string `gorm:"column:Nama_lengkap" json:"Nama_lengkap"` + GelarDepan string `gorm:"column:gelardepan" json:"gelardepan"` + NamaLengkapDokter string `gorm:"column:Nama_lengkap_dokter" json:"Nama_lengkap_dokter"` + GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"` + Subspesialis string `gorm:"column:Subspesialis" json:"Subspesialis"` + KodePoli string `gorm:"column:Kode_poli" json:"Kode_poli"` + KodeDokter string `gorm:"column:Kode_dokter" json:"Kode_dokter"` + 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"` + 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"` + TipeSurKon string `gorm:"column:Tipe_SurKon" json:"Tipe_SurKon"` +} + +type ResponseGetDataSuratKontrol struct { + IDDataSurKon string `json:"id"` + IDXDaftar string `json:"Idx_daftar"` + TglCetakSurKon string `json:"Tanggal_cetak_surat_kontrol"` + TglRencanaKontrol string `json:"Tanggal_rencana_kontrol"` + NomorSurKon string `json:"Nomor_surat_kontrol"` + PoliAsal string `json:"Poli_asal"` + PoliTujuan string `json:"Poli_tuju"` + NomorSEP string `json:"Nomor_sep"` + NamaPasien string `json:"Nama_pasien"` + NamaDokter string `json:"NamaDokter"` + NomorKartu string `json:"Nomor_kartu"` + Subspesialis string `json:"Subspesialis"` + KodePoli string `json:"Kode_poli"` + KodeDokter string `json:"Kode_dokter"` + IDPoli string `json:"id_poli"` + IDDokter string `json:"id_dokter"` + NoRM string `json:"No_rm"` + KodeDiagnosa string `json:"Kode_diagnosa"` + NamaDiagnosa string `json:"Nama_diagnosa"` + TipeSurKon string `json:"Tipe_SurKon"` +} + +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"` + Offset string `json:"offset"` + Limit string `json:"limit"` +} \ No newline at end of file