Skip to content

Commit 973bcb4

Browse files
Add response_id and meta to EligibilityResponse.
1 parent 8633704 commit 973bcb4

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

src/eligibility_signposting_api/views/eligibility.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import logging
2+
import uuid
3+
from datetime import UTC, datetime
24
from http import HTTPStatus
35

46
from fhir.resources.R4B.operationoutcome import OperationOutcome, OperationOutcomeIssue
@@ -11,6 +13,8 @@
1113
from eligibility_signposting_api.views.response_models import (
1214
ConditionName,
1315
EligibilityResponse,
16+
LastUpdated,
17+
Meta,
1418
ProcessedSuggestion,
1519
StatusText,
1620
)
@@ -52,6 +56,8 @@ def check_eligibility(nhs_number: NHSNumber, eligibility_service: Injected[Eligi
5256

5357
def build_eligibility_response(eligibility_status: EligibilityStatus) -> EligibilityResponse:
5458
return EligibilityResponse( # pyright: ignore[reportCallIssue]
59+
response_id=uuid.uuid4(), # pyright: ignore[reportCallIssue]
60+
meta=Meta(last_updated=LastUpdated(datetime.now(tz=UTC))), # pyright: ignore[reportCallIssue]
5561
processed_suggestions=[ # pyright: ignore[reportCallIssue]
5662
ProcessedSuggestion( # pyright: ignore[reportCallIssue]
5763
condition_name=ConditionName(condition.condition_name), # pyright: ignore[reportCallIssue]
@@ -62,5 +68,5 @@ def build_eligibility_response(eligibility_status: EligibilityStatus) -> Eligibi
6268
actions=[],
6369
)
6470
for condition in eligibility_status.conditions
65-
]
71+
],
6672
)

src/eligibility_signposting_api/views/response_models.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1+
from datetime import datetime
12
from enum import Enum
23
from typing import NewType
34

4-
from pydantic import BaseModel, Field, HttpUrl
5+
from pydantic import UUID4, BaseModel, Field, HttpUrl, SerializationInfo, field_serializer
56

7+
LastUpdated = NewType("LastUpdated", datetime)
68
ConditionName = NewType("ConditionName", str)
79
StatusText = NewType("StatusText", str)
810
ActionType = NewType("ActionType", str)
@@ -62,7 +64,19 @@ class ProcessedSuggestion(BaseModel):
6264
model_config = {"populate_by_name": True}
6365

6466

67+
class Meta(BaseModel):
68+
last_updated: LastUpdated = Field(..., alias="lastUpdated")
69+
70+
model_config = {"populate_by_name": True}
71+
72+
@field_serializer("last_updated")
73+
def serialize_last_updated(self, last_updated: LastUpdated, _info: SerializationInfo) -> str:
74+
return last_updated.isoformat()
75+
76+
6577
class EligibilityResponse(BaseModel):
78+
response_id: UUID4 = Field(..., alias="responseId")
79+
meta: Meta
6680
processed_suggestions: list[ProcessedSuggestion] = Field(..., alias="processedSuggestions")
6781

6882
model_config = {"populate_by_name": True}

0 commit comments

Comments
 (0)