Skip to content

Commit 100d96d

Browse files
committedOct 2, 2020
initial commit of shorthand
1 parent a4eb8c7 commit 100d96d

13 files changed

+275
-0
lines changed
 

‎.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+
build/

‎Alias.fsh

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Alias: HL7V2 = http://terminology.hl7.org/CodeSystem/v2-0203
2+
Alias: CitizenshipExtension = http://hl7.org/fhir/StructureDefinition/patient-citizenship
3+
Alias: ELGALaendercodesVS = https://termpub.gesundheit.gv.at:443/TermBrowser/gui/main/main.zul?loadType=ValueSet&loadName=ELGA_Laendercodes
4+
Alias: HL7AustriaReligionVS = https://termpub.gesundheit.gv.at:443/TermBrowser/gui/main/main.zul?loadType=CodeSystem&loadName=HL7.AT:ReligionAustria
5+
Alias: ISOStreetName = http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName
6+
Alias: ISOStreetNumber = http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber
7+
Alias: ISOAdditionalLocator = http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-additionalLocator

‎AustriaReligion.fsh

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
Extension: PatientReligion
2+
Id: patientReligion
3+
Title: "Patient Religion"
4+
Description: "The Religion (registered in Austria) of a Patient"
5+
* value[x] 0..0
6+
* extension contains
7+
code 0..1 and
8+
period 0..1
9+
* extension[code].value[x] only CodeableConcept
10+
* extension[code] ^short = "Religion code of the Patient"
11+
* extension[code].value[x] from HL7AustriaReligionVS (extensible)
12+
//* extension[code].value[x] ^binding.valueSetUri = "urn:oid:2.16.840.1.113883.2.16.1.4.1"
13+
* extension[code].value[x].coding.system ^fixedUri = "urn:oid:2.16.840.1.113883.2.16.1.4.1"
14+
* extension[code].value[x].coding.system ^short = "OID for the HL7 AT ReligionAustria ValueSet"
15+
* extension[code].extension 0..0
16+
* extension[period] ^short = "Time period of the Religion"
17+
* extension[period].value[x] only Period
18+
* extension[period].value[x] 1..1
19+
* extension[period].extension 0..0

‎AustrianAddress.fsh

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
Profile: AustrianAddress
2+
Parent: Address
3+
Id: AustrianRepresentationOfAddress
4+
Title: "Austrian Representation of an Address"
5+
Description: "FHIR Base Profile for Address Data in Austria."
6+
* period 0..0
7+
* district 0..0
8+
9+
//The AustrianAddress Profile has these additional contraints (invariants) applied
10+
* obeys at-addr-1
11+
* obeys at-addr-2
12+
* obeys at-addr-3
13+
14+
//Description on how to use the line element in a structured and unstructured way (enforced by invariants)
15+
* line ^definition = "This component contains the street name, street number, floor and/or door number or additonal information (e.g. street direction, P.O. Box number, delivery hints, and similar address information). This information can be split into structured values in the line-components each defined by international ISO extensions. If these extensions are used then the information they contain has to be written in a concatenated way in the line element itself as well. This makes the usage easier for systems which don't use address data in a structured way."
16+
17+
//Slice for line extension, order matters, no further definition of the slice necessary since the default value are applied (discriminator=url, slice open, orderd=false)
18+
* line.extension contains ISOStreetName named street 0..1 and ISOStreetNumber named streetNumber 0..1 and ISOAdditionalLocator named floorDoorNumber 0..1
19+
* line.extension[street] ^short = "Name of the street"
20+
* line.extension[street] ^definition = "Name of the street without the street number"
21+
* line.extension[streetNumber] ^short = "Number of the street"
22+
* line.extension[streetNumber] ^definition = "Number of the street without the street name"
23+
* line.extension[floorDoorNumber] ^short = "Floor and/or door number"
24+
* line.extension[floorDoorNumber] ^definition = "Floor and/or door number"
25+
//ToDo find a replacment for ISOAdditionalLocator, in this case using the same extension twice doesn't work
26+
//* line.extension[additionalInformation] only ISOAdditionalLocator
27+
//* line.extension[additionalInformation] ^short = "Additional Information"
28+
//* line.extension[additionalInformation] ^definition = "Additiona information about the street address"
29+
30+
//Definition of invariants for address
31+
Invariant: at-addr-1
32+
Description: "If the extension for street name is used then the value for line must not be empty"
33+
Expression: "line.all($this.extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName').empty() or $this.hasValue())"
34+
Severity: #error
35+
36+
Invariant: at-addr-2
37+
Description: "If the extension for street number is used then the value for line must not be empty"
38+
Expression: "line.all($this.extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber').empty() or $this.hasValue())"
39+
Severity: #error
40+
41+
Invariant: at-addr-3
42+
Description: "If the extensions for floor/door number or additional information are used then the value for line must not be empty"
43+
Expression: "line.all($this.extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-additionalLocator').empty() or $this.hasValue())"
44+
Severity: #error

‎AustrianPatient.fsh

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
Profile: AustrianPatient
2+
Parent: Patient
3+
Id: austrian-patient
4+
Title: "Austrian Patient"
5+
Description: "FHIR Base Profile for Patient Data in Austria."
6+
// Define Mandatory Fields
7+
* name 1..*
8+
* gender 1..1
9+
// Address is based on the profile for the Austrian Representation of an Address
10+
* address only AustrianRepresentationOfAddress
11+
12+
//Slice for Identifier, order matters
13+
* identifier ^slicing.rules = #open
14+
* identifier ^slicing.discriminator.type = #value
15+
* identifier ^slicing.discriminator.path = "type.coding.code"
16+
* identifier ^slicing.ordered = false
17+
* identifier contains socialSecurityNumber 0..1 and bPK 0..* and localPatientId 0..1
18+
* identifier[socialSecurityNumber].type.coding.system = "http://terminology.hl7.org/CodeSystem/v2-0203" (exactly)
19+
* identifier[socialSecurityNumber].type.coding.code = HL7V2#SS (exactly)
20+
* identifier[socialSecurityNumber].type.coding.display = "Social Security Number" (exactly)
21+
* identifier[socialSecurityNumber].system = "urn:oid:1.2.40.0.10.1.4.3.1" (exactly)
22+
* identifier[socialSecurityNumber].system ^short = "OID for the Social Security Number in Austria"
23+
//* identifier[socialSecurityNumber].assigner.reference = "https://www.gesundheit.gv.at/OID_Frontend/oiddetail.htm?smallView=true&actualOid=1.2.40.0.10.1.4.3.1" (exactly)
24+
* identifier[socialSecurityNumber].assigner.display = "Hauptverband der österreichischen Sozialversicherungsträger" (exactly)
25+
* identifier[bPK].type.coding.system = "http://terminology.hl7.org/CodeSystem/v2-0203" (exactly)
26+
* identifier[bPK].type.coding.code = HL7V2#NI (exactly)
27+
* identifier[bPK].type.coding.display = "National unique individual identifier" (exactly)
28+
* identifier[bPK].system = "urn:oid:1.2.40.0.10.2.1.1.149" (exactly)
29+
* identifier[bPK].system ^short = "OID for the bPK in Austria"
30+
//* identifier[bPK].assigner.reference = "https://www.gesundheit.gv.at/OID_Frontend/oiddetail.htm?smallView=true&actualOid=1.2.40.0.10.2.1.1.149" (exactly)
31+
* identifier[bPK].assigner.display = "Bundesministerium für Inneres" (exactly)
32+
* identifier[localPatientId].type.coding.system = "http://terminology.hl7.org/CodeSystem/v2-0203" (exactly)
33+
* identifier[localPatientId].type.coding.code = HL7V2#PI (exactly)
34+
* identifier[localPatientId].type.coding.display = "Patient internal identifier" (exactly)
35+
36+
//Extension for Citizenship -> official HL7 Int Extension with ValueSet Bindung of HL7 Austria
37+
* extension contains CitizenshipExtension named citizenship 0..1
38+
* extension[citizenship].extension[code].valueCodeableConcept from ELGALaendercodesVS (extensible)
39+
* extension[citizenship].extension[code].valueCodeableConcept 1..1 //Workaround for sushi issue 596, can be removed when fixed
40+
* extension[citizenship].extension[code].valueCodeableConcept.coding.system ^fixedUri = "urn:oid:1.0.3166.1.2.3"
41+
* extension[citizenship].extension[code].valueCodeableConcept.coding.system ^short = "OID for ISO 3166-1 alpha 3 2016"
42+
43+
//Extension for Religion -> HL7 Austria's AustrianReligion Extension
44+
* extension contains PatientReligion named PatientReligion 0..1

‎AustrianPatientExample01.fsh

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
Instance: AustrianPatientExample01
2+
InstanceOf: AustrianPatient
3+
Description: "Example for the usage of the AustrianPatient Profile"
4+
Usage: #example
5+
* name.family = "Mustermann"
6+
* name.given = "Max"
7+
* name.prefix = "DI"
8+
* birthDate = 1900-01-01
9+
* gender = http://hl7.org/fhir/ValueSet/administrative-gender#male
10+
11+
* identifier[socialSecurityNumber].value = "1234010100"
12+
* identifier[socialSecurityNumber].system = "urn:oid:1.2.40.0.10.1.4.3.1"
13+
* identifier[socialSecurityNumber].type.coding.system = "http://terminology.hl7.org/CodeSystem/v2-0203"
14+
* identifier[socialSecurityNumber].type.coding.code = HL7V2#SS
15+
* identifier[socialSecurityNumber].type.coding.display = "Social Security Number"
16+
//* identifier[socialSecurityNumber].assigner.reference = "https://www.gesundheit.gv.at/OID_Frontend/oiddetail.htm?smallView=true&actualOid=1.2.40.0.10.1.4.3.1"
17+
* identifier[socialSecurityNumber].assigner.display = "Hauptverband der österreichischen Sozialversicherungsträger"
18+
19+
* telecom[0].use = http://hl7.org/fhir/ValueSet/contact-point-use#work
20+
* telecom[0].system = http://hl7.org/fhir/ValueSet/contact-point-system#email
21+
* telecom[0].value = "office@hl7.at"
22+
* telecom[1].use = http://hl7.org/fhir/ValueSet/contact-point-use#home
23+
* telecom[1].system = http://hl7.org/fhir/ValueSet/contact-point-system#phone
24+
* telecom[1].value = "+436501234567890"
25+
26+
* extension[PatientReligion].extension[code].valueCodeableConcept = urn:oid:2.16.840.1.113883.2.16.1.4.1#162 "Pastafarianismus"
27+
* extension[CitizenshipExtension].extension[code].valueCodeableConcept = urn:oid:1.0.3166.1.2.3#AUT "Österreich"
28+
29+
* address = AustrianAddressExample01
30+
31+
Instance: AustrianAddressExample01
32+
InstanceOf: AustrianAddress
33+
Description: "Example for the usage of the AustrianAddress Profile"
34+
Usage: #inline
35+
* use = http://hl7.org/fhir/ValueSet/address-use#home
36+
* type = http://hl7.org/fhir/ValueSet/address-type#both
37+
* line = "Landstrasse 1 Stock 9 Tür 42"
38+
* line.extension[street].valueString = "Landstrasse"
39+
* line.extension[streetNumber].valueString = "1"
40+
* line.extension[floorDoorNumber].valueString = "Stock 9 Tür 42"
41+
* city = "Linz"
42+
* state = "Oberösterreich"
43+
* postalCode = "4020"
44+
* country = "AUT"

‎config.yaml

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# ╭────────────────────────────────────────────────────────────────────────────────────────────────╮
2+
# │ ACTION REQUIRED: REVIEW AND EDIT THIS FILE TO ENSURE IT ACCURATELY REFLECTS YOUR PROJECT! │
3+
# │ │
4+
# │ This file was generated from your existing project files and will be used for SUSHI │
5+
# │ configuration from now on. You may delete your package.json as it is no longer needed. │
6+
# ╰────────────────────────────────────────────────────────────────────────────────────────────────╯
7+
8+
# ╭────────────────────────────ImplementationGuide-AustrianPatient.json────────────────────────────╮
9+
# │ The properties below are used to create the ImplementationGuide resource. For a list of │
10+
# │ supported properties, see: │
11+
# │ http://build.fhir.org/ig/HL7/fhir-shorthand/branches/beta/sushi.html#ig-development │
12+
# ╰────────────────────────────────────────────────────────────────────────────────────────────────╯
13+
id: HL7ATBaseProfiles
14+
canonical: http://hl7.at/fhir/4.0/HL7ATBaseProfiles
15+
version: 0.1.0
16+
name: HL7AustriaImplementationGuide
17+
title: HL7 Austria FHIR Implementation Guide
18+
status: active
19+
publisher: Reinhard Egekraut
20+
contact:
21+
- name: Reinhard Egelkraut
22+
telecom:
23+
- system: email
24+
value: office@hl7.at
25+
description: An example of how FSH can be used to create an IG about the HL7 Austria FHIR Base Profiles.
26+
license: CC0-1.0
27+
fhirVersion: 4.0.1
28+
parameters:
29+
show-inherited-invariants: false
30+
copyrightYear: 2019+
31+
releaseLabel: STU1
32+
33+
# ╭─────────────────────────────────────────────ig.ini─────────────────────────────────────────────╮
34+
# │ To control the ig.ini using this config, uncomment and set the "template" property. │
35+
# ╰────────────────────────────────────────────────────────────────────────────────────────────────╯
36+
# template: fhir.base.template
37+
38+
# ╭────────────────────────────────────────────menu.xml────────────────────────────────────────────╮
39+
# │ To control the menu.xml using this config, uncomment and set the "menu" property. │
40+
# ╰────────────────────────────────────────────────────────────────────────────────────────────────╯
41+
# menu:
42+
# IG Home: index.html
43+
# Table of Contents: toc.html
44+
# Artifacts Summary: artifacts.html
45+
# Other Resources:
46+
# "FHIR Spec ": new-tab external {{site.data.fhir.path}}index.html
47+
48+
# ╭───────────────────────────────────────package-list.json────────────────────────────────────────╮
49+
# │ To control the package-list.json using this config, uncomment and set the "history" property. │
50+
# ╰────────────────────────────────────────────────────────────────────────────────────────────────╯
51+
# history:
52+
# introduction: An example of how FSH can be used to create an IG about AustrianPatient
53+
# current:
54+
# version: current
55+
# desc: Draft
56+
# path: http://hl7.at/fhir/4.0/HL7ATBaseProfiles
57+
# status: ci-build
58+
# current: true

‎ig-data/ig.ini

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
[IG]
2+
template = fhir.base.template
3+
copyrightyear = 2019+
4+
ballotstatus = STU1
5+
excludexml = No
6+
excludejson = No
7+
excludettl = No
8+
excludeMaps = No

‎ig-data/input/images/Shorty.png

7.95 KB
Loading
2.54 KB
Loading

‎ig-data/input/includes/menu.xml

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<ul xmlns="http://www.w3.org/1999/xhtml" class="nav navbar-nav">
2+
<li><a href="index.html">IG Home</a></li>
3+
<li><a href="toc.html">Table of Contents</a></li>
4+
<li><a href="artifacts.html">Artifacts Summary</a></li>
5+
<li class="dropdown">
6+
<a data-toggle="dropdown" href="#" class="dropdown-toggle">Other Resources<b class="caret"> </b></a>
7+
<ul class="dropdown-menu">
8+
<li><a target="_blank" href="{{site.data.fhir.path}}index.html">FHIR Spec <img src="external.png" style="text-align: baseline"/></a></li>
9+
</ul>
10+
</li>
11+
</ul>

‎ig-data/input/pagecontent/index.md

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
### Background
2+
3+
This is the most awesome first try to create a profile of the AustrianPatient with Shorthand
4+
### HL7 Austria
5+
6+
HL7 Austria is an official HL7 Affiliate.
7+
8+
![Shorty the FSH](./Shorty.png)
9+
10+
### FHIR Shorthand Resources
11+
12+
FHIR Shorthand calls currently are every other Thursday at 9 am Eastern US Time: https://meet.mitre.org/mkramer/K383VJGC
13+
14+
[HL7 Confluence site](https://confluence.hl7.org/display/FHIRI/FHIR+Shorthand)
15+
16+
[FHIR Shorthand Documentation](https://build.fhir.org/ig/HL7/fhir-shorthand)
17+
18+
[FHIR Shorthand documentation code repository](https://github.com/HL7/fhir-shorthand)
19+
20+
[SUSHI code repository](https://github.com/FHIR/sushi)
21+
22+
Zulip (chat.fhir.org) channel: #shorthand
23+

‎ig-data/package-list.json

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"package-id": "HL7ATBaseProfiles",
3+
"title": "HL7 Austria FHIR Implementation Guide",
4+
"canonical": "http://hl7.at/fhir/4.0/HL7ATBaseProfiles",
5+
"introduction": "An example of how FSH can be used to create an IG about the HL7 Austria FHIR Base Profiles.",
6+
"list": [
7+
{
8+
"version": "current",
9+
"desc": "Draft",
10+
"path": "http://hl7.at/fhir/4.0/HL7ATBaseProfiles",
11+
"status": "ci-build",
12+
"current": true
13+
}
14+
]
15+
}

0 commit comments

Comments
 (0)
Please sign in to comment.