@@ -1523,135 +1523,42 @@ def test_validate_ssp_content_with_multiple_asids():
15231523 "expression" : ["context.related" ],
15241524 }
15251525
1526- def test_validate_content_extension_invalid_code_and_display_mismatch ():
1527- validator = DocumentReferenceValidator ()
1528- document_ref_data = load_document_reference_json ("Y05868-736253002-Valid" )
1529-
1530- document_ref_data ["content" ][0 ]["extension" ][0 ] = {
1531- "url" : "https://fhir.nhs.uk/England/StructureDefinition/Extension-England-ContentStability" ,
1532- "valueCodeableConcept" : {
1533- "coding" : [
1534- {
1535- "system" : "https://fhir.nhs.uk/England/CodeSystem/England-NRLContentStability" ,
1536- "code" : "static" ,
1537- "display" : "Dynamic" ,
1538- }
1539- ]
1540- },
1541- }
1542-
1543- result = validator .validate (document_ref_data )
1544-
1545- assert result .is_valid is False
1546- assert result .resource .id == "Y05868-99999-99999-999999"
1547- assert len (result .issues ) == 1
1548- assert result .issues [0 ].model_dump (exclude_none = True ) == {
1549- "severity" : "error" ,
1550- "code" : "value" ,
1551- "details" : {
1552- "coding" : [
1553- {
1554- "system" : "https://fhir.nhs.uk/ValueSet/Spine-ErrorOrWarningCode-1" ,
1555- "code" : "INVALID_RESOURCE" ,
1556- "display" : "Invalid validation of resource" ,
1557- }
1558- ]
1559- },
1560- "diagnostics" : "Invalid content extension display: Dynamic Extension display must be the same as code either 'Static' or 'Dynamic'" ,
1561- "expression" : [
1562- "content[0].extension[0].valueCodeableConcept.coding[0].display"
1563- ],
1564- }
1565-
1566- def test_validate_content_missing_attachment ():
1567- validator = DocumentReferenceValidator ()
1568- document_ref_data = load_document_reference_json ("Y05868-736253002-Valid" )
1569-
1570- document_ref_data ["content" ][0 ].pop ("attachment" )
1571-
1572- result = validator .validate (document_ref_data )
1573-
1574- assert result .is_valid is False
1575- assert len (result .issues ) == 1
1576- assert result .issues [0 ].model_dump (exclude_none = True ) == {
1577- "severity" : "error" ,
1578- "code" : "required" ,
1579- "details" : {
1580- "coding" : [
1581- {
1582- "system" : "https://fhir.nhs.uk/ValueSet/Spine-ErrorOrWarningCode-1" ,
1583- "code" : "INVALID_RESOURCE" ,
1584- "display" : "Invalid validation of resource" ,
1585- }
1586- ]
1587- },
1588- "diagnostics" : "Missing attachment in content" ,
1589- "expression" : ["content[0].attachment" ],
1590- }
1591-
1592- def test_validate_content_missing_content_type ():
1593- validator = DocumentReferenceValidator ()
1594- document_ref_data = load_document_reference_json ("Y05868-736253002-Valid" )
1595-
1596- document_ref_data ["content" ][0 ]["attachment" ].pop ("contentType" )
1597-
1598- result = validator .validate (document_ref_data )
1599-
1600- assert result .is_valid is False
1601- assert len (result .issues ) == 1
1602- assert result .issues [0 ].model_dump (exclude_none = True ) == {
1603- "severity" : "error" ,
1604- "code" : "required" ,
1605- "details" : {
1606- "coding" : [
1607- {
1608- "system" : "https://fhir.nhs.uk/ValueSet/Spine-ErrorOrWarningCode-1" ,
1609- "code" : "INVALID_RESOURCE" ,
1610- "display" : "Invalid validation of resource" ,
1611- }
1612- ]
1613- },
1614- "diagnostics" : "Missing contentType in content.attachment" ,
1615- "expression" : ["content[0].attachment.contentType" ],
1616- }
1617-
1618- def test_validate_content_invalid_content_type ():
1619- validator = DocumentReferenceValidator ()
1620- document_ref_data = load_document_reference_json ("Y05868-736253002-Valid" )
1621-
1622- document_ref_data ["content" ][0 ]["attachment" ][
1623- "contentType"
1624- ] = "invalid/type"
1625-
1626- result = validator .validate (document_ref_data )
1627-
1628- assert result .is_valid is False
1629- assert len (result .issues ) == 1
1630- assert result .issues [0 ].model_dump (exclude_none = True ) == {
1631- "severity" : "error" ,
1632- "code" : "value" ,
1633- "details" : {
1634- "coding" : [
1635- {
1636- "system" : "https://fhir.nhs.uk/ValueSet/Spine-ErrorOrWarningCode-1" ,
1637- "code" : "INVALID_RESOURCE" ,
1638- "display" : "Invalid validation of resource" ,
1639- }
1640- ]
1641- },
1642- "diagnostics" : "Invalid contentType: invalid/type. Must be 'application/pdf' or 'text/html'" ,
1643- "expression" : ["content[0].attachment.contentType" ],
1644- }
1645-
1646- def test_validate_content_valid_content_type ():
1647- validator = DocumentReferenceValidator ()
1648- document_ref_data = load_document_reference_json ("Y05868-736253002-Valid" )
1526+ def test_validate_content_extension_invalid_code_and_display_mismatch ():
1527+ validator = DocumentReferenceValidator ()
1528+ document_ref_data = load_document_reference_json ("Y05868-736253002-Valid" )
16491529
1650- document_ref_data ["content" ][0 ]["attachment" ][
1651- "contentType"
1652- ] = "application/pdf"
1530+ document_ref_data ["content" ][0 ]["extension" ][0 ] = {
1531+ "url" : "https://fhir.nhs.uk/England/StructureDefinition/Extension-England-ContentStability" ,
1532+ "valueCodeableConcept" : {
1533+ "coding" : [
1534+ {
1535+ "system" : "https://fhir.nhs.uk/England/CodeSystem/England-NRLContentStability" ,
1536+ "code" : "static" ,
1537+ "display" : "Dynamic" ,
1538+ }
1539+ ]
1540+ },
1541+ }
16531542
1654- result = validator .validate (document_ref_data )
1543+ result = validator .validate (document_ref_data )
16551544
1656- assert result .is_valid is True
1657- assert result .issues == []
1545+ assert result .is_valid is False
1546+ assert result .resource .id == "Y05868-99999-99999-999999"
1547+ assert len (result .issues ) == 1
1548+ assert result .issues [0 ].model_dump (exclude_none = True ) == {
1549+ "severity" : "error" ,
1550+ "code" : "value" ,
1551+ "details" : {
1552+ "coding" : [
1553+ {
1554+ "system" : "https://fhir.nhs.uk/ValueSet/Spine-ErrorOrWarningCode-1" ,
1555+ "code" : "INVALID_RESOURCE" ,
1556+ "display" : "Invalid validation of resource" ,
1557+ }
1558+ ]
1559+ },
1560+ "diagnostics" : "Invalid content extension display: Dynamic Extension display must be the same as code either 'Static' or 'Dynamic'" ,
1561+ "expression" : [
1562+ "content[0].extension[0].valueCodeableConcept.coding[0].display"
1563+ ],
1564+ }
0 commit comments