Files
api-bpjs-surkon/handlers/mikrobiologi/mikrobiologi.go
2025-01-25 11:15:46 +07:00

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)
}