penambahan ekstrak hasil

This commit is contained in:
2025-09-12 09:01:25 +07:00
parent 308455d144
commit f4dacae84d
6 changed files with 157 additions and 12 deletions
+37 -4
View File
@@ -40,7 +40,7 @@ func SendDataLISMikro(c *gin.Context) {
return
}
//log.Println("REQUEST dari frontend:", req)
log.Println("REQUEST dari frontend:", req)
dataMikro, errData := simrsDB.GetDataMikroBiologiByNoMR(req)
if errData != nil {
@@ -178,7 +178,7 @@ func SendDataLISMikro(c *gin.Context) {
NamaSpesimen: value.JenisKelompok,
Pengambilan: "",
}
//log.Println("Sebelum masuk LIS", dataLisMikro)
log.Println("Sebelum masuk LIS", dataLisMikro)
resMikro, errMikro := SendLisMikro(dataLisMikro)
if errMikro != nil {
log.Println(errMikro)
@@ -188,7 +188,15 @@ func SendDataLISMikro(c *gin.Context) {
return
}
//log.Println(resMikro)
if resMikro.Status == "203" {
log.Println(resMikro)
c.JSON(http.StatusBadRequest, gin.H{
"message": resMikro.Message,
})
return
}
log.Println(resMikro)
reqUpdate := &mikrobiologi.ReqUpdateLisMikro{
IdxOrderMikro: value.IdxOrderMikro,
@@ -212,6 +220,31 @@ func SendDataLISMikro(c *gin.Context) {
})
}
}
//log.Println("RESPONSE", responseMikro)
log.Println("RESPONSE", responseMikro)
c.JSON(http.StatusOK, responseMikro)
}
func EkstrakHasil(c *gin.Context) {
var req mikrobiologi.RequestEkstrakhasil
err := c.Bind(&req)
if err != nil {
log.Println(err)
c.JSON(http.StatusBadRequest, gin.H{
"message": err,
})
return
}
log.Println("REQUEST dari frontend:", req)
resEkstrakHasil, errMikro := EkstrakHasilLis(req)
if errMikro != nil {
log.Println("ini error:", errMikro)
c.JSON(http.StatusBadRequest, gin.H{
"message": errMikro.Error(),
})
return
}
log.Println(resEkstrakHasil)
c.JSON(http.StatusOK, resEkstrakHasil)
}
+90 -6
View File
@@ -15,7 +15,7 @@ func SendLisMikro(request *mikrobiologi.RequestLISMikro) (*mikrobiologi.Response
baseUrl := os.Getenv("LIS_MIKROBIOLOGI_URL")
endpoint := os.Getenv("LIS_REGISTERPASIEN")
url := baseUrl + endpoint
//log.Println("URL", url)
log.Println("URL", url)
reqMarshall, err := json.Marshal(request)
if err != nil {
@@ -26,7 +26,7 @@ func SendLisMikro(request *mikrobiologi.RequestLISMikro) (*mikrobiologi.Response
"Accept": "application/json",
"Content-Type": "application/json",
}
//log.Println("REQUEST: ", string(reqMarshall))
log.Println("REQUEST: ", string(reqMarshall))
req, err := http.NewRequest("POST", url, bytes.NewReader(reqMarshall))
if err != nil {
@@ -46,7 +46,82 @@ func SendLisMikro(request *mikrobiologi.RequestLISMikro) (*mikrobiologi.Response
return nil, err
}
//log.Println("dari LIS", response)
log.Println("dari LIS", response.StatusCode)
res, err := io.ReadAll(response.Body)
if err != nil {
fmt.Println(err)
}
//log.Println("code:", response.StatusCode)
if response.StatusCode != 201 && response.StatusCode != 504 {
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))
if response.StatusCode == 504 {
responses.Status = "203"
responses.Message = "Server LIS error"
return responses, nil
}
err = json.Unmarshal(res, &responses)
if err != nil {
log.Printf("Error unmarshalling response: %v", err)
return nil, err
}
return responses, nil
}
func EkstrakHasilLis(request mikrobiologi.RequestEkstrakhasil) ([]*mikrobiologi.RawDataEkstrakHasil, error) {
baseUrl := os.Getenv("LIS_MIKROBIOLOGI_URL")
endpoint := os.Getenv("LIS_EKSTRAKHASIL")
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("dari LIS", response.StatusCode)
res, err := io.ReadAll(response.Body)
if err != nil {
@@ -66,14 +141,23 @@ func SendLisMikro(request *mikrobiologi.RequestLISMikro) (*mikrobiologi.Response
return nil, fmt.Errorf(responseError.Error)
}
var responses *mikrobiologi.Response
var responses mikrobiologi.ResponseEkstrak
log.Println("RESPONSE: ", string(res))
//log.Println("RESPONSE: ", string(res))
err = json.Unmarshal(res, &responses)
if err != nil {
log.Printf("Error unmarshalling response: %v", err)
return nil, err
}
log.Println("RESPONSE: ", responses)
var rawData []*mikrobiologi.RawDataEkstrakHasil
err = json.Unmarshal([]byte(responses.RawData), &rawData)
if err != nil {
log.Printf("Error unmarshalling response rawdata: %v", err)
return nil, err
}
return responses, nil
log.Println("RESPONSE ekstrak hasil: ", rawData)
return rawData, nil
}
@@ -163,3 +163,28 @@ type RequestBatalMikro struct {
NoLokal string `json:"no_lokal"`
Alasan string `json:"alasan"`
}
type RequestEkstrakhasil struct {
Nolab string `json:"nolab"`
}
type ResponseEkstrak struct {
HtmlLink string `json:"htmllink"`
Html string `json:"html"`
RawData string `json:"rawdata"`
}
type RawDataEkstrakHasil struct {
ID int `json:"id"`
AccNumber string `json:"accnumber"`
Template string `json:"template"`
Komponen string `json:"komponen"`
IsiData string `json:"isidata"`
CreatedBy string `json:"created_by"`
CreatedAt string `json:"created_at"`
UpdatedAt string `json:"updated_at"`
}
type EkstrakHasil struct {
HtmlLink string `json:"htmllink"`
RawData []*RawDataEkstrakHasil `json:"rawdata"`
}