diff --git a/.env b/.env index 303ed08..92a80e5 100644 --- a/.env +++ b/.env @@ -12,10 +12,10 @@ SIMRS_PASSWORD=simrs.rssa SIMRS_NAME=simrs SIMRS_PORT=5432 -SIMRS_STAG_HOST=10.10.123.223 -SIMRS_STAG_USER=simtest -SIMRS_STAG_PASS=12345 -SIMRS_STAG_NAME=simrsbackup +SIMRS_STAG_HOST=10.10.123.238 +SIMRS_STAG_USER=brawijaya +SIMRS_STAG_PASS=ub*2025 +SIMRS_STAG_NAME=simrs SIMRS_STAG_PORT=5432 LIS_MIKROBIOLOGI_URL=http://10.10.123.218/ diff --git a/pkg/database/simrs/mikrobiologi.go b/pkg/database/simrs/mikrobiologi.go index 99ad282..0137794 100644 --- a/pkg/database/simrs/mikrobiologi.go +++ b/pkg/database/simrs/mikrobiologi.go @@ -59,7 +59,7 @@ func (s *DatabaseService) GetDataMikroBiologiByNoMR(req *mikrobiologi.RequestPas func (s *DatabaseService) GetDataLabMikro(noLab string) ([]*mikrobiologi.OrderLabMikro, bool, error) { var dataMikro []*mikrobiologi.OrderLabMikro - querySelect := `select olm."idxordermikro", olm."jenis_pemeriksaan", fl."nama_field" , fl."jenis_kelompok",fl."kode_tarif" + querySelect := `select olm."idxordermikro", olm."jenis_pemeriksaan", fl."nama_field" , fl."jenis_kelompok",fl."kode_tarif",olm."tglorder" from t_orderlabmikro olm left join "m_form_lab" fl on olm."idxform" = fl."form_id" where olm."nolab" = ? and fl."sub_kelompok" = 'Jenis Pemeriksaan'` @@ -70,6 +70,33 @@ func (s *DatabaseService) GetDataLabMikro(noLab string) ([]*mikrobiologi.OrderLa } return dataMikro, true, nil } +func (s *DatabaseService) GetDataLabMikroSpecimen(noLab string) (*mikrobiologi.OrderLabMikroSpecimen, bool, error) { + var dataMikro *mikrobiologi.OrderLabMikroSpecimen + querySelect := `select fl."nama_field" + from t_orderlabmikro olm + left join "m_form_lab" fl on olm."idxform" = fl."form_id" + where olm."nolab" = ? and fl."sub_kelompok" = 'Jenis Spesimen'` + errSelect := s.DB.Debug().Raw(querySelect, noLab).Scan(&dataMikro).Error + if errSelect != nil { + log.Println(errSelect) + return nil, false, errSelect + } + return dataMikro, true, nil +} + +func (s *DatabaseService) GetDataLabMikroJenisPemeriksaan(noLab string) (*mikrobiologi.OrderLabMikroJenisPemeriksaan, bool, error) { + var dataMikro *mikrobiologi.OrderLabMikroJenisPemeriksaan + querySelect := `select fl."nama_field" + from t_orderlabmikro olm + left join "m_form_lab" fl on olm."idxform" = fl."form_id" + where olm."nolab" = ? and fl."sub_kelompok" = 'Cara Pengambilan Sampel'` + errSelect := s.DB.Debug().Raw(querySelect, noLab).Scan(&dataMikro).Error + if errSelect != nil { + log.Println(errSelect) + return nil, false, errSelect + } + return dataMikro, true, nil +} func (s *DatabaseService) GetDataLabMikroPengambilan(noLab string) ([]*mikrobiologi.OrderLabMikropengambilan, bool, error) { var dataMikro []*mikrobiologi.OrderLabMikropengambilan diff --git a/pkg/database/simrs/pasien.go b/pkg/database/simrs/pasien.go index 3aeac39..ecd3918 100644 --- a/pkg/database/simrs/pasien.go +++ b/pkg/database/simrs/pasien.go @@ -4,6 +4,7 @@ import ( "api-lis/pkg/models/simrs/mikrobiologi" "api-lis/pkg/models/simrs/pasien" "log" + "time" ) func (s *DatabaseService) GetMPasien(req *mikrobiologi.RequestPasienMikrobiologi) (*pasien.MPasien, error) { @@ -27,3 +28,47 @@ func (s *DatabaseService) GetPasienAPS(req *mikrobiologi.RequestPasienMikrobiolo } return dataPasien, nil } + +func (s *DatabaseService) GetTglRegPendaftaran(idxDaftar string) (string, error) { + var tglReg string + querySelect := `select tglreg from t_pendaftaran where "idxdaftar" = ?` + errSelect := s.DB.Debug().Raw(querySelect, idxDaftar).Scan(&tglReg).Error + if errSelect != nil { + log.Println(errSelect) + return "", errSelect + } + return tglReg, nil +} + +func (s *DatabaseService) GetTglMasukRS(idxDaftar string) (string, error) { + var tglMasuk time.Time + querySelect := `select masukrs from t_admission where "id_admission" = ?` + errSelect := s.DB.Debug().Raw(querySelect, idxDaftar).Scan(&tglMasuk).Error + if errSelect != nil { + log.Println(errSelect) + return "", errSelect + } + return tglMasuk.Format("2006-01-02"), nil +} + +func (s *DatabaseService) GetKetRujukan(noMR string) (string, string, error) { + var ketRujukan string + var isPenunjang *int + querySelect := `select ketrujuk, is_penunjang from t_pendaftaran where "nomr" = ?` + errSelect := s.DB.Debug().Raw(querySelect, noMR).Row().Scan(&ketRujukan, &isPenunjang) + if errSelect != nil { + log.Println(errSelect) + return "", "", errSelect + } + + var jenisKunjungan string + if isPenunjang == nil { + jenisKunjungan = "Kunjungan Reguler" + } else if *isPenunjang == 1 { + jenisKunjungan = "Kunjungan Parsial" + } else if *isPenunjang == 0 { + jenisKunjungan = "Kunjungan Reguler" + } + + return ketRujukan, jenisKunjungan, nil +} diff --git a/pkg/handlers/mikrobiologi/mikrobiologi.go b/pkg/handlers/mikrobiologi/mikrobiologi.go index 9b2750c..74546d2 100644 --- a/pkg/handlers/mikrobiologi/mikrobiologi.go +++ b/pkg/handlers/mikrobiologi/mikrobiologi.go @@ -88,6 +88,22 @@ func SendDataLISMikro(c *gin.Context) { }) return } + Specimen, exist, errDiagnosa := simrsDB.GetDataLabMikroSpecimen(dataMikroMain.NoLab) + if errDiagnosa != nil { + log.Println(errDiagnosa) + c.JSON(http.StatusBadRequest, gin.H{ + "message": errDiagnosa, + }) + return + } + CaraPengambilan, exist, errDiagnosa := simrsDB.GetDataLabMikroJenisPemeriksaan(dataMikroMain.NoLab) + if errDiagnosa != nil { + log.Println(errDiagnosa) + c.JSON(http.StatusBadRequest, gin.H{ + "message": errDiagnosa, + }) + return + } if !exist { log.Println("Data bukan pemeriksaan") @@ -102,10 +118,6 @@ func SendDataLISMikro(c *gin.Context) { return } log.Println(dataLabMikroPengambilan) - var pengambilan string - if len(dataLabMikroPengambilan) > 0 { - pengambilan = dataLabMikroPengambilan[0].NamaField - } poli, errDokter := simrsDB.GetNamaRuang(dataMikroMain.KodePoli) if errDokter != nil { @@ -164,29 +176,64 @@ func SendDataLISMikro(c *gin.Context) { if dokterPengirim == "" && dataMikroMain.Pengirim != "" && dataMikroMain.Pengirim != "0" { dokterPengirim = dataMikroMain.Pengirim } + + var tglReg string + + if dataMikroMain.StatusRajal == "1" { + tglReg, err = simrsDB.GetTglRegPendaftaran(dataMikroMain.IdxDaftar) + if err != nil { + log.Println(err) + c.JSON(http.StatusBadRequest, gin.H{"message": err}) + return + } + } else if dataMikroMain.StatusRajal == "0" { + tglReg, err = simrsDB.GetTglMasukRS(dataMikroMain.IdxDaftar) + if err != nil { + log.Println(err) + c.JSON(http.StatusBadRequest, gin.H{"message": err}) + return + } + } + + tglOrder, err := time.Parse("2006-01-02 15:04:05.000", dataLabMikro[0].TangggalOrderLab) + if err != nil { + log.Println("ERROR PARSE:", err) + } + tglOrderString := tglOrder.Format("2006-01-02") + + rujukan, jenisKunjungan, errRujukan := simrsDB.GetKetRujukan(dataMikroMain.NoMR) + if errRujukan != nil { + log.Println(errRujukan) + c.JSON(http.StatusBadRequest, gin.H{"message": errRujukan}) + return + } log.Println("Akan masuk loop dataLabMikro...") for _, value := range dataLabMikro { log.Println("Masuk loop, value:", value) dataLisMikro = &mikrobiologi.RequestLISMikro{ - NoRM: dataMikroMain.NoMR, - Nama: dataPasien.Nama, - Alamat: dataPasien.Alamat, - Kota: dataPasien.Tempat, - TanggalLahir: tglLahirString, - NoHP: dataPasien.NoTelpon, - Kelamin: dataPasien.JenisKelamin, - NIK: dataPasien.NoKTP, - NoBPJS: dataPasien.NoKartu, - DokterPeminta: dokterPengirim, - AsalPasien: poli.NamaPoli, - Layanan: value.NamaPemeriksaan, - StatusBayar: "", - NoTransaksi: dataMikroMain.NoLab, - Asuransi: caraBayar, - Klinis: diagnosa, - KodeSpesimen: value.NamaField, - NamaSpesimen: value.JenisKelompok, - Pengambilan: pengambilan, + TanggalReg: tglReg, + TanggalSampel: tglOrderString, + NomorLab: dataMikroMain.NoLab, + NoRM: dataMikroMain.NoMR, + Nama: dataPasien.Nama, + Alamat: dataPasien.Alamat, + Kota: dataPasien.Tempat, + TanggalLahir: tglLahirString, + NoHP: dataPasien.NoTelpon, + Kelamin: dataPasien.JenisKelamin, + NIK: dataPasien.NoKTP, + NoBPJS: dataPasien.NoKartu, + DokterPeminta: dokterPengirim, + AsalPasien: poli.NamaPoli, + StatusBayar: "", + JenisPembayaran: caraBayar, + JenisKunjungan: jenisKunjungan, + Diagnosa: diagnosa, + Rujukan: rujukan, + KodeSpesimen: value.JenisKelompok, + NamaSpesimen: Specimen.NamaField, + Pengambilan: CaraPengambilan.NamaField, + JenisPemeriksaan: value.NamaField, } log.Println("Sebelum masuk LIS", dataLisMikro) @@ -243,6 +290,7 @@ func SendDataLISMikro(c *gin.Context) { } log.Println("RESPONSE", responseMikro) c.JSON(http.StatusOK, responseMikro) + return } func EkstrakHasil(c *gin.Context) { diff --git a/pkg/models/simrs/mikrobiologi/mikrobiologi.go b/pkg/models/simrs/mikrobiologi/mikrobiologi.go index 91c407c..9ab6dad 100644 --- a/pkg/models/simrs/mikrobiologi/mikrobiologi.go +++ b/pkg/models/simrs/mikrobiologi/mikrobiologi.go @@ -89,25 +89,29 @@ type ResponseDataPasienRajalAPS struct { } type RequestLISMikro struct { - NoRM string `json:"norm"` - Nama string `json:"nama"` - Alamat string `json:"alamat"` - Kota string `json:"kota"` - TanggalLahir string `json:"tgllahir"` - NoHP string `json:"nohap"` - Kelamin string `json:"kelamin"` - NIK string `json:"nik"` - NoBPJS string `json:"nobpjs"` - DokterPeminta string `json:"drpeminta"` - AsalPasien string `json:"asalpasien"` - Layanan string `json:"layanan"` - StatusBayar string `json:"statusbayar"` - NoTransaksi string `json:"notransaksi"` - Asuransi string `json:"asuransi"` - Klinis string `json:"klinis"` - KodeSpesimen string `json:"kode"` - NamaSpesimen string `json:"spesimen"` - Pengambilan string `json:"pengambilan"` + TanggalReg string `json:"tanggalregis"` + TanggalSampel string `json:"tanggalsampel"` + NomorLab string `json:"nomor_lab"` + NoRM string `json:"norm"` + Nama string `json:"nama"` + Alamat string `json:"alamat"` + Kota string `json:"kota"` + TanggalLahir string `json:"tgllahir"` + NoHP string `json:"nohap"` + Kelamin string `json:"kelamin"` + NIK string `json:"nik"` + NoBPJS string `json:"nobpjs"` + DokterPeminta string `json:"drpeminta"` + AsalPasien string `json:"asalpasien"` + StatusBayar string `json:"statusbayar"` + JenisPembayaran string `json:"jenispembayaran"` + JenisKunjungan string `json:"jeniskunjungan"` + Rujukan string `json:"keteranganrujukan"` + Diagnosa string `json:"diagnosa"` + KodeSpesimen string `json:"kodespesimen"` + NamaSpesimen string `json:"spesimen"` + Pengambilan string `json:"pengambilan"` + JenisPemeriksaan string `json:"jenispemeriksaan"` } type OrderLabMikroMain struct { @@ -130,11 +134,20 @@ type OrderLabMikroMain struct { } type OrderLabMikro struct { - IdxOrderMikro string `gorm:"column:idxordermikro" json:"idxordermikro"` - NamaPemeriksaan string `gorm:"column:nama_pemeriksaan" json:"nama_pemeriksaan"` - NamaField string `gorm:"column:nama_field" json:"nama_field"` - JenisKelompok string `gorm:"column:jenis_kelompok" json:"jenis_kelompok"` - KodeTarif string `gorm:"column:kode_tarif" json:"kode_tarif"` + IdxOrderMikro string `gorm:"column:idxordermikro" json:"idxordermikro"` + NamaPemeriksaan string `gorm:"column:nama_pemeriksaan" json:"nama_pemeriksaan"` + NamaField string `gorm:"column:nama_field" json:"nama_field"` + JenisKelompok string `gorm:"column:jenis_kelompok" json:"jenis_kelompok"` + KodeTarif string `gorm:"column:kode_tarif" json:"kode_tarif"` + TangggalOrderLab string `gorm:"column:tglorder" json:"tglorder"` +} + +type OrderLabMikroSpecimen struct { + NamaField string `gorm:"column:nama_field" json:"nama_field"` +} + +type OrderLabMikroJenisPemeriksaan struct { + NamaField string `gorm:"column:nama_field" json:"nama_field"` } type OrderLabMikropengambilan struct {