penambahan All case Satu sehat
This commit is contained in:
No files matched your search
@@ -1,28 +1,74 @@
|
||||
package questionnaireresponse
|
||||
|
||||
import (
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"service/internal/interfaces/satusehat"
|
||||
)
|
||||
|
||||
func MapRequestToFHIR(req QuestionnaireResponseRequest) satusehat.FHIRPayload {
|
||||
payload := satusehat.NewFHIRPayload("QuestionnaireResponse").
|
||||
Set("questionnaire", req.QuestionnaireURL).
|
||||
Set("status", req.Status).
|
||||
Set("subject", map[string]interface{}{
|
||||
"reference": "Patient/" + req.PatientID,
|
||||
"display": req.PatientName,
|
||||
}).
|
||||
Set("encounter", map[string]interface{}{
|
||||
"reference": "Encounter/" + req.EncounterID,
|
||||
}).
|
||||
Set("authored", req.AuthoredDate.Format(time.RFC3339)).
|
||||
Set("author", map[string]interface{}{
|
||||
"reference": "Practitioner/" + req.AuthorID,
|
||||
"display": req.AuthorName,
|
||||
}).
|
||||
Set("item", req.Items)
|
||||
payload := satusehat.NewFHIRPayload("QuestionnaireResponse")
|
||||
|
||||
orgID := os.Getenv("SATUSEHAT_ORG_ID")
|
||||
if orgID == "" {
|
||||
orgID = req.OrganizationID
|
||||
}
|
||||
|
||||
if orgID != "" && req.QuestionnaireResponseID != "" {
|
||||
// Catatan: Identifier QuestionnaireResponse adalah single object, bukan array
|
||||
payload.Set("identifier", map[string]interface{}{
|
||||
"system": "http://sys-ids.kemkes.go.id/QuestionnaireResponse/" + orgID,
|
||||
"value": req.QuestionnaireResponseID,
|
||||
})
|
||||
}
|
||||
|
||||
if req.QuestionnaireURL != "" {
|
||||
payload.Set("questionnaire", req.QuestionnaireURL)
|
||||
}
|
||||
if req.Status != "" {
|
||||
payload.Set("status", req.Status)
|
||||
}
|
||||
|
||||
if req.Subject != nil {
|
||||
subject := map[string]interface{}{"reference": req.Subject.Reference}
|
||||
if req.Subject.Display != "" {
|
||||
subject["display"] = req.Subject.Display
|
||||
}
|
||||
payload.Set("subject", subject)
|
||||
}
|
||||
|
||||
if req.Encounter != nil {
|
||||
encounter := map[string]interface{}{"reference": req.Encounter.Reference}
|
||||
if req.Encounter.Display != "" {
|
||||
encounter["display"] = req.Encounter.Display
|
||||
}
|
||||
payload.Set("encounter", encounter)
|
||||
}
|
||||
|
||||
if req.Authored != nil && !req.Authored.IsZero() {
|
||||
payload.Set("authored", req.Authored.Format(time.RFC3339))
|
||||
}
|
||||
|
||||
if req.Author != nil {
|
||||
author := map[string]interface{}{"reference": req.Author.Reference}
|
||||
if req.Author.Display != "" {
|
||||
author["display"] = req.Author.Display
|
||||
}
|
||||
payload.Set("author", author)
|
||||
}
|
||||
|
||||
if req.Source != nil {
|
||||
source := map[string]interface{}{"reference": req.Source.Reference}
|
||||
if req.Source.Display != "" {
|
||||
source["display"] = req.Source.Display
|
||||
}
|
||||
payload.Set("source", source)
|
||||
}
|
||||
|
||||
if len(req.Items) > 0 {
|
||||
payload.Set("item", req.Items)
|
||||
}
|
||||
|
||||
return payload
|
||||
}
|
||||
Reference in New Issue
Block a user