Skip to content

Commit 6d3a653

Browse files
committed
Merge branch 'feature/eema1-NRL-497-moveCountToSearch' of github.com:NHSDigital/NRLF into feature/eema1-NRL-753-capabilityStatementDeploymentFix
2 parents e1f053a + c055a09 commit 6d3a653

File tree

20 files changed

+299
-452
lines changed

20 files changed

+299
-452
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
@@ -718,6 +718,46 @@ def test_search_document_reference_invalid_category(
718718
}
719719

720720

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

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
@@ -478,6 +478,48 @@ def test_search_document_reference_invalid_category(
478478
}
479479

480480

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

0 commit comments

Comments
 (0)