init project

This commit is contained in:
2025-01-31 11:04:28 +07:00
parent 562c727ed6
commit 66c9f17dde
21 changed files with 725 additions and 57 deletions
+156
View File
@@ -0,0 +1,156 @@
package mikrobiologi
import (
"api-lis/internal/database"
connDatabase "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()
simrsDB := connDatabase.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: dataMikroMain.StatusSpesimen,
NamaSpesimen: dataMikroMain.Spesimen,
Pengambilan: "",
}
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,
}
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)
}
+83
View File
@@ -0,0 +1,83 @@
package mikrobiologi
import (
"api-lis/pkg/models/simrs/mikrobiologi"
"bytes"
"encoding/json"
"fmt"
"io"
"log"
"net/http"
"os"
)
func SendLisMikro(request *mikrobiologi.RequestLISMikro) (*mikrobiologi.Response, error) {
baseUrl := os.Getenv("LIS_MIKROBIOLOGI_URL")
endpoint := os.Getenv("LIS_REGISTERPASIEN")
url := baseUrl + endpoint
log.Println("URL", url)
reqMarshall, err := json.Marshal(request)
if err != nil {
log.Printf("Error json marshal: %v", err)
return nil, err
}
headers := map[string]string{
"Accept": "application/json",
"Content-Type": "application/json",
}
log.Println("REQUEST: ", string(reqMarshall))
req, err := http.NewRequest("POST", url, bytes.NewReader(reqMarshall))
if err != nil {
log.Printf("Error creating request: %v", err)
return nil, err
}
for key, value := range headers {
req.Header.Set(key, value)
}
client := http.Client{}
response, err := client.Do(req)
if err != nil {
log.Printf("Error making external API request: %v", err)
return nil, err
}
log.Println(response)
res, err := io.ReadAll(response.Body)
if err != nil {
fmt.Println(err)
}
if response.StatusCode != 201 {
var responseError *mikrobiologi.ResponseError
err = json.Unmarshal(res, &responseError)
if err != nil {
log.Printf("Error unmarshalling response: %v", err)
return nil, err
}
log.Println("MASUK SINI?")
log.Println(responseError.Error)
return nil, fmt.Errorf(responseError.Error)
}
var responses *mikrobiologi.Response
log.Println("RESPONSE: ", string(res))
err = json.Unmarshal(res, &responses)
if err != nil {
log.Printf("Error unmarshalling response: %v", err)
return nil, err
}
return responses, nil
}
func ResponseBatalMikro(request *mikrobiologi.RequestBatalMikro) {
}