init project
This commit is contained in:
@@ -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)
|
||||
}
|
||||
@@ -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) {
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user