Skip to content

Commit 5424d1d

Browse files
committed
NRL-1554 reduce complexity
1 parent 2d9deb0 commit 5424d1d

File tree

1 file changed

+27
-25
lines changed

1 file changed

+27
-25
lines changed

layer/nrlf/core/validators.py

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -519,33 +519,35 @@ def _validate_content_extension(self, model: DocumentReference):
519519
)
520520
return
521521

522-
has_content_stability = False
523-
for j, extension in enumerate(content.extension):
524-
if (
525-
extension.url
526-
== "https://fhir.nhs.uk/England/StructureDefinition/Extension-England-ContentStability"
527-
):
528-
if not self._validate_content_stability_extension(extension, i, j):
529-
return
530-
has_content_stability = True
531-
elif (
532-
extension.url
533-
== "https://fhir.nhs.uk/England/StructureDefinition/Extension-England-RetrievalMechanism"
534-
):
535-
if not self._validate_retrieval_mechanism_extension(
536-
extension, i, j
537-
):
538-
return
539-
540-
if not has_content_stability:
541-
self.result.add_error(
542-
issue_code="business-rule",
543-
error_code="UNPROCESSABLE_ENTITY",
544-
diagnostics="Invalid content extension: Extension must have one content stability extension see value set ('https://fhir.nhs.uk/England/CodeSystem/England-NRLContentStability')",
545-
field=f"content[{i}].extension",
546-
)
522+
if not self._has_valid_extensions(content.extension, i):
547523
return
548524

525+
def _has_valid_extensions(self, extensions, i):
526+
has_content_stability = False
527+
for j, extension in enumerate(extensions):
528+
if (
529+
extension.url
530+
== "https://fhir.nhs.uk/England/StructureDefinition/Extension-England-ContentStability"
531+
):
532+
if not self._validate_content_stability_extension(extension, i, j):
533+
return False
534+
has_content_stability = True
535+
elif (
536+
extension.url
537+
== "https://fhir.nhs.uk/England/StructureDefinition/Extension-England-RetrievalMechanism"
538+
):
539+
if not self._validate_retrieval_mechanism_extension(extension, i, j):
540+
return False
541+
if not has_content_stability:
542+
self.result.add_error(
543+
issue_code="business-rule",
544+
error_code="UNPROCESSABLE_ENTITY",
545+
diagnostics="Invalid content extension: Extension must have one content stability extension see value set ('https://fhir.nhs.uk/England/CodeSystem/England-NRLContentStability')",
546+
field=f"content[{i}].extension",
547+
)
548+
return False
549+
return True
550+
549551
def _validate_content_stability_extension(self, extension, i, j):
550552
coding = extension.valueCodeableConcept.coding[0]
551553
if coding.code != coding.display.lower() or coding.display not in [

0 commit comments

Comments
 (0)