Merge 2af096ae2e
into 061390d76b
This commit is contained in:
commit
d0499d5911
|
@ -0,0 +1,70 @@
|
||||||
|
package org.hl7.fhir.r4.validation;
|
||||||
|
|
||||||
|
import ca.uhn.fhir.context.FhirContext;
|
||||||
|
import ca.uhn.fhir.context.support.IValidationSupport;
|
||||||
|
import ca.uhn.fhir.test.BaseTest;
|
||||||
|
import ca.uhn.fhir.validation.FhirValidator;
|
||||||
|
import ca.uhn.fhir.validation.ValidationResult;
|
||||||
|
import org.hl7.fhir.common.hapi.validation.support.PrePopulatedValidationSupport;
|
||||||
|
import org.hl7.fhir.common.hapi.validation.support.ValidationSupportChain;
|
||||||
|
import org.hl7.fhir.common.hapi.validation.validator.FhirInstanceValidator;
|
||||||
|
import org.hl7.fhir.r4.model.StructureDefinition;
|
||||||
|
import org.hl7.fhir.r4.model.Extension;
|
||||||
|
import org.hl7.fhir.r4.model.Patient;
|
||||||
|
import org.hl7.fhir.r4.model.StringType;
|
||||||
|
import org.hl7.fhir.r5.utils.validation.constants.BestPracticeWarningLevel;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* See #6424
|
||||||
|
*/
|
||||||
|
public class ConvertedStructureDefinitionValidationTest extends BaseTest {
|
||||||
|
|
||||||
|
private static final Logger ourLog = LoggerFactory.getLogger(ConvertedStructureDefinitionValidationTest.class);
|
||||||
|
private final FhirContext myCtx = FhirContext.forR4Cached();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testInvalidateCacheThenValidate() throws Exception {
|
||||||
|
|
||||||
|
// Create a validation support that loads the patient-citizenship extension
|
||||||
|
PrePopulatedValidationSupport val = new PrePopulatedValidationSupport(myCtx);
|
||||||
|
val.addStructureDefinition(loadResource(myCtx, StructureDefinition.class, "r4/extension-patient-citizenship.json"));
|
||||||
|
|
||||||
|
IValidationSupport builtInValidationSupport = myCtx.getValidationSupport();
|
||||||
|
ValidationSupportChain validationSupport = new ValidationSupportChain(val, builtInValidationSupport);
|
||||||
|
FhirInstanceValidator instanceValidator = new FhirInstanceValidator(validationSupport);
|
||||||
|
instanceValidator.setBestPracticeWarningLevel(BestPracticeWarningLevel.Ignore);
|
||||||
|
|
||||||
|
FhirValidator validator = myCtx.newValidator();
|
||||||
|
validator.registerValidatorModule(instanceValidator);
|
||||||
|
|
||||||
|
// Create a patient with an invalid citizenship extension
|
||||||
|
Patient patient = new Patient();
|
||||||
|
patient.setActive(true);
|
||||||
|
|
||||||
|
Extension citizenship = patient.addExtension();
|
||||||
|
citizenship.setUrl("http://hl7.org/fhir/StructureDefinition/patient-citizenship");
|
||||||
|
citizenship.addExtension("period", new StringType("NOT A PERIOD"));
|
||||||
|
|
||||||
|
// Validate once
|
||||||
|
ValidationResult outcome = validator.validateWithResult(patient);
|
||||||
|
ourLog.info(myCtx.newJsonParser().setPrettyPrint(true).encodeResourceToString(outcome.toOperationOutcome()));
|
||||||
|
assertEquals("The Profile 'http://hl7.org/fhir/StructureDefinition/patient-citizenship|5.1.0' definition allows for the type Period but found type string", outcome.getMessages().get(0).getMessage());
|
||||||
|
assertEquals(1, outcome.getMessages().size());
|
||||||
|
|
||||||
|
// Invalidate the caches
|
||||||
|
instanceValidator.invalidateCaches();
|
||||||
|
|
||||||
|
// Validate a second time
|
||||||
|
outcome = validator.validateWithResult(patient);
|
||||||
|
ourLog.info(myCtx.newJsonParser().setPrettyPrint(true).encodeResourceToString(outcome.toOperationOutcome()));
|
||||||
|
assertEquals("The Profile 'http://hl7.org/fhir/StructureDefinition/patient-citizenship|5.1.0' definition allows for the type Period but found type string", outcome.getMessages().get(0).getMessage());
|
||||||
|
assertEquals(1, outcome.getMessages().size());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,766 @@
|
||||||
|
{
|
||||||
|
"resourceType" : "StructureDefinition",
|
||||||
|
"id" : "patient-citizenship",
|
||||||
|
"url" : "http://hl7.org/fhir/StructureDefinition/patient-citizenship",
|
||||||
|
"identifier" : [{
|
||||||
|
"system" : "urn:ietf:rfc:3986",
|
||||||
|
"value" : "urn:oid:2.16.840.1.113883.4.642.5.1330"
|
||||||
|
}],
|
||||||
|
"version" : "5.1.0",
|
||||||
|
"name" : "PatCitizenship",
|
||||||
|
"title" : "Patient Citizenship",
|
||||||
|
"status" : "active",
|
||||||
|
"experimental" : false,
|
||||||
|
"date" : "2020-12-28T16:55:11+11:00",
|
||||||
|
"publisher" : "HL7 International / Patient Administration",
|
||||||
|
"contact" : [{
|
||||||
|
"telecom" : [{
|
||||||
|
"system" : "url",
|
||||||
|
"value" : "http://www.hl7.org/Special/committees/pafm"
|
||||||
|
}]
|
||||||
|
}],
|
||||||
|
"description" : "The patient's legal status as citizen of a country.",
|
||||||
|
"jurisdiction" : [{
|
||||||
|
"coding" : [{
|
||||||
|
"system" : "http://unstats.un.org/unsd/methods/m49/m49.htm",
|
||||||
|
"code" : "001"
|
||||||
|
}]
|
||||||
|
}],
|
||||||
|
"fhirVersion" : "5.0.0",
|
||||||
|
"mapping" : [{
|
||||||
|
"identity" : "rim",
|
||||||
|
"uri" : "http://hl7.org/v3",
|
||||||
|
"name" : "RIM Mapping"
|
||||||
|
}],
|
||||||
|
"kind" : "complex-type",
|
||||||
|
"abstract" : false,
|
||||||
|
"context" : [{
|
||||||
|
"type" : "element",
|
||||||
|
"expression" : "Patient"
|
||||||
|
}],
|
||||||
|
"type" : "Extension",
|
||||||
|
"baseDefinition" : "http://hl7.org/fhir/StructureDefinition/Extension",
|
||||||
|
"derivation" : "constraint",
|
||||||
|
"snapshot" : {
|
||||||
|
"element" : [{
|
||||||
|
"id" : "Extension",
|
||||||
|
"path" : "Extension",
|
||||||
|
"short" : "Nation(s) where the patient claims citizenship",
|
||||||
|
"definition" : "The patient's legal status as citizen of a country.",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "*",
|
||||||
|
"base" : {
|
||||||
|
"path" : "Extension",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "*"
|
||||||
|
},
|
||||||
|
"constraint" : [{
|
||||||
|
"key" : "ele-1",
|
||||||
|
"severity" : "error",
|
||||||
|
"human" : "All FHIR elements must have a @value or children",
|
||||||
|
"expression" : "hasValue() or (children().count() > id.count())",
|
||||||
|
"source" : "http://hl7.org/fhir/StructureDefinition/Element"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key" : "ext-1",
|
||||||
|
"severity" : "error",
|
||||||
|
"human" : "Must have either extensions or value[x], not both",
|
||||||
|
"expression" : "extension.exists() != value.exists()",
|
||||||
|
"source" : "http://hl7.org/fhir/StructureDefinition/Extension"
|
||||||
|
}],
|
||||||
|
"isModifier" : false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.id",
|
||||||
|
"path" : "Extension.id",
|
||||||
|
"representation" : ["xmlAttr"],
|
||||||
|
"short" : "Unique id for inter-element referencing",
|
||||||
|
"definition" : "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "1",
|
||||||
|
"base" : {
|
||||||
|
"path" : "Element.id",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "1"
|
||||||
|
},
|
||||||
|
"type" : [{
|
||||||
|
"extension" : [{
|
||||||
|
"url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type",
|
||||||
|
"valueUrl" : "id"
|
||||||
|
}],
|
||||||
|
"code" : "http://hl7.org/fhirpath/System.String"
|
||||||
|
}],
|
||||||
|
"condition" : ["ele-1"],
|
||||||
|
"isModifier" : false,
|
||||||
|
"isSummary" : false,
|
||||||
|
"mapping" : [{
|
||||||
|
"identity" : "rim",
|
||||||
|
"map" : "n/a"
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.extension",
|
||||||
|
"path" : "Extension.extension",
|
||||||
|
"slicing" : {
|
||||||
|
"discriminator" : [{
|
||||||
|
"type" : "value",
|
||||||
|
"path" : "url"
|
||||||
|
}],
|
||||||
|
"description" : "Extensions are always sliced by (at least) url",
|
||||||
|
"rules" : "open"
|
||||||
|
},
|
||||||
|
"short" : "Additional content defined by implementations",
|
||||||
|
"definition" : "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.",
|
||||||
|
"comment" : "There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.",
|
||||||
|
"alias" : ["extensions",
|
||||||
|
"user content"],
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "*",
|
||||||
|
"base" : {
|
||||||
|
"path" : "Element.extension",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "*"
|
||||||
|
},
|
||||||
|
"type" : [{
|
||||||
|
"code" : "Extension"
|
||||||
|
}],
|
||||||
|
"constraint" : [{
|
||||||
|
"key" : "ele-1",
|
||||||
|
"severity" : "error",
|
||||||
|
"human" : "All FHIR elements must have a @value or children",
|
||||||
|
"expression" : "hasValue() or (children().count() > id.count())",
|
||||||
|
"source" : "http://hl7.org/fhir/StructureDefinition/Element"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key" : "ext-1",
|
||||||
|
"severity" : "error",
|
||||||
|
"human" : "Must have either extensions or value[x], not both",
|
||||||
|
"expression" : "extension.exists() != value.exists()",
|
||||||
|
"source" : "http://hl7.org/fhir/StructureDefinition/Extension"
|
||||||
|
}],
|
||||||
|
"isModifier" : false,
|
||||||
|
"isSummary" : false,
|
||||||
|
"mapping" : [{
|
||||||
|
"identity" : "rim",
|
||||||
|
"map" : "n/a"
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.extension:code",
|
||||||
|
"path" : "Extension.extension",
|
||||||
|
"sliceName" : "code",
|
||||||
|
"short" : "Nation code of citizenship",
|
||||||
|
"definition" : "Nation code representing the citizenship of patient.",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "1",
|
||||||
|
"base" : {
|
||||||
|
"path" : "Element.extension",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "*"
|
||||||
|
},
|
||||||
|
"type" : [{
|
||||||
|
"code" : "Extension"
|
||||||
|
}],
|
||||||
|
"constraint" : [{
|
||||||
|
"key" : "ele-1",
|
||||||
|
"severity" : "error",
|
||||||
|
"human" : "All FHIR elements must have a @value or children",
|
||||||
|
"expression" : "hasValue() or (children().count() > id.count())",
|
||||||
|
"source" : "http://hl7.org/fhir/StructureDefinition/Element"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key" : "ext-1",
|
||||||
|
"severity" : "error",
|
||||||
|
"human" : "Must have either extensions or value[x], not both",
|
||||||
|
"expression" : "extension.exists() != value.exists()",
|
||||||
|
"source" : "http://hl7.org/fhir/StructureDefinition/Extension"
|
||||||
|
}],
|
||||||
|
"isModifier" : false,
|
||||||
|
"isSummary" : false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.extension:code.id",
|
||||||
|
"path" : "Extension.extension.id",
|
||||||
|
"representation" : ["xmlAttr"],
|
||||||
|
"short" : "Unique id for inter-element referencing",
|
||||||
|
"definition" : "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "1",
|
||||||
|
"base" : {
|
||||||
|
"path" : "Element.id",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "1"
|
||||||
|
},
|
||||||
|
"type" : [{
|
||||||
|
"extension" : [{
|
||||||
|
"url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type",
|
||||||
|
"valueUrl" : "id"
|
||||||
|
}],
|
||||||
|
"code" : "http://hl7.org/fhirpath/System.String"
|
||||||
|
}],
|
||||||
|
"condition" : ["ele-1"],
|
||||||
|
"isModifier" : false,
|
||||||
|
"isSummary" : false,
|
||||||
|
"mapping" : [{
|
||||||
|
"identity" : "rim",
|
||||||
|
"map" : "n/a"
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.extension:code.extension",
|
||||||
|
"path" : "Extension.extension.extension",
|
||||||
|
"slicing" : {
|
||||||
|
"discriminator" : [{
|
||||||
|
"type" : "value",
|
||||||
|
"path" : "url"
|
||||||
|
}],
|
||||||
|
"description" : "Extensions are always sliced by (at least) url",
|
||||||
|
"rules" : "open"
|
||||||
|
},
|
||||||
|
"short" : "Extension",
|
||||||
|
"definition" : "An Extension",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "0",
|
||||||
|
"base" : {
|
||||||
|
"path" : "Element.extension",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "*"
|
||||||
|
},
|
||||||
|
"type" : [{
|
||||||
|
"code" : "Extension"
|
||||||
|
}],
|
||||||
|
"constraint" : [{
|
||||||
|
"key" : "ele-1",
|
||||||
|
"severity" : "error",
|
||||||
|
"human" : "All FHIR elements must have a @value or children",
|
||||||
|
"expression" : "hasValue() or (children().count() > id.count())",
|
||||||
|
"source" : "http://hl7.org/fhir/StructureDefinition/Element"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key" : "ext-1",
|
||||||
|
"severity" : "error",
|
||||||
|
"human" : "Must have either extensions or value[x], not both",
|
||||||
|
"expression" : "extension.exists() != value.exists()",
|
||||||
|
"source" : "http://hl7.org/fhir/StructureDefinition/Extension"
|
||||||
|
}],
|
||||||
|
"isModifier" : false,
|
||||||
|
"isSummary" : false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.extension:code.url",
|
||||||
|
"path" : "Extension.extension.url",
|
||||||
|
"representation" : ["xmlAttr"],
|
||||||
|
"short" : "identifies the meaning of the extension",
|
||||||
|
"definition" : "Source of the definition for the extension code - a logical name or a URL.",
|
||||||
|
"comment" : "The definition may point directly to a computable or human-readable definition of the extensibility codes, or it may be a logical URI as declared in some other specification. The definition SHALL be a URI for the Structure Definition defining the extension.",
|
||||||
|
"min" : 1,
|
||||||
|
"max" : "1",
|
||||||
|
"base" : {
|
||||||
|
"path" : "Extension.url",
|
||||||
|
"min" : 1,
|
||||||
|
"max" : "1"
|
||||||
|
},
|
||||||
|
"type" : [{
|
||||||
|
"code" : "uri"
|
||||||
|
}],
|
||||||
|
"fixedUri" : "code",
|
||||||
|
"isModifier" : false,
|
||||||
|
"isSummary" : false,
|
||||||
|
"mapping" : [{
|
||||||
|
"identity" : "rim",
|
||||||
|
"map" : "N/A"
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.extension:code.value[x]",
|
||||||
|
"path" : "Extension.extension.value[x]",
|
||||||
|
"short" : "Value of extension",
|
||||||
|
"definition" : "Value of extension - must be one of a constrained set of the data types (see [Extensibility](http://hl7.org/fhir/R5/extensibility.html) for a list).",
|
||||||
|
"min" : 1,
|
||||||
|
"max" : "1",
|
||||||
|
"base" : {
|
||||||
|
"path" : "Extension.value[x]",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "1"
|
||||||
|
},
|
||||||
|
"type" : [{
|
||||||
|
"code" : "CodeableConcept"
|
||||||
|
}],
|
||||||
|
"condition" : ["ext-1"],
|
||||||
|
"constraint" : [{
|
||||||
|
"key" : "ele-1",
|
||||||
|
"severity" : "error",
|
||||||
|
"human" : "All FHIR elements must have a @value or children",
|
||||||
|
"expression" : "hasValue() or (children().count() > id.count())",
|
||||||
|
"source" : "http://hl7.org/fhir/StructureDefinition/Element"
|
||||||
|
}],
|
||||||
|
"isModifier" : false,
|
||||||
|
"isSummary" : false,
|
||||||
|
"mapping" : [{
|
||||||
|
"identity" : "rim",
|
||||||
|
"map" : "N/A"
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.extension:period",
|
||||||
|
"path" : "Extension.extension",
|
||||||
|
"sliceName" : "period",
|
||||||
|
"short" : "Time period of citizenship",
|
||||||
|
"definition" : "Period when citizenship was effective.",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "1",
|
||||||
|
"base" : {
|
||||||
|
"path" : "Element.extension",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "*"
|
||||||
|
},
|
||||||
|
"type" : [{
|
||||||
|
"code" : "Extension"
|
||||||
|
}],
|
||||||
|
"constraint" : [{
|
||||||
|
"key" : "ele-1",
|
||||||
|
"severity" : "error",
|
||||||
|
"human" : "All FHIR elements must have a @value or children",
|
||||||
|
"expression" : "hasValue() or (children().count() > id.count())",
|
||||||
|
"source" : "http://hl7.org/fhir/StructureDefinition/Element"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key" : "ext-1",
|
||||||
|
"severity" : "error",
|
||||||
|
"human" : "Must have either extensions or value[x], not both",
|
||||||
|
"expression" : "extension.exists() != value.exists()",
|
||||||
|
"source" : "http://hl7.org/fhir/StructureDefinition/Extension"
|
||||||
|
}],
|
||||||
|
"isModifier" : false,
|
||||||
|
"isSummary" : false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.extension:period.id",
|
||||||
|
"path" : "Extension.extension.id",
|
||||||
|
"representation" : ["xmlAttr"],
|
||||||
|
"short" : "Unique id for inter-element referencing",
|
||||||
|
"definition" : "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "1",
|
||||||
|
"base" : {
|
||||||
|
"path" : "Element.id",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "1"
|
||||||
|
},
|
||||||
|
"type" : [{
|
||||||
|
"extension" : [{
|
||||||
|
"url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type",
|
||||||
|
"valueUrl" : "id"
|
||||||
|
}],
|
||||||
|
"code" : "http://hl7.org/fhirpath/System.String"
|
||||||
|
}],
|
||||||
|
"condition" : ["ele-1"],
|
||||||
|
"isModifier" : false,
|
||||||
|
"isSummary" : false,
|
||||||
|
"mapping" : [{
|
||||||
|
"identity" : "rim",
|
||||||
|
"map" : "n/a"
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.extension:period.extension",
|
||||||
|
"path" : "Extension.extension.extension",
|
||||||
|
"slicing" : {
|
||||||
|
"discriminator" : [{
|
||||||
|
"type" : "value",
|
||||||
|
"path" : "url"
|
||||||
|
}],
|
||||||
|
"description" : "Extensions are always sliced by (at least) url",
|
||||||
|
"rules" : "open"
|
||||||
|
},
|
||||||
|
"short" : "Extension",
|
||||||
|
"definition" : "An Extension",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "0",
|
||||||
|
"base" : {
|
||||||
|
"path" : "Element.extension",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "*"
|
||||||
|
},
|
||||||
|
"type" : [{
|
||||||
|
"code" : "Extension"
|
||||||
|
}],
|
||||||
|
"constraint" : [{
|
||||||
|
"key" : "ele-1",
|
||||||
|
"severity" : "error",
|
||||||
|
"human" : "All FHIR elements must have a @value or children",
|
||||||
|
"expression" : "hasValue() or (children().count() > id.count())",
|
||||||
|
"source" : "http://hl7.org/fhir/StructureDefinition/Element"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key" : "ext-1",
|
||||||
|
"severity" : "error",
|
||||||
|
"human" : "Must have either extensions or value[x], not both",
|
||||||
|
"expression" : "extension.exists() != value.exists()",
|
||||||
|
"source" : "http://hl7.org/fhir/StructureDefinition/Extension"
|
||||||
|
}],
|
||||||
|
"isModifier" : false,
|
||||||
|
"isSummary" : false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.extension:period.url",
|
||||||
|
"path" : "Extension.extension.url",
|
||||||
|
"representation" : ["xmlAttr"],
|
||||||
|
"short" : "identifies the meaning of the extension",
|
||||||
|
"definition" : "Source of the definition for the extension code - a logical name or a URL.",
|
||||||
|
"comment" : "The definition may point directly to a computable or human-readable definition of the extensibility codes, or it may be a logical URI as declared in some other specification. The definition SHALL be a URI for the Structure Definition defining the extension.",
|
||||||
|
"min" : 1,
|
||||||
|
"max" : "1",
|
||||||
|
"base" : {
|
||||||
|
"path" : "Extension.url",
|
||||||
|
"min" : 1,
|
||||||
|
"max" : "1"
|
||||||
|
},
|
||||||
|
"type" : [{
|
||||||
|
"code" : "uri"
|
||||||
|
}],
|
||||||
|
"fixedUri" : "period",
|
||||||
|
"isModifier" : false,
|
||||||
|
"isSummary" : false,
|
||||||
|
"mapping" : [{
|
||||||
|
"identity" : "rim",
|
||||||
|
"map" : "N/A"
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.extension:period.value[x]",
|
||||||
|
"path" : "Extension.extension.value[x]",
|
||||||
|
"short" : "Value of extension",
|
||||||
|
"definition" : "Value of extension - must be one of a constrained set of the data types (see [Extensibility](http://hl7.org/fhir/R5/extensibility.html) for a list).",
|
||||||
|
"min" : 1,
|
||||||
|
"max" : "1",
|
||||||
|
"base" : {
|
||||||
|
"path" : "Extension.value[x]",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "1"
|
||||||
|
},
|
||||||
|
"type" : [{
|
||||||
|
"code" : "Period"
|
||||||
|
}],
|
||||||
|
"condition" : ["ext-1"],
|
||||||
|
"constraint" : [{
|
||||||
|
"key" : "ele-1",
|
||||||
|
"severity" : "error",
|
||||||
|
"human" : "All FHIR elements must have a @value or children",
|
||||||
|
"expression" : "hasValue() or (children().count() > id.count())",
|
||||||
|
"source" : "http://hl7.org/fhir/StructureDefinition/Element"
|
||||||
|
}],
|
||||||
|
"isModifier" : false,
|
||||||
|
"isSummary" : false,
|
||||||
|
"mapping" : [{
|
||||||
|
"identity" : "rim",
|
||||||
|
"map" : "N/A"
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.url",
|
||||||
|
"path" : "Extension.url",
|
||||||
|
"representation" : ["xmlAttr"],
|
||||||
|
"short" : "identifies the meaning of the extension",
|
||||||
|
"definition" : "Source of the definition for the extension code - a logical name or a URL.",
|
||||||
|
"comment" : "The definition may point directly to a computable or human-readable definition of the extensibility codes, or it may be a logical URI as declared in some other specification. The definition SHALL be a URI for the Structure Definition defining the extension.",
|
||||||
|
"min" : 1,
|
||||||
|
"max" : "1",
|
||||||
|
"base" : {
|
||||||
|
"path" : "Extension.url",
|
||||||
|
"min" : 1,
|
||||||
|
"max" : "1"
|
||||||
|
},
|
||||||
|
"type" : [{
|
||||||
|
"extension" : [{
|
||||||
|
"url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type",
|
||||||
|
"valueUrl" : "uri"
|
||||||
|
}],
|
||||||
|
"code" : "http://hl7.org/fhirpath/System.String"
|
||||||
|
}],
|
||||||
|
"fixedUri" : "http://hl7.org/fhir/StructureDefinition/patient-citizenship",
|
||||||
|
"isModifier" : false,
|
||||||
|
"isSummary" : false,
|
||||||
|
"mapping" : [{
|
||||||
|
"identity" : "rim",
|
||||||
|
"map" : "N/A"
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.value[x]",
|
||||||
|
"path" : "Extension.value[x]",
|
||||||
|
"short" : "Value of extension",
|
||||||
|
"definition" : "Value of extension - must be one of a constrained set of the data types (see [Extensibility](http://hl7.org/fhir/R5/extensibility.html) for a list).",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "0",
|
||||||
|
"base" : {
|
||||||
|
"path" : "Extension.value[x]",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "1"
|
||||||
|
},
|
||||||
|
"type" : [{
|
||||||
|
"code" : "base64Binary"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "boolean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "canonical"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "code"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "date"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "dateTime"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "decimal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "id"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "instant"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "integer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "integer64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "markdown"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "oid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "positiveInt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "time"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "unsignedInt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "uri"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "url"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "uuid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "Address"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "Age"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "Annotation"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "Attachment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "CodeableConcept"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "CodeableReference"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "Coding"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "ContactPoint"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "Count"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "Distance"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "Duration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "HumanName"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "Money"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "Period"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "Quantity"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "Range"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "Ratio"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "RatioRange"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "Reference"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "SampledData"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "Signature"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "Timing"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "ContactDetail"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "DataRequirement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "Expression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "ParameterDefinition"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "RelatedArtifact"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "TriggerDefinition"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "UsageContext"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "Availability"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "ExtendedContactDetail"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "Dosage"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code" : "Meta"
|
||||||
|
}],
|
||||||
|
"condition" : ["ext-1"],
|
||||||
|
"constraint" : [{
|
||||||
|
"key" : "ele-1",
|
||||||
|
"severity" : "error",
|
||||||
|
"human" : "All FHIR elements must have a @value or children",
|
||||||
|
"expression" : "hasValue() or (children().count() > id.count())",
|
||||||
|
"source" : "http://hl7.org/fhir/StructureDefinition/Element"
|
||||||
|
}],
|
||||||
|
"isModifier" : false,
|
||||||
|
"isSummary" : false,
|
||||||
|
"mapping" : [{
|
||||||
|
"identity" : "rim",
|
||||||
|
"map" : "N/A"
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
"differential" : {
|
||||||
|
"element" : [{
|
||||||
|
"id" : "Extension",
|
||||||
|
"path" : "Extension",
|
||||||
|
"short" : "Nation(s) where the patient claims citizenship",
|
||||||
|
"definition" : "The patient's legal status as citizen of a country.",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "*"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.extension:code",
|
||||||
|
"path" : "Extension.extension",
|
||||||
|
"sliceName" : "code",
|
||||||
|
"short" : "Nation code of citizenship",
|
||||||
|
"definition" : "Nation code representing the citizenship of patient.",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "1",
|
||||||
|
"type" : [{
|
||||||
|
"code" : "Extension"
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.extension:code.extension",
|
||||||
|
"path" : "Extension.extension.extension",
|
||||||
|
"max" : "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.extension:code.url",
|
||||||
|
"path" : "Extension.extension.url",
|
||||||
|
"type" : [{
|
||||||
|
"code" : "uri"
|
||||||
|
}],
|
||||||
|
"fixedUri" : "code"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.extension:code.value[x]",
|
||||||
|
"path" : "Extension.extension.value[x]",
|
||||||
|
"min" : 1,
|
||||||
|
"type" : [{
|
||||||
|
"code" : "CodeableConcept"
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.extension:period",
|
||||||
|
"path" : "Extension.extension",
|
||||||
|
"sliceName" : "period",
|
||||||
|
"short" : "Time period of citizenship",
|
||||||
|
"definition" : "Period when citizenship was effective.",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "1",
|
||||||
|
"type" : [{
|
||||||
|
"code" : "Extension"
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.extension:period.extension",
|
||||||
|
"path" : "Extension.extension.extension",
|
||||||
|
"max" : "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.extension:period.url",
|
||||||
|
"path" : "Extension.extension.url",
|
||||||
|
"type" : [{
|
||||||
|
"code" : "uri"
|
||||||
|
}],
|
||||||
|
"fixedUri" : "period"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.extension:period.value[x]",
|
||||||
|
"path" : "Extension.extension.value[x]",
|
||||||
|
"min" : 1,
|
||||||
|
"type" : [{
|
||||||
|
"code" : "Period"
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.url",
|
||||||
|
"path" : "Extension.url",
|
||||||
|
"fixedUri" : "http://hl7.org/fhir/StructureDefinition/patient-citizenship"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id" : "Extension.value[x]",
|
||||||
|
"path" : "Extension.value[x]",
|
||||||
|
"min" : 0,
|
||||||
|
"max" : "0"
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue