Compare commits
| Author | SHA256 | Date | |
|---|---|---|---|
|
|
b1bd324e54 |
@@ -4,17 +4,11 @@ SATUDATA_PASSWORD=stim*RS54
|
||||
SATUDATA_NAME=satu_db
|
||||
SATUDATA_PORT=5000
|
||||
|
||||
SIMRS_HOST=10.10.123.163
|
||||
SIMRS_USERNAME=simrs
|
||||
SIMRS_PASSWORD=simrs.rssa
|
||||
SIMRS_NAME=simrs
|
||||
SIMRS_PORT=5432
|
||||
|
||||
BASEURL_BPJS=https://apijkn.bpjs-kesehatan.go.id
|
||||
ANTREAN_RS=/antreanrs
|
||||
CONS_ID=5257
|
||||
USER_KEY=4cf1cbef8c008440bbe9ef9ba789e482
|
||||
SECRET_KEY=UKu0o2wLB3
|
||||
SECRET_KEY=1bV363512D
|
||||
|
||||
CONS_ID_DEV=16041
|
||||
USER_KEY_DEV=467a2817fde5070f66c9a41fbeb8dc2c
|
||||
@@ -38,5 +32,4 @@ GET_NOMOR_RUJUKAN_BATCH=/Rujukan/List/Peserta/
|
||||
GET_FKRTL=/api/rs/validate
|
||||
GET_FKTP=/api/pcare/validate
|
||||
|
||||
INSERT_SPRI=/RencanaKontrol/InsertSPRI
|
||||
UPDATE_SPRI=/RencanaKontrol/UpdateSPRI
|
||||
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="GoDfaConstantCondition" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||
<inspection_tool class="GoDfaErrorMayBeNotNil" enabled="false" level="WARNING" enabled_by_default="false">
|
||||
<functions>
|
||||
<function importPath="bridging-rssa/handlers/bpjs/surat_kontrol" name="ResponseUpdateSuratKontrol" />
|
||||
<function importPath="bridging-rssa/handlers/bpjs/surat_kontrol" name="PostData" />
|
||||
<function importPath="bridging-rssa/handlers/bpjs/surat_kontrol" name="ResponseDeleteSuratKontrol" />
|
||||
</functions>
|
||||
</inspection_tool>
|
||||
<inspection_tool class="GoDfaNilDereference" enabled="false" level="WARNING" enabled_by_default="false">
|
||||
<scope name="Project Files" level="WARNING" enabled="false" />
|
||||
</inspection_tool>
|
||||
</profile>
|
||||
</component>
|
||||
+1
-1
@@ -22,5 +22,5 @@ WORKDIR /root/
|
||||
|
||||
COPY --from=builder /app/main .
|
||||
COPY --from=builder /app/.env .
|
||||
EXPOSE 8080
|
||||
EXPOSE 8083
|
||||
CMD ["./main"]
|
||||
@@ -17,7 +17,6 @@ import (
|
||||
|
||||
var DB *gorm.DB
|
||||
var SatuDataDB *gorm.DB
|
||||
var DBsimrs *gorm.DB
|
||||
var err error
|
||||
|
||||
func ConnectDB() {
|
||||
@@ -27,12 +26,6 @@ func ConnectDB() {
|
||||
dbNameSatuData := os.Getenv("SATUDATA_NAME")
|
||||
portSatuData := os.Getenv("SATUDATA_PORT")
|
||||
|
||||
hostDBsimrs := os.Getenv("SIMRS_HOST")
|
||||
userNameDBsimrs := os.Getenv("SIMRS_USERNAME")
|
||||
passwordDBsimrs := os.Getenv("SIMRS_PASSWORD")
|
||||
dbNameDBsimrs := os.Getenv("SIMRS_NAME")
|
||||
portDBsimrs := os.Getenv("SIMRS_PORT")
|
||||
|
||||
satuData := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Jakarta", hostSatuData, userNameSatuData, passwordSatuData, dbNameSatuData, portSatuData)
|
||||
|
||||
SatuDataDB, err = gorm.Open(postgres.Open(satuData), &gorm.Config{})
|
||||
@@ -41,16 +34,6 @@ func ConnectDB() {
|
||||
} else {
|
||||
log.Println("Successfully connected to the database")
|
||||
}
|
||||
|
||||
dbSimrs := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Jakarta",
|
||||
hostDBsimrs, userNameDBsimrs, passwordDBsimrs, dbNameDBsimrs, portDBsimrs)
|
||||
|
||||
DB, err = gorm.Open(postgres.Open(dbSimrs), &gorm.Config{})
|
||||
if err != nil {
|
||||
log.Fatal("Failed to connect to DBsimrs database: ", err)
|
||||
} else {
|
||||
log.Println("Successfully connected to the DBsimrs database")
|
||||
}
|
||||
}
|
||||
|
||||
func SetHeader(isIcare bool, cfg config.ConfigBpjs) *config.Header {
|
||||
|
||||
@@ -69,9 +69,9 @@ func GetJadwalDokterBySpesialis(hari string, spesialis string) ([]string, error)
|
||||
return listDokter, nil
|
||||
}
|
||||
|
||||
func GetJadwalDokterBySubpesialis(hari string, subspesialis string) ([]string, error) {
|
||||
func GetJadwalDokterBySubpesialis(tanggal string, subspesialis string) ([]string, error) {
|
||||
var listDokter []string
|
||||
errSelect := config.SatuDataDB.Raw(`select "Dokter" from "daftar_jadwal_dokter" where "Nama_hari" = ? and "Sub_spesialis" = ? order by "Sub_spesialis"`, hari, subspesialis).Scan(&listDokter).Error
|
||||
errSelect := config.SatuDataDB.Raw(`select "Dokter" from "data_jadwal_dokter" where "Tanggal_jadwal" = ? and "Sub_spesialis" = ? order by "Sub_spesialis"`, tanggal, subspesialis).Scan(&listDokter).Error
|
||||
if errSelect != nil {
|
||||
log.Printf("Failed get data : %v", errSelect)
|
||||
return nil, errSelect
|
||||
|
||||
@@ -3,6 +3,7 @@ package logapi
|
||||
import (
|
||||
"bridging-rssa/config"
|
||||
logapi "bridging-rssa/models/log_api"
|
||||
"fmt"
|
||||
"log"
|
||||
)
|
||||
|
||||
@@ -30,5 +31,7 @@ func InsertLogAPI(reqInsert *logapi.DataLogAPI) error {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
log.Println(err)
|
||||
fmt.Printf("insert log: ", err)
|
||||
return nil
|
||||
}
|
||||
@@ -4,76 +4,11 @@ import (
|
||||
"bridging-rssa/config"
|
||||
suratkontrol "bridging-rssa/models/bpjs/surat_kontrol"
|
||||
"errors"
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func GetPendaftaran(idxdaftar string) (*suratkontrol.Pendaftaran, error) {
|
||||
var dataPendaftaran suratkontrol.Pendaftaran
|
||||
err := config.DB.Raw(`select tp."kddokter",mp."nama",mp."noktp",mp."jeniskelamin",
|
||||
mp.noktp,tp."nosep" ,tp."idxdaftar",tp."nomr" ,tp."jamreg"
|
||||
from t_pendaftaran tp
|
||||
join m_pasien mp on tp.nomr = mp.nomr
|
||||
where tp.idxdaftar = ?`, idxdaftar).Scan(&dataPendaftaran).Error
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return nil, nil
|
||||
}
|
||||
log.Println(dataPendaftaran)
|
||||
return &dataPendaftaran, nil
|
||||
}
|
||||
|
||||
func GetAdmission(idxdaftar string) (*suratkontrol.Addmission, error) {
|
||||
var dataAdmission suratkontrol.Addmission
|
||||
result := config.DB.Raw(`select "dokterpengirim","id_admission","dokter_penanggungjawab","nosep",mp."nama",mp."noktp",mp."jeniskelamin",
|
||||
"masukrs", mp.noktp,ta."nomr"
|
||||
from t_admission ta
|
||||
join m_pasien mp on ta."nomr" = mp."nomr"
|
||||
where id_admission = ?`, idxdaftar).Scan(&dataAdmission)
|
||||
if result.Error != nil {
|
||||
log.Println(result.Error)
|
||||
return nil, result.Error
|
||||
}
|
||||
if result.RowsAffected == 0 {
|
||||
// Data tidak ditemukan, kembalikan error khusus
|
||||
return nil, fmt.Errorf("Data Tidak Ditemukan")
|
||||
}
|
||||
log.Println(dataAdmission)
|
||||
return &dataAdmission, nil
|
||||
}
|
||||
|
||||
func Getdokter(kddokter int) (string, error) {
|
||||
var idDokter string
|
||||
err := config.SatuDataDB.Raw(`select "id" from data_pegawai where "KDDOKTER" = ? LIMIT 1`, kddokter).Scan(&idDokter).Error
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return idDokter, err
|
||||
}
|
||||
|
||||
func InsertKunjunganPasien(reqInsert *suratkontrol.InsertKunjunganPasien) error {
|
||||
log.Println("Req Insert Database : ", reqInsert)
|
||||
insertQuery := `insert into "data_kunjungan_pasien" ("id", "IDXDAFTAR","NOMR","Nama_lengkap","NIK","DPJP","Tanggal_masuk","Jam_masuk","date_created")
|
||||
values (?, ?, ?, ?, ?, ?, ?, ?, ?)`
|
||||
err := config.SatuDataDB.Exec(insertQuery,
|
||||
reqInsert.ID,
|
||||
reqInsert.IdxDaftar,
|
||||
reqInsert.Nomr,
|
||||
reqInsert.NamaLengkap,
|
||||
reqInsert.NIK,
|
||||
reqInsert.DPJP,
|
||||
reqInsert.TanggalMasuk,
|
||||
reqInsert.JamMasuk,
|
||||
reqInsert.DateCreated,
|
||||
).Error
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, error) {
|
||||
var kunjunganPasien *suratkontrol.KunjunganPasien
|
||||
err := config.SatuDataDB.Raw(`select dkp."id", dkp."IDXDAFTAR" as idxdaftar, dkp."Nomor_sep" as nomorsep,
|
||||
@@ -121,8 +56,8 @@ 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", "Tipe_rawat","Nomor_kartu","Kode_icd","Diagnosa")
|
||||
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?,?)`
|
||||
"User_created_surat_kontrol", "Tipe_surat_kontrol", "User_updated_surat_kontrol", "Tipe_rawat")
|
||||
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`
|
||||
err := config.SatuDataDB.Exec(insertQuery,
|
||||
reqInsert.ID,
|
||||
reqInsert.DateCreated,
|
||||
@@ -137,9 +72,6 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.DataSuratKontrol) error {
|
||||
reqInsert.TipeSurKon,
|
||||
reqInsert.UserUpdatedSurKon,
|
||||
reqInsert.TipeRawat,
|
||||
reqInsert.NomorKartu,
|
||||
reqInsert.KodeIcd,
|
||||
reqInsert.Diagnosa,
|
||||
).Error
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
@@ -151,7 +83,7 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.DataSuratKontrol) error {
|
||||
func GetDataSuratKontrol(offset, limit string) ([]*suratkontrol.GetDataSuratKontrol, error) {
|
||||
var dataSurKon []*suratkontrol.GetDataSuratKontrol
|
||||
err := config.SatuDataDB.Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",
|
||||
dsk."Nomor_surat_kontrol", dsk."Tipe_rawat" ,
|
||||
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",
|
||||
@@ -225,11 +157,7 @@ func GetDataSuratKontrolByIDTipe(idxdaftar string, tipe string) (*suratkontrol.G
|
||||
dkp2."Diagnosis_primer_utama" as "Kode_diagnosa",
|
||||
dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa",
|
||||
dsk."Tipe_surat_kontrol" as "Tipe_SurKon",
|
||||
dsk."User_created_surat_kontrol" as "User",
|
||||
dsk."Kode_icd",
|
||||
dsk."Diagnosa",
|
||||
dsk."Nomor_kartu",
|
||||
dsk."Tipe_rawat"
|
||||
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"
|
||||
@@ -247,205 +175,6 @@ func GetDataSuratKontrolByIDTipe(idxdaftar string, tipe string) (*suratkontrol.G
|
||||
return dataSurKon, nil
|
||||
}
|
||||
|
||||
func GetDataSuratKontrolByIDnomor(idxdaftar string, nomor string) (*suratkontrol.GetDataSuratKontrol, error) {
|
||||
var dataSurKon *suratkontrol.GetDataSuratKontrol
|
||||
err := config.SatuDataDB.Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",dsk."Nomor_surat_kontrol",dsk."Kode_icd",dsk."Diagnosa",
|
||||
(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",
|
||||
dsk."User_created_surat_kontrol" as "User",
|
||||
dsk."Nomor_kartu" as "No_kartu",
|
||||
dsk."Tipe_rawat"
|
||||
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" = ? and dsk."Nomor_surat_kontrol" = ?`, idxdaftar, nomor).First(&dataSurKon).Error
|
||||
if err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
errMsg := errors.New("Data tidak ada")
|
||||
log.Println(errMsg)
|
||||
return nil, errMsg
|
||||
}
|
||||
}
|
||||
return dataSurKon, nil
|
||||
}
|
||||
|
||||
func GetDataSuratKontrolnomor(nomor string) (*suratkontrol.GetDataSuratKontrol, error) {
|
||||
var dataSurKon *suratkontrol.GetDataSuratKontrol
|
||||
err := config.SatuDataDB.Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",dsk."Nomor_surat_kontrol",dsk."Kode_icd",dsk."Diagnosa",
|
||||
(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",
|
||||
dsk."User_created_surat_kontrol" as "User",
|
||||
dsk."Nomor_kartu" as "No_kartu",
|
||||
dsk."Tipe_rawat"
|
||||
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."Nomor_surat_kontrol" = ?`, nomor).First(&dataSurKon).Error
|
||||
if err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
errMsg := errors.New("Data tidak ada")
|
||||
log.Println(errMsg)
|
||||
return nil, errMsg
|
||||
}
|
||||
}
|
||||
return dataSurKon, nil
|
||||
}
|
||||
|
||||
func GetDataSuratKontrolByIDsrukon(idxdaftar string, id string) (*suratkontrol.GetDataSuratKontrol, error) {
|
||||
var dataSurKon *suratkontrol.GetDataSuratKontrol
|
||||
err := config.SatuDataDB.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",
|
||||
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",
|
||||
dsk."User_created_surat_kontrol" as "User",
|
||||
dsk."Kode_icd",
|
||||
dsk."Diagnosa",
|
||||
dsk."Nomor_kartu" as "No_kartu",
|
||||
dsk."Tipe_rawat"
|
||||
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 dkp2."IDXDAFTAR" = ? and dsk."id" = ? `, idxdaftar, id).First(&dataSurKon).Error
|
||||
if err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
errMsg := errors.New("Data tidak ada")
|
||||
log.Println(errMsg)
|
||||
return nil, errMsg
|
||||
}
|
||||
}
|
||||
return dataSurKon, nil
|
||||
}
|
||||
func GetDataSuratKontrolidsurkon(id string) (*suratkontrol.GetDataSuratKontrol, error) {
|
||||
var dataSurKon *suratkontrol.GetDataSuratKontrol
|
||||
err := config.SatuDataDB.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",
|
||||
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",
|
||||
dsk."User_created_surat_kontrol" as "User",
|
||||
dsk."Nomor_kartu" as "No_kartu",
|
||||
dsk."Kode_icd",
|
||||
dsk."Diagnosa",
|
||||
dsk."Tipe_rawat"
|
||||
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."id" = ?`, id).First(&dataSurKon).Error
|
||||
if err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
errMsg := errors.New("Data tidak ada")
|
||||
log.Println(errMsg)
|
||||
return nil, errMsg
|
||||
}
|
||||
}
|
||||
return dataSurKon, nil
|
||||
}
|
||||
|
||||
func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontrol, error) {
|
||||
var dataSurKon *suratkontrol.GetDataSuratKontrol
|
||||
err := config.SatuDataDB.Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",
|
||||
@@ -476,16 +205,14 @@ func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontro
|
||||
dkp2."Diagnosis_primer_utama" as "Kode_diagnosa",
|
||||
dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa",
|
||||
dsk."Tipe_surat_kontrol" as "Tipe_SurKon",
|
||||
dsk."User_created_surat_kontrol" as "User",
|
||||
dsk."Tipe_rawat",
|
||||
dsk."Nomor_kartu"
|
||||
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"
|
||||
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
|
||||
where dsk."Status_surat_kontrol" = '1' and dkp2."IDXDAFTAR" = ? and dsk."Tipe_rawat" is null`, idxdaftar).First(&dataSurKon).Error
|
||||
if err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
errMsg := errors.New("Data tidak ada")
|
||||
@@ -505,24 +232,6 @@ func UpdateDataSuratKontrol(reqUpdate *suratkontrol.DataSuratKontrol) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetIdDokterByHFIS(KodeHFIS string) (string, error) {
|
||||
var idDokter string
|
||||
err := config.SatuDataDB.Raw(`select "id" from data_pegawai where "HFIS_code" = ? LIMIT 1`, KodeHFIS).Scan(&idDokter).Error
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return idDokter, err
|
||||
}
|
||||
|
||||
func GetUserCreated(user string) (*suratkontrol.Created, error) {
|
||||
var UserCreated *suratkontrol.Created
|
||||
err := config.SatuDataDB.Raw(`select "User_created_surat_kontrol","date_created", "Tanggal_rencana_kontrol" from data_surat_kontrol where "id" = ? `, user).Scan(&UserCreated).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return UserCreated, err
|
||||
}
|
||||
|
||||
func GetIDXDaftarBySurKon(idSurKon string) (string, error) {
|
||||
var idxDaftar string
|
||||
err := config.SatuDataDB.Raw(`select dkp."IDXDAFTAR"
|
||||
@@ -550,7 +259,7 @@ func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []i
|
||||
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",
|
||||
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",
|
||||
@@ -576,8 +285,7 @@ func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []i
|
||||
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_SurKon2",
|
||||
dsk."Tipe_rawat"
|
||||
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"
|
||||
@@ -626,22 +334,10 @@ func GetNomorSurKon(idPasien string) (string, error) {
|
||||
return noSurKon, nil
|
||||
}
|
||||
|
||||
func GetNomorSurKonnew(idxdaftar string) (string, error) {
|
||||
var noSurKon string
|
||||
querySelect := `select dsk."Nomor_surat_kontrol" from data_surat_kontrol dsk where dsk."Idxdaftar_surat_kontrol" = ? and dsk."Tipe_surat_kontrol" <> '2' order by dsk."date_created"`
|
||||
err := config.SatuDataDB.Raw(querySelect, idxdaftar).Scan(&noSurKon).Error
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return "", err
|
||||
}
|
||||
log.Println("Nomor SurKon :", noSurKon)
|
||||
return noSurKon, nil
|
||||
}
|
||||
|
||||
func Getdatahistori(norm string, offset, limit string) ([]*suratkontrol.HistoriSurkon, error) {
|
||||
var dataHistoriSurKon []*suratkontrol.HistoriSurkon
|
||||
err := config.SatuDataDB.Raw(`select dkp2."Nama_lengkap",dkp2."Nomor_sep",dsk."id",dkp2."IDXDAFTAR",dsk."Nomor_surat_kontrol",dsk."Tanggal_rencana_kontrol",dsk."Tanggal_cetak_surat_kontrol",
|
||||
ds2."Spesialis",ds."Subspesialis",dsk."Tipe_surat_kontrol",
|
||||
ds2."Spesialis",ds."Subspesialis",
|
||||
array(
|
||||
select dgd. "Gelar_depan"
|
||||
from data_pegawai_daftar_gelar_depan dpdgd
|
||||
@@ -661,7 +357,7 @@ func Getdatahistori(norm string, offset, limit string) ([]*suratkontrol.HistoriS
|
||||
left join data_ktp dk on dp."KTP" = dk. "id"
|
||||
left join daftar_subspesialis ds on dp."Subspesialis" = ds."id"
|
||||
left join daftar_spesialis ds2 on ds."FK_daftar_spesialis_ID" = ds2."id"
|
||||
where dkp2."NOMR" = ? order by dsk."Status_surat_kontrol" != '1',dsk."Tanggal_rencana_kontrol" desc offset ? limit ?`, norm, offset, limit).Scan(&dataHistoriSurKon).Error
|
||||
where dkp2."NOMR" = ? order by dsk."Tanggal_rencana_kontrol" desc offset ? limit ?`, norm, offset, limit).Scan(&dataHistoriSurKon).Error
|
||||
if err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
errMsg := errors.New("data tidak ada")
|
||||
|
||||
+2
-2
@@ -7,7 +7,7 @@ services:
|
||||
container_name: api-rssa
|
||||
restart: always
|
||||
ports:
|
||||
- 8080:8080
|
||||
- 8083:8083
|
||||
volumes:
|
||||
- .:/app
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
@@ -31,7 +31,7 @@ services:
|
||||
- BASEURL_BPJS=https://apijkn.bpjs-kesehatan.go.id/
|
||||
- CONS_ID=5257
|
||||
- USER_KEY=4cf1cbef8c008440bbe9ef9ba789e482
|
||||
- SECRET_KEY=UKu0o2wLB3
|
||||
- SECRET_KEY=1bV363512D
|
||||
# SERVICE ANTROL
|
||||
- ANTREAN_RS=antreanrs
|
||||
# BPJS VCLAIM
|
||||
|
||||
+141
-141
@@ -1,141 +1,141 @@
|
||||
// Package docs Code generated by swaggo/swag. DO NOT EDIT
|
||||
package docs
|
||||
|
||||
import "github.com/swaggo/swag"
|
||||
|
||||
const docTemplate = `{
|
||||
"schemes": {{ marshal .Schemes }},
|
||||
"swagger": "2.0",
|
||||
"info": {
|
||||
"description": "{{escape .Description}}",
|
||||
"title": "{{.Title}}",
|
||||
"contact": {},
|
||||
"version": "{{.Version}}"
|
||||
},
|
||||
"host": "{{.Host}}",
|
||||
"basePath": "{{.BasePath}}",
|
||||
"paths": {
|
||||
"/api/user": {
|
||||
"get": {
|
||||
"description": "returs list of all users from the database",
|
||||
"tags": [
|
||||
"Users"
|
||||
],
|
||||
"summary": "return list of all",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/models.User"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/user/create": {
|
||||
"post": {
|
||||
"description": "Insert Data User",
|
||||
"tags": [
|
||||
"Users"
|
||||
],
|
||||
"summary": "Insert Data User",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/models.Response"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/user/delete/:id": {
|
||||
"delete": {
|
||||
"description": "Delete Data User",
|
||||
"tags": [
|
||||
"Users"
|
||||
],
|
||||
"summary": "Delete Data User",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/models.Response"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/user/update/:id": {
|
||||
"put": {
|
||||
"description": "Update Data User",
|
||||
"tags": [
|
||||
"Users"
|
||||
],
|
||||
"summary": "Update Data User",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/models.Response"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"definitions": {
|
||||
"models.Response": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"response_code": {
|
||||
"type": "string"
|
||||
},
|
||||
"response_message": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"models.User": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"agama": {
|
||||
"type": "string"
|
||||
},
|
||||
"alamat": {
|
||||
"type": "string"
|
||||
},
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"jenis_kelamin": {
|
||||
"type": "string"
|
||||
},
|
||||
"nama": {
|
||||
"type": "string"
|
||||
},
|
||||
"umur": {
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}`
|
||||
|
||||
// SwaggerInfo holds exported Swagger Info so clients can modify it
|
||||
var SwaggerInfo = &swag.Spec{
|
||||
Version: "1",
|
||||
Host: "localhost:8080",
|
||||
BasePath: "",
|
||||
Schemes: []string{},
|
||||
Title: "Crud User",
|
||||
Description: "Rest API CRUD User",
|
||||
InfoInstanceName: "swagger",
|
||||
SwaggerTemplate: docTemplate,
|
||||
LeftDelim: "{{",
|
||||
RightDelim: "}}",
|
||||
}
|
||||
|
||||
func init() {
|
||||
swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
|
||||
}
|
||||
// Package docs Code generated by swaggo/swag. DO NOT EDIT
|
||||
package docs
|
||||
|
||||
import "github.com/swaggo/swag"
|
||||
|
||||
const docTemplate = `{
|
||||
"schemes": {{ marshal .Schemes }},
|
||||
"swagger": "2.0",
|
||||
"info": {
|
||||
"description": "{{escape .Description}}",
|
||||
"title": "{{.Title}}",
|
||||
"contact": {},
|
||||
"version": "{{.Version}}"
|
||||
},
|
||||
"host": "{{.Host}}",
|
||||
"basePath": "{{.BasePath}}",
|
||||
"paths": {
|
||||
"/api/user": {
|
||||
"get": {
|
||||
"description": "returs list of all users from the database",
|
||||
"tags": [
|
||||
"Users"
|
||||
],
|
||||
"summary": "return list of all",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/models.User"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/user/create": {
|
||||
"post": {
|
||||
"description": "Insert Data User",
|
||||
"tags": [
|
||||
"Users"
|
||||
],
|
||||
"summary": "Insert Data User",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/models.Response"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/user/delete/:id": {
|
||||
"delete": {
|
||||
"description": "Delete Data User",
|
||||
"tags": [
|
||||
"Users"
|
||||
],
|
||||
"summary": "Delete Data User",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/models.Response"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/user/update/:id": {
|
||||
"put": {
|
||||
"description": "Update Data User",
|
||||
"tags": [
|
||||
"Users"
|
||||
],
|
||||
"summary": "Update Data User",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/models.Response"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"definitions": {
|
||||
"models.Response": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"response_code": {
|
||||
"type": "string"
|
||||
},
|
||||
"response_message": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"models.User": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"agama": {
|
||||
"type": "string"
|
||||
},
|
||||
"alamat": {
|
||||
"type": "string"
|
||||
},
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"jenis_kelamin": {
|
||||
"type": "string"
|
||||
},
|
||||
"nama": {
|
||||
"type": "string"
|
||||
},
|
||||
"umur": {
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}`
|
||||
|
||||
// SwaggerInfo holds exported Swagger Info so clients can modify it
|
||||
var SwaggerInfo = &swag.Spec{
|
||||
Version: "1",
|
||||
Host: "localhost:8080",
|
||||
BasePath: "",
|
||||
Schemes: []string{},
|
||||
Title: "Crud User",
|
||||
Description: "Rest API CRUD User",
|
||||
InfoInstanceName: "swagger",
|
||||
SwaggerTemplate: docTemplate,
|
||||
LeftDelim: "{{",
|
||||
RightDelim: "}}",
|
||||
}
|
||||
|
||||
func init() {
|
||||
swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
|
||||
}
|
||||
@@ -3,11 +3,12 @@ module bridging-rssa
|
||||
go 1.23.0
|
||||
|
||||
require (
|
||||
github.com/andrean360/bridging-bpjs-go v1.0.1
|
||||
github.com/daku10/go-lz-string v0.0.6
|
||||
github.com/gin-contrib/cors v1.7.2
|
||||
github.com/gin-gonic/gin v1.10.0
|
||||
github.com/joho/godotenv v1.5.1
|
||||
github.com/mashingan/smapping v0.1.19
|
||||
github.com/rs/cors v1.11.1
|
||||
github.com/swaggo/files v1.0.1
|
||||
github.com/swaggo/gin-swagger v1.6.0
|
||||
github.com/swaggo/swag v1.16.3
|
||||
@@ -22,6 +23,7 @@ require (
|
||||
github.com/cloudwego/iasm v0.2.0 // indirect
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
||||
github.com/gabriel-vasile/mimetype v1.4.5 // indirect
|
||||
github.com/gin-contrib/cors v1.7.2 // indirect
|
||||
github.com/gin-contrib/sse v0.1.0 // indirect
|
||||
github.com/go-openapi/jsonpointer v0.21.0 // indirect
|
||||
github.com/go-openapi/jsonreference v0.21.0 // indirect
|
||||
@@ -41,6 +43,7 @@ require (
|
||||
github.com/leodido/go-urn v1.4.0 // indirect
|
||||
github.com/mailru/easyjson v0.7.7 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc=
|
||||
github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE=
|
||||
github.com/andrean360/bridging-bpjs-go v1.0.1 h1:06eJ23vcI2tNyPryr8p3jxJ+Vy4P4/nneNPWuUrgnLg=
|
||||
github.com/andrean360/bridging-bpjs-go v1.0.1/go.mod h1:sRBG5zI4Ky/UMCI7u/QuMTlrzREV2UQn043lhrejfFE=
|
||||
github.com/bytedance/sonic v1.12.2 h1:oaMFuRTpMHYLpCntGca65YWt5ny+wAceDERTkT2L9lg=
|
||||
github.com/bytedance/sonic v1.12.2/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk=
|
||||
github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
|
||||
@@ -82,6 +84,8 @@ github.com/mashingan/smapping v0.1.19 h1:SsEtuPn2UcM1croIupPtGLgWgpYRuS0rSQMvKD9
|
||||
github.com/mashingan/smapping v0.1.19/go.mod h1:FjfiwFxGOuNxL/OT1WcrNAwTPx0YJeg5JiXwBB1nyig=
|
||||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
|
||||
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
@@ -96,6 +100,8 @@ github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
|
||||
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
|
||||
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
|
||||
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
|
||||
github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA=
|
||||
github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||
|
||||
@@ -256,25 +256,20 @@ func GetJadwalSubspesialisByDate(c *gin.Context) {
|
||||
func GetDokterBySpesialis(c *gin.Context) {
|
||||
spesialis := c.Param("spesialis")
|
||||
tanggal := c.Param("tanggal")
|
||||
|
||||
date, err := time.Parse("2006-01-02", tanggal)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
}
|
||||
|
||||
hari := date.Local().Weekday().String()
|
||||
hari = utils.ConvertDay(hari)
|
||||
|
||||
idDokter, err := dokter.GetJadwalDokterBySpesialis(hari, spesialis)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
}
|
||||
|
||||
namaDokter, err := dokter.GetNamaLengkapDokter(idDokter)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
}
|
||||
|
||||
var resDokter []dktr.ResponseDokter
|
||||
idSpesialis, err := strconv.Atoi(spesialis)
|
||||
if err != nil {
|
||||
@@ -300,24 +295,20 @@ func GetDokterBySpesialis(c *gin.Context) {
|
||||
func GetDokterBySubspesialis(c *gin.Context) {
|
||||
subspesialis := c.Param("subspesialis")
|
||||
tanggal := c.Param("tanggal")
|
||||
date, err := time.Parse("2006-01-02", tanggal)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
}
|
||||
|
||||
log.Println("subspesialis: ", subspesialis)
|
||||
log.Println("tanggal: ", tanggal)
|
||||
|
||||
hari := date.Local().Weekday().String()
|
||||
hari = utils.ConvertDay(hari)
|
||||
idDokter, err := dokter.GetJadwalDokterBySubpesialis(hari, subspesialis)
|
||||
idDokter, err := dokter.GetJadwalDokterBySubpesialis(tanggal, subspesialis)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
}
|
||||
|
||||
namaDokter, err := dokter.GetNamaLengkapDokter(idDokter)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
}
|
||||
|
||||
var resDokter []dktr.ResponseDokterNew
|
||||
idSubspesialis, err := strconv.Atoi(subspesialis)
|
||||
if err != nil {
|
||||
@@ -582,7 +573,6 @@ func GetJadwalDokterNew() bool {
|
||||
"X-signature": header.XSignature,
|
||||
"user_key": header.UserKey,
|
||||
}
|
||||
|
||||
kdPoly := value.Kode
|
||||
param := "/jadwaldokter/kodepoli/" + kdPoly + "/tanggal/" + tanggal
|
||||
linkurl := url + param
|
||||
@@ -591,7 +581,6 @@ func GetJadwalDokterNew() bool {
|
||||
log.Println("Error making external API request: %v", err)
|
||||
return false
|
||||
}
|
||||
|
||||
date, errParse := time.Parse("2006-01-02", tanggal)
|
||||
if errParse != nil {
|
||||
return false
|
||||
@@ -602,7 +591,6 @@ func GetJadwalDokterNew() bool {
|
||||
log.Println("Skip Proses")
|
||||
continue
|
||||
}
|
||||
|
||||
jadwalLibur, isLibur, errLibur := jadwal.GetJadwalLibur(tanggal)
|
||||
if errLibur != nil {
|
||||
log.Println(errLibur)
|
||||
@@ -615,20 +603,18 @@ func GetJadwalDokterNew() bool {
|
||||
return false
|
||||
}
|
||||
isLibur = false
|
||||
for j := 0; j < 7; j++ {
|
||||
for i := 0; i < 7; i++ {
|
||||
log.Println(jadwalLibur.NamaLiburPelayanan)
|
||||
tanggalTemp = tanggalTemp.AddDate(0, 0, 7)
|
||||
tanggalTempString := tanggalTemp.Format("2006-01-02")
|
||||
log.Println(tanggalTempString)
|
||||
paramLibur := "/jadwaldokter/kodepoli/" + kdPoly + "/tanggal/" + tanggalTempString
|
||||
linkUrl := url + paramLibur
|
||||
|
||||
resNew, errRes := JadwalDokterGetResponseApi(linkUrl, header, headers)
|
||||
if errRes != nil {
|
||||
log.Println("Error making external API request: ", errRes)
|
||||
return false
|
||||
}
|
||||
|
||||
if resNew != nil {
|
||||
for _, v := range resNew {
|
||||
res = append(res, &jadwal_dokter.ListDokter{
|
||||
@@ -685,600 +671,3 @@ func GetJadwalDokterNew() bool {
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func GetJadwalbaru(*gin.Context) {
|
||||
baseUrl := os.Getenv("BASEURL_BPJS")
|
||||
endpoint := os.Getenv("ANTREAN_RS")
|
||||
url := baseUrl + endpoint
|
||||
log.Println(url)
|
||||
|
||||
conf := config.ConfigBpjs{}
|
||||
|
||||
header := cfg.SetHeader(false, conf)
|
||||
|
||||
headers := map[string]string{
|
||||
"X-cons-id": header.ConsID,
|
||||
"X-timestamp": header.TimeStamp,
|
||||
"X-signature": header.XSignature,
|
||||
"user_key": header.UserKey,
|
||||
}
|
||||
log.Println(headers)
|
||||
|
||||
spesialis, err := dokter.GetSpesialis()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
var listIdSpesialis = make(map[string]int)
|
||||
for _, kodeDokter := range spesialis {
|
||||
listIdSpesialis[kodeDokter.Kode] = kodeDokter.ID
|
||||
break
|
||||
}
|
||||
log.Println(listIdSpesialis)
|
||||
|
||||
subspesialis, err := dokter.GetSubspesialis()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
var listIdSubspesialis = make(map[string]int)
|
||||
for _, kodeDokter := range subspesialis {
|
||||
listIdSubspesialis[kodeDokter.Kode] = kodeDokter.ID
|
||||
}
|
||||
log.Println(listIdSubspesialis)
|
||||
}
|
||||
|
||||
func GetJadwalDokternew() bool {
|
||||
baseUrl := os.Getenv("BASEURL_BPJS")
|
||||
endpoint := os.Getenv("ANTREAN_RS")
|
||||
url := baseUrl + endpoint
|
||||
|
||||
errTruncate := dokter.DeleteJadwalDokter()
|
||||
if errTruncate != nil {
|
||||
log.Println(errTruncate)
|
||||
return false
|
||||
}
|
||||
|
||||
errTruncateTemp := dokter.DeleteJadwalDokterTemp()
|
||||
if errTruncateTemp != nil {
|
||||
log.Println(errTruncateTemp)
|
||||
return false
|
||||
}
|
||||
|
||||
spesialis, err := dokter.GetSpesialis()
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
var listIdSpesialis = make(map[string]int)
|
||||
for _, kodeDokter := range spesialis {
|
||||
listIdSpesialis[kodeDokter.Kode] = kodeDokter.ID
|
||||
}
|
||||
|
||||
subspesialis, err := dokter.GetSubspesialis()
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
var listIdSubspesialis = make(map[string]int)
|
||||
for _, kodeDokter := range subspesialis {
|
||||
listIdSubspesialis[kodeDokter.Kode] = kodeDokter.ID
|
||||
}
|
||||
|
||||
listDokter, err := dokter.GetDokter()
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
var listIddokter = make(map[int]string)
|
||||
for _, kodeDokter := range listDokter {
|
||||
listIddokter[kodeDokter.HfisCode] = kodeDokter.ID
|
||||
}
|
||||
|
||||
var reqInsert *jadwal_dokter.JadwalDokterSatuData
|
||||
|
||||
for _, value := range spesialis {
|
||||
|
||||
tanggal := time.Now().Format("2006-01-02")
|
||||
// tanggal := "2025-04-11"
|
||||
for i := 0; i < 30; i++ {
|
||||
|
||||
tanggalRequest := tanggal
|
||||
|
||||
jadwalLibur, isLibur, errLibur := jadwal.GetJadwalLibur(tanggalRequest)
|
||||
if errLibur != nil {
|
||||
log.Println(errLibur)
|
||||
return false
|
||||
}
|
||||
|
||||
conf := config.ConfigBpjs{}
|
||||
header := cfg.SetHeader(false, conf)
|
||||
headers := map[string]string{
|
||||
"X-cons-id": header.ConsID,
|
||||
"X-timestamp": header.TimeStamp,
|
||||
"X-signature": header.XSignature,
|
||||
"user_key": header.UserKey,
|
||||
}
|
||||
|
||||
kdPoly := value.Kode
|
||||
var res []*jadwal_dokter.ListDokter
|
||||
|
||||
// PERBAIKAN : Logika libur pakai tanggalRequest
|
||||
if isLibur {
|
||||
log.Println("Tanggal", tanggalRequest, "adalah hari libur:", jadwalLibur.NamaLiburPelayanan)
|
||||
|
||||
tanggalTemp, errParseTemp := time.Parse("2006-01-02", tanggalRequest)
|
||||
if errParseTemp != nil {
|
||||
log.Println(errParseTemp)
|
||||
return false
|
||||
}
|
||||
|
||||
foundReplacement := false
|
||||
for j := 1; j <= 7; j++ {
|
||||
tanggalTemp = tanggalTemp.AddDate(0, 0, 7)
|
||||
tanggalTempString := tanggalTemp.Format("2006-01-02")
|
||||
log.Println("Mencoba ambil jadwal pengganti minggu ke-", j, ":", tanggalTempString)
|
||||
|
||||
paramLibur := "/jadwaldokter/kodepoli/" + kdPoly + "/tanggal/" + tanggalTempString
|
||||
linkUrl := url + paramLibur
|
||||
|
||||
resNew, errRes := JadwalDokterGetResponseApi(linkUrl, header, headers)
|
||||
if errRes != nil {
|
||||
log.Println("Error making external API request: ", errRes)
|
||||
return false
|
||||
}
|
||||
|
||||
if resNew != nil && len(resNew) > 0 {
|
||||
res = resNew
|
||||
log.Println("Ada data pengganti pada tanggal", tanggalTempString)
|
||||
foundReplacement = true
|
||||
break
|
||||
} else {
|
||||
log.Println("Tidak ada data pada tanggal", tanggalTempString)
|
||||
}
|
||||
}
|
||||
|
||||
if !foundReplacement {
|
||||
log.Println("Tidak ada jadwal pengganti untuk hari libur", tanggalRequest)
|
||||
// Geser tanggal untuk iterasi berikutnya
|
||||
date, errParse := time.Parse("2006-01-02", tanggal)
|
||||
if errParse != nil {
|
||||
return false
|
||||
}
|
||||
tanggal = date.AddDate(0, 0, 1).Format("2006-01-02")
|
||||
log.Println("Tanggal berikutnya:", tanggal)
|
||||
continue
|
||||
}
|
||||
|
||||
} else {
|
||||
// PERBAIKAN 5: Kalau BUKAN libur, panggil API seperti biasa
|
||||
param := "/jadwaldokter/kodepoli/" + kdPoly + "/tanggal/" + tanggalRequest
|
||||
linkurl := url + param
|
||||
resTemp, err := JadwalDokterGetResponseApi(linkurl, header, headers)
|
||||
if err != nil {
|
||||
log.Println("Error making external API request:", err)
|
||||
return false
|
||||
}
|
||||
|
||||
if resTemp == nil || len(resTemp) == 0 {
|
||||
log.Println("Skip Proses - tidak ada jadwal pada tanggal", tanggalRequest)
|
||||
// Geser tanggal untuk iterasi berikutnya
|
||||
date, errParse := time.Parse("2006-01-02", tanggal)
|
||||
if errParse != nil {
|
||||
return false
|
||||
}
|
||||
tanggal = date.AddDate(0, 0, 1).Format("2006-01-02")
|
||||
log.Println("Tanggal berikutnya:", tanggal)
|
||||
continue
|
||||
}
|
||||
|
||||
res = resTemp
|
||||
}
|
||||
|
||||
// PERBAIKAN 6: Insert jadwal (dari hari normal atau pengganti libur)
|
||||
for _, v := range res {
|
||||
idSpesialis := utils.KodeToIDConverter(v.KodePoli, listIdSpesialis)
|
||||
idSubspesialis := utils.KodeToIDConverter(v.KodeSubspesialis, listIdSubspesialis)
|
||||
idDokter := utils.HfisCodeToIDConverter(v.KodeDokter, listIddokter)
|
||||
reqInsert = &jadwal_dokter.JadwalDokterSatuData{
|
||||
Hari: v.Hari,
|
||||
NamaHari: v.NamaHari,
|
||||
Waktu: v.Jadwal,
|
||||
Dokter: idDokter,
|
||||
Spesialis: idSpesialis,
|
||||
SubSpesialis: idSubspesialis,
|
||||
Status: 1, // When available always set to 1
|
||||
}
|
||||
if reqInsert.Dokter != "" {
|
||||
errInsert := dokter.InsertJadwalDokter(reqInsert)
|
||||
if errInsert != nil {
|
||||
log.Println(errInsert)
|
||||
return false
|
||||
}
|
||||
} else {
|
||||
reqInsert.Dokter = strconv.Itoa(v.KodeDokter)
|
||||
errInsertTemp := dokter.InsertJadwalDokterTemp(reqInsert)
|
||||
if errInsertTemp != nil {
|
||||
log.Println(errInsertTemp)
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PERBAIKAN 7: Geser tanggal di AKHIR setelah semua proses selesai
|
||||
date, errParse := time.Parse("2006-01-02", tanggal)
|
||||
if errParse != nil {
|
||||
return false
|
||||
}
|
||||
tanggal = date.AddDate(0, 0, 1).Format("2006-01-02")
|
||||
log.Println("Tanggal berikutnya:", tanggal)
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func GetJadwalDokterManual(c *gin.Context) {
|
||||
baseUrl := os.Getenv("BASEURL_BPJS")
|
||||
endpoint := os.Getenv("ANTREAN_RS")
|
||||
url := baseUrl + endpoint
|
||||
|
||||
errTruncate := dokter.DeleteJadwalDokter()
|
||||
if errTruncate != nil {
|
||||
log.Println(errTruncate)
|
||||
return
|
||||
}
|
||||
|
||||
errTruncateTemp := dokter.DeleteJadwalDokterTemp()
|
||||
if errTruncateTemp != nil {
|
||||
log.Println(errTruncateTemp)
|
||||
return
|
||||
}
|
||||
|
||||
spesialis, err := dokter.GetSpesialis()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
var listIdSpesialis = make(map[string]int)
|
||||
for _, kodeDokter := range spesialis {
|
||||
listIdSpesialis[kodeDokter.Kode] = kodeDokter.ID
|
||||
}
|
||||
|
||||
subspesialis, err := dokter.GetSubspesialis()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
var listIdSubspesialis = make(map[string]int)
|
||||
for _, kodeDokter := range subspesialis {
|
||||
listIdSubspesialis[kodeDokter.Kode] = kodeDokter.ID
|
||||
}
|
||||
|
||||
listDokter, err := dokter.GetDokter()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
var listIddokter = make(map[int]string)
|
||||
for _, kodeDokter := range listDokter {
|
||||
listIddokter[kodeDokter.HfisCode] = kodeDokter.ID
|
||||
}
|
||||
|
||||
var reqInsert *jadwal_dokter.JadwalDokterSatuData
|
||||
|
||||
for _, value := range spesialis {
|
||||
|
||||
tanggal := time.Now().Format("2006-01-02")
|
||||
// tanggal := "2025-04-11"
|
||||
for i := 0; i < 30; i++ {
|
||||
|
||||
tanggalRequest := tanggal
|
||||
|
||||
jadwalLibur, isLibur, errLibur := jadwal.GetJadwalLibur(tanggalRequest)
|
||||
if errLibur != nil {
|
||||
log.Println(errLibur)
|
||||
return
|
||||
}
|
||||
|
||||
conf := config.ConfigBpjs{}
|
||||
header := cfg.SetHeader(false, conf)
|
||||
headers := map[string]string{
|
||||
"X-cons-id": header.ConsID,
|
||||
"X-timestamp": header.TimeStamp,
|
||||
"X-signature": header.XSignature,
|
||||
"user_key": header.UserKey,
|
||||
}
|
||||
|
||||
kdPoly := value.Kode
|
||||
var res []*jadwal_dokter.ListDokter
|
||||
|
||||
// PERBAIKAN : Logika libur pakai tanggalRequest
|
||||
if isLibur {
|
||||
log.Println("Tanggal", tanggalRequest, "adalah hari libur:", jadwalLibur.NamaLiburPelayanan)
|
||||
|
||||
tanggalTemp, errParseTemp := time.Parse("2006-01-02", tanggalRequest)
|
||||
if errParseTemp != nil {
|
||||
log.Println(errParseTemp)
|
||||
return
|
||||
}
|
||||
|
||||
foundReplacement := false
|
||||
for j := 1; j <= 7; j++ {
|
||||
tanggalTemp = tanggalTemp.AddDate(0, 0, 7)
|
||||
tanggalTempString := tanggalTemp.Format("2006-01-02")
|
||||
log.Println("Mencoba ambil jadwal pengganti minggu ke-", j, ":", tanggalTempString)
|
||||
|
||||
paramLibur := "/jadwaldokter/kodepoli/" + kdPoly + "/tanggal/" + tanggalTempString
|
||||
linkUrl := url + paramLibur
|
||||
|
||||
resNew, errRes := JadwalDokterGetResponseApi(linkUrl, header, headers)
|
||||
if errRes != nil {
|
||||
log.Println("Error making external API request: ", errRes)
|
||||
return
|
||||
}
|
||||
|
||||
if resNew != nil && len(resNew) > 0 {
|
||||
res = resNew
|
||||
log.Println("Ada data pengganti pada tanggal", tanggalTempString)
|
||||
foundReplacement = true
|
||||
break
|
||||
} else {
|
||||
log.Println("Tidak ada data pada tanggal", tanggalTempString)
|
||||
}
|
||||
}
|
||||
|
||||
if !foundReplacement {
|
||||
log.Println("Tidak ada jadwal pengganti untuk hari libur", tanggalRequest)
|
||||
// Geser tanggal untuk iterasi berikutnya
|
||||
date, errParse := time.Parse("2006-01-02", tanggal)
|
||||
if errParse != nil {
|
||||
return
|
||||
}
|
||||
tanggal = date.AddDate(0, 0, 1).Format("2006-01-02")
|
||||
log.Println("Tanggal berikutnya:", tanggal)
|
||||
continue
|
||||
}
|
||||
|
||||
} else {
|
||||
// PERBAIKAN 5: Kalau BUKAN libur, panggil API seperti biasa
|
||||
param := "/jadwaldokter/kodepoli/" + kdPoly + "/tanggal/" + tanggalRequest
|
||||
linkurl := url + param
|
||||
resTemp, err := JadwalDokterGetResponseApi(linkurl, header, headers)
|
||||
if err != nil {
|
||||
log.Println("Error making external API request:", err)
|
||||
return
|
||||
}
|
||||
|
||||
if resTemp == nil || len(resTemp) == 0 {
|
||||
log.Println("Skip Proses - tidak ada jadwal pada tanggal", tanggalRequest)
|
||||
// Geser tanggal untuk iterasi berikutnya
|
||||
date, errParse := time.Parse("2006-01-02", tanggal)
|
||||
if errParse != nil {
|
||||
return
|
||||
}
|
||||
tanggal = date.AddDate(0, 0, 1).Format("2006-01-02")
|
||||
log.Println("Tanggal berikutnya:", tanggal)
|
||||
continue
|
||||
}
|
||||
|
||||
res = resTemp
|
||||
}
|
||||
|
||||
// PERBAIKAN 6: Insert jadwal (dari hari normal atau pengganti libur)
|
||||
for _, v := range res {
|
||||
idSpesialis := utils.KodeToIDConverter(v.KodePoli, listIdSpesialis)
|
||||
idSubspesialis := utils.KodeToIDConverter(v.KodeSubspesialis, listIdSubspesialis)
|
||||
idDokter := utils.HfisCodeToIDConverter(v.KodeDokter, listIddokter)
|
||||
reqInsert = &jadwal_dokter.JadwalDokterSatuData{
|
||||
Hari: v.Hari,
|
||||
NamaHari: v.NamaHari,
|
||||
Waktu: v.Jadwal,
|
||||
Dokter: idDokter,
|
||||
Spesialis: idSpesialis,
|
||||
SubSpesialis: idSubspesialis,
|
||||
Status: 1, // When available always set to 1
|
||||
}
|
||||
if reqInsert.Dokter != "" {
|
||||
errInsert := dokter.InsertJadwalDokter(reqInsert)
|
||||
if errInsert != nil {
|
||||
log.Println(errInsert)
|
||||
return
|
||||
}
|
||||
} else {
|
||||
reqInsert.Dokter = strconv.Itoa(v.KodeDokter)
|
||||
errInsertTemp := dokter.InsertJadwalDokterTemp(reqInsert)
|
||||
if errInsertTemp != nil {
|
||||
log.Println(errInsertTemp)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PERBAIKAN 7: Geser tanggal di AKHIR setelah semua proses selesai
|
||||
date, errParse := time.Parse("2006-01-02", tanggal)
|
||||
if errParse != nil {
|
||||
return
|
||||
}
|
||||
tanggal = date.AddDate(0, 0, 1).Format("2006-01-02")
|
||||
log.Println("Tanggal berikutnya:", tanggal)
|
||||
}
|
||||
}
|
||||
c.JSON(200, gin.H{
|
||||
"code": 200,
|
||||
"massage": "berhasil ambil daftar jadwal dokter",
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
func GetDataJadwalDokterbulanan(c *gin.Context) {
|
||||
baseUrl := os.Getenv("BASEURL_BPJS")
|
||||
endpoint := os.Getenv("ANTREAN_RS")
|
||||
|
||||
conf := config.ConfigBpjs{}
|
||||
|
||||
spesialis, err := dokter.GetSpesialis()
|
||||
if err != nil {
|
||||
log.Println("Error getting spesialis", err)
|
||||
return
|
||||
}
|
||||
|
||||
var listIdSpesialis = make(map[string]int)
|
||||
for _, kodeDokter := range spesialis {
|
||||
listIdSpesialis[kodeDokter.Kode] = kodeDokter.ID
|
||||
}
|
||||
|
||||
subspesialis, err := dokter.GetSubspesialis()
|
||||
if err != nil {
|
||||
log.Println("Error getting subspesialis", err)
|
||||
return
|
||||
}
|
||||
|
||||
var listIdSubspesialis = make(map[string]int)
|
||||
for _, kodeDokter := range subspesialis {
|
||||
listIdSubspesialis[kodeDokter.Kode] = kodeDokter.ID
|
||||
}
|
||||
|
||||
listDokter, err := dokter.GetDokter()
|
||||
if err != nil {
|
||||
log.Println("Error getting dokter", err)
|
||||
return
|
||||
}
|
||||
|
||||
var listIddokter = make(map[int]string)
|
||||
for _, kodeDokter := range listDokter {
|
||||
listIddokter[kodeDokter.HfisCode] = kodeDokter.ID
|
||||
}
|
||||
db := cfg.SatuDataDB
|
||||
errTx := db.Transaction(func(tx *gorm.DB) error {
|
||||
errTruncate := dokter.TruncateDataJadwalDokter()
|
||||
if errTruncate != nil {
|
||||
log.Println(errTruncate)
|
||||
return errTruncate
|
||||
}
|
||||
for _, value := range spesialis {
|
||||
url := baseUrl + endpoint + "/jadwaldokter/kodepoli/" + value.Kode
|
||||
|
||||
header := cfg.SetHeader(false, conf)
|
||||
|
||||
headers := map[string]string{
|
||||
"X-cons-id": header.ConsID,
|
||||
"X-timestamp": header.TimeStamp,
|
||||
"X-signature": header.XSignature,
|
||||
"user_key": header.UserKey,
|
||||
}
|
||||
|
||||
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(), "; ")
|
||||
|
||||
startDate := time.Now()
|
||||
endDate := startDate.AddDate(0, 3, 0)
|
||||
logTimeStart := time.Now().Format("2006-01-02 15:04:05")
|
||||
var res *jadwal_dokter.JadwalDokter
|
||||
var reqLog []*jadwal_dokter.RequestJadwalDokter
|
||||
var resLog []*jadwal_dokter.JadwalDokter
|
||||
|
||||
for current := startDate; current.Before(endDate); current = current.AddDate(0, 0, 1) {
|
||||
tanggal := current.Format("2006-01-02")
|
||||
log.Println("Tanggal :", tanggal)
|
||||
urlReq := url + "/tanggal/" + tanggal
|
||||
|
||||
res, err = JadwalDokterGetResponse(urlReq, header, headers)
|
||||
if err != nil {
|
||||
log.Printf("Error making external API request: %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
reqLog = append(reqLog, &jadwal_dokter.RequestJadwalDokter{
|
||||
KodePoli: value.Kode,
|
||||
Tanggal: tanggal,
|
||||
})
|
||||
|
||||
resLog = append(resLog, &jadwal_dokter.JadwalDokter{
|
||||
Response: res.Response,
|
||||
MetaData: res.MetaData,
|
||||
})
|
||||
|
||||
if res.MetaData.Code != 200 {
|
||||
resLog = append(resLog, &jadwal_dokter.JadwalDokter{
|
||||
Response: res.Response,
|
||||
MetaData: res.MetaData,
|
||||
})
|
||||
continue
|
||||
}
|
||||
|
||||
for _, v := range res.Response {
|
||||
idSpesialis := utils.KodeToIDConverter(v.KodePoli, listIdSpesialis)
|
||||
idSubspesialis := utils.KodeToIDConverter(v.KodeSubspesialis, listIdSubspesialis)
|
||||
idDokter := utils.HfisCodeToIDConverter(v.KodeDokter, listIddokter)
|
||||
reqInsert := &jadwal_dokter.DataJadwalDokterSatuData{
|
||||
ID: uuid.NewString(),
|
||||
DateCreated: logTimeStart,
|
||||
Hari: strconv.Itoa(v.Hari),
|
||||
NamaHari: v.NamaHari,
|
||||
Waktu: v.Jadwal,
|
||||
Dokter: idDokter,
|
||||
Spesialis: idSpesialis,
|
||||
SubSpesialis: idSubspesialis,
|
||||
TanggalJadwal: tanggal,
|
||||
}
|
||||
if reqInsert.Dokter != "" {
|
||||
errInsert := dokter.InsertDataJadwalDokter(tx, reqInsert)
|
||||
if errInsert != nil {
|
||||
log.Println(errInsert)
|
||||
return errInsert
|
||||
}
|
||||
} else {
|
||||
log.Println("Dokter tidak punya HFIS")
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
reqLogJson, errMarshal := json.Marshal(reqLog)
|
||||
if errMarshal != nil {
|
||||
log.Println(errMarshal)
|
||||
return errMarshal
|
||||
}
|
||||
resLogJson, errMarshal2 := json.Marshal(resLog)
|
||||
if errMarshal2 != nil {
|
||||
log.Println(errMarshal2)
|
||||
return errMarshal2
|
||||
}
|
||||
logTimeEnd := time.Now().Format("2006-01-02 15:04:05")
|
||||
reqLogApi := &logapi.DataLogAPI{
|
||||
ID: uuid.NewString(),
|
||||
DateCreated: logTimeEnd,
|
||||
Parameter: "BPJS-AntreanRS-JadwalDokter",
|
||||
Header: headerString,
|
||||
Method: "GET",
|
||||
Url: url,
|
||||
Request: reqLogJson,
|
||||
Respon: resLogJson,
|
||||
ResponCode: strconv.Itoa(res.MetaData.Code),
|
||||
ResponTimeStart: logTimeStart,
|
||||
ResponTimeEnd: logTimeEnd,
|
||||
Comment: res.MetaData.Message,
|
||||
}
|
||||
errLog := log_api.InsertLogAPI(reqLogApi)
|
||||
if errLog != nil {
|
||||
log.Printf("Error making external API request: %v", err)
|
||||
return errLog
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
if errTx != nil {
|
||||
log.Println(errTx)
|
||||
return
|
||||
}
|
||||
log.Println("Berhasil ambil jadwal data dokter")
|
||||
c.JSON(200, gin.H{
|
||||
"code": 200,
|
||||
"massage": "berhasil ambil data jadwal dokter",
|
||||
})
|
||||
return
|
||||
}
|
||||
@@ -1,322 +0,0 @@
|
||||
package bpjs
|
||||
|
||||
import (
|
||||
sk "bridging-rssa/models/bpjs/surat_kontrol"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"net/http"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func HandleResponse(c *gin.Context, res *sk.Response) {
|
||||
code, err := strconv.Atoi(res.MetaData.Code)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "Invalid status code"})
|
||||
return
|
||||
}
|
||||
|
||||
// Map status codes ke HTTP status constants
|
||||
switch code {
|
||||
// 1xx Informational
|
||||
case 100:
|
||||
c.JSON(http.StatusContinue, res.MetaData)
|
||||
case 101:
|
||||
c.JSON(http.StatusSwitchingProtocols, res.MetaData)
|
||||
case 102:
|
||||
c.JSON(http.StatusProcessing, res.MetaData)
|
||||
case 103:
|
||||
c.JSON(http.StatusEarlyHints, res.MetaData)
|
||||
|
||||
// 2xx Success
|
||||
//case 200:
|
||||
// c.JSON(http.StatusOK, &sk.Response{
|
||||
// MetaData: sk.MetadataString{
|
||||
// Code: res.MetaData.Code,
|
||||
// Message: res.MetaData.Message,
|
||||
// },
|
||||
// })
|
||||
case 200:
|
||||
c.JSON(http.StatusOK, res.MetaData)
|
||||
case 201:
|
||||
c.JSON(http.StatusCreated, res.MetaData)
|
||||
case 202:
|
||||
c.JSON(http.StatusAccepted, res.MetaData)
|
||||
case 203:
|
||||
c.JSON(http.StatusNonAuthoritativeInfo, res.MetaData)
|
||||
case 204:
|
||||
c.JSON(http.StatusNoContent, res.MetaData)
|
||||
case 205:
|
||||
c.JSON(http.StatusResetContent, res.MetaData)
|
||||
case 206:
|
||||
c.JSON(http.StatusPartialContent, res.MetaData)
|
||||
case 207:
|
||||
c.JSON(http.StatusMultiStatus, res.MetaData)
|
||||
case 208:
|
||||
c.JSON(http.StatusAlreadyReported, res.MetaData)
|
||||
case 226:
|
||||
c.JSON(http.StatusIMUsed, res.MetaData)
|
||||
|
||||
// 3xx Redirection
|
||||
case 300:
|
||||
c.JSON(http.StatusMultipleChoices, res.MetaData)
|
||||
case 301:
|
||||
c.JSON(http.StatusMovedPermanently, res.MetaData)
|
||||
case 302:
|
||||
c.JSON(http.StatusFound, res.MetaData)
|
||||
case 303:
|
||||
c.JSON(http.StatusSeeOther, res.MetaData)
|
||||
case 304:
|
||||
c.JSON(http.StatusNotModified, res.MetaData)
|
||||
case 305:
|
||||
c.JSON(http.StatusUseProxy, res.MetaData)
|
||||
case 307:
|
||||
c.JSON(http.StatusTemporaryRedirect, res.MetaData)
|
||||
case 308:
|
||||
c.JSON(http.StatusPermanentRedirect, res.MetaData)
|
||||
|
||||
// 4xx Client Error
|
||||
case 400:
|
||||
c.JSON(http.StatusBadRequest, res.MetaData)
|
||||
case 401:
|
||||
c.JSON(http.StatusUnauthorized, res.MetaData)
|
||||
case 402:
|
||||
c.JSON(http.StatusPaymentRequired, res.MetaData)
|
||||
case 403:
|
||||
c.JSON(http.StatusForbidden, res.MetaData)
|
||||
case 404:
|
||||
c.JSON(http.StatusNotFound, res.MetaData)
|
||||
case 405:
|
||||
c.JSON(http.StatusMethodNotAllowed, res.MetaData)
|
||||
case 406:
|
||||
c.JSON(http.StatusNotAcceptable, res.MetaData)
|
||||
case 407:
|
||||
c.JSON(http.StatusProxyAuthRequired, res.MetaData)
|
||||
case 408:
|
||||
c.JSON(http.StatusRequestTimeout, res.MetaData)
|
||||
case 409:
|
||||
c.JSON(http.StatusConflict, res.MetaData)
|
||||
case 410:
|
||||
c.JSON(http.StatusGone, res.MetaData)
|
||||
case 411:
|
||||
c.JSON(http.StatusLengthRequired, res.MetaData)
|
||||
case 412:
|
||||
c.JSON(http.StatusPreconditionFailed, res.MetaData)
|
||||
case 413:
|
||||
c.JSON(http.StatusRequestEntityTooLarge, res.MetaData)
|
||||
case 414:
|
||||
c.JSON(http.StatusRequestURITooLong, res.MetaData)
|
||||
case 415:
|
||||
c.JSON(http.StatusUnsupportedMediaType, res.MetaData)
|
||||
case 416:
|
||||
c.JSON(http.StatusRequestedRangeNotSatisfiable, res.MetaData)
|
||||
case 417:
|
||||
c.JSON(http.StatusExpectationFailed, res.MetaData)
|
||||
case 418:
|
||||
c.JSON(http.StatusTeapot, res.MetaData)
|
||||
case 421:
|
||||
c.JSON(http.StatusMisdirectedRequest, res.MetaData)
|
||||
case 422:
|
||||
c.JSON(http.StatusUnprocessableEntity, res.MetaData)
|
||||
case 425:
|
||||
c.JSON(http.StatusTooEarly, res.MetaData)
|
||||
case 423:
|
||||
c.JSON(http.StatusLocked, res.MetaData)
|
||||
case 424:
|
||||
c.JSON(http.StatusFailedDependency, res.MetaData)
|
||||
|
||||
case 426:
|
||||
c.JSON(http.StatusUpgradeRequired, res.MetaData)
|
||||
case 428:
|
||||
c.JSON(http.StatusPreconditionRequired, res.MetaData)
|
||||
case 429:
|
||||
c.JSON(http.StatusTooManyRequests, res.MetaData)
|
||||
case 431:
|
||||
c.JSON(http.StatusRequestHeaderFieldsTooLarge, res.MetaData)
|
||||
case 451:
|
||||
c.JSON(http.StatusUnavailableForLegalReasons, res.MetaData)
|
||||
|
||||
// 5xx Server Error
|
||||
case 500:
|
||||
c.JSON(http.StatusInternalServerError, res.MetaData)
|
||||
case 501:
|
||||
c.JSON(http.StatusNotImplemented, res.MetaData)
|
||||
case 502:
|
||||
c.JSON(http.StatusBadGateway, res.MetaData)
|
||||
case 503:
|
||||
c.JSON(http.StatusServiceUnavailable, res.MetaData)
|
||||
case 504:
|
||||
c.JSON(http.StatusGatewayTimeout, res.MetaData)
|
||||
case 505:
|
||||
c.JSON(http.StatusHTTPVersionNotSupported, res.MetaData)
|
||||
case 506:
|
||||
c.JSON(http.StatusVariantAlsoNegotiates, res.MetaData)
|
||||
case 507:
|
||||
c.JSON(http.StatusInsufficientStorage, res.MetaData)
|
||||
case 508:
|
||||
c.JSON(http.StatusLoopDetected, res.MetaData)
|
||||
case 510:
|
||||
c.JSON(http.StatusNotExtended, res.MetaData)
|
||||
case 511:
|
||||
c.JSON(http.StatusNetworkAuthenticationRequired, res.MetaData)
|
||||
|
||||
// Default case untuk status code yang tidak dikenali
|
||||
default:
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "Unknown status code"})
|
||||
}
|
||||
}
|
||||
|
||||
func HandleResponseSPRI(c *gin.Context, res *sk.Responsespri) {
|
||||
code, err := strconv.Atoi(res.MetaData.Code)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "Invalid status code"})
|
||||
return
|
||||
}
|
||||
|
||||
// Map status codes ke HTTP status constants
|
||||
switch code {
|
||||
// 1xx Informational
|
||||
case 100:
|
||||
c.JSON(http.StatusContinue, res.MetaData)
|
||||
case 101:
|
||||
c.JSON(http.StatusSwitchingProtocols, res.MetaData)
|
||||
case 102:
|
||||
c.JSON(http.StatusProcessing, res.MetaData)
|
||||
case 103:
|
||||
c.JSON(http.StatusEarlyHints, res.MetaData)
|
||||
|
||||
// 2xx Success
|
||||
//case 200:
|
||||
// c.JSON(http.StatusOK, &sk.Response{
|
||||
// MetaData: sk.MetadataString{
|
||||
// Code: res.MetaData.Code,
|
||||
// Message: res.MetaData.Message,
|
||||
// },
|
||||
// })
|
||||
case 200:
|
||||
c.JSON(http.StatusOK, res.MetaData)
|
||||
case 201:
|
||||
c.JSON(http.StatusCreated, res.MetaData)
|
||||
case 202:
|
||||
c.JSON(http.StatusAccepted, res.MetaData)
|
||||
case 203:
|
||||
c.JSON(http.StatusNonAuthoritativeInfo, res.MetaData)
|
||||
case 204:
|
||||
c.JSON(http.StatusNoContent, res.MetaData)
|
||||
case 205:
|
||||
c.JSON(http.StatusResetContent, res.MetaData)
|
||||
case 206:
|
||||
c.JSON(http.StatusPartialContent, res.MetaData)
|
||||
case 207:
|
||||
c.JSON(http.StatusMultiStatus, res.MetaData)
|
||||
case 208:
|
||||
c.JSON(http.StatusAlreadyReported, res.MetaData)
|
||||
case 226:
|
||||
c.JSON(http.StatusIMUsed, res.MetaData)
|
||||
|
||||
// 3xx Redirection
|
||||
case 300:
|
||||
c.JSON(http.StatusMultipleChoices, res.MetaData)
|
||||
case 301:
|
||||
c.JSON(http.StatusMovedPermanently, res.MetaData)
|
||||
case 302:
|
||||
c.JSON(http.StatusFound, res.MetaData)
|
||||
case 303:
|
||||
c.JSON(http.StatusSeeOther, res.MetaData)
|
||||
case 304:
|
||||
c.JSON(http.StatusNotModified, res.MetaData)
|
||||
case 305:
|
||||
c.JSON(http.StatusUseProxy, res.MetaData)
|
||||
case 307:
|
||||
c.JSON(http.StatusTemporaryRedirect, res.MetaData)
|
||||
case 308:
|
||||
c.JSON(http.StatusPermanentRedirect, res.MetaData)
|
||||
|
||||
// 4xx Client Error
|
||||
case 400:
|
||||
c.JSON(http.StatusBadRequest, res.MetaData)
|
||||
case 401:
|
||||
c.JSON(http.StatusUnauthorized, res.MetaData)
|
||||
case 402:
|
||||
c.JSON(http.StatusPaymentRequired, res.MetaData)
|
||||
case 403:
|
||||
c.JSON(http.StatusForbidden, res.MetaData)
|
||||
case 404:
|
||||
c.JSON(http.StatusNotFound, res.MetaData)
|
||||
case 405:
|
||||
c.JSON(http.StatusMethodNotAllowed, res.MetaData)
|
||||
case 406:
|
||||
c.JSON(http.StatusNotAcceptable, res.MetaData)
|
||||
case 407:
|
||||
c.JSON(http.StatusProxyAuthRequired, res.MetaData)
|
||||
case 408:
|
||||
c.JSON(http.StatusRequestTimeout, res.MetaData)
|
||||
case 409:
|
||||
c.JSON(http.StatusConflict, res.MetaData)
|
||||
case 410:
|
||||
c.JSON(http.StatusGone, res.MetaData)
|
||||
case 411:
|
||||
c.JSON(http.StatusLengthRequired, res.MetaData)
|
||||
case 412:
|
||||
c.JSON(http.StatusPreconditionFailed, res.MetaData)
|
||||
case 413:
|
||||
c.JSON(http.StatusRequestEntityTooLarge, res.MetaData)
|
||||
case 414:
|
||||
c.JSON(http.StatusRequestURITooLong, res.MetaData)
|
||||
case 415:
|
||||
c.JSON(http.StatusUnsupportedMediaType, res.MetaData)
|
||||
case 416:
|
||||
c.JSON(http.StatusRequestedRangeNotSatisfiable, res.MetaData)
|
||||
case 417:
|
||||
c.JSON(http.StatusExpectationFailed, res.MetaData)
|
||||
case 418:
|
||||
c.JSON(http.StatusTeapot, res.MetaData)
|
||||
case 421:
|
||||
c.JSON(http.StatusMisdirectedRequest, res.MetaData)
|
||||
case 422:
|
||||
c.JSON(http.StatusUnprocessableEntity, res.MetaData)
|
||||
case 423:
|
||||
c.JSON(http.StatusLocked, res.MetaData)
|
||||
case 424:
|
||||
c.JSON(http.StatusFailedDependency, res.MetaData)
|
||||
case 425:
|
||||
c.JSON(http.StatusTooEarly, res.MetaData)
|
||||
case 426:
|
||||
c.JSON(http.StatusUpgradeRequired, res.MetaData)
|
||||
case 428:
|
||||
c.JSON(http.StatusPreconditionRequired, res.MetaData)
|
||||
case 429:
|
||||
c.JSON(http.StatusTooManyRequests, res.MetaData)
|
||||
case 431:
|
||||
c.JSON(http.StatusRequestHeaderFieldsTooLarge, res.MetaData)
|
||||
case 451:
|
||||
c.JSON(http.StatusUnavailableForLegalReasons, res.MetaData)
|
||||
|
||||
// 5xx Server Error
|
||||
case 500:
|
||||
c.JSON(http.StatusInternalServerError, res.MetaData)
|
||||
case 501:
|
||||
c.JSON(http.StatusNotImplemented, res.MetaData)
|
||||
case 502:
|
||||
c.JSON(http.StatusBadGateway, res.MetaData)
|
||||
case 503:
|
||||
c.JSON(http.StatusServiceUnavailable, res.MetaData)
|
||||
case 504:
|
||||
c.JSON(http.StatusGatewayTimeout, res.MetaData)
|
||||
case 505:
|
||||
c.JSON(http.StatusHTTPVersionNotSupported, res.MetaData)
|
||||
case 506:
|
||||
c.JSON(http.StatusVariantAlsoNegotiates, res.MetaData)
|
||||
case 507:
|
||||
c.JSON(http.StatusInsufficientStorage, res.MetaData)
|
||||
case 508:
|
||||
c.JSON(http.StatusLoopDetected, res.MetaData)
|
||||
case 510:
|
||||
c.JSON(http.StatusNotExtended, res.MetaData)
|
||||
case 511:
|
||||
c.JSON(http.StatusNetworkAuthenticationRequired, res.MetaData)
|
||||
|
||||
// Default case untuk status code yang tidak dikenali
|
||||
default:
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "Unknown status code"})
|
||||
}
|
||||
}
|
||||
@@ -14,108 +14,6 @@ import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
func PostDataSPRI(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.Responsespri, error) {
|
||||
log.Println("URL", url)
|
||||
|
||||
reqMarshall, err := json.Marshal(request)
|
||||
if err != nil {
|
||||
log.Printf("Error json marshal: %v", err)
|
||||
}
|
||||
|
||||
log.Println("REQUEST: ", string(reqMarshall))
|
||||
|
||||
req, err := http.NewRequest("POST", url, bytes.NewReader(reqMarshall))
|
||||
if err != nil {
|
||||
log.Printf("Error creating request: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for key, value := range headers {
|
||||
req.Header.Set(key, value)
|
||||
}
|
||||
|
||||
log.Println("REQ", req.Header)
|
||||
client := http.Client{}
|
||||
|
||||
responses := &suratkontrol.Responsespri{}
|
||||
response, err := client.Do(req)
|
||||
if err != nil {
|
||||
responses.MetaData.Code = "203"
|
||||
responses.MetaData.Message = err.Error()
|
||||
log.Printf("Error making external API request: %v", err)
|
||||
log.Println("responses: ", responses)
|
||||
return responses, err
|
||||
}
|
||||
log.Println("RESPONSE: ", response)
|
||||
|
||||
if response.StatusCode == http.StatusGatewayTimeout { // 504
|
||||
errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi")
|
||||
log.Printf("error : %v", errMsg)
|
||||
responses.MetaData.Code = "504"
|
||||
responses.MetaData.Message = errMsg.Error()
|
||||
log.Println("responses: ", responses)
|
||||
return responses, errMsg
|
||||
}
|
||||
|
||||
key := header.ConsID + header.SecretKey + header.TimeStamp
|
||||
res, err := io.ReadAll(response.Body)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
log.Println("Res:", string(res))
|
||||
|
||||
var resSuratKontrolRaw suratkontrol.ResponseRaw
|
||||
err = json.Unmarshal([]byte(string(res)), &resSuratKontrolRaw)
|
||||
if err != nil {
|
||||
log.Printf("Error Unmarshaling: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
log.Println("ResponseRaw : ", resSuratKontrolRaw)
|
||||
|
||||
if resSuratKontrolRaw.MetaData.Code != "200" {
|
||||
if resSuratKontrolRaw.MetaData.Message == "Gagal simpan! Nomor SEP Sudah pernah digunakan!." {
|
||||
message := "Gagal simpan! Nomor SEP pernah diterbitkan Surat Kontrol!."
|
||||
resSuratKontrolRaw.MetaData.Message = message
|
||||
log.Println("masuk sini kan")
|
||||
} else if resSuratKontrolRaw.MetaData.Message == "Gagal simpan! Poli Tujuan Kontrol tidak sama dengan Poli Asal Rujukan Awal." {
|
||||
message := "Surat kontrol gagal diterbitkan, pastikan klinik tujuan sama dengan klinik asal pada rujukan awal"
|
||||
resSuratKontrolRaw.MetaData.Message = message
|
||||
}
|
||||
log.Printf("error : %v", resSuratKontrolRaw.MetaData.Message)
|
||||
responses.MetaData.Code = resSuratKontrolRaw.MetaData.Code
|
||||
responses.MetaData.Message = resSuratKontrolRaw.MetaData.Message
|
||||
errMsg := errors.New(resSuratKontrolRaw.MetaData.Message)
|
||||
log.Println("responses: ", responses)
|
||||
return responses, errMsg
|
||||
}
|
||||
|
||||
dataResp, err := docs.StringDecrypt(key, resSuratKontrolRaw.Response)
|
||||
if err != nil {
|
||||
log.Printf("Error Decrypt: %v", err)
|
||||
log.Println("res: ", dataResp)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var resSuratKontrol suratkontrol.ResponseSuratKontrolSPRI
|
||||
|
||||
log.Println("dataresp: ", dataResp)
|
||||
|
||||
err = json.Unmarshal([]byte(dataResp), &resSuratKontrol)
|
||||
if err != nil {
|
||||
log.Printf("Error Decode: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
responses = &suratkontrol.Responsespri{
|
||||
MetaData: resSuratKontrolRaw.MetaData,
|
||||
Response: resSuratKontrol,
|
||||
}
|
||||
|
||||
return responses, nil
|
||||
}
|
||||
func PostData(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.Response, error) {
|
||||
log.Println("URL", url)
|
||||
|
||||
@@ -159,15 +57,6 @@ func PostData(url string, header *config.Header, headers map[string]string, requ
|
||||
return responses, errMsg
|
||||
}
|
||||
|
||||
if response.StatusCode == http.StatusInternalServerError { // 500
|
||||
errMsg := errors.New("Server BPJS Down")
|
||||
log.Printf("error : %v", errMsg)
|
||||
responses.MetaData.Code = "500"
|
||||
responses.MetaData.Message = errMsg.Error()
|
||||
log.Println("responses: ", responses)
|
||||
return responses, errMsg
|
||||
}
|
||||
|
||||
key := header.ConsID + header.SecretKey + header.TimeStamp
|
||||
res, err := io.ReadAll(response.Body)
|
||||
if err != nil {
|
||||
@@ -327,105 +216,7 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s
|
||||
|
||||
return responses, nil
|
||||
}
|
||||
func ResponseUpdateSuratKontrolSPRI(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.Responsespri, error) {
|
||||
log.Println("URL", url)
|
||||
|
||||
reqMarshall, err := json.Marshal(request)
|
||||
if err != nil {
|
||||
log.Printf("Error json marshal: %v", err)
|
||||
}
|
||||
|
||||
log.Println("REQUEST: ", string(reqMarshall))
|
||||
|
||||
req, err := http.NewRequest("PUT", url, bytes.NewReader(reqMarshall))
|
||||
if err != nil {
|
||||
log.Printf("Error creating request: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for key, value := range headers {
|
||||
req.Header.Set(key, value)
|
||||
}
|
||||
|
||||
log.Println("REQ", req.Header)
|
||||
client := http.Client{}
|
||||
responses := &suratkontrol.Responsespri{}
|
||||
response, err := client.Do(req)
|
||||
if err != nil {
|
||||
responses.MetaData.Code = "504"
|
||||
responses.MetaData.Message = err.Error()
|
||||
log.Println("responses: ", responses)
|
||||
log.Printf("Error making external API request: %v", err)
|
||||
return responses, err
|
||||
}
|
||||
log.Println("RESPONSE: ", response)
|
||||
|
||||
if response.StatusCode == http.StatusGatewayTimeout { // 504
|
||||
errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi")
|
||||
log.Printf("error : %v", errMsg)
|
||||
responses.MetaData.Code = "504"
|
||||
responses.MetaData.Message = errMsg.Error()
|
||||
log.Println("responses: ", responses)
|
||||
return responses, err
|
||||
}
|
||||
|
||||
log.Println("RESPONSE: ", response)
|
||||
|
||||
key := header.ConsID + header.SecretKey + header.TimeStamp
|
||||
res, err := io.ReadAll(response.Body)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var resSuratKontrolRaw suratkontrol.ResponseRawUpper
|
||||
err = json.Unmarshal([]byte(res), &resSuratKontrolRaw)
|
||||
if err != nil {
|
||||
log.Printf("Error Unmarshaling: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if resSuratKontrolRaw.MetaData.Code != "200" {
|
||||
if resSuratKontrolRaw.MetaData.Message == "Gagal simpan! Nomor SEP Sudah pernah digunakan!." {
|
||||
message := "Gagal simpan! Nomor SEP pernah diterbitkan Surat Kontrol!."
|
||||
resSuratKontrolRaw.MetaData.Message = message
|
||||
log.Println("masuk sini kan")
|
||||
} else if strings.Contains(strings.ToLower(resSuratKontrolRaw.MetaData.Message), "gagal simpan") {
|
||||
message := "Surat kontrol gagal diterbitkan, pastikan klinik tujuan sama dengan klinik asal pada rujukan awal"
|
||||
resSuratKontrolRaw.MetaData.Message = message
|
||||
}
|
||||
log.Printf("error : %v", resSuratKontrolRaw.MetaData.Message)
|
||||
responses.MetaData.Code = resSuratKontrolRaw.MetaData.Code
|
||||
responses.MetaData.Message = resSuratKontrolRaw.MetaData.Message
|
||||
errMsg := errors.New(resSuratKontrolRaw.MetaData.Message)
|
||||
log.Println("responses: ", responses)
|
||||
return responses, errMsg
|
||||
}
|
||||
|
||||
dataResp, err := docs.StringDecrypt(key, resSuratKontrolRaw.Response)
|
||||
if err != nil {
|
||||
log.Printf("Error Decrypt: %v", err)
|
||||
log.Println("res: ", dataResp)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var resSuratKontrol *suratkontrol.ResponseSuratKontrolSPRI
|
||||
|
||||
log.Println("dataresp: ", dataResp)
|
||||
|
||||
err = json.Unmarshal([]byte(dataResp), &resSuratKontrol)
|
||||
if err != nil {
|
||||
log.Printf("Error Decode: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
responses = &suratkontrol.Responsespri{
|
||||
MetaData: resSuratKontrolRaw.MetaData,
|
||||
Response: *resSuratKontrol,
|
||||
}
|
||||
|
||||
return responses, nil
|
||||
}
|
||||
func ResponseDeleteSuratKontrol(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.Response, error) {
|
||||
log.Println("URL", url)
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7,16 +7,15 @@ import (
|
||||
"bridging-rssa/handlers/bpjs/jadwal_dokter"
|
||||
suratkontrol "bridging-rssa/handlers/bpjs/surat_kontrol"
|
||||
"github.com/gin-contrib/cors"
|
||||
"github.com/robfig/cron/v3"
|
||||
swaggerFiles "github.com/swaggo/files"
|
||||
ginSwagger "github.com/swaggo/gin-swagger"
|
||||
"log"
|
||||
|
||||
_ "bridging-rssa/docs"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/joho/godotenv"
|
||||
//cron "github.com/robfig/cron/v3"
|
||||
cron "github.com/robfig/cron/v3"
|
||||
swaggerFiles "github.com/swaggo/files"
|
||||
ginSwagger "github.com/swaggo/gin-swagger"
|
||||
)
|
||||
|
||||
// @title Crud User
|
||||
@@ -40,30 +39,24 @@ func main() {
|
||||
AllowHeaders: []string{"Origin", "Content-Type"},
|
||||
AllowCredentials: true,
|
||||
}))
|
||||
|
||||
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||
r.POST("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||
r.PUT("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||
r.DELETE("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||
|
||||
scheduler := cron.New()
|
||||
|
||||
defer scheduler.Stop()
|
||||
|
||||
// SCHEDULE HARIAN
|
||||
scheduler.AddFunc("10 4 * * *", func() {
|
||||
scheduler.AddFunc("15 2 * * *", func() {
|
||||
log.Println("=== RUNNING SCHEDULE GET JADWAL DOKTER ===")
|
||||
for {
|
||||
success := jadwal_dokter.GetJadwalDokternew()
|
||||
success := jadwal_dokter.GetJadwalDokterNew()
|
||||
if success {
|
||||
log.Println("=== SCHEDULE GET JADWAL HARIAN DOKTER DONE ===")
|
||||
log.Println("=== SCHEDULE GET JADWAL DOKTER DONE ===")
|
||||
break
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
//SCHEDULE TIAP 3 BULAN
|
||||
scheduler.AddFunc("35 4 * * 2", func() {
|
||||
scheduler.AddFunc("20 2 * * 5", func() {
|
||||
log.Println("=== RUNNING SCHEDULE GET JADWAL DOKTER MONTHLY===")
|
||||
for {
|
||||
success := jadwal_dokter.GetDataJadwalDokter()
|
||||
@@ -82,16 +75,10 @@ func main() {
|
||||
{
|
||||
subspesialis.GET("/", bpjs.GetAllSubspesialis)
|
||||
}
|
||||
test := v1.Group("/test")
|
||||
{
|
||||
test.GET("/test", jadwal_dokter.GetJadwalbaru)
|
||||
}
|
||||
|
||||
//API UNTUK JADWAL DOKTER
|
||||
jadwalDokter := v1.Group("/jadwaldokter")
|
||||
{
|
||||
jadwalDokter.GET("/daftar", jadwal_dokter.GetJadwalDokterManual)
|
||||
jadwalDokter.GET("/data", jadwal_dokter.GetDataJadwalDokterbulanan)
|
||||
jadwalDokter.GET("/date/:tanggal", jadwal_dokter.GetJadwalDokter)
|
||||
jadwalDokter.GET("/dpjp/:dpjp", jadwal_dokter.GetDokterByDPJP)
|
||||
jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetJadwalSubspesialisByDate)
|
||||
@@ -104,22 +91,15 @@ func main() {
|
||||
{
|
||||
suratKontrol.GET("/offset/:offset/limit/:limit", suratkontrol.GetDataSurKon)
|
||||
suratKontrol.GET("/idxdaftar/:idxdaftar/tiperawat/:tiperawat", suratkontrol.GetDataSurKonByID)
|
||||
suratKontrol.GET("datapasien/idxdaftar/:idxdaftar/tiperawat/:tiperawat", suratkontrol.NewGetDataSurKonByID)
|
||||
suratKontrol.GET("/preview/idxdaftar/:idxdaftar/nomorsurkon/:nomorsurkon", suratkontrol.GetDataSurKonByNoSurkon)
|
||||
suratKontrol.GET("/previewbyid/idxdaftar/:idxdaftar/id/:id", suratkontrol.GetDataSurKonByIDSurkon)
|
||||
suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol)
|
||||
suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP)
|
||||
suratKontrol.GET("/printSurKon/:idxdaftar/tiperawat/:tiperawat", suratkontrol.PrintSurKon)
|
||||
suratKontrol.POST("/cari", suratkontrol.CariPasienTPP)
|
||||
suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol)
|
||||
suratKontrol.POST("/insertnew", suratkontrol.InsertSuratkontrolNew)
|
||||
suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol)
|
||||
suratKontrol.POST("/delete", suratkontrol.DeleteSuratKontrol)
|
||||
suratKontrol.GET("/norm/:norm/limit/:limit/offset/:offset", suratkontrol.GethistoribyNorm)
|
||||
suratKontrol.POST("/insertsurkon", suratkontrol.InsertSuratkontrolNew)
|
||||
suratKontrol.PUT("/updatesurkon", suratkontrol.UpdateSuratKontrolnew)
|
||||
suratKontrol.POST("/deletesurkon", suratkontrol.DeleteSuratKontrolNew)
|
||||
suratKontrol.POST("/parse", suratkontrol.Parse)
|
||||
suratKontrol.POST("/IDX", suratkontrol.Coba)
|
||||
}
|
||||
|
||||
iCare := v1.Group("/icare")
|
||||
@@ -127,16 +107,13 @@ func main() {
|
||||
iCare.POST("/rs/validate", icare.GetFKRTL)
|
||||
iCare.POST("/pcare/validate", icare.GetFKTP)
|
||||
}
|
||||
|
||||
Spri := v1.Group("/spri")
|
||||
{
|
||||
Spri.POST("/insert", suratkontrol.InsertSpri)
|
||||
Spri.PUT("/update", suratkontrol.UpdateSpri)
|
||||
Spri.DELETE("/delete", suratkontrol.DeleteSpri)
|
||||
}
|
||||
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||
r.POST("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||
r.PUT("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||
r.DELETE("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||
|
||||
log.Println("JALAN DI PORT : 8080")
|
||||
err = r.Run(":8080")
|
||||
err = r.Run(":8083")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
@@ -23,35 +23,3 @@ type KunjunganPasien struct {
|
||||
DisplayDiagnosisPrimerUtama string `gorm:"column:Display_diagnosis_primer_utama" json:"Display_diagnosis_primer_utama"`
|
||||
NomorRM string `gorm:"column:No_rm" json:"No_rm"`
|
||||
}
|
||||
|
||||
type Addmission struct {
|
||||
ID int `gorm:"column:id_admission" json:"id"`
|
||||
Nomr string `gorm:"column:nomr" json:"nomr"`
|
||||
DokterPengirim int `gorm:"column:dokterpengirim" json:"dokterpengirim"`
|
||||
NoSEP string `gorm:"column:nosep" json:"no_sep"`
|
||||
NamaLengkap string `gorm:"column:nama" json:"namalengkap"`
|
||||
NoKTP string `gorm:"column:noktp" json:"noktp"`
|
||||
MasukRS string `gorm:"column:masukrs" json:"masukrs"`
|
||||
}
|
||||
|
||||
type Pendaftaran struct {
|
||||
ID int `gorm:"column:idxdaftar" json:"idxdaftar"`
|
||||
Nomr string `gorm:"column:nomr" json:"nomr"`
|
||||
DokterPengirim int `gorm:"column:kddokter" json:"kddokter"`
|
||||
NoSEP string `gorm:"column:nosep" json:"nosep"`
|
||||
NamaLengkap string `gorm:"column:nama" json:"namalengkap"`
|
||||
NoKTP string `gorm:"column:noktp" json:"noktp"`
|
||||
MasukRS string `gorm:"column:jamreg" json:"jamreg"`
|
||||
}
|
||||
|
||||
type InsertKunjunganPasien struct {
|
||||
ID string `gorm:"column:id" json:"id"`
|
||||
IdxDaftar int `gorm:"column:IDXDAFTAR" json:"idxdaftar"`
|
||||
Nomr string `gorm:"column:NOMR" json:"nomr"`
|
||||
NamaLengkap string `gorm:"column:Nama_lengkap" json:"namalengkap"`
|
||||
NIK string `gorm:"column:NIK" json:"nik"`
|
||||
DPJP string `gorm:"column:DPJP" json:"dpjp"`
|
||||
TanggalMasuk string `gorm:"column:Tanggal_masuk" json:"tanggalmasuk"`
|
||||
JamMasuk string `gorm:"column:Jam_masuk" json:"jammasuk"`
|
||||
DateCreated string `gorm:"column:date_created" json:"date_created"`
|
||||
}
|
||||
@@ -21,14 +21,6 @@ type ReqUpdateRencanaKontrol struct {
|
||||
User string `json:"user"`
|
||||
}
|
||||
|
||||
type ReqUpdateRencanaKontrolspri struct {
|
||||
NoSPRI string `json:"noSPRI"`
|
||||
KodeDokter string `json:"kodeDokter"`
|
||||
PoliKontrol string `json:"poliKontrol"`
|
||||
TglRencanaKontrol string `json:"tglRencanaKontrol"`
|
||||
User string `json:"user"`
|
||||
}
|
||||
|
||||
type RequestInsertRencanaKontrol struct {
|
||||
IDXDaftar string `json:"idxdaftar"`
|
||||
NoSEP string `json:"noSEP"`
|
||||
@@ -45,6 +37,7 @@ type RequestInsertRencanaKontrol struct {
|
||||
TipeRawat string `json:"tipe_rawat"`
|
||||
Ruangan string `json:"ruangan"`
|
||||
}
|
||||
|
||||
type ReqDeleteRencanaKontrol struct {
|
||||
IDDataSurKon string `json:"id_surat_kontrol"`
|
||||
NomorSurKon string `json:"Nomor_surat_kontrol"`
|
||||
@@ -52,12 +45,6 @@ type ReqDeleteRencanaKontrol struct {
|
||||
TipeSurKon string `json:"tipe_surkon"`
|
||||
}
|
||||
|
||||
type ReqDeleteRencanaKontrolSPRI struct {
|
||||
IDDataSurKon string `json:"id_surat_kontrol"`
|
||||
NomorSurKon string `json:"Nomor_surat_kontrol"`
|
||||
User string `json:"user"`
|
||||
TipeSurKon string `json:"tipe_surkon"`
|
||||
}
|
||||
type RequestUpdateRencanaKontrol struct {
|
||||
IDXDaftar string `json:"idxdaftar"`
|
||||
IDSurKon string `json:"idSurKon"`
|
||||
@@ -74,29 +61,6 @@ type RequestUpdateRencanaKontrol struct {
|
||||
TipeRawat string `json:"tipe_rawat"`
|
||||
}
|
||||
|
||||
type RequestUpdateRencanaKontrolNew struct {
|
||||
IDXDaftar string `json:"idxdaftar"`
|
||||
IDSurKon string `json:"idSurKon"`
|
||||
NoSuratKontrol string `json:"noSuratKontrol"`
|
||||
NoSEP string `json:"noSEP"`
|
||||
KodeHFIS string `json:"kodeHFIS"`
|
||||
KodePoli string `json:"kodePoli"`
|
||||
TglRencanaKontrol string `json:"tglRencanaKontrol"`
|
||||
User string `json:"user"`
|
||||
TipeSurKon string `json:"tipe_surkon"`
|
||||
TipeRawat string `json:"tipe_rawat"`
|
||||
}
|
||||
type RequestUpdateRencanaKontrolspri struct {
|
||||
IDXDaftar string `json:"idxdaftar"`
|
||||
IDSurKon string `json:"idSurKon"`
|
||||
NoSPRI string `json:"noSuratKontrol"`
|
||||
KodeHFIS string `json:"kodeHFIS"`
|
||||
KodePoli string `json:"kodePoli"`
|
||||
TglRencanaKontrol string `json:"tglRencanaKontrol"`
|
||||
User string `json:"user"`
|
||||
TipeSurKon string `json:"tipe_surkon"`
|
||||
TipeRawat string `json:"tipe_rawat"`
|
||||
}
|
||||
type TSuratKontrol struct {
|
||||
RequestDelete RequestDeleteRencanaKontrol `json:"t_suratkontrol"`
|
||||
}
|
||||
@@ -146,11 +110,6 @@ type Response struct {
|
||||
Response ResponseSuratKontrol `json:"response"`
|
||||
}
|
||||
|
||||
type Responsespri struct {
|
||||
MetaData MetadataString `json:"metadata"`
|
||||
Response ResponseSuratKontrolSPRI `json:"response"`
|
||||
}
|
||||
|
||||
type ResponseUpper struct {
|
||||
MetaData MetadataString `json:"metaData"`
|
||||
Response ResponseSuratKontrol `json:"response"`
|
||||
@@ -183,16 +142,6 @@ type ResponseSuratKontrol struct {
|
||||
TglLahir string `json:"tglLahir"`
|
||||
NamaDiagnosa string `json:"namaDiagnosa"`
|
||||
}
|
||||
type ResponseSuratKontrolSPRI struct {
|
||||
NoSPRI string `json:"noSPRI"`
|
||||
TglRencanaKontrol string `json:"tglRencanaKontrol"`
|
||||
NamaDokter string `json:"namaDokter"`
|
||||
NoKartu string `json:"noKartu"`
|
||||
Nama string `json:"nama"`
|
||||
Kelamin string `json:"kelamin"`
|
||||
TglLahir string `json:"tglLahir"`
|
||||
NamaDiagnosa string `json:"namaDiagnosa"`
|
||||
}
|
||||
|
||||
type RequestRencanaKontrol struct {
|
||||
IDXDaftar string `json:"idxdaftar"`
|
||||
@@ -262,9 +211,6 @@ type DataSuratKontrol struct {
|
||||
TglCetakSurKon string `gorm:"column:Tanggal_cetak_surat_kontrol" json:"Tanggal_cetak_surat_kontrol"`
|
||||
TglRencanaKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"`
|
||||
NomorSurKon string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_kontrol"`
|
||||
NomorKartu string `gorm:"column:Nomor_kartu" json:"Nomor_kartu"`
|
||||
KodeIcd string `gorm:"column:Kode_icd" json:"Kode_icd"`
|
||||
Diagnosa string `gorm:"column:Diagnosa" json:"Diagnosa"`
|
||||
KunjunganPasien string `gorm:"column:Kunjungan_pasien" json:"Kunjungan_pasien"`
|
||||
RuanganSurKon int `gorm:"column:Ruangan_surat_kontrol" json:"Ruangan_surat_kontrol"`
|
||||
DPJPSurKon string `gorm:"column:DPJP_surat_kontrol" json:"DPJP_surat_kontrol"`
|
||||
@@ -273,7 +219,6 @@ type DataSuratKontrol struct {
|
||||
TipeSurKon string `gorm:"column:Tipe_surat_kontrol" json:"Tipe_surat_kontrol"`
|
||||
UserUpdatedSurKon string `gorm:"column:User_updated_surat_kontrol" json:"User_updated_surat_kontrol"`
|
||||
TipeRawat string `gorm:"column:Tipe_rawat" json:"Tipe_rawat"`
|
||||
IdxDaftarSurkon string `gorm:"column:Idxdaftar_surat_kontrol" json:"IdxDaftar_surkon"`
|
||||
}
|
||||
|
||||
type ResponseSuratKontrolBySEP struct {
|
||||
@@ -310,10 +255,7 @@ type GetDataSuratKontrol struct {
|
||||
NoRM string `gorm:"column:No_rm" json:"No_rm"`
|
||||
KodeDiagnosa string `gorm:"column:Kode_diagnosa" json:"Kode_diagnosa"`
|
||||
NamaDiagnosa string `gorm:"column:Nama_diagnosa" json:"Nama_diagnosa"`
|
||||
KodeIcd string `gorm:"column:Kode_icd" json:"Kode_icd"`
|
||||
Diagnosa string `gorm:"column:Diagnosa" json:"Diagnosa"`
|
||||
TipeSurKon string `gorm:"column:Tipe_SurKon" json:"Tipe_SurKon"`
|
||||
TipeRawat string `gorm:"column:Tipe_rawat" json:"Tipe_rawat"`
|
||||
User string `gorm:"column:User" json:"User"`
|
||||
}
|
||||
|
||||
@@ -338,10 +280,7 @@ type ResponseGetDataSuratKontrol struct {
|
||||
NoRM string `json:"No_rm"`
|
||||
KodeDiagnosa string `json:"Kode_diagnosa"`
|
||||
NamaDiagnosa string `json:"Nama_diagnosa"`
|
||||
KodeIcd string `json:"Kode_icd"`
|
||||
Diagnosa string `json:"Diagnosa"`
|
||||
TipeSurKon string `json:"Tipe_SurKon"`
|
||||
TipeRawat string `json:"Tipe_rawat"`
|
||||
User string `json:"User"`
|
||||
}
|
||||
|
||||
@@ -375,7 +314,6 @@ type HistoriSurkon struct {
|
||||
NamaDokter string `gorm:"column:Nama_lengkap_dokter" json:"Nama_dokter"`
|
||||
GelarBelakang string `gorm:"column:gelarbelakang" json:"Gelar_belakang"`
|
||||
Tiperawat string `gorm:"column:Tipe_rawat" json:"Tipe_rawat"`
|
||||
TipeSurkon string `gorm:"column:Tipe_surat_kontrol" json:"Tipe_surat_kontrol"`
|
||||
UserCreate string `gorm:"column:User_created_surat_kontrol" json:"User_create"`
|
||||
UserUpdate string `gorm:"column:User_updated_surat_kontrol" json:"User_update"`
|
||||
Status string `gorm:"column:Status_surat_kontrol" json:"Status_surat_kontrol"`
|
||||
@@ -393,59 +331,7 @@ type Dataresponse struct {
|
||||
Subspesialis string `json:"Subspesialis"`
|
||||
NamaLengkap string `json:"Dpjp"`
|
||||
Tiperawat string `json:"Tipe_rawat"`
|
||||
TipeSurkon string `json:"Tipe_surat_kontrol"`
|
||||
UserCreate string `json:"User_create"`
|
||||
UserUpdate string `json:"User_update"`
|
||||
Status string `json:"Status_surat_kontrol"`
|
||||
}
|
||||
type RequestInsertSPRI struct {
|
||||
NoKartu string `json:"noKartu"`
|
||||
IDXDaftar string `json:"idxdaftar"`
|
||||
NoRM string `json:"noRM"`
|
||||
KodeHFIS string `json:"kodeHFIS"`
|
||||
KodePoli string `json:"kodePoli"`
|
||||
TglRencanaKontrol string `json:"tglRencanaKontrol"`
|
||||
User string `json:"user"`
|
||||
KodeDiagnosa string `json:"Kode_diagnosa"`
|
||||
NamaDiagnosa string `json:"Nama_diagnosa"`
|
||||
TipeSurKon string `json:"tipe_surkon"`
|
||||
TipeRawat string `json:"tipe_rawat"`
|
||||
Ruangan string `json:"ruangan"`
|
||||
}
|
||||
|
||||
type ReqInsertSPRIbpjs struct {
|
||||
NoKartu string `json:"noKartu"`
|
||||
KodeDokter string `json:"kodeDokter"`
|
||||
PoliKontrol string `json:"poliKontrol"`
|
||||
TglRencanaKontrol string `json:"tglRencanaKontrol"`
|
||||
User string `json:"user"`
|
||||
}
|
||||
type ResponseInsertSuratKontrolSPRI struct {
|
||||
MetaData MetadataString `json:"metaData"`
|
||||
Response ResponseDataSPRI `json:"response"`
|
||||
}
|
||||
|
||||
type ResponseDataSPRI struct {
|
||||
NoSPRI string `json:"noSPRI"`
|
||||
TglRencanaKontrol string `json:"tglRencanaKontrol"`
|
||||
NamaDokter string `json:"namaDokter"`
|
||||
NoKartu string `json:"noKartu"`
|
||||
Nama string `json:"nama"`
|
||||
Kelamin string `json:"kelamin"`
|
||||
TglLahir string `json:"tglLahir"`
|
||||
NamaDiagnosa string `json:"namaDiagnosa"`
|
||||
}
|
||||
|
||||
type Created struct {
|
||||
UserCreate string `gorm:"column:User_created_surat_kontrol" json:"User_created_surat_kontrol"`
|
||||
DataCreate string `gorm:"column:date_created" json:"date_created"`
|
||||
TanggalKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"`
|
||||
}
|
||||
|
||||
type Parse struct {
|
||||
Diagnosa string `json:"diagnosa"`
|
||||
}
|
||||
|
||||
type IDXDAFTAR struct {
|
||||
IDXDAFTAR string `json:"IDXDAFTAR"`
|
||||
}
|
||||
Reference in New Issue
Block a user