164 lines
3.9 KiB
Go
164 lines
3.9 KiB
Go
package mikrobiologi
|
|
|
|
import (
|
|
"api-lis/internal/database"
|
|
"api-lis/pkg/database/simrs"
|
|
"api-lis/pkg/models/simrs/mikrobiologi"
|
|
"log"
|
|
"net/http"
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func SendDataLISMikro(c *gin.Context) {
|
|
db := database.New().GetDB("simrs")
|
|
if db == nil {
|
|
log.Println("DB nil")
|
|
c.JSON(500, gin.H{"message": "DB nil"})
|
|
return
|
|
}
|
|
simrsDB := simrs.NewDatabaseService(db)
|
|
var req *mikrobiologi.RequestPasienMikrobiologi
|
|
|
|
err := c.Bind(&req)
|
|
if err != nil {
|
|
log.Println(err)
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
"message": err,
|
|
})
|
|
return
|
|
}
|
|
|
|
log.Println("REQUEST", req)
|
|
|
|
dataMikro, errData := simrsDB.GetDataMikroBiologiByNoMR(req)
|
|
if errData != nil {
|
|
log.Println(errData)
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
"message": errData,
|
|
})
|
|
return
|
|
}
|
|
|
|
dataPasien, errPasien := simrsDB.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 := simrsDB.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 := simrsDB.GetNamaDokter(dataMikroMain.DokterPengirim)
|
|
if errDokter != nil {
|
|
log.Println(errDokter)
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
"message": errDokter,
|
|
})
|
|
return
|
|
}
|
|
poli, errDokter := simrsDB.GetNamaRuang(dataMikroMain.KodePoli)
|
|
if errDokter != nil {
|
|
log.Println(errDokter)
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
"message": errDokter,
|
|
})
|
|
return
|
|
}
|
|
|
|
caraBayar, errCaraBayar := simrsDB.GetCaraBayar(dataMikroMain)
|
|
if errCaraBayar != nil {
|
|
log.Println(errCaraBayar)
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
"message": errCaraBayar,
|
|
})
|
|
return
|
|
}
|
|
for _, value := range dataLabMikro {
|
|
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: value.NamaPemeriksaan,
|
|
StatusBayar: "",
|
|
NoTransaksi: dataMikroMain.NoLab,
|
|
Asuransi: caraBayar,
|
|
Klinis: "",
|
|
KodeSpesimen: value.NamaField,
|
|
NamaSpesimen: value.JenisKelompok,
|
|
Pengambilan: "",
|
|
}
|
|
log.Println("Sebelum masuk LIS", dataLisMikro)
|
|
resMikro, errMikro := SendLisMikro(dataLisMikro)
|
|
if errMikro != nil {
|
|
log.Println(errMikro)
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
"message": errMikro.Error(),
|
|
})
|
|
return
|
|
}
|
|
|
|
log.Println(resMikro)
|
|
|
|
reqUpdate := &mikrobiologi.ReqUpdateLisMikro{
|
|
IdxOrderMikro: value.IdxOrderMikro,
|
|
NoLokal: resMikro.Message,
|
|
Kode: value.NamaField,
|
|
Spesimen: value.JenisKelompok,
|
|
}
|
|
errUpdate := simrsDB.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,
|
|
})
|
|
}
|
|
}
|
|
log.Println("RESPONSE", responseMikro)
|
|
c.JSON(http.StatusOK, responseMikro)
|
|
}
|