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("dari LIS", response) res, err := io.ReadAll(response.Body) if err != nil { fmt.Println(err) } //log.Println("code:", response.StatusCode) 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 }