Skip to content

Commit 570723e

Browse files
NRL-641 Do not retrieve pointer from database if it has ignore delete fail permissions
1 parent 61938b5 commit 570723e

File tree

5 files changed

+16
-40
lines changed

5 files changed

+16
-40
lines changed

api/producer/createDocumentReference/create_document_reference.py

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -108,22 +108,14 @@ def _get_document_ids_to_supersede(
108108
ids_to_delete = []
109109

110110
for idx, relates_to in enumerate(resource.relatesTo):
111-
try:
112-
identifier = _validate_identifier(relates_to, idx)
113-
_validate_producer_id(identifier, metadata, idx)
114-
existing_pointer = _check_existing_pointer(identifier, repository, idx)
115-
116-
if existing_pointer is None:
117-
continue
111+
identifier = _validate_identifier(relates_to, idx)
112+
_validate_producer_id(identifier, metadata, idx)
118113

114+
if not can_ignore_delete_fail:
115+
existing_pointer = _check_existing_pointer(identifier, repository, idx)
119116
_validate_pointer_details(existing_pointer, core_model, identifier, idx)
120117

121-
_append_id_if_replaces(relates_to, ids_to_delete, identifier)
122-
except OperationOutcomeError:
123-
if can_ignore_delete_fail:
124-
logger.log(LogReference.PROCREATE007f, related_identifier=identifier)
125-
continue
126-
raise
118+
_append_id_if_replaces(relates_to, ids_to_delete, identifier)
127119

128120
return ids_to_delete
129121

api/producer/createDocumentReference/tests/test_create_document_reference.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -988,13 +988,13 @@ def test_create_document_reference_supersede_succeeds_with_toggle(
988988
"details": {
989989
"coding": [
990990
{
991-
"code": "RESOURCE_CREATED",
992-
"display": "Resource created",
991+
"code": "RESOURCE_SUPERSEDED",
992+
"display": "Resource created and resource(s) deleted",
993993
"system": "https://fhir.nhs.uk/ValueSet/NRL-ResponseCode",
994994
}
995995
]
996996
},
997-
"diagnostics": "The document has been created",
997+
"diagnostics": "The document has been superseded by a new version",
998998
}
999999
],
10001000
}

api/producer/upsertDocumentReference/tests/test_upsert_document_reference.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1075,13 +1075,13 @@ def test_create_document_reference_supersede_succeeds_with_toggle(
10751075
"details": {
10761076
"coding": [
10771077
{
1078-
"code": "RESOURCE_CREATED",
1079-
"display": "Resource created",
1078+
"code": "RESOURCE_SUPERSEDED",
1079+
"display": "Resource created and resource(s) deleted",
10801080
"system": "https://fhir.nhs.uk/ValueSet/NRL-ResponseCode",
10811081
}
10821082
]
10831083
},
1084-
"diagnostics": "The document has been created",
1084+
"diagnostics": "The document has been superseded by a new version",
10851085
}
10861086
],
10871087
}

api/producer/upsertDocumentReference/upsert_document_reference.py

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -106,22 +106,14 @@ def _get_document_ids_to_supersede(
106106
ids_to_delete = []
107107

108108
for idx, relates_to in enumerate(resource.relatesTo):
109-
try:
110-
identifier = _validate_identifier(relates_to, idx)
111-
_validate_producer_id(identifier, metadata, idx)
112-
existing_pointer = _check_existing_pointer(identifier, repository, idx)
113-
114-
if existing_pointer is None:
115-
continue
109+
identifier = _validate_identifier(relates_to, idx)
110+
_validate_producer_id(identifier, metadata, idx)
116111

112+
if not can_ignore_delete_fail:
113+
existing_pointer = _check_existing_pointer(identifier, repository, idx)
117114
_validate_pointer_details(existing_pointer, core_model, identifier, idx)
118115

119-
_append_id_if_replaces(relates_to, ids_to_delete, identifier)
120-
except OperationOutcomeError:
121-
if can_ignore_delete_fail:
122-
logger.log(LogReference.PROUPSERT007f, relatesTo=resource.relatesTo)
123-
continue
124-
raise
116+
_append_id_if_replaces(relates_to, ids_to_delete, identifier)
125117

126118
return ids_to_delete
127119

layer/nrlf/core/log_references.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -217,10 +217,6 @@ class LogReference(Enum):
217217
PROCREATE007e = _Reference(
218218
"WARN", "RelatesTo validation failed - relating pointer document type mismatch"
219219
)
220-
PROCREATE007f = _Reference(
221-
"INFO",
222-
"Ignoring related pointer (supersede) OperationOutcome errors as permitted by NRL permissions",
223-
)
224220
PROCREATE008 = _Reference("INFO", "Selecting document as target to be superseded")
225221
PROCREATE009 = _Reference("INFO", "Creating new document reference")
226222
PROCREATE010 = _Reference("INFO", "Superseding document reference")
@@ -262,10 +258,6 @@ class LogReference(Enum):
262258
PROUPSERT007e = _Reference(
263259
"WARN", "RelatesTo validation failed - relating pointer document type mismatch"
264260
)
265-
PROUPSERT007f = _Reference(
266-
"INFO",
267-
"Ignoring related pointer (supersede) OperationOutcome errors as permitted by NRL permissions",
268-
)
269261
PROUPSERT008 = _Reference("INFO", "Selecting document as target to be superseded")
270262
PROUPSERT009 = _Reference("INFO", "Upserting new document reference")
271263
PROUPSERT010 = _Reference("INFO", "Superseding document reference")

0 commit comments

Comments
 (0)