Skip to content

Commit 929a121

Browse files
committed
NRL-746 add display check
1 parent e1960eb commit 929a121

File tree

2 files changed

+58
-0
lines changed

2 files changed

+58
-0
lines changed

layer/nrlf/core/tests/test_validators.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -679,6 +679,47 @@ def test_validate_content_extension_invalid_code():
679679
}
680680

681681

682+
def test_validate_content_extension_invalid_display():
683+
validator = DocumentReferenceValidator()
684+
document_ref_data = load_document_reference_json("Y05868-736253002-Valid")
685+
686+
document_ref_data["content"][0]["extension"][0] = {
687+
"url": "https://fhir.nhs.uk/England/StructureDefinition/Extension-England-ContentStability",
688+
"valueCodeableConcept": {
689+
"coding": [
690+
{
691+
"system": "https://fhir.nhs.uk/England/CodeSystem/England-NRLContentStability",
692+
"code": "static",
693+
"display": "invalid",
694+
}
695+
]
696+
},
697+
}
698+
699+
result = validator.validate(document_ref_data)
700+
701+
assert result.is_valid is False
702+
assert result.resource.id == "Y05868-99999-99999-999999"
703+
assert len(result.issues) == 1
704+
assert result.issues[0].dict(exclude_none=True) == {
705+
"severity": "error",
706+
"code": "value",
707+
"details": {
708+
"coding": [
709+
{
710+
"system": "https://fhir.nhs.uk/ValueSet/Spine-ErrorOrWarningCode-1",
711+
"code": "INVALID_RESOURCE",
712+
"display": "Invalid validation of resource",
713+
}
714+
]
715+
},
716+
"diagnostics": "Invalid content extension display: invalid Extension display must be the same as code either 'static' or 'dynamic'",
717+
"expression": [
718+
"content[0].extension[0].valueCodeableConcept.coding[0].display"
719+
],
720+
}
721+
722+
682723
def test_validate_content_extension_invalid_system():
683724
validator = DocumentReferenceValidator()
684725
document_ref_data = load_document_reference_json("Y05868-736253002-Valid")

layer/nrlf/core/validators.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,23 @@ def _validate_content_extension(self, model: DocumentReference):
461461
)
462462
return
463463

464+
if (
465+
content.extension[0].valueCodeableConcept.coding[0].code
466+
!= content.extension[0].valueCodeableConcept.coding[0].display.lower()
467+
):
468+
logger.log(
469+
LogReference.VALIDATOR001,
470+
step=f"content[{i}].extension.valueCodeableConcept.coding[0].display",
471+
reason="extension_coding_display_invalid",
472+
)
473+
self.result.add_error(
474+
issue_code="value",
475+
error_code="INVALID_RESOURCE",
476+
diagnostics=f"Invalid content extension display: {content.extension[0].valueCodeableConcept.coding[0].display} Extension display must be the same as code either 'static' or 'dynamic'",
477+
field=f"content[{i}].extension[0].valueCodeableConcept.coding[0].display",
478+
)
479+
return
480+
464481
if (
465482
content.extension[0].url
466483
!= "https://fhir.nhs.uk/England/StructureDefinition/Extension-England-ContentStability"

0 commit comments

Comments
 (0)