diff --git a/api/producer/deleteDocumentReference/delete_document_reference.py b/api/producer/deleteDocumentReference/delete_document_reference.py index 79872037e..80ff3bb42 100644 --- a/api/producer/deleteDocumentReference/delete_document_reference.py +++ b/api/producer/deleteDocumentReference/delete_document_reference.py @@ -40,9 +40,7 @@ def handler( if not (core_model := repository.get_by_id(pointer_id)): logger.log(LogReference.PRODELETE002, pointer_id=pointer_id) - return SpineErrorResponse.NO_RECORD_FOUND( - diagnostics="The requested DocumentReference could not be found", - ) + return NRLResponse.RESOURCE_DOES_NOT_EXIST_DELETE() repository.delete(core_model) diff --git a/api/producer/deleteDocumentReference/tests/test_delete_document_reference.py b/api/producer/deleteDocumentReference/tests/test_delete_document_reference.py index 242354c59..7428170db 100644 --- a/api/producer/deleteDocumentReference/tests/test_delete_document_reference.py +++ b/api/producer/deleteDocumentReference/tests/test_delete_document_reference.py @@ -140,7 +140,7 @@ def test_delete_document_reference_not_exists(repository: DocumentPointerReposit body = result.pop("body") assert result == { - "statusCode": "404", + "statusCode": "200", "headers": default_response_headers(), "isBase64Encoded": False, } @@ -150,14 +150,14 @@ def test_delete_document_reference_not_exists(repository: DocumentPointerReposit "resourceType": "OperationOutcome", "issue": [ { - "severity": "error", - "code": "not-found", + "severity": "information", + "code": "informational", "details": { "coding": [ { - "code": "NO_RECORD_FOUND", - "display": "No record found", - "system": "https://fhir.nhs.uk/ValueSet/Spine-ErrorOrWarningCode-1", + "code": "RESOURCE_DELETED", + "display": "Resource deleted", + "system": "https://fhir.nhs.uk/ValueSet/NRL-ResponseCode", } ] }, diff --git a/layer/nrlf/core/response.py b/layer/nrlf/core/response.py index 3372923b3..2f7b6be16 100644 --- a/layer/nrlf/core/response.py +++ b/layer/nrlf/core/response.py @@ -117,6 +117,20 @@ def RESOURCE_DELETED(cls): statusCode="200", ) + @classmethod + def RESOURCE_DOES_NOT_EXIST_DELETE(cls): + return cls.from_issues( + issues=[ + producer_model.OperationOutcomeIssue( + severity="information", + code="informational", + details=NRLResponseConcept.from_code("RESOURCE_DELETED"), + diagnostics="The requested DocumentReference could not be found", + ) + ], + statusCode="200", + ) + class SpineErrorResponse(Response): @classmethod diff --git a/tests/features/producer/deleteDocumentReference-success.feature b/tests/features/producer/deleteDocumentReference-success.feature index 2a6291971..440de277b 100644 --- a/tests/features/producer/deleteDocumentReference-success.feature +++ b/tests/features/producer/deleteDocumentReference-success.feature @@ -48,19 +48,19 @@ Feature: Producer - deleteDocumentReference - Success Scenarios | system | value | | http://snomed.info/sct | 736253002 | When producer 'DK94' requests to delete DocumentReference with id 'DK94-000-NoPointerHere' - Then the response status code is 404 + Then the response status code is 200 And the response is an OperationOutcome with 1 issue And the OperationOutcome contains the issue: """ { - "severity": "error", - "code": "not-found", + "severity": "information", + "code": "informational", "details": { "coding": [ { - "system": "https://fhir.nhs.uk/ValueSet/Spine-ErrorOrWarningCode-1", - "code": "NO_RECORD_FOUND", - "display": "No record found" + "system": "https://fhir.nhs.uk/ValueSet/NRL-ResponseCode", + "code": "RESOURCE_DELETED", + "display": "Resource deleted" } ] },