Skip to content

Commit 46aa87f

Browse files
committed
NRL-738 fix tests and use enum class add log for ignore delete fail
1 parent e20271a commit 46aa87f

File tree

14 files changed

+68
-64
lines changed

14 files changed

+68
-64
lines changed

api/consumer/readDocumentReference/tests/test_read_document_reference_consumer.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,9 @@ def test_read_document_reference_unauthorised_for_type(
110110
repository.create(doc_pointer)
111111

112112
event = create_test_api_gateway_event(
113-
headers=create_headers(pointer_types=[PointerTypes.EMERGENCY_HEALTHCARE_PLAN]),
113+
headers=create_headers(
114+
pointer_types=[PointerTypes.EMERGENCY_HEALTHCARE_PLAN.value]
115+
),
114116
path_parameters={"id": doc_pointer.id},
115117
)
116118

@@ -155,7 +157,7 @@ def test_document_reference_invalid_json(repository: DocumentPointerRepository):
155157
repository.create(doc_pointer)
156158

157159
event = create_test_api_gateway_event(
158-
headers=create_headers(pointer_types=[PointerTypes.MENTAL_HEALTH_PLAN]),
160+
headers=create_headers(pointer_types=[PointerTypes.MENTAL_HEALTH_PLAN.value]),
159161
path_parameters={"id": doc_pointer.id},
160162
)
161163

api/producer/createDocumentReference/tests/test_create_document_reference.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -659,8 +659,8 @@ def test_create_document_reference_invalid_relatesto_type(
659659
event = create_test_api_gateway_event(
660660
headers=create_headers(
661661
pointer_types=[
662-
PointerTypes.EOL_COORDINATION_SUMMARY,
663-
PointerTypes.MENTAL_HEALTH_PLAN,
662+
PointerTypes.EOL_COORDINATION_SUMMARY.value,
663+
PointerTypes.MENTAL_HEALTH_PLAN.value,
664664
]
665665
),
666666
body=doc_ref.json(exclude_none=True),
@@ -711,8 +711,8 @@ def test_create_document_reference_with_no_context_related_for_ssp_url(
711711
event = create_test_api_gateway_event(
712712
headers=create_headers(
713713
pointer_types=[
714-
PointerTypes.EOL_COORDINATION_SUMMARY,
715-
PointerTypes.MENTAL_HEALTH_PLAN,
714+
PointerTypes.EOL_COORDINATION_SUMMARY.value,
715+
PointerTypes.MENTAL_HEALTH_PLAN.value,
716716
]
717717
),
718718
body=doc_ref.json(exclude_none=True),
@@ -770,8 +770,8 @@ def test_create_document_reference_with_no_asid_in_for_ssp_url(
770770
event = create_test_api_gateway_event(
771771
headers=create_headers(
772772
pointer_types=[
773-
PointerTypes.EOL_COORDINATION_SUMMARY,
774-
PointerTypes.MENTAL_HEALTH_PLAN,
773+
PointerTypes.EOL_COORDINATION_SUMMARY.value,
774+
PointerTypes.MENTAL_HEALTH_PLAN.value,
775775
]
776776
),
777777
body=doc_ref.json(exclude_none=True),
@@ -829,8 +829,8 @@ def test_create_document_reference_with_invalid_asid_for_ssp_url(
829829
event = create_test_api_gateway_event(
830830
headers=create_headers(
831831
pointer_types=[
832-
PointerTypes.EOL_COORDINATION_SUMMARY,
833-
PointerTypes.MENTAL_HEALTH_PLAN,
832+
PointerTypes.EOL_COORDINATION_SUMMARY.value,
833+
PointerTypes.MENTAL_HEALTH_PLAN.value,
834834
]
835835
),
836836
body=doc_ref.json(exclude_none=True),
@@ -893,8 +893,8 @@ def test_create_document_reference_supersede_deletes_old_pointers_replace(
893893
event = create_test_api_gateway_event(
894894
headers=create_headers(
895895
pointer_types=[
896-
PointerTypes.EOL_COORDINATION_SUMMARY,
897-
PointerTypes.MENTAL_HEALTH_PLAN,
896+
PointerTypes.EOL_COORDINATION_SUMMARY.value,
897+
PointerTypes.MENTAL_HEALTH_PLAN.value,
898898
]
899899
),
900900
body=doc_ref.json(exclude_none=True),
@@ -958,8 +958,8 @@ def test_create_document_reference_supersede_succeeds_with_toggle(
958958
event = create_test_api_gateway_event(
959959
headers=create_headers(
960960
pointer_types=[
961-
PointerTypes.EOL_COORDINATION_SUMMARY,
962-
PointerTypes.MENTAL_HEALTH_PLAN,
961+
PointerTypes.EOL_COORDINATION_SUMMARY.value,
962+
PointerTypes.MENTAL_HEALTH_PLAN.value,
963963
],
964964
nrl_permissions=["supersede-ignore-delete-fail"],
965965
),
@@ -1023,8 +1023,8 @@ def test_create_document_reference_supersede_fails_without_toggle(
10231023
event = create_test_api_gateway_event(
10241024
headers=create_headers(
10251025
pointer_types=[
1026-
PointerTypes.EOL_COORDINATION_SUMMARY,
1027-
PointerTypes.MENTAL_HEALTH_PLAN,
1026+
PointerTypes.EOL_COORDINATION_SUMMARY.value,
1027+
PointerTypes.MENTAL_HEALTH_PLAN.value,
10281028
]
10291029
),
10301030
body=doc_ref.json(exclude_none=True),
@@ -1087,8 +1087,8 @@ def test_create_document_reference_create_relatesto_not_replaces(
10871087
event = create_test_api_gateway_event(
10881088
headers=create_headers(
10891089
pointer_types=[
1090-
PointerTypes.EOL_COORDINATION_SUMMARY,
1091-
PointerTypes.MENTAL_HEALTH_PLAN,
1090+
PointerTypes.EOL_COORDINATION_SUMMARY.value,
1091+
PointerTypes.MENTAL_HEALTH_PLAN.value,
10921092
]
10931093
),
10941094
body=doc_ref.json(exclude_none=True),

api/producer/searchDocumentReference/tests/test_search_document_reference_producer.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ def test_search_document_reference_filters_by_type(
209209
headers=create_headers(),
210210
query_string_parameters={
211211
"subject:identifier": "https://fhir.nhs.uk/Id/nhs-number|6700028191",
212-
"type": PointerTypes.MENTAL_HEALTH_PLAN,
212+
"type": PointerTypes.MENTAL_HEALTH_PLAN.value,
213213
},
214214
)
215215

@@ -237,7 +237,9 @@ def test_search_document_reference_filters_by_pointer_types(
237237
repository.create(doc_pointer)
238238

239239
event = create_test_api_gateway_event(
240-
headers=create_headers(pointer_types=[PointerTypes.EOL_COORDINATION_SUMMARY]),
240+
headers=create_headers(
241+
pointer_types=[PointerTypes.EOL_COORDINATION_SUMMARY.value]
242+
),
241243
query_string_parameters={
242244
"subject:identifier": "https://fhir.nhs.uk/Id/nhs-number|6700028191",
243245
},

api/producer/searchPostDocumentReference/tests/test_search_post_document_reference_producer.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ def test_search_document_reference_filters_by_type(
233233
body=json.dumps(
234234
{
235235
"subject:identifier": "https://fhir.nhs.uk/Id/nhs-number|6700028191",
236-
"type": PointerTypes.MENTAL_HEALTH_PLAN,
236+
"type": PointerTypes.MENTAL_HEALTH_PLAN.value,
237237
}
238238
),
239239
)
@@ -262,7 +262,9 @@ def test_search_document_reference_filters_by_pointer_types(
262262
repository.create(doc_pointer)
263263

264264
event = create_test_api_gateway_event(
265-
headers=create_headers(pointer_types=[PointerTypes.EOL_COORDINATION_SUMMARY]),
265+
headers=create_headers(
266+
pointer_types=[PointerTypes.EOL_COORDINATION_SUMMARY.value]
267+
),
266268
body=json.dumps(
267269
{
268270
"subject:identifier": "https://fhir.nhs.uk/Id/nhs-number|6700028191",

api/producer/upsertDocumentReference/tests/test_upsert_document_reference.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -748,8 +748,8 @@ def test_create_document_reference_invalid_relatesto_type(
748748
event = create_test_api_gateway_event(
749749
headers=create_headers(
750750
pointer_types=[
751-
PointerTypes.EOL_COORDINATION_SUMMARY,
752-
PointerTypes.MENTAL_HEALTH_PLAN,
751+
PointerTypes.EOL_COORDINATION_SUMMARY.value,
752+
PointerTypes.MENTAL_HEALTH_PLAN.value,
753753
]
754754
),
755755
body=doc_ref.json(exclude_none=True),
@@ -800,8 +800,8 @@ def test_create_document_reference_with_no_context_related_for_ssp_url(
800800
event = create_test_api_gateway_event(
801801
headers=create_headers(
802802
pointer_types=[
803-
PointerTypes.EOL_COORDINATION_SUMMARY,
804-
PointerTypes.MENTAL_HEALTH_PLAN,
803+
PointerTypes.EOL_COORDINATION_SUMMARY.value,
804+
PointerTypes.MENTAL_HEALTH_PLAN.value,
805805
]
806806
),
807807
body=doc_ref.json(exclude_none=True),
@@ -859,8 +859,8 @@ def test_create_document_reference_with_no_asid_in_for_ssp_url(
859859
event = create_test_api_gateway_event(
860860
headers=create_headers(
861861
pointer_types=[
862-
PointerTypes.EOL_COORDINATION_SUMMARY,
863-
PointerTypes.MENTAL_HEALTH_PLAN,
862+
PointerTypes.EOL_COORDINATION_SUMMARY.value,
863+
PointerTypes.MENTAL_HEALTH_PLAN.value,
864864
]
865865
),
866866
body=doc_ref.json(exclude_none=True),
@@ -918,8 +918,8 @@ def test_create_document_reference_with_invalid_asid_for_ssp_url(
918918
event = create_test_api_gateway_event(
919919
headers=create_headers(
920920
pointer_types=[
921-
PointerTypes.EOL_COORDINATION_SUMMARY,
922-
PointerTypes.MENTAL_HEALTH_PLAN,
921+
PointerTypes.EOL_COORDINATION_SUMMARY.value,
922+
PointerTypes.MENTAL_HEALTH_PLAN.value,
923923
]
924924
),
925925
body=doc_ref.json(exclude_none=True),
@@ -981,8 +981,8 @@ def test_create_document_reference_supersede_deletes_old_pointers_replace(
981981
event = create_test_api_gateway_event(
982982
headers=create_headers(
983983
pointer_types=[
984-
PointerTypes.EOL_COORDINATION_SUMMARY,
985-
PointerTypes.MENTAL_HEALTH_PLAN,
984+
PointerTypes.EOL_COORDINATION_SUMMARY.value,
985+
PointerTypes.MENTAL_HEALTH_PLAN.value,
986986
]
987987
),
988988
body=doc_ref.json(exclude_none=True),
@@ -1045,8 +1045,8 @@ def test_create_document_reference_supersede_succeeds_with_toggle(
10451045
event = create_test_api_gateway_event(
10461046
headers=create_headers(
10471047
pointer_types=[
1048-
PointerTypes.EOL_COORDINATION_SUMMARY,
1049-
PointerTypes.MENTAL_HEALTH_PLAN,
1048+
PointerTypes.EOL_COORDINATION_SUMMARY.value,
1049+
PointerTypes.MENTAL_HEALTH_PLAN.value,
10501050
],
10511051
nrl_permissions=["supersede-ignore-delete-fail"],
10521052
),
@@ -1110,8 +1110,8 @@ def test_create_document_reference_supersede_fails_without_toggle(
11101110
event = create_test_api_gateway_event(
11111111
headers=create_headers(
11121112
pointer_types=[
1113-
PointerTypes.EOL_COORDINATION_SUMMARY,
1114-
PointerTypes.MENTAL_HEALTH_PLAN,
1113+
PointerTypes.EOL_COORDINATION_SUMMARY.value,
1114+
PointerTypes.MENTAL_HEALTH_PLAN.value,
11151115
]
11161116
),
11171117
body=doc_ref.json(exclude_none=True),
@@ -1173,8 +1173,8 @@ def test_create_document_reference_create_relatesto_not_replaces(
11731173
event = create_test_api_gateway_event(
11741174
headers=create_headers(
11751175
pointer_types=[
1176-
PointerTypes.EOL_COORDINATION_SUMMARY,
1177-
PointerTypes.MENTAL_HEALTH_PLAN,
1176+
PointerTypes.EOL_COORDINATION_SUMMARY.value,
1177+
PointerTypes.MENTAL_HEALTH_PLAN.value,
11781178
]
11791179
),
11801180
body=doc_ref.json(exclude_none=True),

api/producer/upsertDocumentReference/upsert_document_reference.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,9 @@ def _get_document_ids_to_supersede(
108108
for idx, relates_to in enumerate(resource.relatesTo):
109109
identifier = _validate_identifier(relates_to, idx)
110110
_validate_producer_id(identifier, metadata, idx)
111-
112-
if not can_ignore_delete_fail:
111+
if can_ignore_delete_fail:
112+
logger.log(LogReference.PROUPSERT006a, relatesTo=resource.relatesTo)
113+
else:
113114
existing_pointer = _check_existing_pointer(identifier, repository, idx)
114115
_validate_pointer_details(existing_pointer, core_model, identifier, idx)
115116

layer/nrlf/consumer/fhir/r4/model.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ class RequestQueryCustodian(BaseModel):
395395

396396

397397
class RequestQueryType(BaseModel):
398-
__root__: Annotated[str, Field(example=PointerTypes.MENTAL_HEALTH_PLAN)]
398+
__root__: Annotated[str, Field(example=PointerTypes.MENTAL_HEALTH_PLAN.value)]
399399

400400

401401
class NextPageToken(BaseModel):

layer/nrlf/core/constants.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class Source(Enum):
3737
PRODUCER_URL_PATH = "/nrl-producer-api/FHIR/R4/DocumentReference"
3838

3939

40-
class PointerTypes:
40+
class PointerTypes(Enum):
4141
MENTAL_HEALTH_PLAN = "http://snomed.info/sct|736253002"
4242
EMERGENCY_HEALTHCARE_PLAN = "http://snomed.info/sct|887701000000100"
4343
EOL_COORDINATION_SUMMARY = "http://snomed.info/sct|861421000000109"
@@ -46,3 +46,7 @@ class PointerTypes:
4646
CONTINGENCY_PLAN = "http://snomed.info/sct|325691000000100"
4747
EOL_CARE_PLAN = "http://snomed.info/sct|736373009"
4848
LLOYD_GEORGE_FOLDER = "http://snomed.info/sct|16521000000101"
49+
50+
@staticmethod
51+
def list():
52+
return list(map(lambda type: type.value, PointerTypes))

layer/nrlf/core/decorators.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from nrlf.core.authoriser import get_pointer_types
1616
from nrlf.core.codes import SpineErrorConcept
1717
from nrlf.core.config import Config
18-
from nrlf.core.constants import PERMISSION_ALLOW_ALL_POINTER_TYPES, POINTER_TYPES
18+
from nrlf.core.constants import PERMISSION_ALLOW_ALL_POINTER_TYPES, PointerTypes
1919
from nrlf.core.dynamodb.repository import DocumentPointerRepository
2020
from nrlf.core.errors import OperationOutcomeError, ParseError
2121
from nrlf.core.logger import LogReference, logger
@@ -69,9 +69,7 @@ def load_connection_metadata(headers: Dict[str, str], config: Config):
6969
logger.log(LogReference.HANDLER003, metadata=metadata.dict())
7070
if PERMISSION_ALLOW_ALL_POINTER_TYPES in metadata.nrl_permissions:
7171
logger.log(LogReference.HANDLER004a)
72-
metadata.pointer_types = [
73-
f"http://snomed.info/sct|{key}" for key in list(POINTER_TYPES.keys())
74-
]
72+
metadata.pointer_types = PointerTypes.list()
7573
return metadata
7674
if metadata.enable_authorization_lookup:
7775
logger.log(LogReference.HANDLER004)

layer/nrlf/core/dynamodb/tests/test_model.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ def test_document_pointer_from_document_reference_valid():
9090
"producer_id": "Y05868",
9191
"schemas": [],
9292
"source": "NRLF",
93-
"type": PointerTypes.MENTAL_HEALTH_PLAN,
93+
"type": PointerTypes.MENTAL_HEALTH_PLAN.value,
9494
"updated_on": None,
9595
"version": 1,
9696
"pk": "D#Y05868#99999-99999-999999",
@@ -122,7 +122,7 @@ def test_document_pointer_from_document_reference_valid_with_created_on():
122122
"producer_id": "Y05868",
123123
"schemas": [],
124124
"source": "NRLF",
125-
"type": PointerTypes.MENTAL_HEALTH_PLAN,
125+
"type": PointerTypes.MENTAL_HEALTH_PLAN.value,
126126
"updated_on": None,
127127
"version": 1,
128128
"pk": "D#Y05868#99999-99999-999999",

0 commit comments

Comments
 (0)