diff --git a/database/satu_data/log_api/log_api.go b/database/satu_data/log_api/log_api.go index 455de60..47cc393 100644 --- a/database/satu_data/log_api/log_api.go +++ b/database/satu_data/log_api/log_api.go @@ -1,33 +1,34 @@ -package logapi - -import ( - "bridging-rssa/config" - logapi "bridging-rssa/models/log_api" - "log" -) - -func InsertLogAPI(reqInsert logapi.DataLogAPI) error { - query := `insert into "data_log_api" ( - "ID", "User_agent", "IP", "Parameter", "Header", "Method", "Url", "Request", "Respon", "Respon_code", "Respontime_start", "Respontime_end", "Comment" - ) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)` - err := config.SatuDataDB.Debug().Exec(query, - reqInsert.ID, - reqInsert.UserAgent, - reqInsert.IP, - reqInsert.Parameter, - reqInsert.Header, - reqInsert.Method, - reqInsert.Url, - reqInsert.Request, - reqInsert.Respon, - reqInsert.ResponCode, - reqInsert.ResponTimeStart, - reqInsert.ResponTimeEnd, - reqInsert.Comment, - ).Error - if err != nil { - log.Println(err) - return err - } - return nil -} +package logapi + +import ( + "bridging-rssa/config" + logapi "bridging-rssa/models/log_api" + "log" +) + +func InsertLogAPI(reqInsert *logapi.DataLogAPI) error { + query := `insert into "data_log_api" ( + "id", "date_created", "User_agent", "IP", "Parameter", "Header", "Method", "URL", "Request", "Respon", "Respon_code", "Respontime_start", "Respontime_end", "Comment" + ) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)` + err := config.SatuDataDB.Debug().Exec(query, + reqInsert.ID, + reqInsert.DateCreated, + reqInsert.UserAgent, + reqInsert.IP, + reqInsert.Parameter, + reqInsert.Header, + reqInsert.Method, + reqInsert.Url, + reqInsert.Request, + reqInsert.Respon, + reqInsert.ResponCode, + reqInsert.ResponTimeStart, + reqInsert.ResponTimeEnd, + reqInsert.Comment, + ).Error + if err != nil { + log.Println(err) + return err + } + return nil +} diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index 8ea8d29..ba7f50f 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -1,252 +1,249 @@ -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 +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("DPJP anda belum ada subspesialis") + log.Println(errMsg) + return nil, errMsg + } + } + 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("DPJP anda belum ada subspesialis") + log.Println(errMsg) + return nil, errMsg + } + } + 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 ?` + 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 + } + return dataSurKon, nil +} diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 87b2512..04ef68e 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -1,660 +1,901 @@ -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) -} +package suratkontrol + +import ( + cfg "bridging-rssa/config" + log_api "bridging-rssa/database/satu_data/log_api" + suratkontrol "bridging-rssa/database/satu_data/surat_kontrol" + "bridging-rssa/docs/utils" + sk "bridging-rssa/models/bpjs/surat_kontrol" + "bridging-rssa/models/config" + logapi "bridging-rssa/models/log_api" + "encoding/json" + "fmt" + "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, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + + 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: ", reqJson) + + 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) + + var headerStringBuilder strings.Builder + for key, value := range headers { + headerStringBuilder.WriteString(fmt.Sprintf("%s: %s; ", key, value)) + } + headerString := strings.TrimSuffix(headerStringBuilder.String(), "; ") + 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, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + 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, + }, + } + logTimeStart := time.Now().Format("2006-01-02 15:04:05") + res, err := PostData(url, header, headers, reqSuratKontrol) + if err != nil { + responJson, err := json.Marshal(res) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + logTimeEnd := time.Now().Format("2006-01-02 15:04:05") + reqInsertLog := &logapi.DataLogAPI{ + ID: uuid, + DateCreated: logTimeEnd, + UserAgent: req.User, + IP: c.ClientIP(), + Parameter: "", + Header: headerString, + Method: "POST", + Url: url, + Request: reqJson, + Respon: responJson, + ResponCode: res.MetaData.Code, + ResponTimeStart: logTimeStart, + ResponTimeEnd: logTimeEnd, + Comment: res.MetaData.Message, + } + + err = log_api.InsertLogAPI(reqInsertLog) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + log.Println(err) + c.JSON(http.StatusInternalServerError, res.MetaData) + return + } + + responJson, err := json.Marshal(res) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + logTimeEnd := time.Now().Format("2006-01-02 15:04:05") + 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, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + 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, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + + reqInsertLog := &logapi.DataLogAPI{ + ID: uuid, + DateCreated: logTimeEnd, + UserAgent: req.User, + IP: c.ClientIP(), + Parameter: "", + Header: headerString, + Method: "POST", + Url: url, + Request: reqJson, + Respon: responJson, + ResponCode: res.MetaData.Code, + ResponTimeStart: logTimeStart, + ResponTimeEnd: logTimeEnd, + Comment: res.MetaData.Message, + } + + err = log_api.InsertLogAPI(reqInsertLog) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + 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, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + 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, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + err = suratkontrol.InsertDataSuratKontrol(reqInsert) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + 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(), + }) + return + } + + log.Println("Request: ", reqJson) + + 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) + + var headerStringBuilder strings.Builder + for key, value := range headers { + headerStringBuilder.WriteString(fmt.Sprintf("%s: %s; ", key, value)) + } + headerString := strings.TrimSuffix(headerStringBuilder.String(), "; ") + + reqSuratKontrol := &sk.RequestHeaderRencanaKontrol{ + Request: &sk.ReqUpdateRencanaKontrol{ + NoSuratKontrol: req.NoSuratKontrol, + NoSEP: req.NoSEP, + KodeDokter: req.KodeHFIS, + PoliKontrol: req.KodePoli, + TglRencanaKontrol: req.TglRencanaKontrol, + User: req.User, + }, + } + + logTimeStart := time.Now().Format("2006-01-02 15:04:05") + res, err := ResponseUpdateSuratKontrol(url, header, headers, reqSuratKontrol) + if err != nil { + responJson, err := json.Marshal(res) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + logTimeEnd := time.Now().Format("2006-01-02 15:04:05") + if res.MetaData.Code == "504" { + log.Println(err) + c.JSON(http.StatusGatewayTimeout, res.MetaData) + return + } + reqInsertLog := &logapi.DataLogAPI{ + ID: uuid, + DateCreated: logTimeEnd, + UserAgent: req.User, + IP: c.ClientIP(), + Parameter: "", + Header: headerString, + Method: "PUT", + Url: url, + Request: reqJson, + Respon: responJson, + ResponCode: res.MetaData.Code, + ResponTimeStart: logTimeStart, + ResponTimeEnd: logTimeEnd, + Comment: res.MetaData.Message, + } + + err = log_api.InsertLogAPI(reqInsertLog) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + log.Println(err) + c.JSON(http.StatusInternalServerError, res.MetaData) + return + } + responJson, err := json.Marshal(res) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + logTimeEnd := time.Now().Format("2006-01-02 15:04:05") + + reqUpdate := &sk.DataSuratKontrol{ + DateUpdated: timeNow, + ID: req.IDSurKon, + StatusSurKon: 2, + } + + err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + 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, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + reqInsertLog := &logapi.DataLogAPI{ + ID: uuid, + DateCreated: logTimeEnd, + UserAgent: req.User, + IP: c.ClientIP(), + Parameter: "", + Header: headerString, + Method: "PUT", + Url: url, + Request: reqJson, + Respon: responJson, + ResponCode: res.MetaData.Code, + ResponTimeStart: logTimeStart, + ResponTimeEnd: logTimeEnd, + Comment: res.MetaData.Message, + } + + err = log_api.InsertLogAPI(reqInsertLog) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + 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, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + 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, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + 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, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + 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, &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, + 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, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + 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, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + 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, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + 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, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + 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, &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) +} diff --git a/models/log_api/log_api.go b/models/log_api/log_api.go index fb1087f..7383c2b 100644 --- a/models/log_api/log_api.go +++ b/models/log_api/log_api.go @@ -1,17 +1,20 @@ -package logapi - -type DataLogAPI struct { - ID string `gorm:"column:ID" json:"ID"` - UserAgent string `gorm:"column:User_agent" json:"User_agent"` - IP string `gorm:"column:IP" json:"IP"` - Parameter string `gorm:"column:Parameter" json:"Parameter"` - Header string `gorm:"column:Header" json:"Header"` - Method string `gorm:"column:Method" json:"Method"` - Url string `gorm:"column:Url" json:"Url"` - Request string `gorm:"column:Request" json:"Request"` - Respon string `gorm:"column:Respon" json:"Respon"` - ResponCode string `gorm:"column:Respon_code" json:"Respon_code"` - ResponTimeStart string `gorm:"column:Respontime_start" json:"Respontime_start"` - ResponTimeEnd string `gorm:"column:Respontime_end" json:"Respontime_end"` - Comment string `gorm:"column:Comment" json:"Comment"` -} +package logapi + +import "encoding/json" + +type DataLogAPI struct { + ID string `gorm:"column:id" json:"ID"` + DateCreated string `gorm:"column:date_created" json:"date_created"` + UserAgent string `gorm:"column:User_agent" json:"User_agent"` + IP string `gorm:"column:IP" json:"IP"` + Parameter string `gorm:"column:Parameter" json:"Parameter"` + Header string `gorm:"column:Header" json:"Header"` + Method string `gorm:"column:Method" json:"Method"` + Url string `gorm:"column:URL" json:"URL"` + Request json.RawMessage `gorm:"column:Request" json:"Request"` + Respon json.RawMessage `gorm:"column:Respon" json:"Respon"` + ResponCode string `gorm:"column:Respon_code" json:"Respon_code"` + ResponTimeStart string `gorm:"column:Respontime_start" json:"Respontime_start"` + ResponTimeEnd string `gorm:"column:Respontime_end" json:"Respontime_end"` + Comment string `gorm:"column:Comment" json:"Comment"` +}