penambahan validasi kunjungan

This commit is contained in:
2025-09-11 16:33:26 +07:00
parent 1a6f545700
commit 96a7ec559d
8 changed files with 214 additions and 28 deletions

No files matched your search

+6
View File
@@ -4,6 +4,12 @@ SATUDATA_PASSWORD=stim*RS54
SATUDATA_NAME=satu_db
SATUDATA_PORT=5000
SIMRS_HOST=10.10.123.163
SIMRS_USERNAME=simrs
SIMRS_PASSWORD=simrs.rssa
SIMRS_NAME=simrs
SIMRS_PORT=5432
BASEURL_BPJS=https://apijkn.bpjs-kesehatan.go.id
ANTREAN_RS=/antreanrs
CONS_ID=5257
+17
View File
@@ -17,6 +17,7 @@ import (
var DB *gorm.DB
var SatuDataDB *gorm.DB
var DBsimrs *gorm.DB
var err error
func ConnectDB() {
@@ -26,6 +27,12 @@ func ConnectDB() {
dbNameSatuData := os.Getenv("SATUDATA_NAME")
portSatuData := os.Getenv("SATUDATA_PORT")
hostDBsimrs := os.Getenv("SIMRS_HOST")
userNameDBsimrs := os.Getenv("SIMRS_USERNAME")
passwordDBsimrs := os.Getenv("SIMRS_PASSWORD")
dbNameDBsimrs := os.Getenv("SIMRS_NAME")
portDBsimrs := os.Getenv("SIMRS_PORT")
satuData := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Jakarta", hostSatuData, userNameSatuData, passwordSatuData, dbNameSatuData, portSatuData)
SatuDataDB, err = gorm.Open(postgres.Open(satuData), &gorm.Config{})
@@ -34,6 +41,16 @@ func ConnectDB() {
} else {
log.Println("Successfully connected to the database")
}
dbSimrs := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Jakarta",
hostDBsimrs, userNameDBsimrs, passwordDBsimrs, dbNameDBsimrs, portDBsimrs)
DBsimrs, 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 {
@@ -9,6 +9,46 @@ import (
"gorm.io/gorm"
)
func GetAdmission(idxdaftar string) (*suratkontrol.Addmission, *suratkontrol.Addmission) {
var dataAdmission *suratkontrol.Addmission
err := config.DBsimrs.Raw(`select ta."dokterpengirim",ta."id_admission",ta."dokter_penanggungjawab",ta."nosep",mp."nama",mp."noktp" from t_admission ta join m_pasien mp on ta."nomr" = mp."nomr" where ta.id_admission = ? `, idxdaftar).Scan(&dataAdmission)
if err != nil {
log.Println(err)
return nil, nil
}
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"
values (?, ?, ?, ?, ?, ?, ?, ?)`
err := config.SatuDataDB.Exec(insertQuery,
reqInsert.ID,
reqInsert.IdxDaftar,
reqInsert.Nomr,
reqInsert.NamaLengkap,
reqInsert.NIK,
reqInsert.DPJP,
reqInsert.TanggalMasuk,
reqInsert.JamMasuk,
).Error
if err != nil {
log.Println(err)
return err
}
return nil
}
func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, error) {
var kunjunganPasien *suratkontrol.KunjunganPasien
err := config.SatuDataDB.Raw(`select dkp."id", dkp."IDXDAFTAR" as idxdaftar, dkp."Nomor_sep" as nomorsep,
@@ -56,8 +96,8 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.DataSuratKontrol) error {
log.Println("Req Insert Database : ", reqInsert)
insertQuery := `insert into "data_surat_kontrol" ("id", "date_created", "Tanggal_cetak_surat_kontrol", "Tanggal_rencana_kontrol",
"Nomor_surat_kontrol", "Kunjungan_pasien", "Ruangan_surat_kontrol", "DPJP_surat_kontrol", "Status_surat_kontrol",
"User_created_surat_kontrol", "Tipe_surat_kontrol", "User_updated_surat_kontrol", "Tipe_rawat","Nomor_kartu","Kode_icd","Diagnosa")
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?,?)`
"User_created_surat_kontrol", "Tipe_surat_kontrol", "User_updated_surat_kontrol", "Tipe_rawat","Nomor_kartu","Kode_icd","Diagnosa","Idxdaftar_surat_kontrol")
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?,?.?)`
err := config.SatuDataDB.Exec(insertQuery,
reqInsert.ID,
reqInsert.DateCreated,
@@ -75,6 +115,7 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.DataSuratKontrol) error {
reqInsert.NomorKartu,
reqInsert.KodeIcd,
reqInsert.Diagnosa,
reqInsert.IdxDaftarSurkon,
).Error
if err != nil {
log.Println(err)
@@ -355,10 +396,9 @@ func GetDataSuratKontrolidsurkon(id string) (*suratkontrol.GetDataSuratKontrol,
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",
dsk."Nomor_kartu" as "No_kartu",
dsk."Kode_icd",
dsk."Diagnosa",
dsk."Nomor_kartu" as "No_kartu"
dsk."Diagnosa"
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"
@@ -554,6 +594,18 @@ func GetNomorSurKon(idPasien string) (string, error) {
return noSurKon, nil
}
func GetNomorSurKonnew(idxdaftar string) (string, error) {
var noSurKon string
querySelect := `select dsk."Nomor_surat_kontrol" from data_surat_kontrol dsk where dsk."Idxdaftar_surat_kontrol" = ? and dsk."Tipe_surat_kontrol" <> '2' order by dsk."date_created"`
err := config.SatuDataDB.Raw(querySelect, idxdaftar).Scan(&noSurKon).Error
if err != nil {
log.Println(err)
return "", err
}
log.Println("Nomor SurKon :", noSurKon)
return noSurKon, nil
}
func Getdatahistori(norm string, offset, limit string) ([]*suratkontrol.HistoriSurkon, error) {
var dataHistoriSurKon []*suratkontrol.HistoriSurkon
err := config.SatuDataDB.Raw(`select dkp2."Nama_lengkap",dkp2."Nomor_sep",dsk."id",dkp2."IDXDAFTAR",dsk."Nomor_surat_kontrol",dsk."Tanggal_rencana_kontrol",dsk."Tanggal_cetak_surat_kontrol",
@@ -675,3 +675,45 @@ func GetJadwalDokterNew() bool {
}
return true
}
func GetJadwalbaru(*gin.Context) {
baseUrl := os.Getenv("BASEURL_BPJS")
endpoint := os.Getenv("ANTREAN_RS")
url := baseUrl + endpoint
log.Println(url)
conf := config.ConfigBpjs{}
header := cfg.SetHeader(false, conf)
headers := map[string]string{
"X-cons-id": header.ConsID,
"X-timestamp": header.TimeStamp,
"X-signature": header.XSignature,
"user_key": header.UserKey,
}
log.Println(headers)
spesialis, err := dokter.GetSpesialis()
if err != nil {
return
}
var listIdSpesialis = make(map[string]int)
for _, kodeDokter := range spesialis {
listIdSpesialis[kodeDokter.Kode] = kodeDokter.ID
break
}
log.Println(listIdSpesialis)
subspesialis, err := dokter.GetSubspesialis()
if err != nil {
return
}
var listIdSubspesialis = make(map[string]int)
for _, kodeDokter := range subspesialis {
listIdSubspesialis[kodeDokter.Kode] = kodeDokter.ID
}
log.Println(listIdSubspesialis)
}
+66 -23
View File
@@ -110,15 +110,66 @@ func InsertSuratkontrolNew(c *gin.Context) {
})
return
}
uuid := uuid.New().String()
kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar)
var kunjunganPasien *sk.KunjunganPasien
kunjunganPasien, err = suratkontrol.GetDataKunjunganPasien(req.IDXDaftar)
if err != nil {
log.Println(err)
c.JSON(http.StatusCreated, &sk.MetadataString{
Code: "201",
Message: err.Error(),
})
return
if err.Error() == "Data Tidak Ditemukan" {
dataAdmission, erradmission := suratkontrol.GetAdmission(req.IDXDaftar)
log.Println("kesini kagh", dataAdmission)
if erradmission != nil {
log.Println("masuk sini")
c.JSON(http.StatusCreated, &sk.MetadataString{
Code: "201",
Message: "Pasien Tidak Ada Kunjungan",
})
return
}
IdDokter, err := suratkontrol.Getdokter(dataAdmission.DokterPengirim)
if err != nil {
log.Println(err)
c.JSON(http.StatusCreated, &sk.MetadataString{
Code: "201",
Message: "Dokter tidak Ditemukan",
})
}
layout := "2006-01-02 15:04:05" // sesuaikan format string input
masukrsTime, err := time.Parse(layout, dataAdmission.MasukRS)
Tanggalmasuk := masukrsTime.Format("2006-01-02")
Jammasuk := masukrsTime.Format("15:04:05")
insertKunjungan := &sk.InsertKunjunganPasien{
ID: uuid,
IdxDaftar: dataAdmission.ID,
Nomr: dataAdmission.Nomr,
NamaLengkap: dataAdmission.NamaLengkap,
NIK: dataAdmission.NoKTP,
DPJP: IdDokter,
TanggalMasuk: Tanggalmasuk,
JamMasuk: Jammasuk,
}
log.Println("insertKunjungan:", insertKunjungan)
err = suratkontrol.InsertKunjunganPasien(insertKunjungan)
if err != nil {
log.Println(err)
c.JSON(http.StatusCreated, &sk.MetadataString{
Code: "201",
Message: "Server Pasien Sedang Down",
})
}
kunjunganPasien, err = suratkontrol.GetDataKunjunganPasien(req.IDXDaftar)
if err != nil {
log.Println(err)
c.JSON(http.StatusCreated, &sk.MetadataString{
Code: "201",
Message: "Kunjungan Pasien Kosong",
})
}
}
}
var idRuangan int
@@ -136,7 +187,6 @@ func InsertSuratkontrolNew(c *gin.Context) {
}
}
uuid := uuid.New().String()
if req.TipeSurKon == "2" {
reqJson, err := json.Marshal(req)
if err != nil {
@@ -267,6 +317,7 @@ func InsertSuratkontrolNew(c *gin.Context) {
TipeRawat: req.TipeRawat,
KodeIcd: kodeICD,
Diagnosa: diagnosa,
IdxDaftarSurkon: req.IDXDaftar,
}
log.Println(reqInsert)
err = suratkontrol.InsertDataSuratKontrol(reqInsert)
@@ -279,16 +330,6 @@ func InsertSuratkontrolNew(c *gin.Context) {
return
}
err = suratkontrol.UpdateKunjunganPasien(req)
if err != nil {
log.Println(err)
c.JSON(http.StatusCreated, &sk.MetadataString{
Code: "201",
Message: err.Error(),
})
return
}
reqInsertLog := &logapi.DataLogAPI{
ID: uuid,
DateCreated: logTimeEnd,
@@ -334,15 +375,17 @@ func InsertSuratkontrolNew(c *gin.Context) {
log.Println("Response: ", response)
c.JSON(http.StatusOK, response)
} else {
var dataSurkon string
logTimeStart := time.Now().Format("2006-01-02 15:04:05")
dataSurkon, err := suratkontrol.GetNomorSurKon(kunjunganPasien.ID)
if err != nil {
log.Println(err)
c.JSON(http.StatusCreated, &sk.MetadataString{
Code: "201",
Message: err.Error(),
})
return
if err.Error() == "Data tidak ada" {
dataSurkon, err = suratkontrol.GetNomorSurKonnew(req.IDXDaftar)
if err != nil {
}
}
}
noUrut := "001"
+4
View File
@@ -81,6 +81,10 @@ func main() {
{
subspesialis.GET("/", bpjs.GetAllSubspesialis)
}
test := v1.Group("/test")
{
test.GET("/test", jadwal_dokter.GetJadwalbaru)
}
//API UNTUK JADWAL DOKTER
jadwalDokter := v1.Group("/jadwaldokter")
@@ -23,3 +23,24 @@ type KunjunganPasien struct {
DisplayDiagnosisPrimerUtama string `gorm:"column:Display_diagnosis_primer_utama" json:"Display_diagnosis_primer_utama"`
NomorRM string `gorm:"column:No_rm" json:"No_rm"`
}
type Addmission struct {
ID int `gorm:"column:id_admission" json:"id"`
Nomr string `gorm:"column:nomr" json:"nomr"`
DokterPengirim int `gorm:"column:dokterpengirim" json:"dokterpengirim"`
NoSEP string `gorm:"column:nosep" json:"no_sep"`
NamaLengkap string `gorm:"column:nama" json:"namalengkap"`
NoKTP string `gorm:"column:noktp" json:"noktp"`
MasukRS string `gorm:"column:masukrs" json:"masukrs"`
}
type 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"`
}
@@ -273,6 +273,7 @@ type DataSuratKontrol struct {
TipeSurKon string `gorm:"column:Tipe_surat_kontrol" json:"Tipe_surat_kontrol"`
UserUpdatedSurKon string `gorm:"column:User_updated_surat_kontrol" json:"User_updated_surat_kontrol"`
TipeRawat string `gorm:"column:Tipe_rawat" json:"Tipe_rawat"`
IdxDaftarSurkon string `gorm:"column:Idxdaftar_surat_kontrol" json:"IdxDaftar_surkon"`
}
type ResponseSuratKontrolBySEP struct {