1 Commits
Author SHA256 Message Date
ahdan.zeeda.0103 b1bd324e54 first commit 2025-06-30 08:51:07 +07:00
18 changed files with 620 additions and 4359 deletions
+2 -9
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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 {
+2 -2
View File
@@ -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
View File
@@ -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
} }
+10 -314
View File
@@ -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"
@@ -550,7 +259,7 @@ func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []i
var dataSurKon []*suratkontrol.GetDataSuratKontrol var dataSurKon []*suratkontrol.GetDataSuratKontrol
query += ` and date(dsk."Tanggal_rencana_kontrol") between ? and ? offset ? limit ?` query += ` and date(dsk."Tanggal_rencana_kontrol") between ? and ? offset ? limit ?`
querySelect := `select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol", querySelect := `select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",
dsk."Nomor_surat_kontrol", 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",
@@ -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
View File
@@ -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
+141 -141
View File
@@ -1,141 +1,141 @@
// Package docs Code generated by swaggo/swag. DO NOT EDIT // Package docs Code generated by swaggo/swag. DO NOT EDIT
package docs package docs
import "github.com/swaggo/swag" import "github.com/swaggo/swag"
const docTemplate = `{ const docTemplate = `{
"schemes": {{ marshal .Schemes }}, "schemes": {{ marshal .Schemes }},
"swagger": "2.0", "swagger": "2.0",
"info": { "info": {
"description": "{{escape .Description}}", "description": "{{escape .Description}}",
"title": "{{.Title}}", "title": "{{.Title}}",
"contact": {}, "contact": {},
"version": "{{.Version}}" "version": "{{.Version}}"
}, },
"host": "{{.Host}}", "host": "{{.Host}}",
"basePath": "{{.BasePath}}", "basePath": "{{.BasePath}}",
"paths": { "paths": {
"/api/user": { "/api/user": {
"get": { "get": {
"description": "returs list of all users from the database", "description": "returs list of all users from the database",
"tags": [ "tags": [
"Users" "Users"
], ],
"summary": "return list of all", "summary": "return list of all",
"responses": { "responses": {
"200": { "200": {
"description": "OK", "description": "OK",
"schema": { "schema": {
"$ref": "#/definitions/models.User" "$ref": "#/definitions/models.User"
} }
} }
} }
} }
}, },
"/api/user/create": { "/api/user/create": {
"post": { "post": {
"description": "Insert Data User", "description": "Insert Data User",
"tags": [ "tags": [
"Users" "Users"
], ],
"summary": "Insert Data User", "summary": "Insert Data User",
"responses": { "responses": {
"200": { "200": {
"description": "OK", "description": "OK",
"schema": { "schema": {
"$ref": "#/definitions/models.Response" "$ref": "#/definitions/models.Response"
} }
} }
} }
} }
}, },
"/api/user/delete/:id": { "/api/user/delete/:id": {
"delete": { "delete": {
"description": "Delete Data User", "description": "Delete Data User",
"tags": [ "tags": [
"Users" "Users"
], ],
"summary": "Delete Data User", "summary": "Delete Data User",
"responses": { "responses": {
"200": { "200": {
"description": "OK", "description": "OK",
"schema": { "schema": {
"$ref": "#/definitions/models.Response" "$ref": "#/definitions/models.Response"
} }
} }
} }
} }
}, },
"/api/user/update/:id": { "/api/user/update/:id": {
"put": { "put": {
"description": "Update Data User", "description": "Update Data User",
"tags": [ "tags": [
"Users" "Users"
], ],
"summary": "Update Data User", "summary": "Update Data User",
"responses": { "responses": {
"200": { "200": {
"description": "OK", "description": "OK",
"schema": { "schema": {
"$ref": "#/definitions/models.Response" "$ref": "#/definitions/models.Response"
} }
} }
} }
} }
} }
}, },
"definitions": { "definitions": {
"models.Response": { "models.Response": {
"type": "object", "type": "object",
"properties": { "properties": {
"response_code": { "response_code": {
"type": "string" "type": "string"
}, },
"response_message": { "response_message": {
"type": "string" "type": "string"
} }
} }
}, },
"models.User": { "models.User": {
"type": "object", "type": "object",
"properties": { "properties": {
"agama": { "agama": {
"type": "string" "type": "string"
}, },
"alamat": { "alamat": {
"type": "string" "type": "string"
}, },
"id": { "id": {
"type": "string" "type": "string"
}, },
"jenis_kelamin": { "jenis_kelamin": {
"type": "string" "type": "string"
}, },
"nama": { "nama": {
"type": "string" "type": "string"
}, },
"umur": { "umur": {
"type": "integer" "type": "integer"
} }
} }
} }
} }
}` }`
// SwaggerInfo holds exported Swagger Info so clients can modify it // SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = &swag.Spec{ var SwaggerInfo = &swag.Spec{
Version: "1", Version: "1",
Host: "localhost:8080", Host: "localhost:8080",
BasePath: "", BasePath: "",
Schemes: []string{}, Schemes: []string{},
Title: "Crud User", Title: "Crud User",
Description: "Rest API CRUD User", Description: "Rest API CRUD User",
InfoInstanceName: "swagger", InfoInstanceName: "swagger",
SwaggerTemplate: docTemplate, SwaggerTemplate: docTemplate,
LeftDelim: "{{", LeftDelim: "{{",
RightDelim: "}}", RightDelim: "}}",
} }
func init() { func init() {
swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
} }
+4 -1
View File
@@ -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
+6
View File
@@ -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=
+4 -615
View File
@@ -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
}
-322
View File
@@ -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"})
}
}
-209
View File
@@ -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
+13 -36
View File
@@ -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"`
}
+1 -115
View File
@@ -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"`
}