Skip to content

Commit bcc6c4e

Browse files
committed
Merge branch 'develop' of github.com:NHSDigital/NRLF into feature/eema1-NRL-753-capabilityDeployFix
2 parents 1a6b33a + b565f86 commit bcc6c4e

File tree

20 files changed

+302
-457
lines changed

20 files changed

+302
-457
lines changed

api/consumer/countDocumentReference/count_document_reference.py

Lines changed: 0 additions & 45 deletions
This file was deleted.

api/consumer/countDocumentReference/tests/test_count_document_reference.py

Lines changed: 0 additions & 128 deletions
This file was deleted.

api/consumer/searchDocumentReference/search_document_reference.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ def handler(
8787
if params.category:
8888
self_link += f"&category={params.category.root}"
8989

90+
if params.field_summary:
91+
self_link += f"&_summary={params.field_summary.root}"
92+
9093
bundle = {
9194
"resourceType": "Bundle",
9295
"type": "searchset",
@@ -102,6 +105,25 @@ def handler(
102105
pointer_types=pointer_types,
103106
)
104107

108+
if params.field_summary and params.field_summary.root == "count":
109+
bundle = {
110+
"resourceType": "Bundle",
111+
"type": "searchset",
112+
"link": [{"relation": "self", "url": self_link}],
113+
"total": 0,
114+
}
115+
logger.log(LogReference.CONSEARCH006)
116+
117+
total = repository.count_by_nhs_number(
118+
nhs_number=params.nhs_number,
119+
pointer_types=pointer_types,
120+
)
121+
bundle["total"] = total
122+
logger.log(LogReference.CONSEARCH007, total=total)
123+
response = Response.from_resource(Bundle.model_validate(bundle))
124+
logger.log(LogReference.CONSEARCH999)
125+
return response
126+
105127
for result in repository.search(
106128
nhs_number=params.nhs_number,
107129
custodian=custodian_id,

api/consumer/searchDocumentReference/tests/test_search_document_reference_consumer.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -719,6 +719,46 @@ def test_search_document_reference_invalid_category(
719719
}
720720

721721

722+
@mock_aws
723+
@mock_repository
724+
def test_search_document_reference_filters_by_summary_count(
725+
repository: DocumentPointerRepository,
726+
):
727+
doc_ref = load_document_reference("Y05868-736253002-Valid")
728+
doc_pointer = DocumentPointer.from_document_reference(doc_ref)
729+
repository.create(doc_pointer)
730+
731+
event = create_test_api_gateway_event(
732+
headers=create_headers(),
733+
query_string_parameters={
734+
"subject:identifier": "https://fhir.nhs.uk/Id/nhs-number|6700028191",
735+
"_summary": "count",
736+
},
737+
)
738+
739+
result = handler(event, create_mock_context())
740+
body = result.pop("body")
741+
742+
assert result == {
743+
"statusCode": "200",
744+
"headers": default_response_headers(),
745+
"isBase64Encoded": False,
746+
}
747+
748+
parsed_body = json.loads(body)
749+
assert parsed_body == {
750+
"resourceType": "Bundle",
751+
"type": "searchset",
752+
"total": 1,
753+
"link": [
754+
{
755+
"relation": "self",
756+
"url": "https://pytest.api.service.nhs.uk/record-locator/consumer/FHIR/R4/DocumentReference?subject:identifier=https://fhir.nhs.uk/Id/nhs-number|6700028191&_summary=count",
757+
}
758+
],
759+
}
760+
761+
722762
@mock_aws
723763
@mock_repository
724764
@patch("api.consumer.searchDocumentReference.search_document_reference.logger")

api/consumer/searchPostDocumentReference/search_post_document_reference.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ def handler(
8787
if body.category:
8888
self_link += f"&category={body.category.root}"
8989

90+
if body.field_summary:
91+
self_link += f"&_summary={body.field_summary.root}"
92+
9093
bundle = {
9194
"resourceType": "Bundle",
9295
"type": "searchset",
@@ -102,6 +105,25 @@ def handler(
102105
pointer_types=pointer_types,
103106
)
104107

108+
if body.field_summary and body.field_summary.root == "count":
109+
bundle = {
110+
"resourceType": "Bundle",
111+
"type": "searchset",
112+
"link": [{"relation": "self", "url": self_link}],
113+
"total": 0,
114+
}
115+
logger.log(LogReference.CONPOSTSEARCH006)
116+
117+
total = repository.count_by_nhs_number(
118+
nhs_number=body.nhs_number,
119+
pointer_types=pointer_types,
120+
)
121+
bundle["total"] = total
122+
logger.log(LogReference.CONPOSTSEARCH007, total=total)
123+
response = Response.from_resource(Bundle.model_validate(bundle))
124+
logger.log(LogReference.CONPOSTSEARCH999)
125+
return response
126+
105127
for result in repository.search(
106128
nhs_number=body.nhs_number,
107129
custodian=custodian_id,

api/consumer/searchPostDocumentReference/tests/test_search_post_document_reference_consumer.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,48 @@ def test_search_document_reference_invalid_category(
479479
}
480480

481481

482+
@mock_aws
483+
@mock_repository
484+
def test_search_document_reference_filters_by_summary_count(
485+
repository: DocumentPointerRepository,
486+
):
487+
doc_ref = load_document_reference("Y05868-736253002-Valid")
488+
doc_pointer = DocumentPointer.from_document_reference(doc_ref)
489+
repository.create(doc_pointer)
490+
491+
event = create_test_api_gateway_event(
492+
headers=create_headers(),
493+
body=json.dumps(
494+
{
495+
"subject:identifier": "https://fhir.nhs.uk/Id/nhs-number|6700028191",
496+
"_summary": "count",
497+
}
498+
),
499+
)
500+
501+
result = handler(event, create_mock_context())
502+
body = result.pop("body")
503+
504+
assert result == {
505+
"statusCode": "200",
506+
"headers": default_response_headers(),
507+
"isBase64Encoded": False,
508+
}
509+
510+
parsed_body = json.loads(body)
511+
assert parsed_body == {
512+
"resourceType": "Bundle",
513+
"type": "searchset",
514+
"total": 1,
515+
"link": [
516+
{
517+
"relation": "self",
518+
"url": "https://pytest.api.service.nhs.uk/record-locator/consumer/FHIR/R4/DocumentReference?subject:identifier=https://fhir.nhs.uk/Id/nhs-number|6700028191&_summary=count",
519+
}
520+
],
521+
}
522+
523+
482524
@mock_aws
483525
@mock_repository
484526
@patch("api.consumer.searchPostDocumentReference.search_post_document_reference.logger")

0 commit comments

Comments
 (0)