From 36c2a2f93aee390c967ef5d7d6662380bfccb03a Mon Sep 17 00:00:00 2001 From: Jason Kulatunga Date: Sun, 3 Mar 2024 15:09:06 -0800 Subject: [PATCH] working Observation components with/without units. --- backend/pkg/utils/ips/render.go | 7 ++++- .../templates/allergies_intolerances.gohtml | 10 +++---- .../ips/templates/history_of_illness.gohtml | 4 +-- .../templates/history_of_procedures.gohtml | 2 +- .../utils/ips/templates/immunizations.gohtml | 6 ++-- .../includes/observation-unit.gohtml | 12 ++++---- .../includes/observation-value.gohtml | 28 +++++++++++-------- .../ips/templates/medical_devices.gohtml | 4 +-- .../utils/ips/templates/plan_of_care.gohtml | 2 +- .../pkg/utils/ips/templates/pregnancy.gohtml | 2 +- .../utils/ips/templates/problem_list.gohtml | 4 +-- .../utils/ips/templates/social_history.gohtml | 2 +- .../utils/ips/templates/vital_signs.gohtml | 2 +- 13 files changed, 47 insertions(+), 38 deletions(-) diff --git a/backend/pkg/utils/ips/render.go b/backend/pkg/utils/ips/render.go index fb1d855c..add170b8 100644 --- a/backend/pkg/utils/ips/render.go +++ b/backend/pkg/utils/ips/render.go @@ -55,7 +55,12 @@ func NewNarrative() (*Narrative, error) { } return template.HTML(*s) }, - "parseList": func(data datatypes.JSON) []map[string]interface{} { + "parseStringList": func(data datatypes.JSON) []string { + var parsed []string + _ = json.Unmarshal(data, &parsed) + return parsed + }, + "parseMapList": func(data datatypes.JSON) []map[string]interface{} { var parsed []map[string]interface{} _ = json.Unmarshal(data, &parsed) return parsed diff --git a/backend/pkg/utils/ips/templates/allergies_intolerances.gohtml b/backend/pkg/utils/ips/templates/allergies_intolerances.gohtml index 9f2d7b43..1c2625ee 100644 --- a/backend/pkg/utils/ips/templates/allergies_intolerances.gohtml +++ b/backend/pkg/utils/ips/templates/allergies_intolerances.gohtml @@ -26,11 +26,11 @@ Comments: AllergyIntolerance.note[x].text (separated by
) {{- /*gotype: github.com/fastenhealth/fasten-onprem/backend/pkg/utils/ips.NarrativeTemplateData*/ -}} {{range $index, $entry := .AllergyIntolerance }} - {{pluckList "text" ($entry.Code | parseList) | uniq | join "," }} {{/* Allergen */}} - {{pluckList "code" ($entry.ClinicalStatus | parseList) | uniq | join "," }} {{/* Status */}} - {{pluckList "code" ($entry.Category | parseList) | uniq | join "," }} {{/* Category */}} - {{pluckList "text" ($entry.Manifestation | parseList) | uniq | join "," }} {{/* Reaction */}} - {{pluckList "code" ($entry.Criticality | parseList) | uniq | join ","}} {{/* Severity */}} + {{pluckList "text" ($entry.Code | parseMapList) | uniq | join "," }} {{/* Allergen */}} + {{pluckList "code" ($entry.ClinicalStatus | parseMapList) | uniq | join "," }} {{/* Status */}} + {{pluckList "code" ($entry.Category | parseMapList) | uniq | join "," }} {{/* Category */}} + {{pluckList "text" ($entry.Manifestation | parseMapList) | uniq | join "," }} {{/* Reaction */}} + {{pluckList "code" ($entry.Criticality | parseMapList) | uniq | join ","}} {{/* Severity */}} Comments {{/* Comments - TODO: use FHIRPath */}} {{default "unknown" $entry.Onset }} {{/* Onset */}} diff --git a/backend/pkg/utils/ips/templates/history_of_illness.gohtml b/backend/pkg/utils/ips/templates/history_of_illness.gohtml index ec96b346..4e83b465 100644 --- a/backend/pkg/utils/ips/templates/history_of_illness.gohtml +++ b/backend/pkg/utils/ips/templates/history_of_illness.gohtml @@ -20,8 +20,8 @@ Onset Date: Condition.onsetDateTime || Condition.onsetPeriod.start && “-“ && {{- /*gotype: github.com/fastenhealth/fasten-onprem/backend/pkg/utils/ips.NarrativeTemplateData*/ -}} {{range $index, $entry := .Condition }} - {{pluckList "text" ($entry.Code | parseList) | uniq | join "," }} {{/* Medical Problem */}} - {{pluckList "code" ($entry.ClinicalStatus | parseList) | uniq | join "," }} {{/* Status */}} + {{pluckList "text" ($entry.Code | parseMapList) | uniq | join "," }} {{/* Medical Problem */}} + {{pluckList "code" ($entry.ClinicalStatus | parseMapList) | uniq | join "," }} {{/* Status */}} Comments {{/* Comments - TODO: use FHIRPath */}} {{$entry.OnsetDate | date "2006-01-02"}} {{/* Onset */}} diff --git a/backend/pkg/utils/ips/templates/history_of_procedures.gohtml b/backend/pkg/utils/ips/templates/history_of_procedures.gohtml index 29eadf36..e985b792 100644 --- a/backend/pkg/utils/ips/templates/history_of_procedures.gohtml +++ b/backend/pkg/utils/ips/templates/history_of_procedures.gohtml @@ -19,7 +19,7 @@ Date: Procedure.performedDateTime || Procedure.performedPeriod.start && “-“ {{- /*gotype: github.com/fastenhealth/fasten-onprem/backend/pkg/utils/ips.NarrativeTemplateData*/ -}} {{range $index, $entry := .Procedure }} - {{pluckList "text" ($entry.Code | parseList) | uniq | join "," }} {{/* Procedure */}} + {{pluckList "text" ($entry.Code | parseMapList) | uniq | join "," }} {{/* Procedure */}} Comments {{/* Comments - TODO: use FHIRPath */}} {{$entry.Date | date "2006-01-02"}} {{/* Performed Date */}} diff --git a/backend/pkg/utils/ips/templates/immunizations.gohtml b/backend/pkg/utils/ips/templates/immunizations.gohtml index 748ad730..e782ce87 100644 --- a/backend/pkg/utils/ips/templates/immunizations.gohtml +++ b/backend/pkg/utils/ips/templates/immunizations.gohtml @@ -27,10 +27,10 @@ Date: Immunization.occurrenceDateTime || Immunization.occurrenceString {{- /*gotype: github.com/fastenhealth/fasten-onprem/backend/pkg/utils/ips.NarrativeTemplateData*/ -}} {{range $index, $entry := .Immunization }} - {{pluckList "text" ($entry.VaccineCode | parseList) | uniq | join "," }} {{/* Immunization */}} - {{pluckList "code" ($entry.Status | parseList) | uniq | join "," }} {{/* Status */}} + {{pluckList "text" ($entry.VaccineCode | parseMapList) | uniq | join "," }} {{/* Immunization */}} + {{pluckList "code" ($entry.Status | parseMapList) | uniq | join "," }} {{/* Status */}} Dose Number {{/* Comments - TODO: use FHIRPath */}} - {{pluckList "display" ($entry.Manufacturer | parseList) | uniq | join "," }} {{/* Manufacturer */}} + {{pluckList "display" ($entry.Manufacturer | parseMapList) | uniq | join "," }} {{/* Manufacturer */}} {{$entry.LotNumber}} {{/* Lot Number */}} Comments {{$entry.Date | date "2006-01-02"}} {{/* Performed Date */}} diff --git a/backend/pkg/utils/ips/templates/includes/observation-unit.gohtml b/backend/pkg/utils/ips/templates/includes/observation-unit.gohtml index 10a0de7c..b4040903 100644 --- a/backend/pkg/utils/ips/templates/includes/observation-unit.gohtml +++ b/backend/pkg/utils/ips/templates/includes/observation-unit.gohtml @@ -1,11 +1,11 @@ -{{if not (empty .ValueString) }} +{{if not (empty (.ValueString | parseMapList)) }} {{.ValueString}} -{{else if not (empty (.ValueQuantity | parseList)) }} - {{.ValueQuantity | parseList | pluckList "unit" | join "," }} +{{else if not (empty (.ValueQuantity | parseMapList)) }} + {{.ValueQuantity | parseMapList | pluckList "unit" | join "," }} {{else if not (empty .ValueDate) }} {{.ValueDate | date "2006-01-02" }} -{{else if not (empty (.ValueConcept | parseList)) }} +{{else if not (empty (.ValueConcept | parseMapList)) }} {{.ValueConcept}} -{{else if not (empty (.ComponentValueQuantity | parseList)) }} - {{.ComponentValueQuantity | parseList | pluckList "unit" | join "," }} +{{else if not (empty (.ComponentValueQuantity | parseMapList)) }} + {{.ComponentValueQuantity | parseMapList | pluckList "unit" | join "," }} {{end}} diff --git a/backend/pkg/utils/ips/templates/includes/observation-value.gohtml b/backend/pkg/utils/ips/templates/includes/observation-value.gohtml index c57d17bb..c92aa81f 100644 --- a/backend/pkg/utils/ips/templates/includes/observation-value.gohtml +++ b/backend/pkg/utils/ips/templates/includes/observation-value.gohtml @@ -1,23 +1,27 @@ -{{if not (empty .entry.ValueString) }} - {{.ValueString}} -{{else if not (empty (.entry.ValueQuantity | parseList)) }} - {{.entry.ValueQuantity | parseList | pluckList "value" | roundList 2 | join "," }} +{{if not (empty (.entry.ValueString | parseMapList)) }} + {{.entry.ValueString | parseStringList | join ","}} +{{else if not (empty (.entry.ValueQuantity | parseMapList)) }} + {{.entry.ValueQuantity | parseMapList | pluckList "value" | roundList 2 | join "," }} {{if (get . "include_unit")}} - {{.entry.ValueQuantity | parseList | pluckList "unit" | join "," }} + {{.entry.ValueQuantity | parseMapList | pluckList "unit" | join "," }} {{end}} {{else if not (empty .entry.ValueDate) }} {{.entry.ValueDate | date "2006-01-02" }} -{{else if not (empty (.entry.ValueConcept | parseList)) }} +{{else if not (empty (.entry.ValueConcept | parseMapList)) }} {{.entry.ValueConcept}} -{{else if not (empty (.entry.ComponentValueQuantity | parseList)) }} - {{$componentCodeText := $.entry.ComponentCode | parseList | pluckList "text" }} - {{$componentValueQuantity := $.entry.ComponentValueQuantity | parseList | pluckList "value" | roundList 2 }} +{{else if not (empty (.entry.ComponentValueQuantity | parseMapList)) }} + {{$componentCodeText := .entry.ComponentCode | parseMapList | pluckList "text" }} + {{$componentValueQuantity := .entry.ComponentValueQuantity | parseMapList | pluckList "value" | roundList 2 }} + {{$componentValueQuantityUnit := .entry.ComponentValueQuantity | parseMapList | pluckList "unit" }} + {{range $index, $text := $componentCodeText }} {{$text}} - {{index $componentValueQuantity $index}} + {{if (get $ "include_unit")}} + {{index $componentValueQuantityUnit $index}} + {{end}} +
{{end}} - {{if (get . "include_unit")}} - {{.ComponentValueQuantity | parseList | pluckList "unit" | join "," }} - {{end}} + {{end}} diff --git a/backend/pkg/utils/ips/templates/medical_devices.gohtml b/backend/pkg/utils/ips/templates/medical_devices.gohtml index d237d73e..86421f7e 100644 --- a/backend/pkg/utils/ips/templates/medical_devices.gohtml +++ b/backend/pkg/utils/ips/templates/medical_devices.gohtml @@ -20,8 +20,8 @@ Date Recorded: DeviceUseStatement.recordedDateTime {{- /*gotype: github.com/fastenhealth/fasten-onprem/backend/pkg/utils/ips.NarrativeTemplateData*/ -}} {{range $index, $entry := .Device }} - {{pluckList "text" ($entry.Type | parseList) | uniq | join "," }} {{/* Device */}} - {{pluckList "code" ($entry.Status | parseList) | uniq | join "," }} {{/* Status */}} + {{pluckList "text" ($entry.Type | parseMapList) | uniq | join "," }} {{/* Device */}} + {{pluckList "code" ($entry.Status | parseMapList) | uniq | join "," }} {{/* Status */}} Comments {{/* Date Recorded */}} diff --git a/backend/pkg/utils/ips/templates/plan_of_care.gohtml b/backend/pkg/utils/ips/templates/plan_of_care.gohtml index 8acc170a..a88e45d3 100644 --- a/backend/pkg/utils/ips/templates/plan_of_care.gohtml +++ b/backend/pkg/utils/ips/templates/plan_of_care.gohtml @@ -23,7 +23,7 @@ Planned End: CarePlan.period.end {{range $index, $entry := .CarePlan }} Activity - {{pluckList "code" ($entry.Intent | parseList) | uniq | join "," }} {{/* Intent */}} + {{pluckList "code" ($entry.Intent | parseMapList) | uniq | join "," }} {{/* Intent */}} Comments {{$entry.Date}}{{/* Planned Start */}} Planned End diff --git a/backend/pkg/utils/ips/templates/pregnancy.gohtml b/backend/pkg/utils/ips/templates/pregnancy.gohtml index 8e9dd53a..01cc7fd6 100644 --- a/backend/pkg/utils/ips/templates/pregnancy.gohtml +++ b/backend/pkg/utils/ips/templates/pregnancy.gohtml @@ -20,7 +20,7 @@ Date: Observation.effectiveDateTime || Observation.effectivePeriod.start {{- /*gotype: github.com/fastenhealth/fasten-onprem/backend/pkg/utils/ips.NarrativeTemplateData*/ -}} {{range $index, $entry := .Observation }} - {{pluckList "text" ($entry.Code | parseList) | uniq | join "," }} {{/* Code */}} + {{pluckList "text" ($entry.Code | parseMapList) | uniq | join "," }} {{/* Code */}} {{template "observation-value.gohtml" (dict "entry" $entry "include_unit" true)}} {{/* Result */}} Comments {{$entry.Date | date "2006-01-02"}} {{/* Date */}} diff --git a/backend/pkg/utils/ips/templates/problem_list.gohtml b/backend/pkg/utils/ips/templates/problem_list.gohtml index 8abae809..42f5055e 100644 --- a/backend/pkg/utils/ips/templates/problem_list.gohtml +++ b/backend/pkg/utils/ips/templates/problem_list.gohtml @@ -20,8 +20,8 @@ Onset Date: Condition.onsetDateTime || Condition.onsetPeriod.start && “-“ && {{- /*gotype: github.com/fastenhealth/fasten-onprem/backend/pkg/utils/ips.NarrativeTemplateData*/ -}} {{range $index, $entry := .Condition }} - {{pluckList "text" ($entry.Code | parseList) | uniq | join "," }} {{/* Medical Problems */}} - {{pluckList "code" ($entry.ClinicalStatus | parseList) | uniq | join "," }} {{/* Status */}} + {{pluckList "text" ($entry.Code | parseMapList) | uniq | join "," }} {{/* Medical Problems */}} + {{pluckList "code" ($entry.ClinicalStatus | parseMapList) | uniq | join "," }} {{/* Status */}} Comments {{$entry.OnsetDate | date "2006-01-02"}} {{/* Onset */}} diff --git a/backend/pkg/utils/ips/templates/social_history.gohtml b/backend/pkg/utils/ips/templates/social_history.gohtml index 842806f9..a7c482c7 100644 --- a/backend/pkg/utils/ips/templates/social_history.gohtml +++ b/backend/pkg/utils/ips/templates/social_history.gohtml @@ -22,7 +22,7 @@ Date: Observation.effectiveDateTime || Observation.effectivePeriod.start {{- /*gotype: github.com/fastenhealth/fasten-onprem/backend/pkg/utils/ips.NarrativeTemplateData*/ -}} {{range $index, $entry := .Observation }} - {{pluckList "text" ($entry.Code | parseList) | uniq | join "," }} {{/* Code */}} + {{pluckList "text" ($entry.Code | parseMapList) | uniq | join "," }} {{/* Code */}} {{template "observation-value.gohtml" (dict "entry" $entry "include_unit" false)}} {{/* Result */}} Unit Comments diff --git a/backend/pkg/utils/ips/templates/vital_signs.gohtml b/backend/pkg/utils/ips/templates/vital_signs.gohtml index 3176f280..7870aca8 100644 --- a/backend/pkg/utils/ips/templates/vital_signs.gohtml +++ b/backend/pkg/utils/ips/templates/vital_signs.gohtml @@ -25,7 +25,7 @@ Date: Observation.effectiveDateTime || Observation.effectivePeriod.start {{- /*gotype: github.com/fastenhealth/fasten-onprem/backend/pkg/utils/ips.NarrativeTemplateData*/ -}} {{range $index, $entry := .Observation }} - {{pluckList "text" ($entry.Code | parseList) | uniq | join "," }} {{/* Code */}} + {{pluckList "text" ($entry.Code | parseMapList) | uniq | join "," }} {{/* Code */}} {{template "observation-value.gohtml" (dict "entry" $entry "include_unit" false)}} {{/* Result */}} {{template "observation-unit.gohtml" $entry}} Interpretation