Skip to content

Commit

Permalink
Pass Validation Simple Terminology Tests
Browse files Browse the repository at this point in the history
Closes: #2292
  • Loading branch information
alexanderkiel committed Jan 19, 2025
1 parent 73d3da0 commit e8b459a
Show file tree
Hide file tree
Showing 117 changed files with 6,386 additions and 2,738 deletions.
1 change: 1 addition & 0 deletions .clj-kondo/root/config.edn
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@
blaze.fhir.spec.references fsr
blaze.fhir.spec.type type
blaze.fhir.structure-definition-repo sdr
blaze.handler.fhir.util fhir-util
blaze.job-scheduler js
blaze.job.async-interaction job-async
blaze.job.compact job-compact
Expand Down
2 changes: 1 addition & 1 deletion .github/scripts/install-validator.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/bin/bash -e

VERSION="1.0.60"
VERSION="1.0.61"

curl -sLO "https://github.com/hapifhir/org.hl7.fhir.validator-wrapper/releases/download/$VERSION/validator_cli.jar"
3 changes: 1 addition & 2 deletions .github/terminology-tests/all.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#!/bin/bash -e

java -jar validator_cli.jar -txTests -version 4.0.1 \
java -jar validator_cli.jar -txTests -version current \
-tx http://localhost:8080/fhir \
-source fhir-tx-ecosystem-ig/tests \
-output .github/terminology-tests/output \
-mode flat
7 changes: 7 additions & 0 deletions .github/terminology-tests/good.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/bin/bash

java -jar validator_cli.jar -txTests -version current \
-tx http://localhost:8080/fhir \
-output .github/terminology-tests/output \
-mode flat \
-filter good
11 changes: 1 addition & 10 deletions .github/terminology-tests/parameters-expand.sh
Original file line number Diff line number Diff line change
@@ -1,16 +1,7 @@
#!/bin/bash

SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"

# remove test cases that need the R5 representation of the ValueSet resource
jq -f "$SCRIPT_DIR/remove-r5-tests.jq" fhir-tx-ecosystem-ig/tests/test-cases.json > fhir-tx-ecosystem-ig/tests/test-cases-new.json
mv fhir-tx-ecosystem-ig/tests/test-cases-new.json fhir-tx-ecosystem-ig/tests/test-cases.json

java -jar validator_cli.jar -txTests -version 4.0.1 \
java -jar validator_cli.jar -txTests -version current \
-tx http://localhost:8080/fhir \
-source fhir-tx-ecosystem-ig/tests \
-output .github/terminology-tests/output \
-mode flat \
-filter parameters-expand

exit $((! $?))
10 changes: 0 additions & 10 deletions .github/terminology-tests/remove-r5-tests.jq

This file was deleted.

5 changes: 1 addition & 4 deletions .github/terminology-tests/simple-expand.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
#!/bin/bash

java -jar validator_cli.jar -txTests -version 4.0.1 \
java -jar validator_cli.jar -txTests -version current \
-tx http://localhost:8080/fhir \
-source fhir-tx-ecosystem-ig/tests \
-output .github/terminology-tests/output \
-mode flat \
-filter simple-expand

exit $((! $?))
5 changes: 1 addition & 4 deletions .github/terminology-tests/validation-simple.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
#!/bin/bash

java -jar validator_cli.jar -txTests -version 4.0.1 \
java -jar validator_cli.jar -txTests -version current \
-tx http://localhost:8080/fhir \
-source fhir-tx-ecosystem-ig/tests \
-output .github/terminology-tests/output \
-mode flat \
-filter validation-simple

exit $((! $?))
5 changes: 1 addition & 4 deletions .github/validation/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,7 @@ kds-test-data: kds-testdata-2024.0.1.zip
unzip kds-testdata-2024.0.1.zip
rm kds-testdata-2024.0.1.zip

validate-medication:
./validate-medication.sh

clean:
rm -rf kds-testdata-2024.0.1

.PHONY: kds-test-data validate clean
.PHONY: kds-test-data clean
5 changes: 3 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1351,6 +1351,7 @@ jobs:
with:
repository: HL7/fhir-tx-ecosystem-ig
path: fhir-tx-ecosystem-ig
ref: c000bbc79078938c980df74afeac3c80cb9deffd

- name: Setup Node
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4
Expand Down Expand Up @@ -1384,8 +1385,8 @@ jobs:
- name: Check Simple Expand
run: .github/terminology-tests/simple-expand.sh

- name: Check Parameters Expand
run: .github/terminology-tests/parameters-expand.sh
- name: Check Good
run: .github/terminology-tests/good.sh

not-enforcing-referential-integrity-test:
needs: build
Expand Down
5 changes: 4 additions & 1 deletion cljfmt.edn
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,7 @@
satisfies-prop [[:block 1]]
clojure.test.check.properties/for-all [[:block 1]]
blaze.metrics.core/collector [[:block 0]]
reify-expr [[:inner 0] [:inner 1]]}}
reify-expr [[:inner 0] [:inner 1]]
code-system-validate-code [[:block 1]]
expand-value-set [[:block 1]]
value-set-validate-code [[:block 1]]}}
2 changes: 1 addition & 1 deletion job-ig/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion job-ig/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"dependencies": {
"fsh-sushi": "^3.13.1"
"fsh-sushi": "^3.14.0"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
(:require
[blaze.async.comp :as ac]
[blaze.fhir-client :as fhir-client]
[blaze.fhir.spec.type :as type]
[blaze.http-client.spec]
[blaze.module :as m :refer [reg-collector]]
[blaze.terminology-service :as ts]
Expand All @@ -28,18 +29,22 @@
{:http-client http-client
:query-params {:url url}}))

(defn- expand-value-set [base-uri http-client url]
(defn- extract-url [{parameters :parameter}]
(some #(when (= "url" (type/value (:name %))) (type/value (:value %)))
parameters))

(defn- expand-value-set [base-uri http-client params]
(let [timer (prom/timer request-duration-seconds)]
(-> (expand-value-set* base-uri http-client url)
(-> (expand-value-set* base-uri http-client (extract-url params))
(ac/when-complete
(fn [_ _] (prom/observe-duration! timer))))))

(defn- cache [base-uri http-client]
(-> (Caffeine/newBuilder)
(.maximumSize 1000)
(^[AsyncCacheLoader] Caffeine/.buildAsync
(fn [request _]
(expand-value-set base-uri http-client (:url request))))))
(fn [params _]
(expand-value-set base-uri http-client params)))))

(defmethod m/pre-init-spec ::ts/extern [_]
(s/keys :req-un [::base-uri :blaze/http-client]))
Expand All @@ -49,8 +54,8 @@
(log/info (str "Init terminology server connection: " base-uri))
(let [cache (cache base-uri http-client)]
(reify p/TerminologyService
(-expand-value-set [_ request]
(.get ^AsyncLoadingCache cache request)))))
(-expand-value-set [_ params]
(.get ^AsyncLoadingCache cache params)))))

(derive ::ts/extern :blaze/terminology-service)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
(ns blaze.terminology-service.extern-test
(:require
[blaze.fhir.test-util]
[blaze.fhir.util :as u]
[blaze.http-client.spec :refer [http-client?]]
[blaze.module.test-util :refer [with-system]]
[blaze.terminology-service :as ts]
Expand Down Expand Up @@ -62,13 +63,17 @@
[:cause-data ::s/problems 1 :pred] := `http-client?
[:cause-data ::s/problems 1 :val] := ::invalid)))

(defn- expand-value-set [ts & nvs]
(ts/expand-value-set ts (apply u/parameters nvs)))

(deftest terminology-service-test
(with-system [{ts ::ts/extern ::keys [http-client]} config]

(-> (.onGet ^HttpClientMock http-client "http://localhost:8080/fhir/ValueSet/$expand?url=http://hl7.org/fhir/ValueSet/administrative-gender")
(.doReturn (j/write-value-as-string {:resourceType "ValueSet" :id "0"}))
(.withHeader "content-type" "application/fhir+json"))

(given @(ts/expand-value-set ts {:url "http://hl7.org/fhir/ValueSet/administrative-gender"})
(given @(expand-value-set ts
"url" #fhir/uri"http://hl7.org/fhir/ValueSet/administrative-gender")
:fhir/type := :fhir/ValueSet
:id := "0")))
3 changes: 3 additions & 0 deletions modules/fhir-structure/src/blaze/fhir/spec/spec.clj
Original file line number Diff line number Diff line change
Expand Up @@ -81,3 +81,6 @@

(s/def :fhir/Parameters
#(s2/valid? :fhir/Parameters %))

(s/def :fhir.OperationOutcome/issue
#(s2/valid? :fhir.OperationOutcome/issue %))
16 changes: 16 additions & 0 deletions modules/fhir-structure/src/blaze/fhir/util.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
(ns blaze.fhir.util
(:require
[blaze.fhir.spec.type :as type]))

(defn parameters [& nvs]
{:fhir/type :fhir/Parameters
:parameter
(into
[]
(keep
(fn [[name value]]
(when (some? value)
{:fhir/type :fhir.Parameters/parameter
:name (type/string name)
(if (:fhir/type value) :resource :value) value})))
(partition 2 nvs))})
30 changes: 30 additions & 0 deletions modules/fhir-structure/test/blaze/fhir/util_test.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
(ns blaze.fhir.util-test
(:require
[blaze.fhir.util :as u]
[blaze.test-util :as tu]
[clojure.spec.test.alpha :as st]
[clojure.test :as test :refer [deftest]]
[juxt.iota :refer [given]]))

(st/instrument)

(test/use-fixtures :each tu/fixture)

(deftest parameters-test
(given (u/parameters)
:fhir/type := :fhir/Parameters
:parameter :? empty?)

(given (u/parameters "foo" #fhir/string"bar")
:fhir/type := :fhir/Parameters
[:parameter 0 :name] := #fhir/string"foo"
[:parameter 0 :value] := #fhir/string"bar")

(given (u/parameters "foo" nil)
:fhir/type := :fhir/Parameters
:parameter :? empty?)

(given (u/parameters "foo" {:fhir/type :fhir/ValueSet})
:fhir/type := :fhir/Parameters
[:parameter 0 :name] := #fhir/string"foo"
[:parameter 0 :resource] := {:fhir/type :fhir/ValueSet}))
Loading

0 comments on commit e8b459a

Please sign in to comment.