Merge branch 'master' into master
This commit is contained in:
commit
7917a19d26
@ -16,12 +16,12 @@ echo "$txoption"
|
|||||||
|
|
||||||
publisher=$input_cache_path/$publisher_jar
|
publisher=$input_cache_path/$publisher_jar
|
||||||
if test -f "$publisher"; then
|
if test -f "$publisher"; then
|
||||||
JAVA -jar $publisher -ig ig.ini $txoption $*
|
java -jar $publisher -ig ig.ini $txoption $*
|
||||||
|
|
||||||
else
|
else
|
||||||
publisher=../$publisher_jar
|
publisher=../$publisher_jar
|
||||||
if test -f "$publisher"; then
|
if test -f "$publisher"; then
|
||||||
JAVA -jar $publisher -ig ig.ini $txoption $*
|
java -jar $publisher -ig ig.ini $txoption $*
|
||||||
else
|
else
|
||||||
echo IG Publisher NOT FOUND in input-cache or parent folder. Please run _updatePublisher. Aborting...
|
echo IG Publisher NOT FOUND in input-cache or parent folder. Please run _updatePublisher. Aborting...
|
||||||
fi
|
fi
|
||||||
|
|||||||
@ -1,5 +1,8 @@
|
|||||||
@ECHO OFF
|
@ECHO OFF
|
||||||
SET dlurl=https://fhir.github.io/latest-ig-publisher/org.hl7.fhir.publisher.jar
|
|
||||||
|
SETLOCAL
|
||||||
|
|
||||||
|
SET dlurl=https://storage.googleapis.com/ig-build/org.hl7.fhir.publisher.jar
|
||||||
SET publisher_jar=org.hl7.fhir.publisher.jar
|
SET publisher_jar=org.hl7.fhir.publisher.jar
|
||||||
SET input_cache_path=%CD%\input-cache\
|
SET input_cache_path=%CD%\input-cache\
|
||||||
SET skipPrompts=false
|
SET skipPrompts=false
|
||||||
@ -16,6 +19,15 @@ IF "%~1"=="/f" SET skipPrompts=true
|
|||||||
ECHO "%skipPrompts%"
|
ECHO "%skipPrompts%"
|
||||||
|
|
||||||
|
|
||||||
|
:processflags
|
||||||
|
SET ARG=%1
|
||||||
|
IF DEFINED ARG (
|
||||||
|
IF "%ARG%"=="-f" SET FORCE=true
|
||||||
|
IF "%ARG%"=="--force" SET FORCE=true
|
||||||
|
SHIFT
|
||||||
|
GOTO processflags
|
||||||
|
)
|
||||||
|
|
||||||
FOR %%x IN ("%CD%") DO SET upper_path=%%~dpx
|
FOR %%x IN ("%CD%") DO SET upper_path=%%~dpx
|
||||||
|
|
||||||
IF NOT EXIST "%input_cache_path%%publisher_jar%" (
|
IF NOT EXIST "%input_cache_path%%publisher_jar%" (
|
||||||
@ -39,28 +51,32 @@ IF NOT EXIST "%input_cache_path%%publisher_jar%" (
|
|||||||
)
|
)
|
||||||
|
|
||||||
:create
|
:create
|
||||||
|
IF DEFINED FORCE (
|
||||||
|
MKDIR "%input_cache_path%" 2> NUL
|
||||||
|
GOTO:download
|
||||||
|
)
|
||||||
ECHO Will place publisher jar here: %input_cache_path%%publisher_jar%
|
ECHO Will place publisher jar here: %input_cache_path%%publisher_jar%
|
||||||
IF "%skipPrompts%"=="true" (
|
IF "%skipPrompts%"=="true" (
|
||||||
SET create="Y"
|
SET create="Y"
|
||||||
) ELSE (
|
) ELSE (
|
||||||
SET /p create="Ok? (Y/N) "
|
SET /p create="Ok? (Y/N) "
|
||||||
)
|
)
|
||||||
IF /I %create%=="Y" (
|
IF /I %create%=="Y" (
|
||||||
MKDIR "%input_cache_path%" 2> NUL
|
MKDIR "%input_cache_path%" 2> NUL
|
||||||
GOTO:download
|
GOTO:download
|
||||||
)
|
)
|
||||||
GOTO:done
|
GOTO:done
|
||||||
|
|
||||||
:upgrade
|
:upgrade
|
||||||
IF "%skipPrompts%"=="true" (
|
IF "%skipPrompts%"=="true" (
|
||||||
SET overwrite="Y"
|
SET overwrite="Y"
|
||||||
) ELSE (
|
) ELSE (
|
||||||
SET /p overwrite="Overwrite %jarlocation%? (Y/N) "
|
SET /p overwrite="Overwrite %jarlocation%? (Y/N) "
|
||||||
)
|
)
|
||||||
|
|
||||||
IF /I %overwrite%=="Y" (
|
IF /I %overwrite%=="Y" (
|
||||||
GOTO:download
|
GOTO:download
|
||||||
)
|
)
|
||||||
GOTO:done
|
GOTO:done
|
||||||
|
|
||||||
:download
|
:download
|
||||||
@ -110,4 +126,6 @@ ECHO Updating this file...
|
|||||||
start copy /y "_updatePublisher.new.bat" "_updatePublisher.bat" ^&^& del "_updatePublisher.new.bat" ^&^& exit
|
start copy /y "_updatePublisher.new.bat" "_updatePublisher.bat" ^&^& del "_updatePublisher.new.bat" ^&^& exit
|
||||||
REM ============================
|
REM ============================
|
||||||
|
|
||||||
PAUSE
|
IF "%skipPrompts%"=="true" (
|
||||||
|
PAUSE
|
||||||
|
}
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
dlurl=https://fhir.github.io/latest-ig-publisher/org.hl7.fhir.publisher.jar
|
dlurl=https://storage.googleapis.com/ig-build/org.hl7.fhir.publisher.jar
|
||||||
publisher_jar=org.hl7.fhir.publisher.jar
|
publisher_jar=org.hl7.fhir.publisher.jar
|
||||||
input_cache_path=./input-cache/
|
input_cache_path=./input-cache/
|
||||||
|
|
||||||
@ -9,6 +9,20 @@ if ! type "curl" > /dev/null; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
FORCE=false
|
||||||
|
|
||||||
|
while :; do
|
||||||
|
case $1 in
|
||||||
|
-f|--force) FORCE=true ;;
|
||||||
|
--)
|
||||||
|
shift
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*) break
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
publisher="$input_cache_path$publisher_jar"
|
publisher="$input_cache_path$publisher_jar"
|
||||||
if test -f "$publisher"; then
|
if test -f "$publisher"; then
|
||||||
echo "IG Publisher FOUND in input-cache"
|
echo "IG Publisher FOUND in input-cache"
|
||||||
@ -31,15 +45,17 @@ else
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if "$upgrade"; then
|
if [[ "$FORCE" != true ]]; then
|
||||||
message="Overwrite $jarlocation? (Y/N) "
|
if "$upgrade"; then
|
||||||
else
|
message="Overwrite $jarlocation? (Y/N) "
|
||||||
echo Will place publisher jar here: "$jarlocation"
|
else
|
||||||
message="Ok? (Y/N) "
|
echo Will place publisher jar here: "$jarlocation"
|
||||||
|
message="Ok (enter 'y' or 'Y' to continue, any other key to cancel)?"
|
||||||
|
fi
|
||||||
|
read -r -p "$message" response
|
||||||
fi
|
fi
|
||||||
|
|
||||||
read -r -p "$message" response
|
if [[ "$FORCE" == true ]] || [[ "$response" =~ ^([yY])$ ]]; then
|
||||||
if [[ "$response" =~ ^([yY])$ ]]; then
|
|
||||||
echo "Downloading most recent publisher to $jarlocationname - it's ~100 MB, so this may take a bit"
|
echo "Downloading most recent publisher to $jarlocationname - it's ~100 MB, so this may take a bit"
|
||||||
# wget "https://fhir.github.io/latest-ig-publisher/org.hl7.fhir.publisher.jar" -O "$jarlocation"
|
# wget "https://fhir.github.io/latest-ig-publisher/org.hl7.fhir.publisher.jar" -O "$jarlocation"
|
||||||
curl $dlurl -o "$jarlocation" --create-dirs
|
curl $dlurl -o "$jarlocation" --create-dirs
|
||||||
|
|||||||
48
ig.ini
48
ig.ini
@ -1,4 +1,50 @@
|
|||||||
[IG]
|
[IG]
|
||||||
|
# ini file for the Implementation Guide publisher
|
||||||
|
# see comments below for instructions
|
||||||
|
|
||||||
ig = input/myig.xml
|
ig = input/myig.xml
|
||||||
template = fhir.base.template
|
template = fhir.base.template
|
||||||
usage-stats-opt-out = false
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##########################
|
||||||
|
### ig.ini parameters: ###
|
||||||
|
##########################
|
||||||
|
|
||||||
|
# ig: the name of the implementation guide resource file.
|
||||||
|
examples:
|
||||||
|
# ig = input/myig.xml
|
||||||
|
# ig = input/implementationguide-example2.xml
|
||||||
|
|
||||||
|
# template: the IG template that will be used to create the implementation guide (normally be a package name, but can be a local folder).
|
||||||
|
# base fhir template:
|
||||||
|
#template = fhir.base.template
|
||||||
|
|
||||||
|
# HL7 (non-FHIR) IG template:
|
||||||
|
#template = hl7.base.template
|
||||||
|
|
||||||
|
# HL7 FHIR template:
|
||||||
|
#template = hl7.fhir.template
|
||||||
|
|
||||||
|
# it's possible to specify a specific version of the template
|
||||||
|
#template = fhir.base.template#0.1.0
|
||||||
|
# or the current version:
|
||||||
|
#template = fhir.base.template#current
|
||||||
|
# if no version is specified, the publisher will take the #current version
|
||||||
|
|
||||||
|
# local templates can be used by prefixing a relative path with # :
|
||||||
|
#template = #mylocaltemplate
|
||||||
|
#template = #..\templates\mytesttemplate1
|
||||||
|
|
||||||
|
# local templates can also use absolute paths:
|
||||||
|
#template = #C:\MyWork\ImplementationGuides\mytemplates\mytesttemplate1
|
||||||
|
|
||||||
|
|
||||||
|
# other parameters are defined in the ImplementationGuide resource:
|
||||||
|
# https://confluence.hl7.org/display/FHIR/Implementation+Guide+Parameters
|
||||||
|
|
||||||
|
# for more documentation on implementation guides and templates, see the FHIR Guidance ImplementationGuide
|
||||||
|
# http://build.fhir.org/ig/FHIR/ig-guidance
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
45
input/cql/example.cql
Normal file
45
input/cql/example.cql
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
library example version '1.0.0'
|
||||||
|
|
||||||
|
using FHIR version '4.0.1'
|
||||||
|
|
||||||
|
include FHIRHelpers version '4.0.1'
|
||||||
|
|
||||||
|
codesystem "Observation Category Codes": 'http://terminology.hl7.org/CodeSystem/observation-category'
|
||||||
|
|
||||||
|
valueset "Encounter Inpatient": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307'
|
||||||
|
valueset "Emergency Department Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292'
|
||||||
|
valueset "Telephone Evaluation": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1082'
|
||||||
|
valueset "Telephone Management": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1053'
|
||||||
|
|
||||||
|
valueset "COVID-19 Screening Result": 'TBD'
|
||||||
|
|
||||||
|
code "Laboratory Observation Category": 'laboratory' from "Observation Category Codes"
|
||||||
|
|
||||||
|
parameter "Measurement Period" Interval<DateTime>
|
||||||
|
|
||||||
|
context Patient
|
||||||
|
|
||||||
|
define "Inpatient, Emergency, or Telephone Evaluation or Management Encounter":
|
||||||
|
(
|
||||||
|
[Encounter: "Encounter Inpatient"]
|
||||||
|
union [Encounter: "Emergency Department Visit"]
|
||||||
|
union [Encounter: "Telephone Evaluation"]
|
||||||
|
union [Encounter: "Telephone Management"]
|
||||||
|
) Encounter
|
||||||
|
where Encounter.status = 'finished'
|
||||||
|
and Encounter.period during "Measurement Period"
|
||||||
|
|
||||||
|
define "Initial Population":
|
||||||
|
exists ("Inpatient, Emergency, or Telephone Evaluation or Management Encounter")
|
||||||
|
|
||||||
|
define "Denominator":
|
||||||
|
true
|
||||||
|
|
||||||
|
define "COVID-19 Communicable Disease Screening":
|
||||||
|
[Observation: "COVID-19 Screening Result"] Result
|
||||||
|
where exists (Result.category C where C ~ "Laboratory Observation Category")
|
||||||
|
and Result.status in { 'final', 'amended', 'corrected' }
|
||||||
|
and Result.effective during "Measurement Period"
|
||||||
|
|
||||||
|
define "Numerator":
|
||||||
|
exists ("COVID-19 Communicable Disease Screening")
|
||||||
BIN
input/cql/example.pdf
Normal file
BIN
input/cql/example.pdf
Normal file
Binary file not shown.
3
input/cql/notincluded.cql
Normal file
3
input/cql/notincluded.cql
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
library notincluded
|
||||||
|
|
||||||
|
// Example library that doesn't get included, so results in a missed warning
|
||||||
5
input/examples/Binary-example.json
Normal file
5
input/examples/Binary-example.json
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"resourceType" : "Binary",
|
||||||
|
"id" : "example",
|
||||||
|
"data" : "ig-loader-example.pdf"
|
||||||
|
}
|
||||||
15
input/examples/Library-example.json
Normal file
15
input/examples/Library-example.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"resourceType" : "Library",
|
||||||
|
"url" : "http://somewhere.org/fhir/uv/myig/Library/example",
|
||||||
|
"version" : "1.0.0",
|
||||||
|
"status" : "draft",
|
||||||
|
"type" : {
|
||||||
|
"coding" : [{
|
||||||
|
"system" : "http://terminology.hl7.org/CodeSystem/library-type",
|
||||||
|
"code" : "logic-library"
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
"content" : [{
|
||||||
|
"id" : "ig-loader-example.cql"
|
||||||
|
}]
|
||||||
|
}
|
||||||
40
input/history/h1.json
Normal file
40
input/history/h1.json
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"resourceType" : "Bundle",
|
||||||
|
"id" : "h1",
|
||||||
|
"type" : "collection",
|
||||||
|
"entry" : [{
|
||||||
|
"resource" : {
|
||||||
|
"resourceType" : "AuditEvent",
|
||||||
|
"id" : "h1-1",
|
||||||
|
"type" : {
|
||||||
|
"system": "http://terminology.hl7.org/CodeSystem/iso-21089-lifecycle",
|
||||||
|
"code" : "amend"
|
||||||
|
},
|
||||||
|
"action" : "U",
|
||||||
|
"period" : { "end" : "2015-11-30" },
|
||||||
|
"purposeOfEvent" : [{
|
||||||
|
"text": "Add \"conductible\" property to ActRelationshipType and ParticipationType codes.for ContextConduction RIM Change. And create Concept domain CodeSystem and ValueSet for ContextConductionStyle"
|
||||||
|
}],
|
||||||
|
"agent" : [{
|
||||||
|
"type" : {
|
||||||
|
"coding": {
|
||||||
|
"system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType",
|
||||||
|
"code":"AUT"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name" : "Rob Hausam"
|
||||||
|
},{
|
||||||
|
"type" : {
|
||||||
|
"coding": {
|
||||||
|
"system": "http://terminology.hl7.org/CodeSystem/contractsignertypecodes",
|
||||||
|
"code":"REVIEWER"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name" : "Vocab"
|
||||||
|
}],
|
||||||
|
"entity" : [{
|
||||||
|
"what" : { "reference" : "StructureDefinition/myObservation" }
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
@ -1,13 +1,15 @@
|
|||||||
// Add warning and/or information messages here after you've confirmed that they aren't really a problem
|
== Suppressed Messages ==
|
||||||
// (And include comments like this justifying why)
|
|
||||||
|
|
||||||
// This is inherited from the base resource
|
# Add warning and/or information messages here after you've confirmed that they aren't really a problem
|
||||||
|
# (And include comments like this justifying why)
|
||||||
|
|
||||||
|
# This is inherited from the base resource
|
||||||
WARNING: StructureDefinition/myObservation: StructureDefinition.snapshot.element[15].mapping[3].map: value should not start or finish with whitespace
|
WARNING: StructureDefinition/myObservation: StructureDefinition.snapshot.element[15].mapping[3].map: value should not start or finish with whitespace
|
||||||
|
|
||||||
// We're expecting these to not match the slice - we're showing how you can use slicing to define the one repetition you want even when many repetitions might be present
|
# We're expecting these to not match the slice - we're showing how you can use slicing to define the one repetition you want even when many repetitions might be present
|
||||||
INFORMATION: Patient/example: Patient.name[0]: This element does not match any known slice for the profile http://somewhere.org/fhir/uv/myig/StructureDefinition/mypatient
|
INFORMATION: Patient/example: Patient.name[0]: This element does not match any known slice defined in the profile http://somewhere.org/fhir/uv/myig/StructureDefinition/mypatient
|
||||||
INFORMATION: Patient/example: Patient.name[1]: This element does not match any known slice for the profile http://somewhere.org/fhir/uv/myig/StructureDefinition/mypatient
|
INFORMATION: Patient/example: Patient.name[1]: This element does not match any known slice defined in the profile http://somewhere.org/fhir/uv/myig/StructureDefinition/mypatient
|
||||||
|
|
||||||
// If this was a real IG, there should be examples for these profiles too. But it's not, and I'm lazy...
|
# If this was a real IG, there should be examples for these profiles too. But it's not, and I'm lazy...
|
||||||
WARNING: http://somewhere.org/fhir/uv/myig/StructureDefinition/myObservation: The Implementation Guide contains no examples for this profile
|
WARNING: http://somewhere.org/fhir/uv/myig/StructureDefinition/myObservation: The Implementation Guide contains no examples for this profile
|
||||||
WARNING: http://somewhere.org/fhir/uv/myig/StructureDefinition/mypractitioner: The Implementation Guide contains no examples for this profile
|
WARNING: http://somewhere.org/fhir/uv/myig/StructureDefinition/mypractitioner: The Implementation Guide contains no examples for this profile
|
||||||
|
|||||||
@ -38,6 +38,11 @@
|
|||||||
<license value="CC0-1.0"/>
|
<license value="CC0-1.0"/>
|
||||||
<!-- This is whatever FHIR version(s) the IG artifacts are targeting (not the version of this file, which should always be 'current release') -->
|
<!-- This is whatever FHIR version(s) the IG artifacts are targeting (not the version of this file, which should always be 'current release') -->
|
||||||
<fhirVersion value="4.0.1"/>
|
<fhirVersion value="4.0.1"/>
|
||||||
|
<!-- <dependsOn>
|
||||||
|
<uri value="http://somethign"/>
|
||||||
|
<packageId value="de.basisprofil.r4"/>
|
||||||
|
<version value="0.9.2"/>
|
||||||
|
</dependsOn> -->
|
||||||
<definition>
|
<definition>
|
||||||
<!-- You don't need to define any groupings. The IGPublisher will define them for you. You only need to do so if your IG is 'special' and it's
|
<!-- You don't need to define any groupings. The IGPublisher will define them for you. You only need to do so if your IG is 'special' and it's
|
||||||
inappropriate to use the defaults. Feel free to provide feedback about the defaults... -->
|
inappropriate to use the defaults. Feel free to provide feedback about the defaults... -->
|
||||||
@ -47,6 +52,11 @@
|
|||||||
</reference>
|
</reference>
|
||||||
<description value="Overriding description because we can"/>
|
<description value="Overriding description because we can"/>
|
||||||
</resource>
|
</resource>
|
||||||
|
<!--<resource>
|
||||||
|
<reference>
|
||||||
|
<reference value="MyLogicalModel/AS"/>
|
||||||
|
</reference>
|
||||||
|
</resource> -->
|
||||||
<resource>
|
<resource>
|
||||||
<reference>
|
<reference>
|
||||||
<reference value="Patient/example"/>
|
<reference value="Patient/example"/>
|
||||||
@ -55,6 +65,19 @@
|
|||||||
<description value="A simple example showing how examples are defined and referenced"/>
|
<description value="A simple example showing how examples are defined and referenced"/>
|
||||||
<exampleCanonical value="http://somewhere.org/fhir/uv/myig/StructureDefinition/mypatient"/>
|
<exampleCanonical value="http://somewhere.org/fhir/uv/myig/StructureDefinition/mypatient"/>
|
||||||
</resource>
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<reference>
|
||||||
|
<reference value="Bundle/h1"/>
|
||||||
|
</reference>
|
||||||
|
<name value="History"/>
|
||||||
|
</resource>
|
||||||
|
<!-- <resource>
|
||||||
|
<reference>
|
||||||
|
<reference value="Library/example"/>
|
||||||
|
</reference>
|
||||||
|
<name value="Simple library example"/>
|
||||||
|
<description value="A simple example showing how library is pre-loaded"/>
|
||||||
|
</resource> -->
|
||||||
<page>
|
<page>
|
||||||
<!-- The root will always be toc.html - the template will force it if you don't do it -->
|
<!-- The root will always be toc.html - the template will force it if you don't do it -->
|
||||||
<nameUrl value="toc.html"/>
|
<nameUrl value="toc.html"/>
|
||||||
@ -100,6 +123,14 @@
|
|||||||
<code value="find-other-resources"/>
|
<code value="find-other-resources"/>
|
||||||
<value value="true"/>
|
<value value="true"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
|
<parameter>
|
||||||
|
<code value="path-resource"/>
|
||||||
|
<value value="input\history"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter>
|
||||||
|
<code value="path-binary"/>
|
||||||
|
<value value="input\cql"/>
|
||||||
|
</parameter>
|
||||||
<!-- Uncomment one or more of these if you want to limit which syntaxes are supported or want to disable the display of mappings
|
<!-- Uncomment one or more of these if you want to limit which syntaxes are supported or want to disable the display of mappings
|
||||||
<parameter>
|
<parameter>
|
||||||
<code value="excludexml"/>
|
<code value="excludexml"/>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user