support slicing on patternCoding
This commit is contained in:
parent
f1dc0e5754
commit
1c8797f628
|
@ -3209,6 +3209,10 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
CodeableConcept cc = (CodeableConcept) pattern;
|
CodeableConcept cc = (CodeableConcept) pattern;
|
||||||
expression.append(" and ");
|
expression.append(" and ");
|
||||||
buildCodeableConceptExpression(ed, expression, discriminator, cc);
|
buildCodeableConceptExpression(ed, expression, discriminator, cc);
|
||||||
|
} else if (pattern instanceof Coding) {
|
||||||
|
Coding c = (Coding) pattern;
|
||||||
|
expression.append(" and ");
|
||||||
|
buildCodingExpression(ed, expression, discriminator, c);
|
||||||
} else if (pattern instanceof Identifier) {
|
} else if (pattern instanceof Identifier) {
|
||||||
Identifier ii = (Identifier) pattern;
|
Identifier ii = (Identifier) pattern;
|
||||||
expression.append(" and ");
|
expression.append(" and ");
|
||||||
|
@ -3290,6 +3294,34 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void buildCodingExpression(ElementDefinition ed, StringBuilder expression, String discriminator, Coding c)
|
||||||
|
throws DefinitionException {
|
||||||
|
if (c.hasExtension())
|
||||||
|
throw new DefinitionException("Unsupported CodeableConcept pattern - extensions are not allowed - for discriminator(" + discriminator + ") for slice " + ed.getId());
|
||||||
|
expression.append(discriminator + ".coding.where(");
|
||||||
|
boolean first = true;
|
||||||
|
if (c.hasSystem()) {
|
||||||
|
first = false;
|
||||||
|
expression.append("system = '" + c.getSystem() + "'");
|
||||||
|
}
|
||||||
|
if (c.hasVersion()) {
|
||||||
|
if (first) first = false;
|
||||||
|
else expression.append(" and ");
|
||||||
|
expression.append("version = '" + c.getVersion() + "'");
|
||||||
|
}
|
||||||
|
if (c.hasCode()) {
|
||||||
|
if (first) first = false;
|
||||||
|
else expression.append(" and ");
|
||||||
|
expression.append("code = '" + c.getCode() + "'");
|
||||||
|
}
|
||||||
|
if (c.hasDisplay()) {
|
||||||
|
if (first) first = false;
|
||||||
|
else expression.append(" and ");
|
||||||
|
expression.append("display = '" + c.getDisplay() + "'");
|
||||||
|
}
|
||||||
|
expression.append(").exists()");
|
||||||
|
}
|
||||||
|
|
||||||
private void buildFixedExpression(ElementDefinition ed, StringBuilder expression, String discriminator, ElementDefinition criteriaElement) throws DefinitionException {
|
private void buildFixedExpression(ElementDefinition ed, StringBuilder expression, String discriminator, ElementDefinition criteriaElement) throws DefinitionException {
|
||||||
DataType fixed = criteriaElement.getFixed();
|
DataType fixed = criteriaElement.getFixed();
|
||||||
if (fixed instanceof CodeableConcept) {
|
if (fixed instanceof CodeableConcept) {
|
||||||
|
@ -3300,6 +3332,10 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
Identifier ii = (Identifier) fixed;
|
Identifier ii = (Identifier) fixed;
|
||||||
expression.append(" and ");
|
expression.append(" and ");
|
||||||
buildIdentifierExpression(ed, expression, discriminator, ii);
|
buildIdentifierExpression(ed, expression, discriminator, ii);
|
||||||
|
} else if (fixed instanceof Coding) {
|
||||||
|
Coding c = (Coding) fixed;
|
||||||
|
expression.append(" and ");
|
||||||
|
buildCodingExpression(ed, expression, discriminator, c);
|
||||||
} else {
|
} else {
|
||||||
expression.append(" and (");
|
expression.append(" and (");
|
||||||
if (fixed instanceof StringType) {
|
if (fixed instanceof StringType) {
|
||||||
|
|
2
pom.xml
2
pom.xml
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<hapi_fhir_version>4.2.0</hapi_fhir_version>
|
<hapi_fhir_version>4.2.0</hapi_fhir_version>
|
||||||
<validator_test_case_version>1.0.43-SNAPSHOT</validator_test_case_version>
|
<validator_test_case_version>1.0.44-SNAPSHOT</validator_test_case_version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<artifactId>org.hl7.fhir.core</artifactId>
|
<artifactId>org.hl7.fhir.core</artifactId>
|
||||||
|
|
Loading…
Reference in New Issue