-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathcount_document_reference.py
More file actions
45 lines (37 loc) · 1.58 KB
/
count_document_reference.py
File metadata and controls
45 lines (37 loc) · 1.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
from nrlf.consumer.fhir.r4.model import Bundle
from nrlf.core.decorators import request_handler
from nrlf.core.dynamodb.repository import DocumentPointerRepository
from nrlf.core.logger import LogReference, logger
from nrlf.core.model import ConnectionMetadata, CountRequestParams
from nrlf.core.response import Response, SpineErrorResponse
@request_handler(params=CountRequestParams)
def handler(
metadata: ConnectionMetadata,
params: CountRequestParams,
repository: DocumentPointerRepository,
) -> Response:
"""
Counts the number of document references for a given NHS number.
Args:
metadata (ConnectionMetadata): The connection metadata.
params (CountRequestParams): The count request parameters.
repository (DocumentPointerRepository): The document pointer repository.
Returns:
Response: The response containing the count of document references.
"""
logger.log(LogReference.CONCOUNT000)
if not (nhs_number := params.nhs_number):
logger.log(
LogReference.CONCOUNT001, subject_identifier=params.subject_identifier
)
return SpineErrorResponse.INVALID_IDENTIFIER_VALUE(
diagnostics="Invalid NHS number provided in the query parameters",
expression="subject:identifier",
)
total = repository.count_by_nhs_number(
nhs_number=nhs_number, pointer_types=metadata.pointer_types
)
bundle = Bundle(resourceType="Bundle", type="searchset", total=total)
response = Response.from_resource(bundle)
logger.log(LogReference.CONCOUNT999)
return response