242 lines
6.0 KiB
Go
242 lines
6.0 KiB
Go
package mikrobiologi
|
|
|
|
import (
|
|
"bridging-rssa/database/simrs/dokter"
|
|
mikrobiologiDB "bridging-rssa/database/simrs/mikrobiologi"
|
|
"bridging-rssa/database/simrs/pasien"
|
|
"bridging-rssa/database/simrs/pendaftaran"
|
|
"bridging-rssa/database/simrs/ruang"
|
|
"bridging-rssa/models/simrs/mikrobiologi"
|
|
"log"
|
|
"net/http"
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func GetDataPasienMikrobiologi(c *gin.Context) {
|
|
var req *mikrobiologi.RequestPasienMikrobiologi
|
|
|
|
err := c.Bind(&req)
|
|
if err != nil {
|
|
log.Println(err)
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
"message": err,
|
|
})
|
|
return
|
|
}
|
|
|
|
dataPasien, errData := mikrobiologiDB.GetDataMikroBiologi(req)
|
|
if errData != nil {
|
|
log.Println(errData)
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
"message": errData,
|
|
})
|
|
return
|
|
}
|
|
var res []interface{}
|
|
for _, v := range dataPasien {
|
|
ktp := v.NoKTP
|
|
if v.NoKTPBaru != "" {
|
|
ktp = v.NoKTPBaru
|
|
}
|
|
if v.StatusAPS == 1 {
|
|
res = append(res, &mikrobiologi.ResponseDataPasienRajalAPS{
|
|
NOMR: v.NOMR,
|
|
NoNota: v.NoNota,
|
|
IdxDaftar: v.IDXDaftar,
|
|
TanggalOrder: v.TanggalOrder,
|
|
NoLab: v.NoLab,
|
|
StatusRajal: v.StatusRajal,
|
|
StatusAPS: v.StatusAPS,
|
|
NamaAPS: v.NamaAPS,
|
|
NoKTPAPS: v.NoKTPAPS,
|
|
TempatLahirAPS: v.TempatLahirAPS,
|
|
TanggalLahirAPS: v.TanggalLahirAPS,
|
|
JenisKelaminAPS: v.JenisKelaminAPS,
|
|
AlamatAPS: v.AlamatAPS,
|
|
NamaRuang: v.NamaRuang,
|
|
KelasRuang: v.KelasRuang,
|
|
KodeTarifRajal: v.KodeTarifRajal,
|
|
})
|
|
} else {
|
|
if v.StatusRajal != 1 {
|
|
res = append(res, &mikrobiologi.ResponseDataPasienRanap{
|
|
NOMR: v.NOMR,
|
|
NoNota: v.NoNota,
|
|
IDXDaftar: v.IDXDaftar,
|
|
TanggalOrder: v.TanggalOrder,
|
|
NoLab: v.NoLab,
|
|
StatusRajal: v.StatusRajal,
|
|
Nama: v.Nama,
|
|
NoKTP: ktp,
|
|
TempatLahir: v.TempatLahir,
|
|
TanggalLahir: v.TanggalLahir,
|
|
JenisKelamin: v.JenisKelamin,
|
|
Alamat: v.Alamat,
|
|
NamaRuang: v.NamaRuang,
|
|
KelasRuang: v.KelasRuang,
|
|
KodeTarifRanap: v.KodeTarifRanap,
|
|
})
|
|
} else {
|
|
res = append(res, &mikrobiologi.ResponseDataPasienRajal{
|
|
NOMR: v.NOMR,
|
|
NoNota: v.NoNota,
|
|
IDXDaftar: v.IDXDaftar,
|
|
TanggalOrder: v.TanggalOrder,
|
|
NoLab: v.NoLab,
|
|
StatusRajal: v.StatusRajal,
|
|
Nama: v.Nama,
|
|
NoKTP: ktp,
|
|
TempatLahir: v.TempatLahir,
|
|
TanggalLahir: v.TanggalLahir,
|
|
JenisKelamin: v.JenisKelamin,
|
|
Alamat: v.Alamat,
|
|
NamaRuang: v.NamaRuang,
|
|
KelasRuang: v.KelasRuang,
|
|
KodeTarifRajal: v.KodeTarifRajal,
|
|
})
|
|
}
|
|
}
|
|
}
|
|
c.JSON(http.StatusOK, res)
|
|
}
|
|
|
|
func SendDataLISMikro(c *gin.Context) {
|
|
var req *mikrobiologi.RequestPasienMikrobiologi
|
|
|
|
err := c.Bind(&req)
|
|
if err != nil {
|
|
log.Println(err)
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
"message": err,
|
|
})
|
|
return
|
|
}
|
|
|
|
dataMikro, errData := mikrobiologiDB.GetDataMikroBiologiByNoMR(req)
|
|
if errData != nil {
|
|
log.Println(errData)
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
"message": errData,
|
|
})
|
|
return
|
|
}
|
|
|
|
dataPasien, errPasien := pasien.GetMPasien(req)
|
|
if errPasien != nil {
|
|
log.Println(errPasien)
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
"message": errPasien,
|
|
})
|
|
return
|
|
}
|
|
|
|
tglLahir, errParse := time.Parse(time.RFC3339, dataPasien.TanggalLahir)
|
|
if errParse != nil {
|
|
log.Println(errParse)
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
"message": errParse,
|
|
})
|
|
return
|
|
}
|
|
|
|
var responseMikro []*mikrobiologi.ResponseLISMikro
|
|
var dataLisMikro *mikrobiologi.RequestLISMikro
|
|
tglLahirString := tglLahir.Format("2006-01-02")
|
|
for _, dataMikroMain := range dataMikro {
|
|
dataLabMikro, exist, errDiagnosa := mikrobiologiDB.GetDataLabMikro(dataMikroMain.NoLab)
|
|
if errDiagnosa != nil {
|
|
log.Println(errDiagnosa)
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
"message": errDiagnosa,
|
|
})
|
|
return
|
|
}
|
|
|
|
if !exist {
|
|
log.Println("Data bukan pemeriksaan")
|
|
continue
|
|
}
|
|
|
|
namaDokter, errDokter := dokter.GetNamaDokter(dataMikroMain.DokterPengirim)
|
|
if errDokter != nil {
|
|
log.Println(errDokter)
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
"message": errDokter,
|
|
})
|
|
return
|
|
}
|
|
poli, errDokter := ruang.GetNamaRuang(dataMikroMain.KodePoli)
|
|
if errDokter != nil {
|
|
log.Println(errDokter)
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
"message": errDokter,
|
|
})
|
|
return
|
|
}
|
|
|
|
caraBayar, errCaraBayar := pendaftaran.GetCaraBayar(dataMikroMain)
|
|
if errCaraBayar != nil {
|
|
log.Println(errCaraBayar)
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
"message": errCaraBayar,
|
|
})
|
|
return
|
|
}
|
|
|
|
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: namaDokter,
|
|
AsalPasien: poli.NamaPoli,
|
|
Layanan: dataLabMikro.NamaPemeriksaan,
|
|
StatusBayar: "",
|
|
NoTransaksi: dataMikroMain.NoLab,
|
|
Asuransi: caraBayar,
|
|
Klinis: "",
|
|
KodeSpesimen: dataMikroMain.StatusSpesimen,
|
|
NamaSpesimen: dataMikroMain.Spesimen,
|
|
Pengambilan: "",
|
|
}
|
|
|
|
resMikro, errMikro := SendLisMikro(dataLisMikro)
|
|
if errMikro != nil {
|
|
log.Println(errMikro)
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
"message": errMikro,
|
|
})
|
|
return
|
|
}
|
|
|
|
log.Println(resMikro)
|
|
|
|
reqUpdate := &mikrobiologi.ReqUpdateLisMikro{
|
|
IdxOrderMikro: dataLabMikro.IdxOrderMikro,
|
|
NoLokal: resMikro.Message,
|
|
}
|
|
errUpdate := mikrobiologiDB.UpdateLabMikro(reqUpdate)
|
|
if errUpdate != nil {
|
|
log.Println(errUpdate)
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
"message": errUpdate,
|
|
})
|
|
return
|
|
}
|
|
|
|
responseMikro = append(responseMikro, &mikrobiologi.ResponseLISMikro{
|
|
NoLab: dataMikroMain.NoLab,
|
|
Status: resMikro.Status,
|
|
Message: resMikro.Message,
|
|
})
|
|
}
|
|
c.JSON(http.StatusOK, responseMikro)
|
|
}
|