diff --git a/.env b/.env index 51d6ac9..c42ec5f 100644 --- a/.env +++ b/.env @@ -4,10 +4,18 @@ SATUDATA_PASSWORD=stim*RS54 SATUDATA_NAME=satu_db SATUDATA_PORT=5000 +SIMRS_HOST=10.10.123.160 +SIMRS_USERNAME=simrs +SIMRS_PASSWORD=simrs.rssa +SIMRS_NAME=simrs +SIMRS_PORT=5000 + BASEURL_BPJS=https://apijkn.bpjs-kesehatan.go.id/ ANTREAN_RS=antreanrs +I_CARE_JKN=ihs CONS_ID=5257 USER_KEY=4cf1cbef8c008440bbe9ef9ba789e482 +USER_KEY_ICARE=1cd65acaa349684be6353bea5149e2e2 SECRET_KEY=1bV363512D CONS_ID_DEV=16041 @@ -16,8 +24,8 @@ 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 -I_CARE_JKN=ihs +VCLAIM_RS=vclaim-rest +I_CARE_JKN=wsihs I_CARE_JKN_DEV=ihs_dev INSERT_SURAT_KONTROL=/RencanaKontrol/insert @@ -27,8 +35,7 @@ GET_NOMOR_SURAT_KONTROL=/RencanaKontrol/noSuratKontrol/ GET_SURAT_KONTROL_SEP=/RencanaKontrol/nosep/ GET_NOMOR_RUJUKAN=/Rujukan/ GET_NOMOR_RUJUKAN_BATCH=/Rujukan/List/Peserta/ +GET_REFERENSI_DOKTER=/referensi/dokter/ GET_FKRTL=/api/rs/validate -GET_FKTP=/api/pcare/validate - - +GET_FKTP=/api/pcare/validate \ No newline at end of file diff --git a/config/config.go b/config/config.go index 21cb2a4..645b102 100644 --- a/config/config.go +++ b/config/config.go @@ -17,6 +17,7 @@ import ( var DB *gorm.DB var SatuDataDB *gorm.DB +var SimrsDB *gorm.DB var err error func ConnectDB() { @@ -34,22 +35,37 @@ func ConnectDB() { } else { log.Println("Successfully connected to the database") } + + hostSimrs := os.Getenv("SIMRS_HOST") + userNameSimrs := os.Getenv("SIMRS_USERNAME") + passwordSimrs := os.Getenv("SIMRS_PASSWORD") + dbNameSimrs := os.Getenv("SIMRS_NAME") + portSimrs := os.Getenv("SIMRS_PORT") + + simrs := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Jakarta", hostSimrs, userNameSimrs, passwordSimrs, dbNameSimrs, portSimrs) + + SimrsDB, err = gorm.Open(postgres.Open(simrs), &gorm.Config{}) + if err != nil { + log.Fatal("Failed to connect to Satu Data database: ", err) + } else { + log.Println("Successfully connected to the database") + } } -func SetHeader(cfg config.ConfigBpjs) *config.Header { +func SetHeader(isIcare bool, cfg config.ConfigBpjs) *config.Header { timenow := time.Now().UTC() time := time.Date(1970, 1, 1, 0, 0, 0, 0, time.UTC) tstamp := timenow.Unix() - time.Unix() - // cfg.Cons_id = os.Getenv("CONS_ID_DEV") - // cfg.User_key = os.Getenv("USER_KEY_DEV") - // cfg.Secret_key = os.Getenv("SECRET_KEY_DEV") - cfg.Cons_id = os.Getenv("CONS_ID") cfg.User_key = os.Getenv("USER_KEY") cfg.Secret_key = os.Getenv("SECRET_KEY") + if isIcare { + cfg.User_key = os.Getenv("USER_KEY_ICARE") + } + secret := []byte(cfg.Secret_key) message := []byte(cfg.Cons_id + "&" + fmt.Sprint(tstamp)) hash := hmac.New(sha256.New, secret) @@ -71,6 +87,35 @@ func SetHeader(cfg config.ConfigBpjs) *config.Header { } +func SetHeaderFKRTL(cfg config.ConfigBpjs) *config.Header { + + timestamp := time.Now().UTC().Unix() + + cfg.Cons_id = os.Getenv("CONS_ID") + cfg.User_key = os.Getenv("USER_KEY") + cfg.Secret_key = os.Getenv("SECRET_KEY") + + secret := []byte(cfg.Secret_key) + message := []byte(cfg.Cons_id + "&" + fmt.Sprint(timestamp)) + hash := hmac.New(sha256.New, secret) + hash.Write(message) + // to lowercase hexits + hex.EncodeToString(hash.Sum(nil)) + // to base64 + X_signature := base64.StdEncoding.EncodeToString(hash.Sum(nil)) + + header := &config.Header{ + ConsID: cfg.Cons_id, + SecretKey: cfg.Secret_key, + UserKey: cfg.User_key, + TimeStamp: fmt.Sprint(timestamp), + XSignature: X_signature, + } + + return header + +} + func SetHeaderDev(cfg config.ConfigBpjs) *config.Header { timenow := time.Now().UTC() diff --git a/database/satu_data/dokter/dokter.go b/database/satu_data/dokter/dokter.go index ea9a295..6d9c515 100644 --- a/database/satu_data/dokter/dokter.go +++ b/database/satu_data/dokter/dokter.go @@ -55,7 +55,8 @@ func GetNamaLengkapDokter(idDokter []string) ([]dokter.NamaLengkap, error) { 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, - dp."HFIS_code" + dp."HFIS_code", + dp."Code_dpjp" as "DPJP_code" from "data_pegawai" dp left join data_ktp dk on dp."KTP" = dk.id WHERE dp.id in ?`, idDokter).Find(&namaDokter) @@ -70,3 +71,19 @@ func GetNamaLengkapDokter(idDokter []string) ([]dokter.NamaLengkap, error) { return namaDokter, nil } + +func GetHFISCode(dpjp string) (*dokter.DaftarDokter, error) { + var dataDokter *dokter.DaftarDokter + err := config.SatuDataDB.Debug().Raw(`select dp."id", dp."HFIS_code" from data_pegawai dp where dp."Code_dpjp" = ?`, dpjp).First(&dataDokter).Error + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + errMsg := errors.New("Data tidak ditemukan") + log.Println("error :", errMsg) + return nil, errMsg + } + log.Println("error :", err) + return nil, err + } + log.Println("Daftar Dokter :", dataDokter) + return dataDokter, nil +} diff --git a/database/satu_data/dokter/jadwal_dokter.go b/database/satu_data/dokter/jadwal_dokter.go index 425cc26..bc72eb9 100644 --- a/database/satu_data/dokter/jadwal_dokter.go +++ b/database/satu_data/dokter/jadwal_dokter.go @@ -124,3 +124,33 @@ func InsertJadwalDokterTemp(reqInsert *jadwal_dokter.JadwalDokterSatuData) error log.Println("Success insert data") return nil } + +func GetAllJadwalDokter() ([]*jadwal_dokter.ListDaftarJadwalDokter, error) { + var listDokter []*jadwal_dokter.ListDaftarJadwalDokter + query := `select djd."Hari" as valuehari, djd."Nama_hari" as hari, djd."Waktu" as waktu, ds."Spesialis" as spesialis, dss."Subspesialis" as subspesialis, + 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, + dkt. "Nama_lengkap" as namalengkap, + 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 + from daftar_jadwal_dokter djd + join daftar_spesialis ds on ds.id = djd."Spesialis" + join daftar_subspesialis dss on dss.id = djd."Sub_spesialis" + join data_pegawai dp on dp.id = djd."Dokter" + join data_ktp dkt on dkt.id = dp."KTP" + order by djd."Hari" asc, ds."Spesialis" asc, dss."Subspesialis" asc, djd."Waktu" asc` + err := config.SatuDataDB.Debug().Raw(query).Scan(&listDokter).Error + if err != nil { + log.Printf("Failed Get data : %v", err) + return nil, err + } + return listDokter, nil +} diff --git a/database/satu_data/log_api/log_api.go b/database/satu_data/log_api/log_api.go index d9f4f51..2755d5a 100644 --- a/database/satu_data/log_api/log_api.go +++ b/database/satu_data/log_api/log_api.go @@ -31,4 +31,16 @@ func InsertLogAPI(reqInsert *logapi.DataLogAPI) error { return err } return nil -} \ No newline at end of file +} + +func GetLogAPI(req logapi.ReqGetDataLogAPI) ([]*logapi.DataLogAPI, error) { + var dataLog []*logapi.DataLogAPI + query := `select * from data_log_api dla where dla."Parameter" = 'BPJS-VClaim-RencanaKontrol' and dla."Request"->>'tipe_rawat' = ? and date(dla."date_created") between ? and ?` + err := config.SatuDataDB.Debug().Raw(query, req.TipeRawat, req.TanggalAwal, req.TanggalAkhir).Scan(&dataLog).Error + if err != nil { + log.Println(err) + return nil, err + } + log.Println("Berhasil Get Data") + return dataLog, nil +} diff --git a/database/satu_data/log_api/log_icare.go b/database/satu_data/log_api/log_icare.go new file mode 100644 index 0000000..94cbdf9 --- /dev/null +++ b/database/satu_data/log_api/log_icare.go @@ -0,0 +1,24 @@ +package logapi + +import ( + "bridging-rssa/config" + logapi "bridging-rssa/models/log_api" + "log" +) + +func InsertLogICare(reqInsert *logapi.InsertLogICare) error { + query := `insert into "data_log_icare_bpjs" ("id", "date_created", "Ruangan", "Dokter", "Kunjungan_pasien", "Waktu_transaksi") + values (?, ?, ?, ?, ?, ?)` + errInsert := config.SatuDataDB.Debug().Exec(query, + reqInsert.ID, + reqInsert.DateCreated, + reqInsert.Ruangan, + reqInsert.Dokter, + reqInsert.Kunjungan_pasien, + reqInsert.WaktuTransaksi).Error + if errInsert != nil { + log.Println(errInsert) + return errInsert + } + return nil +} diff --git a/database/satu_data/lokasi_ruang/daftar_lokasi_ruang.go b/database/satu_data/lokasi_ruang/daftar_lokasi_ruang.go new file mode 100644 index 0000000..02682fb --- /dev/null +++ b/database/satu_data/lokasi_ruang/daftar_lokasi_ruang.go @@ -0,0 +1,24 @@ +package lokasiruang + +import ( + "bridging-rssa/config" + "errors" + "log" + + "gorm.io/gorm" +) + +func GetDaftarLokasiRuang(idSimgos string) (int, error) { + var idRuangan int + query := `select dlr."id" from "daftar_lokasi_ruang" dlr where dlr."Id_location_simgos" = ?` + err := config.SatuDataDB.Debug().Raw(query, idSimgos).First(&idRuangan).Error + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + log.Println(err) + return 128, nil + } + log.Println(err) + return 0, err + } + return idRuangan, nil +} diff --git a/database/satu_data/pasien/kunjungan_pasien.go b/database/satu_data/pasien/kunjungan_pasien.go new file mode 100644 index 0000000..d1c6c5c --- /dev/null +++ b/database/satu_data/pasien/kunjungan_pasien.go @@ -0,0 +1,61 @@ +package pasien + +import ( + "bridging-rssa/config" + "bridging-rssa/models/pasien" + "errors" + "log" + + "gorm.io/gorm" +) + +func GetDataKunjunganPasien(idxdaftar string) (*pasien.KunjunganPasien, error) { + var kunjunganPasien *pasien.KunjunganPasien + query := `select dks."id", dks."Ruangan" from "data_kunjungan_pasien" dks where dks."IDXDAFTAR" = ?` + err := config.SatuDataDB.Debug().Raw(query, 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 GetListKunjunganPasien(req *pasien.RequestListKunjunganPasien) ([]*pasien.ListKunjunganPasien, error) { + var dataKunjunganPasien []*pasien.ListKunjunganPasien + query := `select + dkp. "NOMR" as nomr, dkp. "Nama_lengkap" as namalengkap, dkp. "Tanggal_lahir" as tanggallahir, + dkp. "Jenis_kelamin" as jeniskelamin, dkp. "Tanggal_masuk" as tanggalmasukkunjungan, + dkp."Jam_masuk" as jammasukkunjungan, dkp. "Diagnosis_awal_masuk" as dxawalmasuk, + dkp. "Display_diagnosis_awal_masuk" as displaydxawalmasuk, dlr. "Nama" as namaruang, + 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, + dkt. "Nama_lengkap" as namalengkapdokter, + 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 + from data_kunjungan_pasien dkp + join daftar_lokasi_ruang dlr on dlr.id = dkp. "Ruangan" + join data_pegawai dp on dp.id = dkp. "DPJP" + join data_ktp dkt on dkt.id = dp. "KTP" + where dkp."Tanggal_masuk" between ? and ? + order by dkp. "Tanggal_masuk" desc, dkp. "Jam_masuk" desc` + q := config.SatuDataDB.Debug().Raw(query, req.TanggalAwal, req.TanggalAkhir).Scan(&dataKunjunganPasien) + if q.Error != nil { + log.Println(q.Error) + return nil, q.Error + } + return dataKunjunganPasien, nil +} diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index ec5abe1..b7e1f9d 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -79,7 +79,7 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.DataSuratKontrol) error { return nil } -func GetDataSuratKontrol(offset, limit string) ([]*suratkontrol.GetDataSuratKontrol, error) { +func GetDataSuratKontrol() ([]*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", @@ -115,7 +115,7 @@ func GetDataSuratKontrol(offset, limit string) ([]*suratkontrol.GetDataSuratKont 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 + where dsk."Status_surat_kontrol" = '1'`).Scan(&dataSurKon).Error if err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { errMsg := errors.New("DPJP anda belum ada subspesialis") @@ -155,7 +155,8 @@ func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontro 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" + dsk."Tipe_surat_kontrol" as "Tipe_SurKon", + dsk."User_created_surat_kontrol" as "User" 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" @@ -207,7 +208,62 @@ func GetAllDataSuratKontrol(idSurKon string) (*suratkontrol.DataSuratKontrol, er func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []interface{}) ([]*suratkontrol.GetDataSuratKontrol, error) { var dataSurKon []*suratkontrol.GetDataSuratKontrol - query += ` and date(dsk."Tanggal_rencana_kontrol") between ? and ? offset ? limit ?` + queryDate := ` and date(dsk."Tanggal_rencana_kontrol") between ? and ? offset ? limit ?` + if req.IsTanggalEntri { + queryDate = ` and date(dsk."Tanggal_cetak_surat_kontrol") between ? and ? offset ? limit ?` + } + query += queryDate + 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", + dp."Code_dpjp" as "Kode_dpjp", + dkp2."NOMR" as "No_rm", + dkp2."Diagnosis_primer_utama" as "Kode_diagnosa", + dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa", + 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 dsk."Tipe_surat_kontrol" = ? ` + querySelect += query + err := config.SatuDataDB.Debug().Raw(querySelect, args...).Find(&dataSurKon).Error + if err != nil { + log.Println(err) + return nil, err + } + return dataSurKon, nil +} + +func SearchDataSurKonNew(req suratkontrol.RequestCariPasien, query string, args []interface{}) ([]*suratkontrol.GetDataSuratKontrol, error) { + var dataSurKon []*suratkontrol.GetDataSuratKontrol + queryDate := ` and date(dsk."Tanggal_rencana_kontrol") between ? and ?` + if req.IsTanggalEntri { + queryDate = ` and date(dsk."Tanggal_cetak_surat_kontrol") between ? and ?` + } + query += queryDate querySelect := `select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol", dsk."Nomor_surat_kontrol", (select dlr."Nama" @@ -254,7 +310,11 @@ func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []i func CountDataSurKon(req suratkontrol.RequestCariPasien, query string, args []interface{}) (int, error) { var jumlahData int - query += ` and date(dsk."Tanggal_rencana_kontrol") between ? and ?` + queryDate := ` and date(dsk."Tanggal_rencana_kontrol") between ? and ?` + if req.IsTanggalEntri { + queryDate = ` and date(dsk."Tanggal_cetak_surat_kontrol") between ? and ?` + } + query += queryDate querySelect := `select count(dsk.*) from data_surat_kontrol dsk left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien" diff --git a/database/simrs/mikrobiologi/mikrobiologi.go b/database/simrs/mikrobiologi/mikrobiologi.go new file mode 100644 index 0000000..f0af917 --- /dev/null +++ b/database/simrs/mikrobiologi/mikrobiologi.go @@ -0,0 +1,43 @@ +package mikrobiologi + +import ( + "bridging-rssa/config" + "bridging-rssa/models/simrs/mikrobiologi" + "errors" + "log" + + "gorm.io/gorm" +) + +func GetDataMikroBiologi(req *mikrobiologi.RequestPasienMikrobiologi) ([]*mikrobiologi.DataPasienMikrobiologi, error) { + var dataPasien []*mikrobiologi.DataPasienMikrobiologi + query := `select tom."nomr" as nomr, tomm."nonota" as nonota, tom."idxdaftar" as idxdaftar, tom."tglorder" as tglorder, tom."nolab" as nolab, tom."rajal" as statusrajal, tom."aps" as statusaps, + mp."nama" as nama, mp."noktp" as noktp, mp."noktp_baru" as noktpbaru, mp."tempat" as tmptlahir, mp."tgllahir" as tgllahir, mp."jeniskelamin" as jeniskelamin, mp."alamat" as alamat, + mpa."nama" as namaaps, mpa."noktp" as noktpaps, mpa."tempat" as tmptlahiraps, mpa."tgllahir" as tgllahiraps, mpa."jeniskelamin" as jeniskelaminaps, mpa."alamat" as alamataps, + mr."nama" as namaruang, mr."kelas" as kelasruang, + trj."kodetarif" as kodetarifrajal, + trp."kodetarif" as kodetarifranap + from t_orderlabmikro tom + left join m_pasien mp on mp."nomr" = tom."nomr" + left join m_pasien_aps mpa on mpa."nomr" = tom."nomr" + left join m_ruang mr on mr."no" = tom."kdpoli" + left join t_orderlabmikro_main tomm on tomm."nolab" = tom."nolab" + left join t_billrajal trj on trj."nonota" = CAST(tomm."nonota" AS int8) + left join t_billranap trp on trp."nonota" = CAST(tomm."nonota" AS int8) + where tom."nomr" = ? + and tom."idxdaftar" = ? + group by (tom."nomr",tomm."nonota",tom."idxdaftar",tom."tglorder",tom."nolab",tom."rajal",tom."aps",mp."nama",mp."noktp",mp."noktp_baru",mp."tempat",mp."tgllahir",mp."jeniskelamin",mp."alamat",mpa."nama",mpa."noktp", + mpa."tempat",mpa."tgllahir",mpa."jeniskelamin",mpa."alamat",mr."nama",mr."kelas",trj."kodetarif",trp."kodetarif") + ` + errQuery := config.SimrsDB.Debug().Raw(query, req.NOMR, req.IDXDaftar).Scan(&dataPasien).Error + if errQuery != nil { + if errors.Is(errQuery, gorm.ErrRecordNotFound) { + errMsg := errors.New("Data Tidak Ditemukan") + log.Println(errMsg) + return nil, errMsg + } + log.Println(errQuery) + return nil, errQuery + } + return dataPasien, nil +} diff --git a/handlers/bpjs/i_care/i_care.go b/handlers/bpjs/i_care/i_care.go index 3b020b7..bec6339 100644 --- a/handlers/bpjs/i_care/i_care.go +++ b/handlers/bpjs/i_care/i_care.go @@ -1,25 +1,35 @@ package icare import ( + "bridging-rssa/database/satu_data/dokter" + log_api "bridging-rssa/database/satu_data/log_api" + "bridging-rssa/database/satu_data/pasien" "bridging-rssa/models/config" + logapi "bridging-rssa/models/log_api" + "encoding/json" + "fmt" "log" "net/http" "os" + "strconv" + "strings" + "time" cfg "bridging-rssa/config" ic "bridging-rssa/models/bpjs/i_care" "github.com/gin-gonic/gin" + "github.com/google/uuid" ) func GetFKRTL(c *gin.Context) { - baseUrl := os.Getenv("BASEURL_BPJS_DEV") - endpoint := os.Getenv("I_CARE_JKN_DEV") + baseUrl := os.Getenv("BASEURL_BPJS") + endpoint := os.Getenv("I_CARE_JKN") param := os.Getenv("GET_FKRTL") url := baseUrl + endpoint + param log.Println("URL :", url) - var req *ic.RequestICare + var req *ic.ReqICare err := c.Bind(&req) if err != nil { @@ -31,11 +41,26 @@ func GetFKRTL(c *gin.Context) { return } - log.Println("REQUEST: ", req) + reqICare := &ic.RequestICare{ + Param: req.Param, + KodeDokter: req.KodeDokter, + } + + reqJson, errMarshal := json.Marshal(reqICare) + if errMarshal != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &ic.Metadata{ + Code: 0, + Message: errMarshal.Error(), + }) + return + } + + log.Println("REQUEST: ", string(reqJson)) conf := config.ConfigBpjs{} - header := cfg.SetHeaderDev(conf) + header := cfg.SetHeader(true, conf) headers := map[string]string{ "X-cons-id": header.ConsID, @@ -46,7 +71,15 @@ func GetFKRTL(c *gin.Context) { } log.Println("Headers : ", headers) - res, err := ResponseGetFKRTL(url, header, headers, req) + var headerStringBuilder strings.Builder + for key, value := range headers { + headerStringBuilder.WriteString(fmt.Sprintf("%s: %s; ", key, value)) + } + headerString := strings.TrimSuffix(headerStringBuilder.String(), "; ") + + dpjp := strconv.Itoa(req.KodeDokter) + + dataDokter, err := dokter.GetHFISCode(dpjp) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, &ic.Metadata{ @@ -56,6 +89,129 @@ func GetFKRTL(c *gin.Context) { return } + reqICare.KodeDokter, err = strconv.Atoi(dataDokter.HfisCode) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &ic.Metadata{ + Code: 0, + Message: err.Error(), + }) + return + } + + kunjunganPasien, err := pasien.GetDataKunjunganPasien(req.IDXDaftar) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &ic.Metadata{ + Code: 0, + Message: err.Error(), + }) + return + } + + uuid := uuid.New().String() + logTimeStart := time.Now().Format("2006-01-02 15:04:05") + res, err := ResponseGetFKRTL(url, header, headers, reqICare) + if err != nil { + responJson, errMarshal2 := json.Marshal(res) + if errMarshal2 != nil { + log.Println(errMarshal2) + c.JSON(http.StatusInternalServerError, &ic.Metadata{ + Code: 0, + Message: errMarshal2.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: "BPJS-ICare-FKRTL", + Header: headerString, + Method: "POST", + Url: url, + Request: reqJson, + Respon: responJson, + ResponCode: strconv.Itoa(res.MetaData.Code), + ResponTimeStart: logTimeStart, + ResponTimeEnd: logTimeEnd, + Comment: res.MetaData.Message, + } + + errInsert := log_api.InsertLogAPI(reqInsertLog) + if errInsert != nil { + log.Println(errInsert) + c.JSON(http.StatusInternalServerError, &ic.Metadata{ + Code: 0, + Message: errInsert.Error(), + }) + return + } + log.Println(err) + c.JSON(http.StatusInternalServerError, &ic.Metadata{ + Code: 0, + Message: err.Error(), + }) + return + } + responJson, err := json.Marshal(res) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &ic.Metadata{ + Code: 0, + 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: "BPJS-ICare-FKRTL", + Header: headerString, + Method: "POST", + Url: url, + Request: reqJson, + Respon: responJson, + ResponCode: strconv.Itoa(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, &ic.Metadata{ + Code: 0, + Message: err.Error(), + }) + return + } + + reqInsert := &logapi.InsertLogICare{ + ID: uuid, + DateCreated: logTimeEnd, + Ruangan: kunjunganPasien.Ruangan, + Dokter: dataDokter.ID, + Kunjungan_pasien: kunjunganPasien.ID, + WaktuTransaksi: logTimeEnd, + } + + errInsert := log_api.InsertLogICare(reqInsert) + if errInsert != nil { + log.Println(errInsert) + c.JSON(http.StatusInternalServerError, &ic.Metadata{ + Code: 0, + Message: errInsert.Error(), + }) + return + } + c.JSON(http.StatusOK, res) } diff --git a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go index c455c14..c292021 100644 --- a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go @@ -25,7 +25,7 @@ func GetJadwalDokter(c *gin.Context) { conf := config.ConfigBpjs{} - header := cfg.SetHeader(conf) + header := cfg.SetHeader(false, conf) headers := map[string]string{ "X-cons-id": header.ConsID, @@ -328,8 +328,35 @@ func GetDokterBySubspesialis(c *gin.Context) { Subspesialis: idSubspesialis, HFISCode: v.HFISCode, KodePoli: listSubspesialis.Kode, + DPJPCode: v.DPJPCode, }) } log.Println("Response :", resDokter) c.JSON(http.StatusOK, resDokter) } + +func GetDetailJadwalDokter(c *gin.Context) { + dataDokter, err := dokter.GetAllJadwalDokter() + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, gin.H{"error": err}) + return + } + var res []*jadwal_dokter.ResponseDetailJadwalDokter + for _, v := range dataDokter { + gelarDepan := utils.ReplaceGelar(v.GelarDepan) + gelarBelakang := utils.ReplaceGelar(v.GelarBelakang) + namaLengkap := gelarDepan + " " + v.NamaLengkap + " " + gelarBelakang + namaLengkap = strings.TrimPrefix(namaLengkap, " ") + namaLengkap = strings.TrimSuffix(namaLengkap, " ") + res = append(res, &jadwal_dokter.ResponseDetailJadwalDokter{ + ValueHari: v.ValueHari, + NamaHari: v.NamaHari, + Waktu: v.Waktu, + Spesialis: v.Spesialis, + Subspesialis: v.Subspesialis, + NamaLengkap: namaLengkap, + }) + } + c.JSON(http.StatusOK, res) +} diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 3c796ca..127823f 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -3,6 +3,7 @@ package suratkontrol import ( cfg "bridging-rssa/config" log_api "bridging-rssa/database/satu_data/log_api" + lokasiruang "bridging-rssa/database/satu_data/lokasi_ruang" suratkontrol "bridging-rssa/database/satu_data/surat_kontrol" "bridging-rssa/docs/utils" sk "bridging-rssa/models/bpjs/surat_kontrol" @@ -33,9 +34,11 @@ func InsertSuratKontrol(c *gin.Context) { err := c.Bind(&req) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", - Message: err.Error(), + c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{ + MetaData: sk.MetadataString{ + Code: "203", + Message: err.Error(), + }, }) return } @@ -43,9 +46,11 @@ func InsertSuratKontrol(c *gin.Context) { reqJson, err := json.Marshal(req) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", - Message: err.Error(), + c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{ + MetaData: sk.MetadataString{ + Code: "203", + Message: err.Error(), + }, }) return } @@ -54,7 +59,7 @@ func InsertSuratKontrol(c *gin.Context) { conf := config.ConfigBpjs{} - header := cfg.SetHeader(conf) + header := cfg.SetHeader(false, conf) headers := map[string]string{ "X-cons-id": header.ConsID, @@ -74,21 +79,42 @@ func InsertSuratKontrol(c *gin.Context) { kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", - Message: err.Error(), + c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{ + MetaData: sk.MetadataString{ + Code: "203", + Message: err.Error(), + }, }) return } + var idRuangan int + if kunjunganPasien.Ruangan != 0 { + idRuangan = kunjunganPasien.Ruangan + } else { + idRuangan, err = lokasiruang.GetDaftarLokasiRuang(req.Ruangan) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.ResponseInsertSuratKontrol{ + MetaData: sk.MetadataString{ + Code: "203", + Message: err.Error(), + }, + }) + return + } + } + uuid := uuid.New().String() if req.TipeSurKon != "1" { dataSurkon, err := suratkontrol.GetNomorSurKon(kunjunganPasien.ID) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", - Message: err.Error(), + c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{ + MetaData: sk.MetadataString{ + Code: "203", + Message: err.Error(), + }, }) return } @@ -98,9 +124,11 @@ func InsertSuratKontrol(c *gin.Context) { noUrut, err = utils.GetNoUrut(dataSurkon) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", - Message: err.Error(), + c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{ + MetaData: sk.MetadataString{ + Code: "203", + Message: err.Error(), + }, }) return } @@ -114,7 +142,7 @@ func InsertSuratKontrol(c *gin.Context) { TglRencanaKontrol: req.TglRencanaKontrol, NomorSurKon: noSurKon, KunjunganPasien: kunjunganPasien.ID, - RuanganSurKon: kunjunganPasien.Ruangan, + RuanganSurKon: idRuangan, DPJPSurKon: req.IDDokter, StatusSurKon: 1, // First Insert status always set to 1 UserCreatedSurKon: req.User, @@ -123,9 +151,11 @@ func InsertSuratKontrol(c *gin.Context) { err = suratkontrol.InsertDataSuratKontrol(reqInsert) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", - Message: err.Error(), + c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{ + MetaData: sk.MetadataString{ + Code: "203", + Message: err.Error(), + }, }) return } @@ -133,15 +163,19 @@ func InsertSuratKontrol(c *gin.Context) { err = suratkontrol.UpdateKunjunganPasien(req) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", - Message: err.Error(), + c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{ + MetaData: sk.MetadataString{ + Code: "203", + Message: err.Error(), + }, }) return } - c.JSON(http.StatusOK, &sk.MetadataString{ - Code: "200", - Message: "Berhasil Insert Surat Kontrol", + c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{ + MetaData: sk.MetadataString{ + Code: "200", + Message: "Berhasil Insert Surat Kontrol", + }, }) return } @@ -161,9 +195,11 @@ func InsertSuratKontrol(c *gin.Context) { responJson, err := json.Marshal(res) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", - Message: err.Error(), + c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{ + MetaData: sk.MetadataString{ + Code: "203", + Message: err.Error(), + }, }) return } @@ -173,7 +209,7 @@ func InsertSuratKontrol(c *gin.Context) { DateCreated: logTimeEnd, UserAgent: req.User, IP: c.ClientIP(), - Parameter: "", + Parameter: "BPJS-VClaim-RencanaKontrol", Header: headerString, Method: "POST", Url: url, @@ -188,23 +224,29 @@ func InsertSuratKontrol(c *gin.Context) { err = log_api.InsertLogAPI(reqInsertLog) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", - Message: err.Error(), + c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{ + MetaData: sk.MetadataString{ + Code: "203", + Message: err.Error(), + }, }) return } log.Println(err) - c.JSON(http.StatusInternalServerError, res.MetaData) + c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{ + MetaData: res.MetaData, + }) return } responJson, err := json.Marshal(res) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", - Message: err.Error(), + c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{ + MetaData: sk.MetadataString{ + Code: "203", + Message: err.Error(), + }, }) return } @@ -216,7 +258,7 @@ func InsertSuratKontrol(c *gin.Context) { TglRencanaKontrol: res.Response.TglRencanaKontrol, NomorSurKon: res.Response.NoSuratKontrol, KunjunganPasien: kunjunganPasien.ID, - RuanganSurKon: kunjunganPasien.Ruangan, + RuanganSurKon: idRuangan, DPJPSurKon: req.IDDokter, StatusSurKon: 1, // First Insert status always set to 1 UserCreatedSurKon: req.User, @@ -226,9 +268,11 @@ func InsertSuratKontrol(c *gin.Context) { err = suratkontrol.InsertDataSuratKontrol(reqInsert) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", - Message: err.Error(), + c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{ + MetaData: sk.MetadataString{ + Code: "203", + Message: err.Error(), + }, }) return } @@ -242,9 +286,11 @@ func InsertSuratKontrol(c *gin.Context) { err = suratkontrol.UpdateKunjunganPasien(req) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", - Message: err.Error(), + c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{ + MetaData: sk.MetadataString{ + Code: "203", + Message: err.Error(), + }, }) return } @@ -254,7 +300,7 @@ func InsertSuratKontrol(c *gin.Context) { DateCreated: logTimeEnd, UserAgent: req.User, IP: c.ClientIP(), - Parameter: "", + Parameter: "BPJS-VClaim-RencanaKontrol", Header: headerString, Method: "POST", Url: url, @@ -269,9 +315,11 @@ func InsertSuratKontrol(c *gin.Context) { err = log_api.InsertLogAPI(reqInsertLog) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", - Message: err.Error(), + c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{ + MetaData: sk.MetadataString{ + Code: "203", + Message: err.Error(), + }, }) return } @@ -292,13 +340,12 @@ func InsertSuratKontrol(c *gin.Context) { } log.Println("Response: ", response) - c.JSON(http.StatusOK, response) } func UpdateSuratKontrol(c *gin.Context) { baseUrl := os.Getenv("BASEURL_BPJS") - endpoint := os.Getenv("SURAT_KONTROL_RS") + endpoint := os.Getenv("VCLAIM_RS") param := os.Getenv("UPDATE_SURAT_KONTROL") url := baseUrl + endpoint + param @@ -307,8 +354,8 @@ func UpdateSuratKontrol(c *gin.Context) { err := c.Bind(&req) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return @@ -317,8 +364,8 @@ func UpdateSuratKontrol(c *gin.Context) { reqJson, err := json.Marshal(req) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return @@ -331,8 +378,8 @@ func UpdateSuratKontrol(c *gin.Context) { kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return @@ -343,8 +390,8 @@ func UpdateSuratKontrol(c *gin.Context) { dataSurkon, err := suratkontrol.GetNomorSurKon(kunjunganPasien.ID) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return @@ -355,8 +402,8 @@ func UpdateSuratKontrol(c *gin.Context) { noUrut, err = utils.GetNoUrut(dataSurkon) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return @@ -385,8 +432,8 @@ func UpdateSuratKontrol(c *gin.Context) { err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return @@ -394,8 +441,8 @@ func UpdateSuratKontrol(c *gin.Context) { err = suratkontrol.InsertDataSuratKontrol(reqInsert) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return @@ -411,7 +458,7 @@ func UpdateSuratKontrol(c *gin.Context) { conf := config.ConfigBpjs{} - header := cfg.SetHeader(conf) + header := cfg.SetHeader(false, conf) headers := map[string]string{ "X-cons-id": header.ConsID, @@ -445,8 +492,8 @@ func UpdateSuratKontrol(c *gin.Context) { responJson, err := json.Marshal(res) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return @@ -477,21 +524,21 @@ func UpdateSuratKontrol(c *gin.Context) { err = log_api.InsertLogAPI(reqInsertLog) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return } log.Println(err) - c.JSON(http.StatusInternalServerError, res.MetaData) + c.JSON(http.StatusOK, res.MetaData) return } responJson, err := json.Marshal(res) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return @@ -499,16 +546,17 @@ func UpdateSuratKontrol(c *gin.Context) { logTimeEnd := time.Now().Format("2006-01-02 15:04:05") reqUpdate := &sk.DataSuratKontrol{ - DateUpdated: timeNow, - ID: req.IDSurKon, - StatusSurKon: 2, + DateUpdated: timeNow, + ID: req.IDSurKon, + StatusSurKon: 2, + UserUpdatedSurKon: req.User, } err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return @@ -535,12 +583,13 @@ func UpdateSuratKontrol(c *gin.Context) { err = suratkontrol.InsertDataSuratKontrol(reqInsert) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return } + reqInsertLog := &logapi.DataLogAPI{ ID: uuid, DateCreated: logTimeEnd, @@ -561,8 +610,8 @@ func UpdateSuratKontrol(c *gin.Context) { err = log_api.InsertLogAPI(reqInsertLog) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return @@ -573,7 +622,7 @@ func UpdateSuratKontrol(c *gin.Context) { func DeleteSuratKontrol(c *gin.Context) { baseUrl := os.Getenv("BASEURL_BPJS") - endpoint := os.Getenv("SURAT_KONTROL_RS") + endpoint := os.Getenv("VCLAIM_RS") param := os.Getenv("DELETE_SURAT_KONTROL") url := baseUrl + endpoint + param @@ -582,8 +631,8 @@ func DeleteSuratKontrol(c *gin.Context) { err := c.Bind(&req) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return @@ -604,8 +653,8 @@ func DeleteSuratKontrol(c *gin.Context) { err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return @@ -620,7 +669,7 @@ func DeleteSuratKontrol(c *gin.Context) { conf := config.ConfigBpjs{} - header := cfg.SetHeader(conf) + header := cfg.SetHeader(false, conf) headers := map[string]string{ "X-cons-id": header.ConsID, @@ -643,7 +692,7 @@ func DeleteSuratKontrol(c *gin.Context) { res, err := ResponseDeleteSuratKontrol(url, header, headers, request) if err != nil { log.Printf("Error making external API request: %v", err) - c.JSON(http.StatusInternalServerError, err) + c.JSON(http.StatusOK, err) return } @@ -657,8 +706,8 @@ func DeleteSuratKontrol(c *gin.Context) { err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return @@ -668,14 +717,14 @@ func DeleteSuratKontrol(c *gin.Context) { func GetNomorSuratKontrol(c *gin.Context) { baseUrl := os.Getenv("BASEURL_BPJS") - endpoint := os.Getenv("SURAT_KONTROL_RS") + endpoint := os.Getenv("VCLAIM_RS") param := os.Getenv("GET_NOMOR_SURAT_KONTROL") noSurat := c.Param("noSuratKontrol") url := baseUrl + endpoint + param + noSurat conf := config.ConfigBpjs{} - header := cfg.SetHeader(conf) + header := cfg.SetHeader(false, conf) headers := map[string]string{ "X-cons-id": header.ConsID, @@ -689,7 +738,7 @@ func GetNomorSuratKontrol(c *gin.Context) { 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()}) + c.JSON(http.StatusOK, gin.H{"error": err.Error()}) return } @@ -698,14 +747,14 @@ func GetNomorSuratKontrol(c *gin.Context) { func GetSuratKontrolBySEP(c *gin.Context) { baseUrl := os.Getenv("BASEURL_BPJS") - endpoint := os.Getenv("SURAT_KONTROL_RS") + endpoint := os.Getenv("VCLAIM_RS") param := os.Getenv("GET_SURAT_KONTROL_SEP") noSEP := c.Param("noSEP") url := baseUrl + endpoint + param + noSEP conf := config.ConfigBpjs{} - header := cfg.SetHeader(conf) + header := cfg.SetHeader(false, conf) headers := map[string]string{ "X-cons-id": header.ConsID, @@ -719,7 +768,7 @@ func GetSuratKontrolBySEP(c *gin.Context) { res, err := ResponseGetSuratKontrolBySEP(url, header, headers) if err != nil { log.Printf("Error making external API request: %v", err) - c.JSON(http.StatusInternalServerError, err) + c.JSON(http.StatusOK, err) return } @@ -727,13 +776,11 @@ func GetSuratKontrolBySEP(c *gin.Context) { } func GetDataSurKon(c *gin.Context) { - offset := c.Param("offset") - limit := c.Param("limit") - data, err := suratkontrol.GetDataSuratKontrol(offset, limit) + data, err := suratkontrol.GetDataSuratKontrol() if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return @@ -780,8 +827,8 @@ func GetDataSurKonByID(c *gin.Context) { data, err := suratkontrol.GetDataSuratKontrolByID(id) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return @@ -818,6 +865,7 @@ func GetDataSurKonByID(c *gin.Context) { KodeDiagnosa: data.KodeDiagnosa, NamaDiagnosa: data.NamaDiagnosa, TipeSurKon: data.TipeSurKon, + User: data.User, } c.JSON(http.StatusOK, resSurKon) } @@ -827,8 +875,8 @@ func PrintSurKon(c *gin.Context) { data, err := suratkontrol.GetDataSuratKontrolByID(id) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return @@ -867,8 +915,8 @@ func CariPasienTPP(c *gin.Context) { err := c.ShouldBindJSON(&req) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return @@ -883,66 +931,66 @@ func CariPasienTPP(c *gin.Context) { var count int if req.NoRM != "" { query += `and dkp2."NOMR" = ?` - argsCount = append(argsCount, req.NoRM, req.TipeSurKon, req.TanggalAwal, req.TanggalAkhir) + argsCount = append(argsCount, req.TipeSurKon, req.NoRM, req.TanggalAwal, req.TanggalAkhir) count, err = suratkontrol.CountDataSurKon(req, query, argsCount) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return } - args = append(args, req.NoRM, req.TipeSurKon, req.TanggalAwal, req.TanggalAkhir, req.Offset, req.Limit) + args = append(args, req.TipeSurKon, req.NoRM, req.TanggalAwal, req.TanggalAkhir, req.Offset, req.Limit) data, err = suratkontrol.SearchDataSurKon(req, query, args) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return } } else if req.NoSEP != "" { query += `and dkp2."Nomor_sep" = ?` - argsCount = append(argsCount, req.NoSEP, req.TipeSurKon, req.TanggalAwal, req.TanggalAkhir) + argsCount = append(argsCount, req.TipeSurKon, req.NoSEP, req.TanggalAwal, req.TanggalAkhir) count, err = suratkontrol.CountDataSurKon(req, query, argsCount) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return } - args = append(args, req.NoSEP, req.TipeSurKon, req.TanggalAwal, req.TanggalAkhir, req.Offset, req.Limit) + args = append(args, req.TipeSurKon, req.NoSEP, req.TanggalAwal, req.TanggalAkhir, req.Offset, req.Limit) data, err = suratkontrol.SearchDataSurKon(req, query, args) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return } } else if req.PoliKlinik != "" { query += `and ds."id" = ?` - argsCount = append(argsCount, req.PoliKlinik, req.TipeSurKon, req.TanggalAwal, req.TanggalAkhir) + argsCount = append(argsCount, req.TipeSurKon, req.PoliKlinik, req.TanggalAwal, req.TanggalAkhir) count, err = suratkontrol.CountDataSurKon(req, query, argsCount) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return } - args = append(args, req.PoliKlinik, req.TipeSurKon, req.TanggalAwal, req.TanggalAkhir, req.Offset, req.Limit) + args = append(args, req.TipeSurKon, req.PoliKlinik, req.TanggalAwal, req.TanggalAkhir, req.Offset, req.Limit) data, err = suratkontrol.SearchDataSurKon(req, query, args) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return @@ -952,8 +1000,8 @@ func CariPasienTPP(c *gin.Context) { count, err = suratkontrol.CountDataSurKon(req, query, argsCount) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return @@ -962,8 +1010,8 @@ func CariPasienTPP(c *gin.Context) { data, err = suratkontrol.SearchDataSurKon(req, query, args) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, &sk.MetadataString{ - Code: "", + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", Message: err.Error(), }) return @@ -1009,4 +1057,211 @@ func CariPasienTPP(c *gin.Context) { ListDataSuratKontrol: listData, } c.JSON(http.StatusOK, resSurKon) -} \ No newline at end of file +} + +func CariPasienTPPNew(c *gin.Context) { + var req sk.RequestCariPasien + + err := c.ShouldBindJSON(&req) + if err != nil { + log.Println(err) + c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{ + Code: "203", + Message: err.Error(), + }) + return + } + + log.Println("request :", req) + + query := `` + var args []interface{} + var argsCount []interface{} + var data []*sk.GetDataSuratKontrol + var count int + if req.NoRM != "" { + query += `and dkp2."NOMR" = ?` + argsCount = append(argsCount, req.TipeSurKon, req.NoRM, req.TanggalAwal, req.TanggalAkhir) + count, err = suratkontrol.CountDataSurKon(req, query, argsCount) + if err != nil { + log.Println(err) + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", + Message: err.Error(), + }) + return + } + args = append(args, req.TipeSurKon, req.NoRM, req.TanggalAwal, req.TanggalAkhir) + data, err = suratkontrol.SearchDataSurKonNew(req, query, args) + if err != nil { + log.Println(err) + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", + Message: err.Error(), + }) + return + } + } else if req.NoSEP != "" { + query += `and dkp2."Nomor_sep" = ?` + argsCount = append(argsCount, req.TipeSurKon, req.NoSEP, req.TanggalAwal, req.TanggalAkhir) + count, err = suratkontrol.CountDataSurKon(req, query, argsCount) + if err != nil { + log.Println(err) + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", + Message: err.Error(), + }) + return + } + args = append(args, req.TipeSurKon, req.NoSEP, req.TanggalAwal, req.TanggalAkhir) + data, err = suratkontrol.SearchDataSurKonNew(req, query, args) + if err != nil { + log.Println(err) + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", + Message: err.Error(), + }) + return + } + } else if req.PoliKlinik != "" { + query += `and ds."id" = ?` + argsCount = append(argsCount, req.TipeSurKon, req.PoliKlinik, req.TanggalAwal, req.TanggalAkhir) + count, err = suratkontrol.CountDataSurKon(req, query, argsCount) + if err != nil { + log.Println(err) + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", + Message: err.Error(), + }) + return + } + args = append(args, req.TipeSurKon, req.PoliKlinik, req.TanggalAwal, req.TanggalAkhir) + data, err = suratkontrol.SearchDataSurKonNew(req, query, args) + if err != nil { + log.Println(err) + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", + Message: err.Error(), + }) + return + } + } else { + argsCount = append(argsCount, req.TipeSurKon, req.TanggalAwal, req.TanggalAkhir) + count, err = suratkontrol.CountDataSurKon(req, query, argsCount) + if err != nil { + log.Println(err) + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", + Message: err.Error(), + }) + return + } + args = append(args, req.TipeSurKon, req.TanggalAwal, req.TanggalAkhir) + data, err = suratkontrol.SearchDataSurKonNew(req, query, args) + if err != nil { + log.Println(err) + c.JSON(http.StatusOK, &sk.MetadataString{ + Code: "203", + Message: err.Error(), + }) + return + } + } + var listData []*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") + listData = append(listData, &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, + IDDokter: v.IDDokter, + KodeDPJP: v.KodeDPJP, + NoRM: v.NoRM, + KodeDiagnosa: v.KodeDiagnosa, + NamaDiagnosa: v.NamaDiagnosa, + TipeSurKon: v.TipeSurKon, + }) + } + + resSurKon := &sk.ResponseCariDataSuratKontrol{ + JumlahData: count, + ListDataSuratKontrol: listData, + } + c.JSON(http.StatusOK, resSurKon) +} + +func GetDataLogAPI(c *gin.Context) { + var req logapi.ReqGetDataLogAPI + + err := c.Bind(&req) + if err != nil { + log.Println(err) + c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{ + MetaData: sk.MetadataString{ + Code: "203", + Message: err.Error(), + }, + }) + return + } + + dataLog, err := log_api.GetLogAPI(req) + if err != nil { + log.Println(err) + c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{ + MetaData: sk.MetadataString{ + Code: "203", + Message: err.Error(), + }, + }) + return + } + var responDataLog []*logapi.DataLogAPI + for _, v := range dataLog { + jsonReq, _ := json.Marshal(v.Request) + jsonRes, _ := json.Marshal(v.Respon) + stringJsonReq := string(jsonReq) + stringJsonRes := string(jsonRes) + parsedTime, _ := time.Parse(time.RFC3339, v.DateCreated) + newTanggal := parsedTime.Format("2006-01-02 15:04:05") + responDataLog = append(responDataLog, &logapi.DataLogAPI{ + ID: v.ID, + DateCreated: newTanggal, + UserAgent: v.UserAgent, + IP: v.IP, + Parameter: v.Parameter, + Header: v.Header, + Method: v.Method, + Url: v.Url, + Request: v.Request, + Respon: v.Respon, + ResponCode: v.ResponCode, + ResponTimeStart: v.ResponTimeStart, + ResponTimeEnd: v.ResponTimeEnd, + Comment: v.Comment, + RequestString: stringJsonReq, + ResponString: stringJsonRes, + }) + } + + c.JSON(http.StatusOK, responDataLog) +} diff --git a/handlers/kunjungan_pasien/kunjungan_pasien.go b/handlers/kunjungan_pasien/kunjungan_pasien.go new file mode 100644 index 0000000..43bb7c9 --- /dev/null +++ b/handlers/kunjungan_pasien/kunjungan_pasien.go @@ -0,0 +1,55 @@ +package kunjunganpasien + +import ( + pasien "bridging-rssa/database/satu_data/pasien" + "bridging-rssa/docs/utils" + pasien_model "bridging-rssa/models/pasien" + "log" + "net/http" + "strings" + "time" + + "github.com/gin-gonic/gin" +) + +func ListKunjunganPasien(c *gin.Context) { + var req *pasien_model.RequestListKunjunganPasien + err := c.Bind(&req) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + dataKunjunganPasien, err := pasien.GetListKunjunganPasien(req) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + var res []*pasien_model.ResponseListKunjunganPasien + for _, v := range dataKunjunganPasien { + gelarDepan := utils.ReplaceGelar(v.GelarDepan) + gelarBelakang := utils.ReplaceGelar(v.GelarBelakang) + namaLengkap := gelarDepan + " " + v.NamaLengkapDokter + " " + gelarBelakang + namaLengkap = strings.TrimPrefix(namaLengkap, " ") + namaLengkap = strings.TrimSuffix(namaLengkap, " ") + namaRuang := strings.TrimSpace(v.NamaRuang) + parsedTimeLahir, _ := time.Parse(time.RFC3339, v.TanggalLahir) + parsedTimeMasuk, _ := time.Parse(time.RFC3339, v.TanggalMasukKunjungan) + tanggalLahir := parsedTimeLahir.Format("2006-01-02") + tanggalMasuk := parsedTimeMasuk.Format("2006-01-02") + res = append(res, &pasien_model.ResponseListKunjunganPasien{ + NoMR: v.NoMR, + NamaPasien: v.NamaPasien, + TanggalLahir: tanggalLahir, + JenisKelamin: v.JenisKelamin, + TanggalMasukKunjungan: tanggalMasuk, + JamMasukKunjungan: v.JamMasukKunjungan, + KodeDiagnosa: v.KodeDiagnosa, + NamaDiagnosa: v.NamaDiagnosa, + NamaRuang: namaRuang, + NamaLengkapDokter: namaLengkap, + }) + } + c.JSON(http.StatusOK, res) +} diff --git a/handlers/mikrobiologi/mikrobiologi.go b/handlers/mikrobiologi/mikrobiologi.go new file mode 100644 index 0000000..6872bca --- /dev/null +++ b/handlers/mikrobiologi/mikrobiologi.go @@ -0,0 +1,96 @@ +package mikrobiologi + +import ( + mikrobiologiDB "bridging-rssa/database/simrs/mikrobiologi" + "bridging-rssa/models/simrs/mikrobiologi" + "log" + "net/http" + + "github.com/gin-gonic/gin" +) + +func GetDataPasienMikrobiologi(c *gin.Context) { + var req *mikrobiologi.RequestPasienMikrobiologi + + err := c.Bind(&req) + if err != nil { + log.Println(err) + c.JSON(http.StatusBadRequest, gin.H{ + "message": err, + }) + return + } + + dataPasien, errData := mikrobiologiDB.GetDataMikroBiologi(req) + if errData != nil { + log.Println(errData) + c.JSON(http.StatusBadRequest, gin.H{ + "message": errData, + }) + return + } + var res []interface{} + for _, v := range dataPasien { + if v.StatusAPS == 1 { + res = append(res, &mikrobiologi.ResponseDataPasienRajalAPS{ + NOMR: v.NOMR, + NoNota: v.NoNota, + IdxDaftar: v.IDXDaftar, + TanggalOrder: v.TanggalOrder, + NoLab: v.NoLab, + StatusRajal: v.StatusRajal, + StatusAPS: v.StatusAPS, + NamaAPS: v.NamaAPS, + NoKTPAPS: v.NoKTPAPS, + TempatLahirAPS: v.TempatLahirAPS, + TanggalLahirAPS: v.TanggalLahirAPS, + JenisKelaminAPS: v.JenisKelaminAPS, + AlamatAPS: v.AlamatAPS, + NamaRuang: v.NamaRuang, + KelasRuang: v.KelasRuang, + KodeTarifRajal: v.KodeTarifRajal, + }) + } else { + if v.StatusRajal != 1 { + res = append(res, &mikrobiologi.ResponseDataPasienRanap{ + NOMR: v.NOMR, + NoNota: v.NoNota, + IDXDaftar: v.IDXDaftar, + TanggalOrder: v.TanggalOrder, + NoLab: v.NoLab, + StatusRajal: v.StatusRajal, + Nama: v.Nama, + NoKTP: v.NoKTP, + NoKTPBaru: v.NoKTPBaru, + TempatLahir: v.TempatLahir, + TanggalLahir: v.TanggalLahir, + JenisKelamin: v.JenisKelamin, + Alamat: v.Alamat, + NamaRuang: v.NamaRuang, + KelasRuang: v.KelasRuang, + KodeTarifRanap: v.KodeTarifRanap, + }) + } else { + res = append(res, &mikrobiologi.ResponseDataPasienRajal{ + NOMR: v.NOMR, + NoNota: v.NoNota, + IDXDaftar: v.IDXDaftar, + TanggalOrder: v.TanggalOrder, + NoLab: v.NoLab, + StatusRajal: v.StatusRajal, + Nama: v.Nama, + NoKTP: v.NoKTP, + NoKTPBaru: v.NoKTPBaru, + TempatLahir: v.TempatLahir, + TanggalLahir: v.TanggalLahir, + JenisKelamin: v.JenisKelamin, + Alamat: v.Alamat, + NamaRuang: v.NamaRuang, + KelasRuang: v.KelasRuang, + KodeTarifRajal: v.KodeTarifRajal, + }) + } + } + } + c.JSON(http.StatusOK, res) +} diff --git a/main.go b/main.go index 927ec11..85d37e4 100644 --- a/main.go +++ b/main.go @@ -7,6 +7,9 @@ import ( "bridging-rssa/handlers/bpjs/jadwal_dokter" "bridging-rssa/handlers/bpjs/rujukan" suratkontrol "bridging-rssa/handlers/bpjs/surat_kontrol" + kunjunganPasienHandler "bridging-rssa/handlers/kunjungan_pasien" + mikrobiologiHandler "bridging-rssa/handlers/mikrobiologi" + "log" _ "bridging-rssa/docs" @@ -49,19 +52,27 @@ func main() { jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetJadwalSubspesialisByDate) jadwalDokter.GET("/tanggal/:tanggal/spesialis/:spesialis", jadwal_dokter.GetDokterBySpesialis) jadwalDokter.GET("/tanggal/:tanggal/subspesialis/:subspesialis", jadwal_dokter.GetDokterBySubspesialis) + jadwalDokter.GET("/detail", jadwal_dokter.GetDetailJadwalDokter) } suratKontrol := v1.Group("/suratkontrol") { - suratKontrol.GET("/offset/:offset/limit/:limit", suratkontrol.GetDataSurKon) + suratKontrol.GET("", suratkontrol.GetDataSurKon) suratKontrol.GET("/idxdaftar/:idxdaftar", suratkontrol.GetDataSurKonByID) suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol) suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP) suratKontrol.GET("/printSurKon/:idxdaftar", suratkontrol.PrintSurKon) suratKontrol.POST("/cari", suratkontrol.CariPasienTPP) + suratKontrol.POST("/carinew", suratkontrol.CariPasienTPPNew) suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol) suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol) suratKontrol.POST("/delete", suratkontrol.DeleteSuratKontrol) + suratKontrol.POST("/datalog", suratkontrol.GetDataLogAPI) + } + + kunjunganPasien := v1.Group("/kunjunganpasien") + { + kunjunganPasien.POST("/listkunjunganpasien", kunjunganPasienHandler.ListKunjunganPasien) } suratRujukan := v1.Group("/rujukan") @@ -76,6 +87,10 @@ func main() { iCare.POST("/pcare/validate", icare.GetFKTP) } + mikrobiologi := v1.Group("/mikrobiologi") + { + mikrobiologi.POST("/datapasien", mikrobiologiHandler.GetDataPasienMikrobiologi) + } r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) r.POST("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) r.PUT("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) @@ -87,8 +102,8 @@ func main() { AllowCredentials: true, })) - log.Println("JALAN DI PORT : 8083") - err = r.Run(":8083") + log.Println("JALAN DI PORT : 8082") + err = r.Run(":8082") if err != nil { log.Fatal(err) } diff --git a/models/bpjs/i_care/i_care.go b/models/bpjs/i_care/i_care.go index 84efe5b..6401c26 100644 --- a/models/bpjs/i_care/i_care.go +++ b/models/bpjs/i_care/i_care.go @@ -1,5 +1,12 @@ package icare +type ReqICare struct { + IDXDaftar string `json:"idxdaftar"` + Param string `json:"param"` + KodeDokter int `json:"kodedokter"` + User string `json:"user"` +} + type RequestICare struct { Param string `json:"param"` KodeDokter int `json:"kodedokter"` diff --git a/models/bpjs/jadwal_dokter/jadwal_dokter.go b/models/bpjs/jadwal_dokter/jadwal_dokter.go index 796d0ec..fb70387 100644 --- a/models/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/models/bpjs/jadwal_dokter/jadwal_dokter.go @@ -70,3 +70,23 @@ type ListJadwalDokter struct { KodeHari int `json:"Kode_hari"` Waktu string `json:"Waktu"` } + +type ListDaftarJadwalDokter struct { + ValueHari string `gorm:"column:valuehari" json:"valuehari"` + NamaHari string `gorm:"column:hari" json:"hari"` + Waktu string `gorm:"column:waktu" json:"waktu"` + Spesialis string `gorm:"column:spesialis" json:"spesialis"` + Subspesialis string `gorm:"column:subspesialis" json:"subspesialis"` + GelarDepan string `gorm:"column:gelardepan" json:"gelardepan"` + NamaLengkap string `gorm:"column:namalengkap" json:"namalengkap"` + GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"` +} + +type ResponseDetailJadwalDokter struct { + ValueHari string `gorm:"column:valuehari" json:"valuehari"` + NamaHari string `gorm:"column:hari" json:"hari"` + Waktu string `gorm:"column:waktu" json:"waktu"` + Spesialis string `gorm:"column:spesialis" json:"spesialis"` + Subspesialis string `gorm:"column:subspesialis" json:"subspesialis"` + NamaLengkap string `gorm:"column:namalengkap" json:"namalengkap"` +} diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index f78d297..2d6740b 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -34,6 +34,7 @@ type RequestInsertRencanaKontrol struct { NamaDiagnosa string `json:"nama_diagnosa"` TipeSurKon string `json:"tipe_surkon"` TipeRawat string `json:"tipe_rawat"` + Ruangan string `json:"ruangan"` } type ReqDeleteRencanaKontrol struct { @@ -253,6 +254,7 @@ type GetDataSuratKontrol struct { 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"` + User string `gorm:"column:User" json:"User"` } type ResponseGetDataSuratKontrol struct { @@ -277,6 +279,7 @@ type ResponseGetDataSuratKontrol struct { KodeDiagnosa string `json:"Kode_diagnosa"` NamaDiagnosa string `json:"Nama_diagnosa"` TipeSurKon string `json:"Tipe_SurKon"` + User string `json:"User"` } type ResponseCariDataSuratKontrol struct { @@ -285,12 +288,13 @@ type ResponseCariDataSuratKontrol struct { } type RequestCariPasien struct { - NoRM string `json:"no_rm"` - NoSEP string `json:"no_sep"` - PoliKlinik string `json:"poliklinik"` - TanggalAwal string `json:"tanggal_awal"` - TanggalAkhir string `json:"tanggal_akhir"` - TipeSurKon string `json:"tipe_surkon"` - Offset string `json:"offset"` - Limit string `json:"limit"` + NoRM string `json:"no_rm"` + NoSEP string `json:"no_sep"` + PoliKlinik string `json:"poliklinik"` + TanggalAwal string `json:"tanggal_awal"` + TanggalAkhir string `json:"tanggal_akhir"` + TipeSurKon string `json:"tipe_surkon"` + Offset string `json:"offset"` + Limit string `json:"limit"` + IsTanggalEntri bool `json:"is_tanggal_entri"` } diff --git a/models/dokter/dokter.go b/models/dokter/dokter.go index 3139fe0..3034407 100644 --- a/models/dokter/dokter.go +++ b/models/dokter/dokter.go @@ -16,6 +16,7 @@ type NamaLengkap struct { NamaLengkap string `gorm:"column:Nama_lengkap" json:"Nama_lengkap"` GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"` HFISCode string `gorm:"column:HFIS_code" json:"HFIS_code"` + DPJPCode string `gorm:"column:DPJP_code" json:"DPJP_code"` } type ResponseDokter struct { @@ -31,4 +32,5 @@ type ResponseDokterNew struct { Subspesialis int `json:"subspesialis"` HFISCode string `json:"HFIS_code"` KodePoli string `json:"kode_poli"` + DPJPCode string `json:"DPJP_code"` } diff --git a/models/log_api/log_api.go b/models/log_api/log_api.go index b1751c7..a61365d 100644 --- a/models/log_api/log_api.go +++ b/models/log_api/log_api.go @@ -17,4 +17,12 @@ type DataLogAPI struct { 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"` -} \ No newline at end of file + RequestString string `json:"Request_string"` + ResponString string `json:"Respon_string"` +} + +type ReqGetDataLogAPI struct { + TanggalAwal string `json:"Tanggal_awal"` + TanggalAkhir string `json:"Tanggal_akhir"` + TipeRawat string `json:"Tipe_rawat"` +} diff --git a/models/log_api/log_icare.go b/models/log_api/log_icare.go new file mode 100644 index 0000000..b78c696 --- /dev/null +++ b/models/log_api/log_icare.go @@ -0,0 +1,10 @@ +package logapi + +type InsertLogICare struct { + ID string `gorm:"column:id" json:"id"` + DateCreated string `gorm:"column:date_created" json:"date_created"` + Ruangan int `gorm:"column:Ruangan" json:"Ruangan"` + Dokter string `gorm:"column:Dokter" json:"Dokter"` + Kunjungan_pasien string `gorm:"column:Kunjungan_pasien" json:"Kunjungan_pasien"` + WaktuTransaksi string `gorm:"column:Waktu_transaksi" json:"Waktu_transaksi"` +} diff --git a/models/pasien/kunjungan_pasien.go b/models/pasien/kunjungan_pasien.go new file mode 100644 index 0000000..c8aca3a --- /dev/null +++ b/models/pasien/kunjungan_pasien.go @@ -0,0 +1,39 @@ +package pasien + +type KunjunganPasien struct { + ID string `gorm:"column:id" json:"id"` + Ruangan int `gorm:"column:Ruangan" json:"Ruangan"` +} + +type RequestListKunjunganPasien struct { + TanggalAwal string `json:"tanggalawal"` + TanggalAkhir string `json:"tanggalakhir"` +} + +type ListKunjunganPasien struct { + NoMR string `gorm:"column:nomr" json:"nomr"` + NamaPasien string `gorm:"column:namalengkap" json:"namalengkap"` + TanggalLahir string `gorm:"column:tanggallahir" json:"tanggallahir"` + JenisKelamin string `gorm:"column:jeniskelamin" json:"jeniskelamin"` + TanggalMasukKunjungan string `gorm:"column:tanggalmasukkunjungan" json:"tanggalmasukkunjungan"` + JamMasukKunjungan string `gorm:"column:jammasukkunjungan" json:"jammasukkunjungan"` + KodeDiagnosa string `gorm:"column:dxawalmasuk" json:"dxawalmasuk"` + NamaDiagnosa string `gorm:"column:displaydxawalmasuk" json:"displaydxawalmasuk"` + NamaRuang string `gorm:"column:namaruang" json:"namaruang"` + GelarDepan string `gorm:"column:gelardepan" json:"gelardepan"` + NamaLengkapDokter string `gorm:"column:namalengkapdokter" json:"namalengkapdokter"` + GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"` +} + +type ResponseListKunjunganPasien struct { + NoMR string `gorm:"column:nomr" json:"nomr"` + NamaPasien string `gorm:"column:namalengkap" json:"namalengkap"` + TanggalLahir string `gorm:"column:tanggallahir" json:"tanggallahir"` + JenisKelamin string `gorm:"column:jeniskelamin" json:"jeniskelamin"` + TanggalMasukKunjungan string `gorm:"column:tanggalmasukkunjungan" json:"tanggalmasukkunjungan"` + JamMasukKunjungan string `gorm:"column:jammasukkunjungan" json:"jammasukkunjungan"` + KodeDiagnosa string `gorm:"column:dxawalmasuk" json:"dxawalmasuk"` + NamaDiagnosa string `gorm:"column:displaydxawalmasuk" json:"displaydxawalmasuk"` + NamaRuang string `gorm:"column:namaruang" json:"namaruang"` + NamaLengkapDokter string `gorm:"column:namalengkapdokter" json:"namalengkapdokter"` +} diff --git a/models/simrs/mikrobiologi/mikrobiologi.go b/models/simrs/mikrobiologi/mikrobiologi.go new file mode 100644 index 0000000..27cc157 --- /dev/null +++ b/models/simrs/mikrobiologi/mikrobiologi.go @@ -0,0 +1,90 @@ +package mikrobiologi + +type RequestPasienMikrobiologi struct { + NOMR string `json:"nomr"` + IDXDaftar string `json:"idxdaftar"` +} + +type DataPasienMikrobiologi struct { + NOMR string `gorm:"column:nomr" json:"nomr"` + NoNota string `gorm:"column:nonota" json:"nonota"` + IDXDaftar int `gorm:"column:idxdaftar" json:"idxdaftar"` + TanggalOrder string `gorm:"column:tglorder" json:"tglorder"` + NoLab string `gorm:"column:nolab" json:"nolab"` + StatusRajal int `gorm:"column:statusrajal" json:"statusrajal"` + StatusAPS int `gorm:"column:statusaps" json:"statusaps"` + Nama string `gorm:"column:nama" json:"nama"` + NoKTP string `gorm:"column:noktp" json:"noktp"` + NoKTPBaru string `gorm:"column:noktpbaru" json:"noktpbaru"` + TempatLahir string `gorm:"column:tmptlahir" json:"tmptlahir"` + TanggalLahir string `gorm:"column:tgllahir" json:"tgllahir"` + JenisKelamin string `gorm:"column:jeniskelamin" json:"jeniskelamin"` + Alamat string `gorm:"column:alamat" json:"alamat"` + NamaAPS string `gorm:"column:namaaps" json:"namaaps"` + NoKTPAPS string `gorm:"column:noktpaps" json:"noktpaps"` + TempatLahirAPS string `gorm:"column:tmptlahiraps" json:"tmptlahiraps"` + TanggalLahirAPS string `gorm:"column:tgllahiraps" json:"tgllahiraps"` + JenisKelaminAPS string `gorm:"column:jeniskelaminaps" json:"jeniskelaminaps"` + AlamatAPS string `gorm:"column:alamataps" json:"alamataps"` + NamaRuang string `gorm:"column:namaruang" json:"namaruang"` + KelasRuang string `gorm:"column:kelasruang" json:"kelasruang"` + KodeTarifRajal string `gorm:"column:kodetarifrajal" json:"kodetarifrajal"` + KodeTarifRanap string `gorm:"column:kodetarifranap" json:"kodetarifranap"` +} + +type ResponseDataPasienRanap struct { + NOMR string `gorm:"column:nomr" json:"nomr"` + NoNota string `gorm:"column:nonota" json:"nonota"` + IDXDaftar int `gorm:"column:idxdaftar" json:"idxdaftar"` + TanggalOrder string `gorm:"column:tglorder" json:"tglorder"` + NoLab string `gorm:"column:nolab" json:"nolab"` + StatusRajal int `gorm:"column:statusrajal" json:"statusrajal"` + Nama string `gorm:"column:nama" json:"nama"` + NoKTP string `gorm:"column:noktp" json:"noktp"` + NoKTPBaru string `gorm:"column:noktpbaru" json:"noktpbaru"` + TempatLahir string `gorm:"column:tmptlahir" json:"tmptlahir"` + TanggalLahir string `gorm:"column:tgllahir" json:"tgllahir"` + JenisKelamin string `gorm:"column:jeniskelamin" json:"jeniskelamin"` + Alamat string `gorm:"column:alamat" json:"alamat"` + NamaRuang string `gorm:"column:namaruang" json:"namaruang"` + KelasRuang string `gorm:"column:kelasruang" json:"kelasruang"` + KodeTarifRanap string `gorm:"column:kodetarifranap" json:"kodetarifranap"` +} + +type ResponseDataPasienRajal struct { + NOMR string `gorm:"column:nomr" json:"nomr"` + NoNota string `gorm:"column:nonota" json:"nonota"` + IDXDaftar int `gorm:"column:idxdaftar" json:"idxdaftar"` + TanggalOrder string `gorm:"column:tglorder" json:"tglorder"` + NoLab string `gorm:"column:nolab" json:"nolab"` + StatusRajal int `gorm:"column:statusrajal" json:"statusrajal"` + Nama string `gorm:"column:nama" json:"nama"` + NoKTP string `gorm:"column:noktp" json:"noktp"` + NoKTPBaru string `gorm:"column:noktpbaru" json:"noktpbaru"` + TempatLahir string `gorm:"column:tmptlahir" json:"tmptlahir"` + TanggalLahir string `gorm:"column:tgllahir" json:"tgllahir"` + JenisKelamin string `gorm:"column:jeniskelamin" json:"jeniskelamin"` + Alamat string `gorm:"column:alamat" json:"alamat"` + NamaRuang string `gorm:"column:namaruang" json:"namaruang"` + KelasRuang string `gorm:"column:kelasruang" json:"kelasruang"` + KodeTarifRajal string `gorm:"column:kodetarifrajal" json:"kodetarifrajal"` +} + +type ResponseDataPasienRajalAPS struct { + NOMR string `gorm:"column:nomr" json:"nomr"` + NoNota string `gorm:"column:nonota" json:"nonota"` + IdxDaftar int `gorm:"column:idxdaftar" json:"idxdaftar"` + TanggalOrder string `gorm:"column:tglorder" json:"tglorder"` + NoLab string `gorm:"column:nolab" json:"nolab"` + StatusRajal int `gorm:"column:statusrajal" json:"statusrajal"` + StatusAPS int `gorm:"column:statusaps" json:"statusaps"` + NamaAPS string `gorm:"column:namaaps" json:"namaaps"` + NoKTPAPS string `gorm:"column:noktpaps" json:"noktpaps"` + TempatLahirAPS string `gorm:"column:tmptlahiraps" json:"tmptlahiraps"` + TanggalLahirAPS string `gorm:"column:tgllahiraps" json:"tgllahiraps"` + JenisKelaminAPS string `gorm:"column:jeniskelaminaps" json:"jeniskelaminaps"` + AlamatAPS string `gorm:"column:alamataps" json:"alamataps"` + NamaRuang string `gorm:"column:namaruang" json:"namaruang"` + KelasRuang string `gorm:"column:kelasruang" json:"kelasruang"` + KodeTarifRajal string `gorm:"column:kodetarifrajal" json:"kodetarifrajal"` +}