diff --git a/source/activitydefinition/invariant-tests/adf-2.p1.pass.json b/source/activitydefinition/invariant-tests/adf-2.p1.pass.json
new file mode 100644
index 00000000000..98a348270d6
--- /dev/null
+++ b/source/activitydefinition/invariant-tests/adf-2.p1.pass.json
@@ -0,0 +1,13 @@
+{
+ "resourceType": "ActivityDefinition",
+ "status": "active",
+ "relatedArtifact": [
+ {
+ "type": "depends-on",
+ "resource": "http://x/Library/a",
+ "resourceReference": {
+ "reference": "Library/a"
+ }
+ }
+ ]
+}
diff --git a/source/activitydefinition/structuredefinition-ActivityDefinition.xml b/source/activitydefinition/structuredefinition-ActivityDefinition.xml
index d208689589e..c2fc4fad9f8 100644
--- a/source/activitydefinition/structuredefinition-ActivityDefinition.xml
+++ b/source/activitydefinition/structuredefinition-ActivityDefinition.xml
@@ -830,7 +830,7 @@
-
+
diff --git a/source/bundle/invariant-tests/bdl-14.f2.fail.json b/source/bundle/invariant-tests/bdl-14.f2.fail.json
new file mode 100644
index 00000000000..17a9dd1802f
--- /dev/null
+++ b/source/bundle/invariant-tests/bdl-14.f2.fail.json
@@ -0,0 +1,30 @@
+{
+ "resourceType": "Bundle",
+ "type": "history",
+ "entry": [
+ {
+ "fullUrl": "http://x/Patient/1",
+ "request": {
+ "method": "GET",
+ "url": "Patient/1"
+ },
+ "response": {
+ "status": "200"
+ }
+ },
+ {
+ "fullUrl": "http://x/Patient/2",
+ "request": {
+ "method": "PATCH",
+ "url": "Patient/2"
+ },
+ "resource": {
+ "resourceType": "Patient",
+ "id": "2"
+ },
+ "response": {
+ "status": "200"
+ }
+ }
+ ]
+}
diff --git a/source/bundle/invariant-tests/bdl-16.p2.pass.json b/source/bundle/invariant-tests/bdl-16.p2.pass.json
new file mode 100644
index 00000000000..3b4c00886bf
--- /dev/null
+++ b/source/bundle/invariant-tests/bdl-16.p2.pass.json
@@ -0,0 +1,24 @@
+{
+ "resourceType": "Bundle",
+ "type": "batch-response",
+ "entry": [
+ {
+ "response": {
+ "status": "200"
+ }
+ }
+ ],
+ "issues": {
+ "resourceType": "OperationOutcome",
+ "issue": [
+ {
+ "severity": "warning",
+ "code": "informational"
+ },
+ {
+ "severity": "warning",
+ "code": "informational"
+ }
+ ]
+ }
+}
diff --git a/source/bundle/invariant-tests/bdl-7.p1.pass.json b/source/bundle/invariant-tests/bdl-7.p1.pass.json
new file mode 100644
index 00000000000..6e3a9f61bee
--- /dev/null
+++ b/source/bundle/invariant-tests/bdl-7.p1.pass.json
@@ -0,0 +1,34 @@
+{
+ "resourceType": "Bundle",
+ "type": "collection",
+ "entry": [
+ {
+ "fullUrl": "http://x/Observation/123",
+ "resource": {
+ "resourceType": "Observation",
+ "id": "123",
+ "status": "final",
+ "code": {
+ "text": "t"
+ },
+ "meta": {
+ "versionId": "4"
+ }
+ }
+ },
+ {
+ "fullUrl": "http://x/Observation/12",
+ "resource": {
+ "resourceType": "Observation",
+ "id": "12",
+ "status": "final",
+ "code": {
+ "text": "t"
+ },
+ "meta": {
+ "versionId": "34"
+ }
+ }
+ }
+ ]
+}
diff --git a/source/bundle/structuredefinition-Bundle.xml b/source/bundle/structuredefinition-Bundle.xml
index f070fd3dd17..1c4a83e24b8 100644
--- a/source/bundle/structuredefinition-Bundle.xml
+++ b/source/bundle/structuredefinition-Bundle.xml
@@ -107,7 +107,7 @@
-
+
@@ -129,7 +129,7 @@
-
+
@@ -171,7 +171,7 @@
-
+
@@ -185,7 +185,7 @@
-
+
diff --git a/source/codesystem/invariant-tests/csd-1.f2.fail.json b/source/codesystem/invariant-tests/csd-1.f2.fail.json
new file mode 100644
index 00000000000..84909ab93cd
--- /dev/null
+++ b/source/codesystem/invariant-tests/csd-1.f2.fail.json
@@ -0,0 +1,16 @@
+{
+ "resourceType": "CodeSystem",
+ "url": "http://example.org/cs/csd1nested",
+ "status": "draft",
+ "content": "complete",
+ "concept": [
+ {
+ "code": "parent",
+ "concept": [
+ {
+ "code": "parent"
+ }
+ ]
+ }
+ ]
+}
diff --git a/source/codesystem/invariant-tests/csd-3.f3.fail.json b/source/codesystem/invariant-tests/csd-3.f3.fail.json
new file mode 100644
index 00000000000..4f7b926825e
--- /dev/null
+++ b/source/codesystem/invariant-tests/csd-3.f3.fail.json
@@ -0,0 +1,34 @@
+{
+ "resourceType": "CodeSystem",
+ "url": "http://example.org/cs/csd3",
+ "status": "draft",
+ "content": "complete",
+ "property": [
+ {
+ "code": "parent",
+ "type": "code"
+ },
+ {
+ "code": "status",
+ "type": "string"
+ }
+ ],
+ "concept": [
+ {
+ "code": "root"
+ },
+ {
+ "code": "c1",
+ "property": [
+ {
+ "code": "status",
+ "valueString": "a"
+ },
+ {
+ "code": "parent",
+ "valueCode": "root"
+ }
+ ]
+ }
+ ]
+}
diff --git a/source/codesystem/invariant-tests/csd-6.p2.pass.json b/source/codesystem/invariant-tests/csd-6.p2.pass.json
new file mode 100644
index 00000000000..014ee3fbfde
--- /dev/null
+++ b/source/codesystem/invariant-tests/csd-6.p2.pass.json
@@ -0,0 +1,9 @@
+{
+ "resourceType": "CodeSystem", "url": "http://example.org/cs/csd6-multi", "status": "draft",
+ "caseSensitive": true, "content": "complete",
+ "concept": [
+ { "code": "A", "property": [ { "code": "alternateCode", "valueCode": "B" } ] },
+ { "code": "B", "property": [ { "code": "alternateCode", "valueCode": "A" }, { "code": "alternateCode", "valueCode": "C" } ] },
+ { "code": "C", "property": [ { "code": "alternateCode", "valueCode": "B" } ] }
+ ]
+}
diff --git a/source/codesystem/structuredefinition-CodeSystem.xml b/source/codesystem/structuredefinition-CodeSystem.xml
index 6e1603902ff..06ec615ae6c 100644
--- a/source/codesystem/structuredefinition-CodeSystem.xml
+++ b/source/codesystem/structuredefinition-CodeSystem.xml
@@ -92,7 +92,7 @@
-
+
@@ -106,7 +106,7 @@
-
+
@@ -881,7 +881,7 @@
-
+
diff --git a/source/datatypes/count.xml b/source/datatypes/count.xml
index ba6630429b2..502860b60d9 100644
--- a/source/datatypes/count.xml
+++ b/source/datatypes/count.xml
@@ -3209,7 +3209,7 @@
| Count |
There SHALL be a code with a value of "1" if there is a value. If system is present, it SHALL be UCUM. If present, the value SHALL be a whole number. |
|
- (code.exists() or value.empty()) and (system.empty() or system = %ucum) and (code.empty() or code = '1') and (value.empty() or value.hasValue().not() or value.toString().contains('.').not()) and (value.empty() or value.hasValue().not() or value >= 0) |
+ (code.exists() or value.empty()) and (system.empty() or system = %ucum) and (code.empty() or code = '1') and (value.empty() or value.hasValue().not() or value = value.round()) and (value.empty() or value.hasValue().not() or value >= 0) |
(f:code or not(f:value)) and (not(exists(f:system)) or (f:system/@value='http://unitsofmeasure.org' and f:code/@value='1')) and not(contains(f:value/@value, '.')) |
diff --git a/source/datatypes/duration.xml b/source/datatypes/duration.xml
index 5ff9017279e..c1c1dcf0564 100644
--- a/source/datatypes/duration.xml
+++ b/source/datatypes/duration.xml
@@ -3302,7 +3302,7 @@
| Duration |
There SHALL be a code if there is a value and it SHALL be an expression of time. If system is present, it SHALL be UCUM. |
|
- code.exists() implies ((system = %ucum) and value.exists()) |
+ (value.exists() implies code.exists()) and (system.exists() implies system = %ucum) |
(f:code or not(f:value)) and (not(exists(f:system)) or f:system/@value='http://unitsofmeasure.org') |
diff --git a/source/datatypes/elementdefinition.xml b/source/datatypes/elementdefinition.xml
index f2b8d45d0a6..7813162dc90 100644
--- a/source/datatypes/elementdefinition.xml
+++ b/source/datatypes/elementdefinition.xml
@@ -4699,7 +4699,7 @@
| ElementDefinition.binding |
ValueSet SHALL start with http:// or https:// or urn: or # |
|
- valueSet.exists() implies (valueSet.startsWith('http:') or valueSet.startsWith('https') or valueSet.startsWith('urn:') or valueSet.startsWith('#')) |
+ valueSet.exists() implies (valueSet.startsWith('http:') or valueSet.startsWith('https:') or valueSet.startsWith('urn:') or valueSet.startsWith('#')) |
(starts-with(string(f:valueSet/@value), 'http:') or starts-with(string(f:valueSet/@value), 'https:') or starts-with(string(f:valueSet/@value), 'urn:') or starts-with(string(f:valueSet/@value), 'x')) |
@@ -4789,7 +4789,7 @@
| ElementDefinition.constraint |
Constraints should have an expression or else validators will not be able to enforce them |
|
- expression.exists() |
+ expression.hasValue() |
exists(f:expression/@value) |
diff --git a/source/datatypes/expression.xml b/source/datatypes/expression.xml
index d3a44ce5ff9..311a4364356 100644
--- a/source/datatypes/expression.xml
+++ b/source/datatypes/expression.xml
@@ -3457,7 +3457,7 @@
| error |
Expression |
The name must be a valid variable name in most computer languages |
- name.hasValue() implies name.matches('[A-Za-z][A-Za-z0-9\\_]{0,63}') |
+ name.hasValue() implies name.matches('^[A-Za-z][A-Za-z0-9\\_]{0,63}$') |
exists(f:expression) or exists(f:reference) |
diff --git a/source/documentreference/structuredefinition-DocumentReference.xml b/source/documentreference/structuredefinition-DocumentReference.xml
index 5c8d722ed2e..e77fc8146c3 100644
--- a/source/documentreference/structuredefinition-DocumentReference.xml
+++ b/source/documentreference/structuredefinition-DocumentReference.xml
@@ -106,7 +106,7 @@
-
+
diff --git a/source/event/event-spreadsheet.xml b/source/event/event-spreadsheet.xml
index 8f3ffa7de19..7d233ea4366 100644
--- a/source/event/event-spreadsheet.xml
+++ b/source/event/event-spreadsheet.xml
@@ -1762,7 +1762,7 @@
|
Event |
reason elements can only be specified if status is NOT 'not-done' |
- status!='not-done' or (reasonCode.exists().not() and reasonReference.exists().not()) |
+ status!='not-done' or reason.exists().not() |
not(f:status/@value='not-done') or not(exists(f:reasonCode) or exists(f:reasonReference)) |
diff --git a/source/imagingselection/invariant-tests/isl-10.p1.pass.json b/source/imagingselection/invariant-tests/isl-10.p1.pass.json
new file mode 100644
index 00000000000..6b48659f68c
--- /dev/null
+++ b/source/imagingselection/invariant-tests/isl-10.p1.pass.json
@@ -0,0 +1,23 @@
+{
+ "resourceType": "ImagingSelection",
+ "status": "available",
+ "code": {
+ "text": "s"
+ },
+ "instance": [
+ {
+ "uid": "a",
+ "frameNumber": [
+ 1,
+ 2,
+ 3
+ ]
+ },
+ {
+ "uid": "b",
+ "segmentNumber": [
+ 1
+ ]
+ }
+ ]
+}
diff --git a/source/imagingselection/invariant-tests/isl-11.f2.fail.json b/source/imagingselection/invariant-tests/isl-11.f2.fail.json
new file mode 100644
index 00000000000..c513c1f7e53
--- /dev/null
+++ b/source/imagingselection/invariant-tests/isl-11.f2.fail.json
@@ -0,0 +1,23 @@
+{
+ "resourceType": "ImagingSelection",
+ "status": "available",
+ "code": {
+ "text": "r"
+ },
+ "instance": [
+ {
+ "uid": "a",
+ "waveFormChannel": [
+ 1
+ ]
+ },
+ {
+ "uid": "b",
+ "waveFormChannel": [
+ 1,
+ 2,
+ 3
+ ]
+ }
+ ]
+}
diff --git a/source/imagingselection/invariant-tests/isl-7.f2.fail.json b/source/imagingselection/invariant-tests/isl-7.f2.fail.json
new file mode 100644
index 00000000000..d6127647db1
--- /dev/null
+++ b/source/imagingselection/invariant-tests/isl-7.f2.fail.json
@@ -0,0 +1,32 @@
+{
+ "resourceType": "ImagingSelection",
+ "status": "available",
+ "code": {
+ "text": "r"
+ },
+ "instance": [
+ {
+ "uid": "i",
+ "imageRegion2D": [
+ {
+ "regionType": "polyline",
+ "coordinate": [
+ 0.1,
+ 0.2,
+ 0.3
+ ]
+ },
+ {
+ "regionType": "polyline",
+ "coordinate": [
+ 0.1,
+ 0.2,
+ 0.3,
+ 0.4,
+ 0.5
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/source/imagingselection/invariant-tests/isl-8.f2.fail.json b/source/imagingselection/invariant-tests/isl-8.f2.fail.json
new file mode 100644
index 00000000000..651785984c5
--- /dev/null
+++ b/source/imagingselection/invariant-tests/isl-8.f2.fail.json
@@ -0,0 +1,28 @@
+{
+ "resourceType": "ImagingSelection",
+ "status": "available",
+ "code": {
+ "text": "r"
+ },
+ "imageRegion3D": [
+ {
+ "regionType": "polygon",
+ "coordinate": [
+ 1,
+ 2,
+ 3,
+ 4
+ ]
+ },
+ {
+ "regionType": "polygon",
+ "coordinate": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5
+ ]
+ }
+ ]
+}
diff --git a/source/imagingselection/structuredefinition-ImagingSelection.xml b/source/imagingselection/structuredefinition-ImagingSelection.xml
index ac810d99e43..f63f7f3ba95 100644
--- a/source/imagingselection/structuredefinition-ImagingSelection.xml
+++ b/source/imagingselection/structuredefinition-ImagingSelection.xml
@@ -126,14 +126,14 @@
-
+
-
+
@@ -149,14 +149,14 @@
-
+
-
+
diff --git a/source/imagingstudy/invariant-tests/ist-4.p1.pass.json b/source/imagingstudy/invariant-tests/ist-4.p1.pass.json
new file mode 100644
index 00000000000..23388e413dd
--- /dev/null
+++ b/source/imagingstudy/invariant-tests/ist-4.p1.pass.json
@@ -0,0 +1,21 @@
+{
+ "resourceType": "ImagingStudy",
+ "status": "available",
+ "subject": {
+ "reference": "Patient/x"
+ },
+ "numberOfInstances": 5,
+ "series": [
+ {
+ "uid": "1.2.3",
+ "modality": {
+ "coding": [
+ {
+ "system": "http://dicom.nema.org/resources/ontology/DCM",
+ "code": "CT"
+ }
+ ]
+ }
+ }
+ ]
+}
diff --git a/source/imagingstudy/structuredefinition-ImagingStudy.xml b/source/imagingstudy/structuredefinition-ImagingStudy.xml
index a230d0e8571..c2e58f17672 100644
--- a/source/imagingstudy/structuredefinition-ImagingStudy.xml
+++ b/source/imagingstudy/structuredefinition-ImagingStudy.xml
@@ -110,7 +110,7 @@
-
+
diff --git a/source/measurereport/invariant-tests/mrp-3.p1.pass.json b/source/measurereport/invariant-tests/mrp-3.p1.pass.json
new file mode 100644
index 00000000000..2523d661928
--- /dev/null
+++ b/source/measurereport/invariant-tests/mrp-3.p1.pass.json
@@ -0,0 +1,21 @@
+{
+ "resourceType": "MeasureReport",
+ "status": "complete",
+ "type": "individual",
+ "measure": "http://x/Measure/m",
+ "period": {
+ "start": "2013-01-01",
+ "end": "2013-12-31"
+ },
+ "group": [
+ {
+ "population": [
+ {
+ "code": {
+ "text": "initial-population"
+ }
+ }
+ ]
+ }
+ ]
+}
diff --git a/source/measurereport/invariant-tests/mrp-4.p1.pass.json b/source/measurereport/invariant-tests/mrp-4.p1.pass.json
new file mode 100644
index 00000000000..a3541f01342
--- /dev/null
+++ b/source/measurereport/invariant-tests/mrp-4.p1.pass.json
@@ -0,0 +1,29 @@
+{
+ "resourceType": "MeasureReport",
+ "status": "complete",
+ "type": "individual",
+ "measure": "http://x/Measure/m",
+ "period": {
+ "start": "2013-01-01",
+ "end": "2013-12-31"
+ },
+ "group": [
+ {
+ "stratifier": [
+ {
+ "stratum": [
+ {
+ "population": [
+ {
+ "code": {
+ "text": "numerator"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/source/measurereport/structuredefinition-MeasureReport.xml b/source/measurereport/structuredefinition-MeasureReport.xml
index 62504280ebd..3bad82846c4 100644
--- a/source/measurereport/structuredefinition-MeasureReport.xml
+++ b/source/measurereport/structuredefinition-MeasureReport.xml
@@ -662,7 +662,7 @@
-
+
@@ -1104,7 +1104,7 @@
-
+
diff --git a/source/parameters/invariant-tests/cnt-3.p1.pass.json b/source/parameters/invariant-tests/cnt-3.p1.pass.json
new file mode 100644
index 00000000000..bc7d5ffb1d3
--- /dev/null
+++ b/source/parameters/invariant-tests/cnt-3.p1.pass.json
@@ -0,0 +1,6 @@
+{
+ "resourceType": "Parameters",
+ "parameter": [
+ { "name": "x", "valueCount": { "value": 5.0, "system": "http://unitsofmeasure.org", "code": "1" } }
+ ]
+}
diff --git a/source/parameters/invariant-tests/drt-1.f1.fail.json b/source/parameters/invariant-tests/drt-1.f1.fail.json
new file mode 100644
index 00000000000..1e2e14a321e
--- /dev/null
+++ b/source/parameters/invariant-tests/drt-1.f1.fail.json
@@ -0,0 +1,11 @@
+{
+ "resourceType": "Parameters",
+ "parameter": [
+ {
+ "name": "x",
+ "valueDuration": {
+ "value": 30
+ }
+ }
+ ]
+}
diff --git a/source/parameters/invariant-tests/drt-1.p1.pass.json b/source/parameters/invariant-tests/drt-1.p1.pass.json
new file mode 100644
index 00000000000..1093d51dec5
--- /dev/null
+++ b/source/parameters/invariant-tests/drt-1.p1.pass.json
@@ -0,0 +1,12 @@
+{
+ "resourceType": "Parameters",
+ "parameter": [
+ {
+ "name": "x",
+ "valueDuration": {
+ "value": 30,
+ "code": "min"
+ }
+ }
+ ]
+}
diff --git a/source/plandefinition/invariant-tests/exp-2.f1.fail.json b/source/plandefinition/invariant-tests/exp-2.f1.fail.json
new file mode 100644
index 00000000000..edf6d20f188
--- /dev/null
+++ b/source/plandefinition/invariant-tests/exp-2.f1.fail.json
@@ -0,0 +1,19 @@
+{
+ "resourceType": "PlanDefinition",
+ "status": "active",
+ "action": [
+ {
+ "title": "a",
+ "condition": [
+ {
+ "kind": "applicability",
+ "expression": {
+ "name": "9-bad name",
+ "language": "text/fhirpath",
+ "expression": "true"
+ }
+ }
+ ]
+ }
+ ]
+}
diff --git a/source/plandefinition/invariant-tests/pld-3.p1.pass.json b/source/plandefinition/invariant-tests/pld-3.p1.pass.json
new file mode 100644
index 00000000000..73157beef88
--- /dev/null
+++ b/source/plandefinition/invariant-tests/pld-3.p1.pass.json
@@ -0,0 +1,27 @@
+{
+ "resourceType": "PlanDefinition",
+ "status": "active",
+ "goal": [
+ {
+ "id": "g1",
+ "description": {
+ "text": "x"
+ }
+ },
+ {
+ "id": "g2",
+ "description": {
+ "text": "y"
+ }
+ }
+ ],
+ "action": [
+ {
+ "title": "a",
+ "goalId": [
+ "g1",
+ "g2"
+ ]
+ }
+ ]
+}
diff --git a/source/plandefinition/invariant-tests/pld-6.p1.pass.json b/source/plandefinition/invariant-tests/pld-6.p1.pass.json
new file mode 100644
index 00000000000..7b9f0d4ac8d
--- /dev/null
+++ b/source/plandefinition/invariant-tests/pld-6.p1.pass.json
@@ -0,0 +1,13 @@
+{
+ "resourceType": "PlanDefinition",
+ "status": "active",
+ "relatedArtifact": [
+ {
+ "type": "depends-on",
+ "resource": "http://x/Library/a",
+ "resourceReference": {
+ "reference": "Library/a"
+ }
+ }
+ ]
+}
diff --git a/source/plandefinition/structuredefinition-PlanDefinition.xml b/source/plandefinition/structuredefinition-PlanDefinition.xml
index bc0cd485bc7..8655c7ee7b3 100644
--- a/source/plandefinition/structuredefinition-PlanDefinition.xml
+++ b/source/plandefinition/structuredefinition-PlanDefinition.xml
@@ -99,7 +99,7 @@
-
+
@@ -874,7 +874,7 @@
-
+
diff --git a/source/questionnaire/invariant-tests/que-16.f1.fail.json b/source/questionnaire/invariant-tests/que-16.f1.fail.json
new file mode 100644
index 00000000000..82b49b5748a
--- /dev/null
+++ b/source/questionnaire/invariant-tests/que-16.f1.fail.json
@@ -0,0 +1,10 @@
+{
+ "resourceType": "Questionnaire",
+ "status": "active",
+ "item": [
+ {
+ "linkId": "double space",
+ "type": "string"
+ }
+ ]
+}
diff --git a/source/questionnaire/invariant-tests/que-5.p1.pass.json b/source/questionnaire/invariant-tests/que-5.p1.pass.json
new file mode 100644
index 00000000000..36d9f92bd29
--- /dev/null
+++ b/source/questionnaire/invariant-tests/que-5.p1.pass.json
@@ -0,0 +1,15 @@
+{
+ "resourceType": "Questionnaire",
+ "status": "active",
+ "item": [
+ {
+ "linkId": "u",
+ "type": "url",
+ "answerOption": [
+ {
+ "valueUri": "http://example.org/a"
+ }
+ ]
+ }
+ ]
+}
diff --git a/source/questionnaire/invariant-tests/que-5b.p1.pass.json b/source/questionnaire/invariant-tests/que-5b.p1.pass.json
new file mode 100644
index 00000000000..fb3c002ff22
--- /dev/null
+++ b/source/questionnaire/invariant-tests/que-5b.p1.pass.json
@@ -0,0 +1,11 @@
+{
+ "resourceType": "Questionnaire",
+ "status": "active",
+ "item": [
+ {
+ "linkId": "u",
+ "type": "url",
+ "answerValueSet": "http://example.org/vs"
+ }
+ ]
+}
diff --git a/source/questionnaire/structuredefinition-Questionnaire.xml b/source/questionnaire/structuredefinition-Questionnaire.xml
index 3e9554fe9a9..99043f551ae 100644
--- a/source/questionnaire/structuredefinition-Questionnaire.xml
+++ b/source/questionnaire/structuredefinition-Questionnaire.xml
@@ -762,14 +762,14 @@
-
+
-
-
+
+
@@ -892,7 +892,7 @@
-
+
diff --git a/source/questionnaireresponse/invariant-tests/qrs-2.f1.fail.json b/source/questionnaireresponse/invariant-tests/qrs-2.f1.fail.json
new file mode 100644
index 00000000000..c16480dd505
--- /dev/null
+++ b/source/questionnaireresponse/invariant-tests/qrs-2.f1.fail.json
@@ -0,0 +1,27 @@
+{
+ "resourceType": "QuestionnaireResponse",
+ "status": "completed",
+ "item": [
+ {
+ "linkId": "group",
+ "item": [
+ {
+ "linkId": "dup",
+ "answer": [
+ {
+ "valueString": "a"
+ }
+ ]
+ },
+ {
+ "linkId": "dup",
+ "answer": [
+ {
+ "valueString": "b"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/source/questionnaireresponse/invariant-tests/qrs-3.f1.fail.json b/source/questionnaireresponse/invariant-tests/qrs-3.f1.fail.json
new file mode 100644
index 00000000000..fec29be9044
--- /dev/null
+++ b/source/questionnaireresponse/invariant-tests/qrs-3.f1.fail.json
@@ -0,0 +1,9 @@
+{
+ "resourceType": "QuestionnaireResponse",
+ "status": "completed",
+ "item": [
+ {
+ "linkId": "double space"
+ }
+ ]
+}
diff --git a/source/questionnaireresponse/structuredefinition-QuestionnaireResponse.xml b/source/questionnaireresponse/structuredefinition-QuestionnaireResponse.xml
index 24273257684..02f352a1c2f 100644
--- a/source/questionnaireresponse/structuredefinition-QuestionnaireResponse.xml
+++ b/source/questionnaireresponse/structuredefinition-QuestionnaireResponse.xml
@@ -397,7 +397,7 @@
-
+
@@ -421,7 +421,7 @@
-
+
diff --git a/source/structuredefinition/invariant-tests/eld-12.f1.fail.json b/source/structuredefinition/invariant-tests/eld-12.f1.fail.json
new file mode 100644
index 00000000000..6c29ce98a77
--- /dev/null
+++ b/source/structuredefinition/invariant-tests/eld-12.f1.fail.json
@@ -0,0 +1,23 @@
+{
+ "resourceType": "StructureDefinition",
+ "url": "http://example.org/sd/eld12",
+ "name": "Eld12",
+ "status": "draft",
+ "kind": "resource",
+ "abstract": false,
+ "type": "Observation",
+ "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Observation",
+ "derivation": "constraint",
+ "differential": {
+ "element": [
+ {
+ "id": "Observation.status",
+ "path": "Observation.status",
+ "binding": {
+ "strength": "required",
+ "valueSet": "httpsfoo"
+ }
+ }
+ ]
+ }
+}
diff --git a/source/structuredefinition/invariant-tests/eld-21.f1.fail.json b/source/structuredefinition/invariant-tests/eld-21.f1.fail.json
new file mode 100644
index 00000000000..0418f66273c
--- /dev/null
+++ b/source/structuredefinition/invariant-tests/eld-21.f1.fail.json
@@ -0,0 +1,34 @@
+{
+ "resourceType": "StructureDefinition",
+ "url": "http://example.org/sd/eld21",
+ "name": "Eld21",
+ "status": "draft",
+ "kind": "resource",
+ "abstract": false,
+ "type": "Patient",
+ "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Patient",
+ "derivation": "constraint",
+ "differential": {
+ "element": [
+ {
+ "id": "Patient.name",
+ "path": "Patient.name",
+ "constraint": [
+ {
+ "key": "x-1",
+ "severity": "error",
+ "human": "must be set",
+ "_expression": {
+ "extension": [
+ {
+ "url": "http://hl7.org/fhir/StructureDefinition/data-absent-reason",
+ "valueCode": "unknown"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ }
+}