more status checking
This commit is contained in:
parent
c71d3a107d
commit
4d7ecec87c
|
@ -966,6 +966,7 @@ public class I18nConstants {
|
|||
public static final String MSG_DEPENDS_ON_EXTENSION = "MSG_DEPENDS_ON_EXTENSION";
|
||||
public static final String MSG_DEPENDS_ON_PROFILE = "MSG_DEPENDS_ON_PROFILE";
|
||||
public static final String VALIDATION_VAL_STATUS_INCONSISTENT = "VALIDATION_VAL_STATUS_INCONSISTENT";
|
||||
public static final String VALIDATION_VAL_STATUS_INCONSISTENT_HINT = "VALIDATION_VAL_STATUS_INCONSISTENT_HINT";
|
||||
public static final String CODESYSTEM_CS_COUNT_COMPLETE_WRONG = "CODESYSTEM_CS_COUNT_COMPLETE_WRONG";
|
||||
public static final String CODESYSTEM_CS_COUNT_FRAGMENT_WRONG = "CODESYSTEM_CS_COUNT_FRAGMENT_WRONG";
|
||||
public static final String CODESYSTEM_CS_COUNT_NOTPRESENT_ZERO = "CODESYSTEM_CS_COUNT_NOTPRESENT_ZERO";
|
||||
|
|
|
@ -1025,6 +1025,7 @@ MSG_DEPENDS_ON_DRAFT = The {0} {1} is a draft resource
|
|||
MSG_DEPENDS_ON_EXTENSION = extension
|
||||
MSG_DEPENDS_ON_PROFILE = profile
|
||||
VALIDATION_VAL_STATUS_INCONSISTENT = The resource status ''{0}'' and the standards status ''{1}'' are not consistent
|
||||
VALIDATION_VAL_STATUS_INCONSISTENT_HINT = The resource status ''{0}'' and the standards status ''{1}'' may not be consistent and should be reviewed
|
||||
CODESYSTEM_CS_COUNT_COMPLETE_WRONG = The code system is complete, but the number of concepts ({0}) does not match the stated total number ({1})
|
||||
CODESYSTEM_CS_COUNT_FRAGMENT_WRONG = The code system is a fragment/example, but the number of concepts ({0}) exceeds or matches the stated total number ({1})
|
||||
CODESYSTEM_CS_COUNT_NOTPRESENT_ZERO = The code system has no content, but the exceeds the stated total number is 0 concepts - check that this isn't a complete code system that has no concepts, or update/remove the stated count
|
||||
|
|
|
@ -5144,7 +5144,9 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
String standardsStatus = base != null && base.isPrimitive() ? base.primitiveValue() : null;
|
||||
String status = element.getNamedChildValue("status");
|
||||
if (!Utilities.noString(status) && !Utilities.noString(standardsStatus)) {
|
||||
warning(errors, "2023-08-14", IssueType.BUSINESSRULE, element.line(), element.col(), stack.getLiteralPath(), statusCodesConsistent(status, standardsStatus), I18nConstants.VALIDATION_VAL_STATUS_INCONSISTENT, status, standardsStatus);
|
||||
if (warning(errors, "2023-08-14", IssueType.BUSINESSRULE, element.line(), element.col(), stack.getLiteralPath(), statusCodesConsistent(status, standardsStatus), I18nConstants.VALIDATION_VAL_STATUS_INCONSISTENT, status, standardsStatus)) {
|
||||
hint(errors, "2023-08-14", IssueType.BUSINESSRULE, element.line(), element.col(), stack.getLiteralPath(), statusCodesDeeplyConsistent(status, standardsStatus), I18nConstants.VALIDATION_VAL_STATUS_INCONSISTENT_HINT, status, standardsStatus);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (element.getType().equals(BUNDLE)) {
|
||||
|
@ -5191,6 +5193,19 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
return true;
|
||||
}
|
||||
|
||||
private boolean statusCodesDeeplyConsistent(String status, String standardsStatus) {
|
||||
switch (standardsStatus) {
|
||||
case "draft": return Utilities.existsInList(status, "draft");
|
||||
case "normative": return Utilities.existsInList(status, "active");
|
||||
case "trial-use": return Utilities.existsInList(status, "active");
|
||||
case "informative": return Utilities.existsInList(status, "draft", "active");
|
||||
case "deprecated": return Utilities.existsInList(status, "retired");
|
||||
case "withdrawn": return Utilities.existsInList(status, "retired");
|
||||
case "external": return Utilities.existsInList(status, "draft", "active");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private ResourceValidationTracker getResourceTracker(Element element) {
|
||||
ResourceValidationTracker res = resourceTracker.get(element);
|
||||
if (res == null) {
|
||||
|
|
|
@ -28,8 +28,8 @@ import org.hl7.fhir.r5.comparison.CapabilityStatementComparer.CapabilityStatemen
|
|||
import org.hl7.fhir.r5.comparison.CodeSystemComparer;
|
||||
import org.hl7.fhir.r5.comparison.CodeSystemComparer.CodeSystemComparison;
|
||||
import org.hl7.fhir.r5.comparison.ComparisonSession;
|
||||
import org.hl7.fhir.r5.comparison.ProfileComparer;
|
||||
import org.hl7.fhir.r5.comparison.ProfileComparer.ProfileComparison;
|
||||
import org.hl7.fhir.r5.comparison.StructureDefinitionComparer;
|
||||
import org.hl7.fhir.r5.comparison.StructureDefinitionComparer.ProfileComparison;
|
||||
import org.hl7.fhir.r5.comparison.ValueSetComparer;
|
||||
import org.hl7.fhir.r5.comparison.ValueSetComparer.ValueSetComparison;
|
||||
import org.hl7.fhir.r5.conformance.profile.ProfileUtilities;
|
||||
|
@ -188,7 +188,7 @@ public class ComparisonTests {
|
|||
ProfileUtilities utils = new ProfileUtilities(context, null, null);
|
||||
genSnapshot(utils, (StructureDefinition) left);
|
||||
genSnapshot(utils, (StructureDefinition) right);
|
||||
ProfileComparer pc = new ProfileComparer(session, utils, utils);
|
||||
StructureDefinitionComparer pc = new StructureDefinitionComparer(session, utils, utils);
|
||||
ProfileComparison csc = pc.compare((StructureDefinition) left, (StructureDefinition) right);
|
||||
new org.hl7.fhir.r5.formats.JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path("[tmp]", "comparison", name + "-union.json")), csc.getUnion());
|
||||
new org.hl7.fhir.r5.formats.JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path("[tmp]", "comparison", name + "-intersection.json")), csc.getIntersection());
|
||||
|
|
Loading…
Reference in New Issue