Skip to content

Commit 46708f9

Browse files
NRL-505 All business validation errors are now 422 Unprocessable Entity
1 parent d88ea64 commit 46708f9

18 files changed

+490
-492
lines changed

api/consumer/countDocumentReference/count_document_reference.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def handler(
2929
logger.log(
3030
LogReference.CONCOUNT001, subject_identifier=params.subject_identifier
3131
)
32-
return SpineErrorResponse.INVALID_IDENTIFIER_VALUE(
32+
return SpineErrorResponse.UNPROCESSABLE_ENTITY(
3333
diagnostics="Invalid NHS number provided in the query parameters",
3434
expression="subject:identifier",
3535
)

api/consumer/countDocumentReference/tests/test_count_document_reference.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ def test_count_document_reference_invalid_nhs_number():
100100
body = result.pop("body")
101101

102102
assert result == {
103-
"statusCode": "400",
103+
"statusCode": "422",
104104
"headers": default_response_headers(),
105105
"isBase64Encoded": False,
106106
}
@@ -111,13 +111,13 @@ def test_count_document_reference_invalid_nhs_number():
111111
"issue": [
112112
{
113113
"severity": "error",
114-
"code": "invalid",
114+
"code": "business-rule",
115115
"details": {
116116
"coding": [
117117
{
118118
"system": "https://fhir.nhs.uk/ValueSet/Spine-ErrorOrWarningCode-1",
119-
"code": "INVALID_IDENTIFIER_VALUE",
120-
"display": "Invalid identifier value",
119+
"code": "UNPROCESSABLE_ENTITY",
120+
"display": "Unprocessable Entity",
121121
}
122122
]
123123
},

api/producer/createDocumentReference/create_document_reference.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def _check_permissions(
7373
ods_code_parts=metadata.ods_code_parts,
7474
custodian_parts=custodian_parts,
7575
)
76-
return SpineErrorResponse.BAD_REQUEST(
76+
return SpineErrorResponse.UNPROCESSABLE_ENTITY(
7777
diagnostics="The custodian of the provided DocumentReference does not match the expected ODS code for this organisation",
7878
expression="custodian.identifier.value",
7979
)
@@ -201,10 +201,11 @@ def _raise_operation_outcome_error(diagnostics, idx):
201201
"""
202202
raise OperationOutcomeError(
203203
severity="error",
204-
code="invalid",
205-
details=SpineErrorConcept.from_code("BAD_REQUEST"),
204+
code="business-rule",
205+
details=SpineErrorConcept.from_code("UNPROCESSABLE_ENTITY"),
206206
diagnostics=diagnostics,
207207
expression=[f"relatesTo[{idx}].target.identifier.value"],
208+
status_code="422",
208209
)
209210

210211

@@ -236,7 +237,7 @@ def handler(
236237

237238
if not result.is_valid:
238239
logger.log(LogReference.PROCREATE002)
239-
return Response.from_issues(issues=result.issues, statusCode="400")
240+
return Response.from_issues(issues=result.issues, statusCode="422")
240241

241242
core_model = _create_core_model(result.resource, metadata)
242243
if error_response := _check_permissions(core_model, metadata):

0 commit comments

Comments
 (0)