Compare commits
| Author | SHA256 | Date | |
|---|---|---|---|
|
|
b1bd324e54 |
@@ -4,17 +4,11 @@ SATUDATA_PASSWORD=stim*RS54
|
|||||||
SATUDATA_NAME=satu_db
|
SATUDATA_NAME=satu_db
|
||||||
SATUDATA_PORT=5000
|
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
|
BASEURL_BPJS=https://apijkn.bpjs-kesehatan.go.id
|
||||||
ANTREAN_RS=/antreanrs
|
ANTREAN_RS=/antreanrs
|
||||||
CONS_ID=5257
|
CONS_ID=5257
|
||||||
USER_KEY=4cf1cbef8c008440bbe9ef9ba789e482
|
USER_KEY=4cf1cbef8c008440bbe9ef9ba789e482
|
||||||
SECRET_KEY=UKu0o2wLB3
|
SECRET_KEY=1bV363512D
|
||||||
|
|
||||||
CONS_ID_DEV=16041
|
CONS_ID_DEV=16041
|
||||||
USER_KEY_DEV=467a2817fde5070f66c9a41fbeb8dc2c
|
USER_KEY_DEV=467a2817fde5070f66c9a41fbeb8dc2c
|
||||||
@@ -38,5 +32,4 @@ GET_NOMOR_RUJUKAN_BATCH=/Rujukan/List/Peserta/
|
|||||||
GET_FKRTL=/api/rs/validate
|
GET_FKRTL=/api/rs/validate
|
||||||
GET_FKTP=/api/pcare/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/main .
|
||||||
COPY --from=builder /app/.env .
|
COPY --from=builder /app/.env .
|
||||||
EXPOSE 8080
|
EXPOSE 8083
|
||||||
CMD ["./main"]
|
CMD ["./main"]
|
||||||
@@ -17,7 +17,6 @@ import (
|
|||||||
|
|
||||||
var DB *gorm.DB
|
var DB *gorm.DB
|
||||||
var SatuDataDB *gorm.DB
|
var SatuDataDB *gorm.DB
|
||||||
var DBsimrs *gorm.DB
|
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
func ConnectDB() {
|
func ConnectDB() {
|
||||||
@@ -27,12 +26,6 @@ func ConnectDB() {
|
|||||||
dbNameSatuData := os.Getenv("SATUDATA_NAME")
|
dbNameSatuData := os.Getenv("SATUDATA_NAME")
|
||||||
portSatuData := os.Getenv("SATUDATA_PORT")
|
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)
|
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{})
|
SatuDataDB, err = gorm.Open(postgres.Open(satuData), &gorm.Config{})
|
||||||
@@ -41,16 +34,6 @@ func ConnectDB() {
|
|||||||
} else {
|
} else {
|
||||||
log.Println("Successfully connected to the database")
|
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 {
|
func SetHeader(isIcare bool, cfg config.ConfigBpjs) *config.Header {
|
||||||
|
|||||||
@@ -69,9 +69,9 @@ func GetJadwalDokterBySpesialis(hari string, spesialis string) ([]string, error)
|
|||||||
return listDokter, nil
|
return listDokter, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetJadwalDokterBySubpesialis(hari string, subspesialis string) ([]string, error) {
|
func GetJadwalDokterBySubpesialis(tanggal string, subspesialis string) ([]string, error) {
|
||||||
var listDokter []string
|
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 {
|
if errSelect != nil {
|
||||||
log.Printf("Failed get data : %v", errSelect)
|
log.Printf("Failed get data : %v", errSelect)
|
||||||
return nil, errSelect
|
return nil, errSelect
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package logapi
|
|||||||
import (
|
import (
|
||||||
"bridging-rssa/config"
|
"bridging-rssa/config"
|
||||||
logapi "bridging-rssa/models/log_api"
|
logapi "bridging-rssa/models/log_api"
|
||||||
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -30,5 +31,7 @@ func InsertLogAPI(reqInsert *logapi.DataLogAPI) error {
|
|||||||
log.Println(err)
|
log.Println(err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
log.Println(err)
|
||||||
|
fmt.Printf("insert log: ", err)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -4,76 +4,11 @@ import (
|
|||||||
"bridging-rssa/config"
|
"bridging-rssa/config"
|
||||||
suratkontrol "bridging-rssa/models/bpjs/surat_kontrol"
|
suratkontrol "bridging-rssa/models/bpjs/surat_kontrol"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
|
||||||
"log"
|
"log"
|
||||||
|
|
||||||
"gorm.io/gorm"
|
"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) {
|
func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, error) {
|
||||||
var kunjunganPasien *suratkontrol.KunjunganPasien
|
var kunjunganPasien *suratkontrol.KunjunganPasien
|
||||||
err := config.SatuDataDB.Raw(`select dkp."id", dkp."IDXDAFTAR" as idxdaftar, dkp."Nomor_sep" as nomorsep,
|
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)
|
log.Println("Req Insert Database : ", reqInsert)
|
||||||
insertQuery := `insert into "data_surat_kontrol" ("id", "date_created", "Tanggal_cetak_surat_kontrol", "Tanggal_rencana_kontrol",
|
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",
|
"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")
|
"User_created_surat_kontrol", "Tipe_surat_kontrol", "User_updated_surat_kontrol", "Tipe_rawat")
|
||||||
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?,?)`
|
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`
|
||||||
err := config.SatuDataDB.Exec(insertQuery,
|
err := config.SatuDataDB.Exec(insertQuery,
|
||||||
reqInsert.ID,
|
reqInsert.ID,
|
||||||
reqInsert.DateCreated,
|
reqInsert.DateCreated,
|
||||||
@@ -137,9 +72,6 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.DataSuratKontrol) error {
|
|||||||
reqInsert.TipeSurKon,
|
reqInsert.TipeSurKon,
|
||||||
reqInsert.UserUpdatedSurKon,
|
reqInsert.UserUpdatedSurKon,
|
||||||
reqInsert.TipeRawat,
|
reqInsert.TipeRawat,
|
||||||
reqInsert.NomorKartu,
|
|
||||||
reqInsert.KodeIcd,
|
|
||||||
reqInsert.Diagnosa,
|
|
||||||
).Error
|
).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
@@ -151,7 +83,7 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.DataSuratKontrol) error {
|
|||||||
func GetDataSuratKontrol(offset, limit string) ([]*suratkontrol.GetDataSuratKontrol, error) {
|
func GetDataSuratKontrol(offset, limit string) ([]*suratkontrol.GetDataSuratKontrol, error) {
|
||||||
var dataSurKon []*suratkontrol.GetDataSuratKontrol
|
var dataSurKon []*suratkontrol.GetDataSuratKontrol
|
||||||
err := config.SatuDataDB.Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",
|
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"
|
(select dlr."Nama"
|
||||||
from data_kunjungan_pasien dkp
|
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",
|
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."Diagnosis_primer_utama" as "Kode_diagnosa",
|
||||||
dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa",
|
dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa",
|
||||||
dsk."Tipe_surat_kontrol" as "Tipe_SurKon",
|
dsk."Tipe_surat_kontrol" as "Tipe_SurKon",
|
||||||
dsk."User_created_surat_kontrol" as "User",
|
dsk."User_created_surat_kontrol" as "User"
|
||||||
dsk."Kode_icd",
|
|
||||||
dsk."Diagnosa",
|
|
||||||
dsk."Nomor_kartu",
|
|
||||||
dsk."Tipe_rawat"
|
|
||||||
from data_surat_kontrol dsk
|
from data_surat_kontrol dsk
|
||||||
left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien"
|
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 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
|
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) {
|
func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontrol, error) {
|
||||||
var dataSurKon *suratkontrol.GetDataSuratKontrol
|
var dataSurKon *suratkontrol.GetDataSuratKontrol
|
||||||
err := config.SatuDataDB.Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",
|
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."Diagnosis_primer_utama" as "Kode_diagnosa",
|
||||||
dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa",
|
dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa",
|
||||||
dsk."Tipe_surat_kontrol" as "Tipe_SurKon",
|
dsk."Tipe_surat_kontrol" as "Tipe_SurKon",
|
||||||
dsk."User_created_surat_kontrol" as "User",
|
dsk."User_created_surat_kontrol" as "User"
|
||||||
dsk."Tipe_rawat",
|
|
||||||
dsk."Nomor_kartu"
|
|
||||||
from data_surat_kontrol dsk
|
from data_surat_kontrol dsk
|
||||||
left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien"
|
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 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_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id"
|
||||||
left join data_ktp dk on dp."KTP" = dk. "id"
|
left join data_ktp dk on dp."KTP" = dk. "id"
|
||||||
left join daftar_subspesialis ds on dp."Subspesialis" = ds."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 err != nil {
|
||||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||||
errMsg := errors.New("Data tidak ada")
|
errMsg := errors.New("Data tidak ada")
|
||||||
@@ -505,24 +232,6 @@ func UpdateDataSuratKontrol(reqUpdate *suratkontrol.DataSuratKontrol) error {
|
|||||||
return nil
|
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) {
|
func GetIDXDaftarBySurKon(idSurKon string) (string, error) {
|
||||||
var idxDaftar string
|
var idxDaftar string
|
||||||
err := config.SatuDataDB.Raw(`select dkp."IDXDAFTAR"
|
err := config.SatuDataDB.Raw(`select dkp."IDXDAFTAR"
|
||||||
@@ -576,8 +285,7 @@ func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []i
|
|||||||
dkp2."NOMR" as "No_rm",
|
dkp2."NOMR" as "No_rm",
|
||||||
dkp2."Diagnosis_primer_utama" as "Kode_diagnosa",
|
dkp2."Diagnosis_primer_utama" as "Kode_diagnosa",
|
||||||
dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa",
|
dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa",
|
||||||
dsk."Tipe_surat_kontrol" as "Tipe_SurKon2",
|
dsk."Tipe_surat_kontrol" as "Tipe_SurKon"
|
||||||
dsk."Tipe_rawat"
|
|
||||||
from data_surat_kontrol dsk
|
from data_surat_kontrol dsk
|
||||||
left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien"
|
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 daftar_lokasi_ruang dlr on dsk."Ruangan_surat_kontrol" = dlr."id"
|
||||||
@@ -626,22 +334,10 @@ func GetNomorSurKon(idPasien string) (string, error) {
|
|||||||
return noSurKon, nil
|
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) {
|
func Getdatahistori(norm string, offset, limit string) ([]*suratkontrol.HistoriSurkon, error) {
|
||||||
var dataHistoriSurKon []*suratkontrol.HistoriSurkon
|
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",
|
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(
|
array(
|
||||||
select dgd. "Gelar_depan"
|
select dgd. "Gelar_depan"
|
||||||
from data_pegawai_daftar_gelar_depan dpdgd
|
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 data_ktp dk on dp."KTP" = dk. "id"
|
||||||
left join daftar_subspesialis ds on dp."Subspesialis" = ds."id"
|
left join daftar_subspesialis ds on dp."Subspesialis" = ds."id"
|
||||||
left join daftar_spesialis ds2 on ds."FK_daftar_spesialis_ID" = ds2."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 err != nil {
|
||||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||||
errMsg := errors.New("data tidak ada")
|
errMsg := errors.New("data tidak ada")
|
||||||
|
|||||||
+2
-2
@@ -7,7 +7,7 @@ services:
|
|||||||
container_name: api-rssa
|
container_name: api-rssa
|
||||||
restart: always
|
restart: always
|
||||||
ports:
|
ports:
|
||||||
- 8080:8080
|
- 8083:8083
|
||||||
volumes:
|
volumes:
|
||||||
- .:/app
|
- .:/app
|
||||||
- /etc/localtime:/etc/localtime:ro
|
- /etc/localtime:/etc/localtime:ro
|
||||||
@@ -31,7 +31,7 @@ services:
|
|||||||
- BASEURL_BPJS=https://apijkn.bpjs-kesehatan.go.id/
|
- BASEURL_BPJS=https://apijkn.bpjs-kesehatan.go.id/
|
||||||
- CONS_ID=5257
|
- CONS_ID=5257
|
||||||
- USER_KEY=4cf1cbef8c008440bbe9ef9ba789e482
|
- USER_KEY=4cf1cbef8c008440bbe9ef9ba789e482
|
||||||
- SECRET_KEY=UKu0o2wLB3
|
- SECRET_KEY=1bV363512D
|
||||||
# SERVICE ANTROL
|
# SERVICE ANTROL
|
||||||
- ANTREAN_RS=antreanrs
|
- ANTREAN_RS=antreanrs
|
||||||
# BPJS VCLAIM
|
# BPJS VCLAIM
|
||||||
|
|||||||
@@ -3,11 +3,12 @@ module bridging-rssa
|
|||||||
go 1.23.0
|
go 1.23.0
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/andrean360/bridging-bpjs-go v1.0.1
|
||||||
github.com/daku10/go-lz-string v0.0.6
|
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/gin-gonic/gin v1.10.0
|
||||||
github.com/joho/godotenv v1.5.1
|
github.com/joho/godotenv v1.5.1
|
||||||
github.com/mashingan/smapping v0.1.19
|
github.com/mashingan/smapping v0.1.19
|
||||||
|
github.com/rs/cors v1.11.1
|
||||||
github.com/swaggo/files v1.0.1
|
github.com/swaggo/files v1.0.1
|
||||||
github.com/swaggo/gin-swagger v1.6.0
|
github.com/swaggo/gin-swagger v1.6.0
|
||||||
github.com/swaggo/swag v1.16.3
|
github.com/swaggo/swag v1.16.3
|
||||||
@@ -22,6 +23,7 @@ require (
|
|||||||
github.com/cloudwego/iasm v0.2.0 // indirect
|
github.com/cloudwego/iasm v0.2.0 // indirect
|
||||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
||||||
github.com/gabriel-vasile/mimetype v1.4.5 // 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/gin-contrib/sse v0.1.0 // indirect
|
||||||
github.com/go-openapi/jsonpointer v0.21.0 // indirect
|
github.com/go-openapi/jsonpointer v0.21.0 // indirect
|
||||||
github.com/go-openapi/jsonreference 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/leodido/go-urn v1.4.0 // indirect
|
||||||
github.com/mailru/easyjson v0.7.7 // indirect
|
github.com/mailru/easyjson v0.7.7 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.20 // 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/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||||
github.com/pelletier/go-toml/v2 v2.2.3 // 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 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc=
|
||||||
github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE=
|
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 h1:oaMFuRTpMHYLpCntGca65YWt5ny+wAceDERTkT2L9lg=
|
||||||
github.com/bytedance/sonic v1.12.2/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk=
|
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=
|
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/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 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
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-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 h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
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/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 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
|
||||||
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
|
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.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.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
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) {
|
func GetDokterBySpesialis(c *gin.Context) {
|
||||||
spesialis := c.Param("spesialis")
|
spesialis := c.Param("spesialis")
|
||||||
tanggal := c.Param("tanggal")
|
tanggal := c.Param("tanggal")
|
||||||
|
|
||||||
date, err := time.Parse("2006-01-02", tanggal)
|
date, err := time.Parse("2006-01-02", tanggal)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusInternalServerError, err)
|
c.JSON(http.StatusInternalServerError, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
hari := date.Local().Weekday().String()
|
hari := date.Local().Weekday().String()
|
||||||
hari = utils.ConvertDay(hari)
|
hari = utils.ConvertDay(hari)
|
||||||
|
|
||||||
idDokter, err := dokter.GetJadwalDokterBySpesialis(hari, spesialis)
|
idDokter, err := dokter.GetJadwalDokterBySpesialis(hari, spesialis)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusInternalServerError, err)
|
c.JSON(http.StatusInternalServerError, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
namaDokter, err := dokter.GetNamaLengkapDokter(idDokter)
|
namaDokter, err := dokter.GetNamaLengkapDokter(idDokter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusInternalServerError, err)
|
c.JSON(http.StatusInternalServerError, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var resDokter []dktr.ResponseDokter
|
var resDokter []dktr.ResponseDokter
|
||||||
idSpesialis, err := strconv.Atoi(spesialis)
|
idSpesialis, err := strconv.Atoi(spesialis)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -300,24 +295,20 @@ func GetDokterBySpesialis(c *gin.Context) {
|
|||||||
func GetDokterBySubspesialis(c *gin.Context) {
|
func GetDokterBySubspesialis(c *gin.Context) {
|
||||||
subspesialis := c.Param("subspesialis")
|
subspesialis := c.Param("subspesialis")
|
||||||
tanggal := c.Param("tanggal")
|
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("subspesialis: ", subspesialis)
|
||||||
log.Println("tanggal: ", tanggal)
|
log.Println("tanggal: ", tanggal)
|
||||||
|
|
||||||
hari := date.Local().Weekday().String()
|
idDokter, err := dokter.GetJadwalDokterBySubpesialis(tanggal, subspesialis)
|
||||||
hari = utils.ConvertDay(hari)
|
|
||||||
idDokter, err := dokter.GetJadwalDokterBySubpesialis(hari, subspesialis)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusInternalServerError, err)
|
c.JSON(http.StatusInternalServerError, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
namaDokter, err := dokter.GetNamaLengkapDokter(idDokter)
|
namaDokter, err := dokter.GetNamaLengkapDokter(idDokter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusInternalServerError, err)
|
c.JSON(http.StatusInternalServerError, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var resDokter []dktr.ResponseDokterNew
|
var resDokter []dktr.ResponseDokterNew
|
||||||
idSubspesialis, err := strconv.Atoi(subspesialis)
|
idSubspesialis, err := strconv.Atoi(subspesialis)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -582,7 +573,6 @@ func GetJadwalDokterNew() bool {
|
|||||||
"X-signature": header.XSignature,
|
"X-signature": header.XSignature,
|
||||||
"user_key": header.UserKey,
|
"user_key": header.UserKey,
|
||||||
}
|
}
|
||||||
|
|
||||||
kdPoly := value.Kode
|
kdPoly := value.Kode
|
||||||
param := "/jadwaldokter/kodepoli/" + kdPoly + "/tanggal/" + tanggal
|
param := "/jadwaldokter/kodepoli/" + kdPoly + "/tanggal/" + tanggal
|
||||||
linkurl := url + param
|
linkurl := url + param
|
||||||
@@ -591,7 +581,6 @@ func GetJadwalDokterNew() bool {
|
|||||||
log.Println("Error making external API request: %v", err)
|
log.Println("Error making external API request: %v", err)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
date, errParse := time.Parse("2006-01-02", tanggal)
|
date, errParse := time.Parse("2006-01-02", tanggal)
|
||||||
if errParse != nil {
|
if errParse != nil {
|
||||||
return false
|
return false
|
||||||
@@ -602,7 +591,6 @@ func GetJadwalDokterNew() bool {
|
|||||||
log.Println("Skip Proses")
|
log.Println("Skip Proses")
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
jadwalLibur, isLibur, errLibur := jadwal.GetJadwalLibur(tanggal)
|
jadwalLibur, isLibur, errLibur := jadwal.GetJadwalLibur(tanggal)
|
||||||
if errLibur != nil {
|
if errLibur != nil {
|
||||||
log.Println(errLibur)
|
log.Println(errLibur)
|
||||||
@@ -615,20 +603,18 @@ func GetJadwalDokterNew() bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
isLibur = false
|
isLibur = false
|
||||||
for j := 0; j < 7; j++ {
|
for i := 0; i < 7; i++ {
|
||||||
log.Println(jadwalLibur.NamaLiburPelayanan)
|
log.Println(jadwalLibur.NamaLiburPelayanan)
|
||||||
tanggalTemp = tanggalTemp.AddDate(0, 0, 7)
|
tanggalTemp = tanggalTemp.AddDate(0, 0, 7)
|
||||||
tanggalTempString := tanggalTemp.Format("2006-01-02")
|
tanggalTempString := tanggalTemp.Format("2006-01-02")
|
||||||
log.Println(tanggalTempString)
|
log.Println(tanggalTempString)
|
||||||
paramLibur := "/jadwaldokter/kodepoli/" + kdPoly + "/tanggal/" + tanggalTempString
|
paramLibur := "/jadwaldokter/kodepoli/" + kdPoly + "/tanggal/" + tanggalTempString
|
||||||
linkUrl := url + paramLibur
|
linkUrl := url + paramLibur
|
||||||
|
|
||||||
resNew, errRes := JadwalDokterGetResponseApi(linkUrl, header, headers)
|
resNew, errRes := JadwalDokterGetResponseApi(linkUrl, header, headers)
|
||||||
if errRes != nil {
|
if errRes != nil {
|
||||||
log.Println("Error making external API request: ", errRes)
|
log.Println("Error making external API request: ", errRes)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
if resNew != nil {
|
if resNew != nil {
|
||||||
for _, v := range resNew {
|
for _, v := range resNew {
|
||||||
res = append(res, &jadwal_dokter.ListDokter{
|
res = append(res, &jadwal_dokter.ListDokter{
|
||||||
@@ -685,600 +671,3 @@ func GetJadwalDokterNew() bool {
|
|||||||
}
|
}
|
||||||
return true
|
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"
|
"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) {
|
func PostData(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.Response, error) {
|
||||||
log.Println("URL", url)
|
log.Println("URL", url)
|
||||||
|
|
||||||
@@ -159,15 +57,6 @@ func PostData(url string, header *config.Header, headers map[string]string, requ
|
|||||||
return responses, errMsg
|
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
|
key := header.ConsID + header.SecretKey + header.TimeStamp
|
||||||
res, err := io.ReadAll(response.Body)
|
res, err := io.ReadAll(response.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -327,105 +216,7 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s
|
|||||||
|
|
||||||
return responses, nil
|
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) {
|
func ResponseDeleteSuratKontrol(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.Response, error) {
|
||||||
log.Println("URL", url)
|
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"
|
"bridging-rssa/handlers/bpjs/jadwal_dokter"
|
||||||
suratkontrol "bridging-rssa/handlers/bpjs/surat_kontrol"
|
suratkontrol "bridging-rssa/handlers/bpjs/surat_kontrol"
|
||||||
"github.com/gin-contrib/cors"
|
"github.com/gin-contrib/cors"
|
||||||
"github.com/robfig/cron/v3"
|
|
||||||
swaggerFiles "github.com/swaggo/files"
|
|
||||||
ginSwagger "github.com/swaggo/gin-swagger"
|
|
||||||
"log"
|
"log"
|
||||||
|
|
||||||
_ "bridging-rssa/docs"
|
_ "bridging-rssa/docs"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/joho/godotenv"
|
"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
|
// @title Crud User
|
||||||
@@ -40,30 +39,24 @@ func main() {
|
|||||||
AllowHeaders: []string{"Origin", "Content-Type"},
|
AllowHeaders: []string{"Origin", "Content-Type"},
|
||||||
AllowCredentials: true,
|
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()
|
scheduler := cron.New()
|
||||||
|
|
||||||
defer scheduler.Stop()
|
defer scheduler.Stop()
|
||||||
|
|
||||||
// SCHEDULE HARIAN
|
// SCHEDULE HARIAN
|
||||||
scheduler.AddFunc("10 4 * * *", func() {
|
scheduler.AddFunc("15 2 * * *", func() {
|
||||||
log.Println("=== RUNNING SCHEDULE GET JADWAL DOKTER ===")
|
log.Println("=== RUNNING SCHEDULE GET JADWAL DOKTER ===")
|
||||||
for {
|
for {
|
||||||
success := jadwal_dokter.GetJadwalDokternew()
|
success := jadwal_dokter.GetJadwalDokterNew()
|
||||||
if success {
|
if success {
|
||||||
log.Println("=== SCHEDULE GET JADWAL HARIAN DOKTER DONE ===")
|
log.Println("=== SCHEDULE GET JADWAL DOKTER DONE ===")
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
//SCHEDULE TIAP 3 BULAN
|
//SCHEDULE TIAP 3 BULAN
|
||||||
scheduler.AddFunc("35 4 * * 2", func() {
|
scheduler.AddFunc("20 2 * * 5", func() {
|
||||||
log.Println("=== RUNNING SCHEDULE GET JADWAL DOKTER MONTHLY===")
|
log.Println("=== RUNNING SCHEDULE GET JADWAL DOKTER MONTHLY===")
|
||||||
for {
|
for {
|
||||||
success := jadwal_dokter.GetDataJadwalDokter()
|
success := jadwal_dokter.GetDataJadwalDokter()
|
||||||
@@ -82,16 +75,10 @@ func main() {
|
|||||||
{
|
{
|
||||||
subspesialis.GET("/", bpjs.GetAllSubspesialis)
|
subspesialis.GET("/", bpjs.GetAllSubspesialis)
|
||||||
}
|
}
|
||||||
test := v1.Group("/test")
|
|
||||||
{
|
|
||||||
test.GET("/test", jadwal_dokter.GetJadwalbaru)
|
|
||||||
}
|
|
||||||
|
|
||||||
//API UNTUK JADWAL DOKTER
|
//API UNTUK JADWAL DOKTER
|
||||||
jadwalDokter := v1.Group("/jadwaldokter")
|
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("/date/:tanggal", jadwal_dokter.GetJadwalDokter)
|
||||||
jadwalDokter.GET("/dpjp/:dpjp", jadwal_dokter.GetDokterByDPJP)
|
jadwalDokter.GET("/dpjp/:dpjp", jadwal_dokter.GetDokterByDPJP)
|
||||||
jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetJadwalSubspesialisByDate)
|
jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetJadwalSubspesialisByDate)
|
||||||
@@ -104,22 +91,15 @@ func main() {
|
|||||||
{
|
{
|
||||||
suratKontrol.GET("/offset/:offset/limit/:limit", suratkontrol.GetDataSurKon)
|
suratKontrol.GET("/offset/:offset/limit/:limit", suratkontrol.GetDataSurKon)
|
||||||
suratKontrol.GET("/idxdaftar/:idxdaftar/tiperawat/:tiperawat", suratkontrol.GetDataSurKonByID)
|
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("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol)
|
||||||
suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP)
|
suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP)
|
||||||
suratKontrol.GET("/printSurKon/:idxdaftar/tiperawat/:tiperawat", suratkontrol.PrintSurKon)
|
suratKontrol.GET("/printSurKon/:idxdaftar/tiperawat/:tiperawat", suratkontrol.PrintSurKon)
|
||||||
suratKontrol.POST("/cari", suratkontrol.CariPasienTPP)
|
suratKontrol.POST("/cari", suratkontrol.CariPasienTPP)
|
||||||
suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol)
|
suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol)
|
||||||
|
suratKontrol.POST("/insertnew", suratkontrol.InsertSuratkontrolNew)
|
||||||
suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol)
|
suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol)
|
||||||
suratKontrol.POST("/delete", suratkontrol.DeleteSuratKontrol)
|
suratKontrol.POST("/delete", suratkontrol.DeleteSuratKontrol)
|
||||||
suratKontrol.GET("/norm/:norm/limit/:limit/offset/:offset", suratkontrol.GethistoribyNorm)
|
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")
|
iCare := v1.Group("/icare")
|
||||||
@@ -127,16 +107,13 @@ func main() {
|
|||||||
iCare.POST("/rs/validate", icare.GetFKRTL)
|
iCare.POST("/rs/validate", icare.GetFKRTL)
|
||||||
iCare.POST("/pcare/validate", icare.GetFKTP)
|
iCare.POST("/pcare/validate", icare.GetFKTP)
|
||||||
}
|
}
|
||||||
|
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||||
Spri := v1.Group("/spri")
|
r.POST("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||||
{
|
r.PUT("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||||
Spri.POST("/insert", suratkontrol.InsertSpri)
|
r.DELETE("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||||
Spri.PUT("/update", suratkontrol.UpdateSpri)
|
|
||||||
Spri.DELETE("/delete", suratkontrol.DeleteSpri)
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Println("JALAN DI PORT : 8080")
|
log.Println("JALAN DI PORT : 8080")
|
||||||
err = r.Run(":8080")
|
err = r.Run(":8083")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,35 +23,3 @@ type KunjunganPasien struct {
|
|||||||
DisplayDiagnosisPrimerUtama string `gorm:"column:Display_diagnosis_primer_utama" json:"Display_diagnosis_primer_utama"`
|
DisplayDiagnosisPrimerUtama string `gorm:"column:Display_diagnosis_primer_utama" json:"Display_diagnosis_primer_utama"`
|
||||||
NomorRM string `gorm:"column:No_rm" json:"No_rm"`
|
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"`
|
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 {
|
type RequestInsertRencanaKontrol struct {
|
||||||
IDXDaftar string `json:"idxdaftar"`
|
IDXDaftar string `json:"idxdaftar"`
|
||||||
NoSEP string `json:"noSEP"`
|
NoSEP string `json:"noSEP"`
|
||||||
@@ -45,6 +37,7 @@ type RequestInsertRencanaKontrol struct {
|
|||||||
TipeRawat string `json:"tipe_rawat"`
|
TipeRawat string `json:"tipe_rawat"`
|
||||||
Ruangan string `json:"ruangan"`
|
Ruangan string `json:"ruangan"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ReqDeleteRencanaKontrol struct {
|
type ReqDeleteRencanaKontrol struct {
|
||||||
IDDataSurKon string `json:"id_surat_kontrol"`
|
IDDataSurKon string `json:"id_surat_kontrol"`
|
||||||
NomorSurKon string `json:"Nomor_surat_kontrol"`
|
NomorSurKon string `json:"Nomor_surat_kontrol"`
|
||||||
@@ -52,12 +45,6 @@ type ReqDeleteRencanaKontrol struct {
|
|||||||
TipeSurKon string `json:"tipe_surkon"`
|
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 {
|
type RequestUpdateRencanaKontrol struct {
|
||||||
IDXDaftar string `json:"idxdaftar"`
|
IDXDaftar string `json:"idxdaftar"`
|
||||||
IDSurKon string `json:"idSurKon"`
|
IDSurKon string `json:"idSurKon"`
|
||||||
@@ -74,29 +61,6 @@ type RequestUpdateRencanaKontrol struct {
|
|||||||
TipeRawat string `json:"tipe_rawat"`
|
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 {
|
type TSuratKontrol struct {
|
||||||
RequestDelete RequestDeleteRencanaKontrol `json:"t_suratkontrol"`
|
RequestDelete RequestDeleteRencanaKontrol `json:"t_suratkontrol"`
|
||||||
}
|
}
|
||||||
@@ -146,11 +110,6 @@ type Response struct {
|
|||||||
Response ResponseSuratKontrol `json:"response"`
|
Response ResponseSuratKontrol `json:"response"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Responsespri struct {
|
|
||||||
MetaData MetadataString `json:"metadata"`
|
|
||||||
Response ResponseSuratKontrolSPRI `json:"response"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type ResponseUpper struct {
|
type ResponseUpper struct {
|
||||||
MetaData MetadataString `json:"metaData"`
|
MetaData MetadataString `json:"metaData"`
|
||||||
Response ResponseSuratKontrol `json:"response"`
|
Response ResponseSuratKontrol `json:"response"`
|
||||||
@@ -183,16 +142,6 @@ type ResponseSuratKontrol struct {
|
|||||||
TglLahir string `json:"tglLahir"`
|
TglLahir string `json:"tglLahir"`
|
||||||
NamaDiagnosa string `json:"namaDiagnosa"`
|
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 {
|
type RequestRencanaKontrol struct {
|
||||||
IDXDaftar string `json:"idxdaftar"`
|
IDXDaftar string `json:"idxdaftar"`
|
||||||
@@ -262,9 +211,6 @@ type DataSuratKontrol struct {
|
|||||||
TglCetakSurKon string `gorm:"column:Tanggal_cetak_surat_kontrol" json:"Tanggal_cetak_surat_kontrol"`
|
TglCetakSurKon string `gorm:"column:Tanggal_cetak_surat_kontrol" json:"Tanggal_cetak_surat_kontrol"`
|
||||||
TglRencanaKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"`
|
TglRencanaKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"`
|
||||||
NomorSurKon string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_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"`
|
KunjunganPasien string `gorm:"column:Kunjungan_pasien" json:"Kunjungan_pasien"`
|
||||||
RuanganSurKon int `gorm:"column:Ruangan_surat_kontrol" json:"Ruangan_surat_kontrol"`
|
RuanganSurKon int `gorm:"column:Ruangan_surat_kontrol" json:"Ruangan_surat_kontrol"`
|
||||||
DPJPSurKon string `gorm:"column:DPJP_surat_kontrol" json:"DPJP_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"`
|
TipeSurKon string `gorm:"column:Tipe_surat_kontrol" json:"Tipe_surat_kontrol"`
|
||||||
UserUpdatedSurKon string `gorm:"column:User_updated_surat_kontrol" json:"User_updated_surat_kontrol"`
|
UserUpdatedSurKon string `gorm:"column:User_updated_surat_kontrol" json:"User_updated_surat_kontrol"`
|
||||||
TipeRawat string `gorm:"column:Tipe_rawat" json:"Tipe_rawat"`
|
TipeRawat string `gorm:"column:Tipe_rawat" json:"Tipe_rawat"`
|
||||||
IdxDaftarSurkon string `gorm:"column:Idxdaftar_surat_kontrol" json:"IdxDaftar_surkon"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type ResponseSuratKontrolBySEP struct {
|
type ResponseSuratKontrolBySEP struct {
|
||||||
@@ -310,10 +255,7 @@ type GetDataSuratKontrol struct {
|
|||||||
NoRM string `gorm:"column:No_rm" json:"No_rm"`
|
NoRM string `gorm:"column:No_rm" json:"No_rm"`
|
||||||
KodeDiagnosa string `gorm:"column:Kode_diagnosa" json:"Kode_diagnosa"`
|
KodeDiagnosa string `gorm:"column:Kode_diagnosa" json:"Kode_diagnosa"`
|
||||||
NamaDiagnosa string `gorm:"column:Nama_diagnosa" json:"Nama_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"`
|
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"`
|
User string `gorm:"column:User" json:"User"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -338,10 +280,7 @@ type ResponseGetDataSuratKontrol struct {
|
|||||||
NoRM string `json:"No_rm"`
|
NoRM string `json:"No_rm"`
|
||||||
KodeDiagnosa string `json:"Kode_diagnosa"`
|
KodeDiagnosa string `json:"Kode_diagnosa"`
|
||||||
NamaDiagnosa string `json:"Nama_diagnosa"`
|
NamaDiagnosa string `json:"Nama_diagnosa"`
|
||||||
KodeIcd string `json:"Kode_icd"`
|
|
||||||
Diagnosa string `json:"Diagnosa"`
|
|
||||||
TipeSurKon string `json:"Tipe_SurKon"`
|
TipeSurKon string `json:"Tipe_SurKon"`
|
||||||
TipeRawat string `json:"Tipe_rawat"`
|
|
||||||
User string `json:"User"`
|
User string `json:"User"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -375,7 +314,6 @@ type HistoriSurkon struct {
|
|||||||
NamaDokter string `gorm:"column:Nama_lengkap_dokter" json:"Nama_dokter"`
|
NamaDokter string `gorm:"column:Nama_lengkap_dokter" json:"Nama_dokter"`
|
||||||
GelarBelakang string `gorm:"column:gelarbelakang" json:"Gelar_belakang"`
|
GelarBelakang string `gorm:"column:gelarbelakang" json:"Gelar_belakang"`
|
||||||
Tiperawat string `gorm:"column:Tipe_rawat" json:"Tipe_rawat"`
|
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"`
|
UserCreate string `gorm:"column:User_created_surat_kontrol" json:"User_create"`
|
||||||
UserUpdate string `gorm:"column:User_updated_surat_kontrol" json:"User_update"`
|
UserUpdate string `gorm:"column:User_updated_surat_kontrol" json:"User_update"`
|
||||||
Status string `gorm:"column:Status_surat_kontrol" json:"Status_surat_kontrol"`
|
Status string `gorm:"column:Status_surat_kontrol" json:"Status_surat_kontrol"`
|
||||||
@@ -393,59 +331,7 @@ type Dataresponse struct {
|
|||||||
Subspesialis string `json:"Subspesialis"`
|
Subspesialis string `json:"Subspesialis"`
|
||||||
NamaLengkap string `json:"Dpjp"`
|
NamaLengkap string `json:"Dpjp"`
|
||||||
Tiperawat string `json:"Tipe_rawat"`
|
Tiperawat string `json:"Tipe_rawat"`
|
||||||
TipeSurkon string `json:"Tipe_surat_kontrol"`
|
|
||||||
UserCreate string `json:"User_create"`
|
UserCreate string `json:"User_create"`
|
||||||
UserUpdate string `json:"User_update"`
|
UserUpdate string `json:"User_update"`
|
||||||
Status string `json:"Status_surat_kontrol"`
|
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