penambahan All case Satu sehat

This commit is contained in:
meninjar
2026-05-04 03:48:43 +00:00
parent 135c631021
commit af32d9cfdd
127 changed files with 617690 additions and 1160 deletions

No files matched your search

+69 -20
View File
@@ -1,33 +1,78 @@
package medication
import (
"os"
"time"
"service/internal/interfaces/satusehat"
)
func MapRequestToFHIR(req MedicationRequest) satusehat.FHIRPayload {
payload := satusehat.NewFHIRPayload("Medication").
Set("status", req.StatusCode).
Set("code", map[string]interface{}{
"coding": []map[string]interface{}{
{
"system": "http://sys-ids.kemkes.go.id/kfa",
"code": req.KfaCode,
"display": req.KfaDisplay,
payload := satusehat.NewFHIRPayload("Medication")
orgID := os.Getenv("SATUSEHAT_ORG_ID")
if orgID == "" {
orgID = req.OrganizationID
}
// Set Meta Profile secara otomatis
payload.Set("meta", map[string]interface{}{
"profile": []string{"https://fhir.kemkes.go.id/r4/StructureDefinition/Medication"},
})
// Set Extension MedicationType (Non-compound) secara otomatis
payload.Set("extension", []map[string]interface{}{
{
"url": "https://fhir.kemkes.go.id/r4/StructureDefinition/MedicationType",
"valueCodeableConcept": map[string]interface{}{
"coding": []map[string]interface{}{
{
"system": "http://terminology.kemkes.go.id/CodeSystem/medication-type",
"code": "NC",
"display": "Non-compound",
},
},
},
},
})
if orgID != "" && req.MedicationID != "" {
payload.Set("identifier", []map[string]interface{}{
{
"system": "http://sys-ids.kemkes.go.id/medication/" + orgID,
"use": "official",
"value": req.MedicationID,
},
})
}
if req.StatusCode != "" {
payload.Set("status", req.StatusCode)
}
if req.KfaCode != "" {
coding := map[string]interface{}{
"system": "http://sys-ids.kemkes.go.id/kfa",
"code": req.KfaCode,
}
if req.KfaDisplay != "" {
coding["display"] = req.KfaDisplay
}
payload.Set("code", map[string]interface{}{
"coding": []map[string]interface{}{coding},
})
}
if req.FormCode != "" {
coding := map[string]interface{}{
"system": "http://terminology.kemkes.go.id/CodeSystem/medication-form",
"code": req.FormCode,
}
if req.FormDisplay != "" {
coding["display"] = req.FormDisplay
}
payload.Set("form", map[string]interface{}{
"coding": []map[string]interface{}{
{
"system": "http://terminology.kemkes.go.id/CodeSystem/medication-form",
"code": req.FormCode,
"display": req.FormDisplay,
},
},
"coding": []map[string]interface{}{coding},
})
}
@@ -37,11 +82,15 @@ func MapRequestToFHIR(req MedicationRequest) satusehat.FHIRPayload {
})
}
if req.BatchNumber != "" && req.ExpirationDate != nil {
payload.Set("batch", map[string]interface{}{
"lotNumber": req.BatchNumber,
"expirationDate": req.ExpirationDate.Format(time.RFC3339),
})
if req.BatchNumber != "" || req.ExpirationDate != nil {
batch := map[string]interface{}{}
if req.BatchNumber != "" {
batch["lotNumber"] = req.BatchNumber
}
if req.ExpirationDate != nil {
batch["expirationDate"] = req.ExpirationDate.Format(time.RFC3339)
}
payload.Set("batch", batch)
}
return payload