From ce6b4acfacb9e9a82ae383b43aa83a40f45882d4 Mon Sep 17 00:00:00 2001 From: Alexander Kiel Date: Thu, 21 Jul 2022 17:31:50 +0200 Subject: [PATCH] Remove Bare Polymorph JSON Properties The example is a Task resource were the output value is given as with the bare "value" key instead of one of the concrete keys like "valueReference". Such properties can't be assigned a type and have to be removed. --- .../scripts/evaluate-measure-subject-list.sh | 6 ++-- docs/cql-queries/api.md | 2 +- evaluate-measure.sh | 2 +- .../src/blaze/fhir/spec/impl.clj | 8 ++++-- .../test/blaze/fhir/spec_test.clj | 28 +++++++++++++++++-- .../middleware/params_test.clj | 2 +- .../fhir/operation/evaluate_measure_test.clj | 2 +- 7 files changed, 37 insertions(+), 13 deletions(-) diff --git a/.github/scripts/evaluate-measure-subject-list.sh b/.github/scripts/evaluate-measure-subject-list.sh index f608c2168..a346966b6 100755 --- a/.github/scripts/evaluate-measure-subject-list.sh +++ b/.github/scripts/evaluate-measure-subject-list.sh @@ -71,15 +71,15 @@ cat < (dissoc m k) (assoc key v)) (recur keys)) - m))) + (dissoc m key)))) (def ^:private choice-type-key-cache @@ -392,7 +394,7 @@ (keyword (str (name key) (str/capital (name type))))))))) -(defn choice-type-key [key type] +(defn- choice-type-key [key type] (.get ^LoadingCache choice-type-key-cache [key type])) diff --git a/modules/fhir-structure/test/blaze/fhir/spec_test.clj b/modules/fhir-structure/test/blaze/fhir/spec_test.clj index cf1370b7f..0d4c9eab9 100644 --- a/modules/fhir-structure/test/blaze/fhir/spec_test.clj +++ b/modules/fhir-structure/test/blaze/fhir/spec_test.clj @@ -4332,9 +4332,9 @@ [#fhir/Extension {:value #fhir/Reference{:reference "Patient/153540"}}]} #fhir/uri - {:extension - [#fhir/Extension - {:value #fhir/Reference{:reference "Observation/153628"}}]}]} + {:extension + [#fhir/Extension + {:value #fhir/Reference{:reference "Observation/153628"}}]}]} [["Procedure" "153904"] ["Condition" "153931"] ["Patient" "153540"] @@ -4381,6 +4381,28 @@ ["Observation" "204754"]]))) +(deftest task-test + (testing "conforming" + (s2/form :fhir.json.Task/output) + (testing "JSON" + (are [json fhir] (= fhir (s2/conform :fhir.json/Task json)) + {:resourceType "Task" + :output + [{:valueReference {:reference "bar"}}]} + {:fhir/type :fhir/Task + :output + [{:fhir/type :fhir.Task/output + :value #fhir/Reference{:reference "bar"}}]}) + + (testing "bare :value properties are removed" + (are [json fhir] (= fhir (s2/conform :fhir.json/Task json)) + {:resourceType "Task" + :output + [{:value {:reference "bar"}}]} + {:fhir/type :fhir/Task + :output + [{:fhir/type :fhir.Task/output}]}))))) + (deftest primitive-val-test (are [x] (fhir-spec/primitive-val? x) "foo" diff --git a/modules/operation-measure-evaluate-measure/test/blaze/fhir/operation/evaluate_measure/middleware/params_test.clj b/modules/operation-measure-evaluate-measure/test/blaze/fhir/operation/evaluate_measure/middleware/params_test.clj index 68cd7787c..490fb2d53 100644 --- a/modules/operation-measure-evaluate-measure/test/blaze/fhir/operation/evaluate_measure/middleware/params_test.clj +++ b/modules/operation-measure-evaluate-measure/test/blaze/fhir/operation/evaluate_measure/middleware/params_test.clj @@ -140,7 +140,7 @@ :value #fhir/date"2015"} {:fhir/type :fhir.Parameters/parameter :name "measure" - :value "measure-202606"}]}}]] + :value #fhir/string"measure-202606"}]}}]] (let [{:blaze.fhir.operation.evaluate-measure/keys [params]} @(handler request)] diff --git a/modules/operation-measure-evaluate-measure/test/blaze/fhir/operation/evaluate_measure_test.clj b/modules/operation-measure-evaluate-measure/test/blaze/fhir/operation/evaluate_measure_test.clj index 06bdc71a2..ff538afe0 100644 --- a/modules/operation-measure-evaluate-measure/test/blaze/fhir/operation/evaluate_measure_test.clj +++ b/modules/operation-measure-evaluate-measure/test/blaze/fhir/operation/evaluate_measure_test.clj @@ -503,7 +503,7 @@ :parameter [{:fhir/type :fhir.Parameters/parameter :name "measure" - :value "url-181501"} + :value #fhir/string"url-181501"} {:fhir/type :fhir.Parameters/parameter :name "periodStart" :value #fhir/date"2014"}