Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

setup releasecandidate for version 1.2.0 #20

Merged
merged 14 commits into from
Oct 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,5 @@ Thumbs.db
# backup files #
################
*.bak
target
src
8 changes: 8 additions & 0 deletions input/fsh/codesystem/BeCSPseudonymizationType.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
CodeSystem: BeCSPseudonymizationType
Id: be-cs-pseudonymization-type
Title: "Types of pseudonymization"
Description: "The technique used for pseudonymization"
* ^experimental = false
* ^caseSensitive = true
* #direct "Direct pseudonym, for text shorter than 32 bytes"
* #encrypted "Encrypted pseudonym, for text longer than 32 bytes"
9 changes: 9 additions & 0 deletions input/fsh/codesystem/BeCSPseudonymizationVersion.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
CodeSystem: BeCSPseudonymizationVersion
Id: be-cs-pseudonymization-version
Title: "BeCSPseudonymizationVersion"
Description: "List of pseudonymization versions that can be used a.o. in the Capabilities Statement"
* ^experimental = false
* ^caseSensitive = true
* #urn:be:fgov:ehealth:pseudo:v1
* #urn:be:fgov:ehealth:pseudo:v2
* #urn:be:fgov:pseudo-encrypted:v1
15 changes: 15 additions & 0 deletions input/fsh/extensions/BeExtKeyPseudonymization.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
Extension: BeExtKeyPseudonymization
Id: be-ext-key-pseudonymization
Title: "Key Pseudonymization Extension"
Description: "This holds a pseudonymized key that can be used for all encrypted fields in the resource (long text pseudonymisation)"
* ^context.type = #element
* ^context.expression = "Meta"
* . ^short = "Pseudonymization key (See Blinded Pseudonymization Cookbook, Annex: Processing of input data exceeding 32
bytes)"
* id 1..1 MS
* id ^short = "kid (also available in JWE)"
* extension contains key 1..1 MS
* extension[key].value[x] only string
* extension[key].valueString 1..1 MS
* extension[key].valueString ^short = "pseudonymized key"
* extension[key].value[x].extension contains BeExtPseudonymization named pseudonymization 1..1
16 changes: 13 additions & 3 deletions input/fsh/extensions/BeExtPseudonymization.fsh
Original file line number Diff line number Diff line change
@@ -1,10 +1,20 @@
Extension: BeExtPseudonymization
Id: be-ext-pseudonymization
Title: "Pseudonymization Extension"
Description: "This is a marker interface. If the field is pseudonymized, the string field SHALL have this extension. The original text field SHALL contain the x, y and transitInfo in JWE encoded form. transitInfo is optional depending on the situation."
Description: "This is a marker interface. If the field is pseudonymized, the string field SHALL have this extension. "
* ^context.type = #element
* ^context.expression = "Element"
* . ^short = "Pseudonymization data"
* extension contains marker 1..1 MS
* extension contains marker 1..1 MS and
format 0..1 MS and
version 0..1 MS
* extension[marker].value[x] only boolean
* extension[marker].valueBoolean = true
* extension[marker].valueBoolean = true
* extension[format].value[x] only code
* extension[format].valueCode 0..1 MS
* extension[format].valueCode ^short = "provide encrypted only in case of Blinded Pseudonymization Cookbook, Annex: Processing of input data exceeding 32
bytes"
* extension[format].valueCode from BeVSPseudonymizationType
* extension[version].value[x] only positiveInt
* extension[version].valuePositiveInt 0..1 MS
* extension[version].valuePositiveInt ^short = "version of the pseudonym encoding"
7 changes: 7 additions & 0 deletions input/fsh/instances/bundle1.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Instance: bundle1
InstanceOf: Bundle
* type = #collection
* entry[+].resource = patient1
* entry[=].fullUrl = "urn:uuid:be78855a-2ac2-4907-a209-c018ab7bbaa5"
* entry[+].resource = patient2
* entry[=].fullUrl = "urn:uuid:2c9e9f79-1a05-4a34-ab1b-07328c53a323"
216 changes: 216 additions & 0 deletions input/fsh/instances/capabilitystatement.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,216 @@
Instance: capabilitystatement
InstanceOf: CapabilityStatement
Usage: #example
* name = "RestServer"
* status = #active
* date = "2024-10-21T09:29:32.761+00:00"
* publisher = "Not provided"
* kind = #instance
* software.name = "Fictitious FHIR Server"
* implementation.description = "HAPI FHIR"
* implementation.url = "http://localhost:8080/fhir"
* fhirVersion = #4.0.1
* format[0] = #application/fhir+xml
* format[+] = #xml
* format[+] = #application/fhir+json
* format[+] = #json
* format[+] = #application/x-turtle
* format[+] = #ttl
* rest.mode = #server
* rest.security.service[+] = BeCSPseudonymizationVersion#urn:be:fgov:ehealth:pseudo:v1
* rest.security.service[+] = BeCSPseudonymizationVersion#urn:be:fgov:ehealth:pseudo:v2
* rest.security.service[+] = BeCSPseudonymizationVersion#urn:be:fgov:pseudo-encrypted:v1
* rest.resource[0].type = #CodeSystem
* rest.resource[=].profile = "http://hl7.org/fhir/StructureDefinition/CodeSystem"
* rest.resource[=].interaction[0].code = #read
* rest.resource[=].interaction[+].code = #search-type
* rest.resource[=].interaction[+].code = #delete
* rest.resource[=].searchInclude = "*"
* rest.resource[=].searchParam[0].name = "code"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "A code defined in the code system"
* rest.resource[=].searchParam[+].name = "context"
* rest.resource[=].searchParam[=].type = #token
* rest.resource[=].searchParam[=].documentation = "A use context assigned to the code system"
* rest.resource[=].searchParam[+].name = "context-quantity"
* rest.resource[=].searchParam[=].type = #quantity
* rest.resource[=].searchParam[=].documentation = "A quantity- or range-valued use context assigned to the code system"
* rest.resource[=].searchParam[+].name = "context-type"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "A type of use context assigned to the code system"
* rest.resource[=].searchParam[+].name = "date"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "The code system publication date"
* rest.resource[=].searchParam[+].name = "description"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "The description of the code system"
* rest.resource[=].searchParam[+].name = "id"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[+].name = "identifier"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "External identifier for the code system"
* rest.resource[=].searchParam[+].name = "jurisdiction"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "Intended jurisdiction for the code system"
* rest.resource[=].searchParam[+].name = "name"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "Computationally friendly name of the code system"
* rest.resource[=].searchParam[+].name = "publisher"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "Name of the publisher of the code system"
* rest.resource[=].searchParam[+].name = "reference"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[+].name = "status"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "The current status of the code system"
* rest.resource[=].searchParam[+].name = "title"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "The human-friendly name of the code system"
* rest.resource[=].searchParam[+].name = "url"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "The uri that identifies the code system"
* rest.resource[=].searchParam[+].name = "version"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "The business version of the code system"
* rest.resource[=].operation[0].name = "validate-code"
* rest.resource[=].operation[=].definition = "http://localhost:8080/fhir/OperationDefinition/CodeSystemValueSet-it-validate-code"
* rest.resource[=].operation[+].name = "upload-external-code-system"
* rest.resource[=].operation[=].definition = "http://localhost:8080/fhir/OperationDefinition/CodeSystem-t-upload-external-code-system"
* rest.resource[=].operation[+].name = "subsumes"
* rest.resource[=].operation[=].definition = "http://localhost:8080/fhir/OperationDefinition/CodeSystem-it-subsumes"
* rest.resource[=].operation[+].name = "lookup"
* rest.resource[=].operation[=].definition = "http://localhost:8080/fhir/OperationDefinition/CodeSystem-it-lookup"
* rest.resource[+].type = #ConceptMap
* rest.resource[=].profile = "http://hl7.org/fhir/StructureDefinition/ConceptMap"
* rest.resource[=].interaction[0].code = #read
* rest.resource[=].interaction[+].code = #search-type
* rest.resource[=].searchInclude = "*"
* rest.resource[=].searchParam.name = "url"
* rest.resource[=].searchParam.type = #string
* rest.resource[=].searchParam.documentation = "The uri that identifies the concept map"
* rest.resource[=].operation.name = "translate"
* rest.resource[=].operation.definition = "http://localhost:8080/fhir/OperationDefinition/ConceptMap-t-translate"
* rest.resource[+].type = #Medication
* rest.resource[=].profile = "http://hl7.org/fhir/StructureDefinition/Medication"
* rest.resource[=].interaction.code = #read
* rest.resource[=].searchInclude = "*"
* rest.resource[+].type = #OperationDefinition
* rest.resource[=].profile = "http://hl7.org/fhir/StructureDefinition/OperationDefinition"
* rest.resource[=].interaction.code = #read
* rest.resource[=].searchInclude = "*"
* rest.resource[+].type = #StructureDefinition
* rest.resource[=].profile = "http://hl7.org/fhir/StructureDefinition/StructureDefinition"
* rest.resource[=].interaction[0].code = #update
* rest.resource[=].interaction[+].code = #read
* rest.resource[=].interaction[+].code = #search-type
* rest.resource[=].interaction[+].code = #delete
* rest.resource[=].interaction[+].code = #create
* rest.resource[=].searchInclude = "*"
* rest.resource[=].searchParam[0].name = "code"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[+].name = "context"
* rest.resource[=].searchParam[=].type = #token
* rest.resource[=].searchParam[=].documentation = "A use context assigned to the structure definition"
* rest.resource[=].searchParam[+].name = "context-quantity"
* rest.resource[=].searchParam[=].type = #quantity
* rest.resource[=].searchParam[=].documentation = "A quantity- or range-valued use context assigned to the structure definition"
* rest.resource[=].searchParam[+].name = "context-type"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "A type of use context assigned to the structure definition"
* rest.resource[=].searchParam[+].name = "date"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "The structure definition publication date"
* rest.resource[=].searchParam[+].name = "description"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "The description of the structure definition"
* rest.resource[=].searchParam[+].name = "expansion"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[+].name = "identifier"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "External identifier for the structure definition"
* rest.resource[=].searchParam[+].name = "jurisdiction"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "Intended jurisdiction for the structure definition"
* rest.resource[=].searchParam[+].name = "name"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "Computationally friendly name of the structure definition"
* rest.resource[=].searchParam[+].name = "publisher"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "Name of the publisher of the structure definition"
* rest.resource[=].searchParam[+].name = "reference"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[+].name = "status"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "The current status of the structure definition"
* rest.resource[=].searchParam[+].name = "title"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "The human-friendly name of the structure definition"
* rest.resource[=].searchParam[+].name = "url"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "The uri that identifies the structure definition"
* rest.resource[=].searchParam[+].name = "version"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "The business version of the structure definition"
* rest.resource[+].type = #ValueSet
* rest.resource[=].profile = "http://hl7.org/fhir/StructureDefinition/ValueSet"
* rest.resource[=].interaction[0].code = #update
* rest.resource[=].interaction[+].code = #read
* rest.resource[=].interaction[+].code = #search-type
* rest.resource[=].interaction[+].code = #delete
* rest.resource[=].interaction[+].code = #create
* rest.resource[=].searchInclude = "*"
* rest.resource[=].searchParam[0].name = "_id"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "The ID of the resource"
* rest.resource[=].searchParam[+].name = "code"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "This special parameter searches for codes in the value set. See additional notes on the ValueSet resource"
* rest.resource[=].searchParam[+].name = "context"
* rest.resource[=].searchParam[=].type = #token
* rest.resource[=].searchParam[=].documentation = "A use context assigned to the value set"
* rest.resource[=].searchParam[+].name = "context-quantity"
* rest.resource[=].searchParam[=].type = #quantity
* rest.resource[=].searchParam[=].documentation = "A quantity- or range-valued use context assigned to the value set"
* rest.resource[=].searchParam[+].name = "context-type"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "A type of use context assigned to the value set"
* rest.resource[=].searchParam[+].name = "date"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "The value set publication date"
* rest.resource[=].searchParam[+].name = "description"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "The description of the value set"
* rest.resource[=].searchParam[+].name = "expansion"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "Identifies the value set expansion (business identifier)"
* rest.resource[=].searchParam[+].name = "identifier"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "External identifier for the value set"
* rest.resource[=].searchParam[+].name = "jurisdiction"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "Intended jurisdiction for the value set"
* rest.resource[=].searchParam[+].name = "name"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "Computationally friendly name of the value set"
* rest.resource[=].searchParam[+].name = "publisher"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "Name of the publisher of the value set"
* rest.resource[=].searchParam[+].name = "reference"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "A code system included or excluded in the value set or an imported value set"
* rest.resource[=].searchParam[+].name = "status"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "The current status of the value set"
* rest.resource[=].searchParam[+].name = "title"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "The human-friendly name of the value set"
* rest.resource[=].searchParam[+].name = "url"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "The uri that identifies the value set"
* rest.resource[=].searchParam[+].name = "version"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[=].documentation = "The business version of the value set"
* rest.resource[=].operation[0].name = "validate-code"
* rest.resource[=].operation[=].definition = "http://localhost:8080/fhir/OperationDefinition/CodeSystemValueSet-it-validate-code"
* rest.resource[=].operation[+].name = "expand"
* rest.resource[=].operation[=].definition = "http://localhost:8080/fhir/OperationDefinition/ValueSet-it-expand"
5 changes: 5 additions & 0 deletions input/fsh/instances/contained1.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Instance: contained1
InstanceOf: Patient
* contained[+] = patient2
* link.other = Reference( #patient2 )
* link.type = #replaced-by
17 changes: 17 additions & 0 deletions input/fsh/instances/parameters1.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
Instance: parameters1
InstanceOf: Parameters
Usage: #example
* meta.extension[+].url = "https://www.ehealth.fgov.be/standards/fhir/infsec/StructureDefinition/be-ext-key-pseudonymization"
* meta.extension[=].id = "fcc557e7-40fa-4fde-b802-12a461cd176f"
* meta.extension[=].extension[+].url = "key"
* meta.extension[=].extension[=].valueString = "urn:be:fgov:pseudo:v2:OZADJVppdeQzwgvAUjQNaLvuf94ulY6iD:OZADJVppdeQzwgvAUjQNaLvuf94ulY6iDgeip7iSHAW7TNrDBa0XMGeS6G3s/HWLSQ4eirpcox28GghzbtaiUzg=.UPOBi75XsreuYfQwyVvIaHgpzrrdS6joS8JaPlkMPxeU8FmFHRtteJp/FAq91pEllcbH4V4PRSC+QEm0C9thkO4="
* meta.extension[=].extension[=].valueString.extension[BeExtPseudonymization].extension[marker].valueBoolean = true
* meta.extension[=].extension[=].valueString.extension[BeExtPseudonymization].extension[format].valueCode = #direct
* meta.extension[=].extension[=].valueString.extension[BeExtPseudonymization].extension[version].valuePositiveInt = 2
* parameter[0].name = "name"
* parameter[=].valueString = "urn:be:fgov:pseudo-encrypted:v1:fcc557e7-40fa-4fde-b802-12a461cd176f:OZADJVppdeQzwgvAUjQNaLvuf94ulY6iD:geip7iSHAW7TNrDBa0XMGeS6G3s/HWLSQ4eirpcox28GghzbtaiUzg=.UPOBi75XsreuYfQwyVvIaHgpzrrdS6joS8JaPlkMPxeU8FmFHRtteJp/FAq91pEllcbH4V4PRSC+QEm0C9thkO4="
* parameter[=].valueString.extension[BeExtPseudonymization].extension[marker].valueBoolean = true
* parameter[=].valueString.extension[BeExtPseudonymization].extension[format].valueCode = #encrypted
* parameter[=].valueString.extension[BeExtPseudonymization].extension[version].valuePositiveInt = 1
* parameter[+].name = "version"
* parameter[=].valueString = "1.0.0"
Loading