Skip to content

Commit

Permalink
Change composite edn structure
Browse files Browse the repository at this point in the history
Co-authored-by: @spicyfalafel <[email protected]>
Co-authored-by: @rublag_hs <[email protected]>
Co-authored-by: @Yngwarr <[email protected]>
  • Loading branch information
4 people committed Jul 24, 2023
1 parent 119a933 commit 95dba09
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 35 deletions.
33 changes: 12 additions & 21 deletions src/zen/fhir/search_parameter/loader.clj
Original file line number Diff line number Diff line change
Expand Up @@ -54,18 +54,6 @@
:template sp-template
:sql (template/expand sp-template types jsonpath)})}))

(defn merge-with-base-paths [base-paths components]
(mapv
(fn [base-path]
(mapv
(fn [c]
(mapv
(fn [knife-path]
(into base-path knife-path))
c))
components))
base-paths))

(defn components-search-types [ztx components]
(mapv
(fn [component]
Expand All @@ -78,30 +66,33 @@
keyword)))
components))

(defn process-composite-expression [ztx inter base-rt base-paths components]
(let [paths (map (comp :default fhirpath/fhirpath->knife :expression) components)
(defn process-composite-expression [ztx inter base-rt base-paths]
(let [components (:component inter)
base-jsonpath (fhirpath/knife->jsonpath base-paths)
components-paths (mapv (comp :default fhirpath/fhirpath->knife :expression) components)
components-jsonpaths (mapv fhirpath/knife->jsonpath components-paths)
search-types (components-search-types ztx components)
full-paths (merge-with-base-paths base-paths paths)
jsonpath (mapv (partial mapv fhirpath/knife->jsonpath) full-paths)
types (reduce
#(into %1 (mapcat (partial get-type-by-knife ztx inter base-rt)) %2)
#{}
paths)]
components-paths)]
(if (some nil? search-types)
nil
(utils/strip-nils
{:knife full-paths
:jsonpath jsonpath
{:base-knife base-paths
:base-jsonpath base-jsonpath
:component-knife components-paths
:component-jsonpath components-jsonpaths
:data-types types
:search-types search-types
:template :composite
:sql (template/expand :composite types jsonpath)}))))
:sql (template/expand :composite types base-rt)}))))

(defn process-composite-search-parameter [ztx inter]
(let [knife-paths (fhirpath/fhirpath->knife (:expression inter))]
(reduce-kv
(fn [inter base-rt paths]
(if-let [expr (process-composite-expression ztx inter base-rt paths (:component inter))]
(if-let [expr (process-composite-expression ztx inter base-rt paths)]
(assoc-in inter [:expr (keyword base-rt)] expr)
(reduced nil)))
inter
Expand Down
20 changes: 6 additions & 14 deletions test/zen/fhir/search_parameter/loader_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -148,20 +148,12 @@
:zen.fhir/schema-ns 'fhir-r5.search.Observation-combo-code-value-quantity,
:expr
{:Observation
{:knife
[[[["code"]]
[["value" "Quantity"]
["value" "Number"]]]
[[["component" "code"]]
[["component" "value" "Quantity"]
["component" "value" "Number"]]]]
:jsonpath
[[["$.\"code\"[*]"]
["$.\"value\".\"Quantity\"[*]"
"$.\"value\".\"Number\"[*]"]]
[["$.\"component\".\"code\"[*]"]
["$.\"component\".\"value\".\"Quantity\"[*]"
"$.\"component\".\"value\".\"Number\"[*]"]]]
{:base-knife [[] ["component"]]
:base-jsonpath ["$[*]" "$.\"component\"[*]"]
:component-knife [[["code"]]
[["value" "Quantity"]]],
:component-jsonpath [["$.\"code\"[*]"]
["$.\"value\".\"Quantity\"[*]"]],
:data-types
#{{:type "Quantity", :polymorphic? false}
{:type "CodeableConcept", :polymorphic? false}}
Expand Down

0 comments on commit 95dba09

Please sign in to comment.