|
|
|
@@ -7,11 +7,83 @@ import (
|
|
|
|
|
"api-lis/pkg/models/simrs/pasien"
|
|
|
|
|
"log"
|
|
|
|
|
"net/http"
|
|
|
|
|
"strings"
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type DetailPemeriksaan struct {
|
|
|
|
|
IdxOrderMikro string
|
|
|
|
|
NamaPemeriksaan string
|
|
|
|
|
TanggalOrderLab string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type KelompokPemeriksaan struct {
|
|
|
|
|
JenisKelompok string
|
|
|
|
|
Spesimen string
|
|
|
|
|
CaraPengambilan string
|
|
|
|
|
ListPemeriksaan []DetailPemeriksaan
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// CheckKeterangan digunakan untuk mengecek apakah keterangan terisi dan perlu digunakan
|
|
|
|
|
func CheckKeterangan(item *mikrobiologi.OrderLabMikro) string {
|
|
|
|
|
namaField := strings.TrimSpace(item.NamaField)
|
|
|
|
|
keterangan := strings.TrimSpace(item.Keterangan)
|
|
|
|
|
|
|
|
|
|
// Jika keterangan terisi
|
|
|
|
|
if keterangan != "" {
|
|
|
|
|
if namaField != "" {
|
|
|
|
|
// Gabungkan nama_field dan keterangan dengan spasi
|
|
|
|
|
return namaField + " " + keterangan
|
|
|
|
|
}
|
|
|
|
|
// Jika namaField kosong, gunakan keterangan saja
|
|
|
|
|
return keterangan
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Jika tidak ada keterangan, kembalikan namaField saja
|
|
|
|
|
return namaField
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// GroupDataLabMikro mengelompokkan data gelondongan berdasarkan jenis_kelompok
|
|
|
|
|
func GroupDataLabMikro(data []*mikrobiologi.OrderLabMikro) map[string]*KelompokPemeriksaan {
|
|
|
|
|
grouped := make(map[string]*KelompokPemeriksaan)
|
|
|
|
|
|
|
|
|
|
for _, item := range data {
|
|
|
|
|
jk := item.JenisKelompok
|
|
|
|
|
if jk == "" {
|
|
|
|
|
jk = "Tanpa Kelompok" // fallback
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if grouped[jk] == nil {
|
|
|
|
|
grouped[jk] = &KelompokPemeriksaan{
|
|
|
|
|
JenisKelompok: jk,
|
|
|
|
|
Spesimen: "-", // default
|
|
|
|
|
CaraPengambilan: "lain-lain", // default
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Ambil nilai yang sebenarnya sesuai pengecekan Keterangan
|
|
|
|
|
nilai := CheckKeterangan(item)
|
|
|
|
|
|
|
|
|
|
// Masukkan ke struct sesuai sub_kelompok
|
|
|
|
|
switch item.SubKelompok {
|
|
|
|
|
case "Jenis Pemeriksaan":
|
|
|
|
|
grouped[jk].ListPemeriksaan = append(grouped[jk].ListPemeriksaan, DetailPemeriksaan{
|
|
|
|
|
IdxOrderMikro: item.IdxOrderMikro,
|
|
|
|
|
NamaPemeriksaan: nilai,
|
|
|
|
|
TanggalOrderLab: item.TangggalOrderLab,
|
|
|
|
|
})
|
|
|
|
|
case "Jenis Spesimen":
|
|
|
|
|
grouped[jk].Spesimen = nilai
|
|
|
|
|
case "Cara Pengambilan Sampel":
|
|
|
|
|
grouped[jk].CaraPengambilan = nilai
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return grouped
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// SendDataLISMikro godoc
|
|
|
|
|
// @Summary Send Data LIS Mikro
|
|
|
|
|
// @Description Send Data LIS Mikro
|
|
|
|
@@ -88,20 +160,6 @@ func SendDataLISMikro(c *gin.Context) {
|
|
|
|
|
})
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
var specimenData *mikrobiologi.OrderLabMikroSpecimen
|
|
|
|
|
var errSpecimen error
|
|
|
|
|
specimenData, _, errSpecimen = simrsDB.GetDataLabMikroSpecimen(dataMikroMain.NoLab)
|
|
|
|
|
if errSpecimen != nil {
|
|
|
|
|
log.Println("Warning: error get Specimen:", errSpecimen)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var caraPengambilanData *mikrobiologi.OrderLabMikroJenisPemeriksaan
|
|
|
|
|
var errPengambilan error
|
|
|
|
|
caraPengambilanData, _, errPengambilan = simrsDB.GetDataLabMikroJenisPemeriksaan(dataMikroMain.NoLab)
|
|
|
|
|
if errPengambilan != nil {
|
|
|
|
|
log.Println("Warning: error get CaraPengambilan:", errPengambilan)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if !exist {
|
|
|
|
|
log.Println("Data bukan pemeriksaan")
|
|
|
|
|
continue
|
|
|
|
@@ -192,98 +250,92 @@ func SendDataLISMikro(c *gin.Context) {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
log.Println("Akan masuk loop dataLabMikro...")
|
|
|
|
|
for _, value := range dataLabMikro {
|
|
|
|
|
|
|
|
|
|
t, err := time.Parse(time.RFC3339, value.TangggalOrderLab)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Printf("Error parsing date: %v", err)
|
|
|
|
|
groupedData := GroupDataLabMikro(dataLabMikro)
|
|
|
|
|
|
|
|
|
|
for jk, group := range groupedData {
|
|
|
|
|
if len(group.ListPemeriksaan) == 0 {
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tglString := t.Format("2006-01-02")
|
|
|
|
|
for _, value := range group.ListPemeriksaan {
|
|
|
|
|
t, err := time.Parse(time.RFC3339, value.TanggalOrderLab)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Printf("Error parsing date: %v", err)
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var namaSpecimen string
|
|
|
|
|
if specimenData != nil && specimenData.NamaField != "" {
|
|
|
|
|
namaSpecimen = specimenData.NamaField
|
|
|
|
|
} else {
|
|
|
|
|
namaSpecimen = "-"
|
|
|
|
|
}
|
|
|
|
|
tglString := t.Format("2006-01-02")
|
|
|
|
|
|
|
|
|
|
var pengambilan string
|
|
|
|
|
if caraPengambilanData != nil && caraPengambilanData.NamaField != "" {
|
|
|
|
|
pengambilan = caraPengambilanData.NamaField
|
|
|
|
|
} else {
|
|
|
|
|
pengambilan = "lain-lain"
|
|
|
|
|
}
|
|
|
|
|
log.Println("Masuk loop pemeriksaan:", value)
|
|
|
|
|
dataLisMikro = &mikrobiologi.RequestLISMikro{
|
|
|
|
|
TanggalReg: tglReg,
|
|
|
|
|
TanggalSampel: tglString,
|
|
|
|
|
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: jk,
|
|
|
|
|
NamaSpesimen: group.Spesimen,
|
|
|
|
|
Pengambilan: group.CaraPengambilan,
|
|
|
|
|
JenisPemeriksaan: value.NamaPemeriksaan,
|
|
|
|
|
AsalPengirim: KeteranganPengirim,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
log.Println("Masuk loop, value:", value)
|
|
|
|
|
dataLisMikro = &mikrobiologi.RequestLISMikro{
|
|
|
|
|
TanggalReg: tglReg,
|
|
|
|
|
TanggalSampel: tglString,
|
|
|
|
|
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: namaSpecimen,
|
|
|
|
|
Pengambilan: pengambilan,
|
|
|
|
|
JenisPemeriksaan: value.NamaField,
|
|
|
|
|
AsalPengirim: KeteranganPengirim,
|
|
|
|
|
}
|
|
|
|
|
log.Println("Sebelum masuk LIS", dataLisMikro)
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
if resMikro.Status == "203" {
|
|
|
|
|
log.Println(resMikro)
|
|
|
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
|
|
|
"message": resMikro.Message,
|
|
|
|
|
})
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
resMikro, errMikro := SendLisMikro(dataLisMikro)
|
|
|
|
|
if errMikro != nil {
|
|
|
|
|
log.Println(errMikro)
|
|
|
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
|
|
|
"message": errMikro.Error(),
|
|
|
|
|
})
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if resMikro.Status == "203" {
|
|
|
|
|
log.Println(resMikro)
|
|
|
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
|
|
|
"message": resMikro.Message,
|
|
|
|
|
|
|
|
|
|
reqUpdate := &mikrobiologi.ReqUpdateLisMikro{
|
|
|
|
|
IdxOrderMikro: value.IdxOrderMikro,
|
|
|
|
|
NoLokal: resMikro.Message,
|
|
|
|
|
Kode: value.NamaPemeriksaan,
|
|
|
|
|
Spesimen: group.Spesimen,
|
|
|
|
|
}
|
|
|
|
|
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,
|
|
|
|
|
})
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
log.Println(resMikro)
|
|
|
|
|
|
|
|
|
|
reqUpdate := &mikrobiologi.ReqUpdateLisMikro{
|
|
|
|
|
IdxOrderMikro: value.IdxOrderMikro,
|
|
|
|
|
NoLokal: resMikro.Message,
|
|
|
|
|
Kode: value.NamaField,
|
|
|
|
|
Spesimen: namaSpecimen,
|
|
|
|
|
}
|
|
|
|
|
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,
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -324,3 +376,226 @@ func EkstrakHasil(c *gin.Context) {
|
|
|
|
|
//log.Println(resEkstrakHasil)
|
|
|
|
|
c.JSON(http.StatusOK, resEkstrakHasil)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// PreviewDataLISMikro godoc
|
|
|
|
|
// @Summary Preview Data LIS Mikro
|
|
|
|
|
// @Description Preview Data LIS Mikro tanpa dikirim
|
|
|
|
|
// @Tags LIS Mikro
|
|
|
|
|
// @Accept json
|
|
|
|
|
// @Produce json
|
|
|
|
|
// @Param request body mikrobiologi.RequestPasienMikrobiologi true "Pasien Mikrobiologi request"
|
|
|
|
|
// @Success 200 {array} mikrobiologi.RequestLISMikro
|
|
|
|
|
// @Failure 400 "Bad request"
|
|
|
|
|
// @Router /mikrobiologi/previewmikro [post]
|
|
|
|
|
func PreviewDataLISMikro(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 dari frontend (preview):", req)
|
|
|
|
|
|
|
|
|
|
dataMikro, errData := simrsDB.GetDataMikroBiologiByNoMR(req)
|
|
|
|
|
if errData != nil {
|
|
|
|
|
log.Println(errData)
|
|
|
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
|
|
|
"message": errData,
|
|
|
|
|
})
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var dataPasien *pasien.MPasien
|
|
|
|
|
dataPasien, err = simrsDB.GetMPasien(req)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Println()
|
|
|
|
|
dataPasien, err = simrsDB.GetPasienAPS(req)
|
|
|
|
|
if err != nil {
|
|
|
|
|
c.JSON(500, gin.H{
|
|
|
|
|
"code": 500,
|
|
|
|
|
"message": err,
|
|
|
|
|
})
|
|
|
|
|
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.RequestLISMikro
|
|
|
|
|
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,
|
|
|
|
|
})
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
if !exist {
|
|
|
|
|
log.Println("Data bukan pemeriksaan")
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
poli, errDokter := simrsDB.GetNamaRuang(dataMikroMain.KodePoli)
|
|
|
|
|
if errDokter != nil {
|
|
|
|
|
log.Println(errDokter)
|
|
|
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
|
|
|
"message": errDokter,
|
|
|
|
|
})
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
KeteranganPengirim := simrsDB.GetKetPengirim(dataMikroMain.IdxDaftar)
|
|
|
|
|
|
|
|
|
|
caraBayar, errCaraBayar := simrsDB.GetCaraBayar(dataMikroMain)
|
|
|
|
|
if errCaraBayar != nil {
|
|
|
|
|
log.Println(errCaraBayar)
|
|
|
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
|
|
|
"message": errCaraBayar,
|
|
|
|
|
})
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
diagnosa, errDiagnosa := simrsDB.GetDiagnosa(dataMikroMain.IdxDaftar)
|
|
|
|
|
if errDiagnosa != nil {
|
|
|
|
|
log.Println(errDiagnosa)
|
|
|
|
|
c.JSON(http.StatusBadRequest, gin.H{
|
|
|
|
|
"message": errDiagnosa,
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var dokterPengirim string
|
|
|
|
|
|
|
|
|
|
if dataMikroMain.DrOrder != "0" && dataMikroMain.DrOrder != "" {
|
|
|
|
|
dokterPengirim, errDokter = simrsDB.GetNamaDokter(dataMikroMain.DrOrder)
|
|
|
|
|
if errDokter != nil {
|
|
|
|
|
log.Println("Failed to get dokter from DrOrder:", errDokter)
|
|
|
|
|
dokterPengirim = ""
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if dokterPengirim == "" && dataMikroMain.DokterPengirim != "" && dataMikroMain.DokterPengirim != "0" {
|
|
|
|
|
dokterPengirim, errDokter = simrsDB.GetNamaDokter(dataMikroMain.DokterPengirim)
|
|
|
|
|
if errDokter != nil {
|
|
|
|
|
log.Println("Failed to get dokter from DokterPengirim:", errDokter)
|
|
|
|
|
dokterPengirim = ""
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if dokterPengirim == "" && dataMikroMain.DokterLab1 != "0" && dataMikroMain.DokterLab1 != "" {
|
|
|
|
|
dokterPengirim, errDokter = simrsDB.GetNamaDokter(dataMikroMain.DokterLab1)
|
|
|
|
|
if errDokter != nil {
|
|
|
|
|
log.Println("Failed to get dokter from DokterLab1:", errDokter)
|
|
|
|
|
dokterPengirim = ""
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rujukan, jenisKunjungan, errRujukan := simrsDB.GetKetRujukan(dataMikroMain.NoMR)
|
|
|
|
|
if errRujukan != nil {
|
|
|
|
|
log.Println(errRujukan)
|
|
|
|
|
c.JSON(http.StatusBadRequest, gin.H{"message": errRujukan})
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
groupedData := GroupDataLabMikro(dataLabMikro)
|
|
|
|
|
|
|
|
|
|
for jk, group := range groupedData {
|
|
|
|
|
if len(group.ListPemeriksaan) == 0 {
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, value := range group.ListPemeriksaan {
|
|
|
|
|
t, err := time.Parse(time.RFC3339, value.TanggalOrderLab)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Printf("Error parsing date: %v", err)
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tglString := t.Format("2006-01-02")
|
|
|
|
|
|
|
|
|
|
dataLisMikro = &mikrobiologi.RequestLISMikro{
|
|
|
|
|
TanggalReg: tglReg,
|
|
|
|
|
TanggalSampel: tglString,
|
|
|
|
|
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: jk,
|
|
|
|
|
NamaSpesimen: group.Spesimen,
|
|
|
|
|
Pengambilan: group.CaraPengambilan,
|
|
|
|
|
JenisPemeriksaan: value.NamaPemeriksaan,
|
|
|
|
|
AsalPengirim: KeteranganPengirim,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
responseMikro = append(responseMikro, dataLisMikro)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if len(responseMikro) == 0 {
|
|
|
|
|
log.Println("Tidak ada data lab mikro yang diproses")
|
|
|
|
|
c.JSON(http.StatusCreated, gin.H{
|
|
|
|
|
"message": "Tidak ada data pemeriksaan mikrobiologi ditemukan",
|
|
|
|
|
"data": []interface{}{},
|
|
|
|
|
})
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
log.Println("RESPONSE (preview)", responseMikro)
|
|
|
|
|
c.JSON(http.StatusOK, responseMikro)
|
|
|
|
|
}
|
|
|
|
|