11import logging
22from http import HTTPStatus
33
4- from fhir .resources .R4B .bundle import Bundle , BundleEntry
5- from fhir .resources .R4B .guidanceresponse import GuidanceResponse
6- from fhir .resources .R4B .location import Location
74from fhir .resources .R4B .operationoutcome import OperationOutcome , OperationOutcomeIssue
8- from fhir .resources .R4B .requestgroup import RequestGroup
9- from fhir .resources .R4B .task import Task
105from flask import Blueprint , make_response , request
116from flask .typing import ResponseReturnValue
127from wireup import Injected
138
14- from eligibility_signposting_api .model .eligibility import EligibilityStatus , NHSNumber
9+ from eligibility_signposting_api .model .eligibility import EligibilityStatus , NHSNumber , Status
1510from eligibility_signposting_api .services import EligibilityService , UnknownPersonError
11+ from eligibility_signposting_api .views .response_models import EligibilityResponse , ProcessedSuggestion
12+ from eligibility_signposting_api .views .response_models import Status as ResponseStatus
13+
14+ STATUS_MAPPING = {
15+ Status .actionable : ResponseStatus .actionable ,
16+ Status .not_actionable : ResponseStatus .not_actionable ,
17+ Status .not_eligible : ResponseStatus .not_eligible ,
18+ }
1619
1720logger = logging .getLogger (__name__ )
1821
@@ -38,20 +41,21 @@ def check_eligibility(eligibility_service: Injected[EligibilityService]) -> Resp
3841 )
3942 return make_response (problem .model_dump (by_alias = True ), HTTPStatus .NOT_FOUND )
4043 else :
41- bundle = build_bundle (eligibility_status )
42- return make_response (bundle .model_dump (by_alias = True ), HTTPStatus .OK )
43-
44-
45- def build_bundle (_eligibility_status : EligibilityStatus ) -> Bundle :
46- return Bundle ( # pyright: ignore[reportCallIssue]
47- id = "dummy-bundle" ,
48- type = "collection" ,
49- entry = [
50- BundleEntry ( # pyright: ignore[reportCallIssue]
51- resource = GuidanceResponse (id = "dummy-guidance-response" , status = "requested" , moduleCodeableConcept = {}) # pyright: ignore[reportCallIssue]
52- ),
53- BundleEntry (resource = RequestGroup (id = "dummy-request-group" , intent = "proposal" , status = "requested" )), # pyright: ignore[reportCallIssue]
54- BundleEntry (resource = Task (id = "dummy-task" , intent = "proposal" , status = "requested" )), # pyright: ignore[reportCallIssue]
55- BundleEntry (resource = Location (id = "dummy-location" )), # pyright: ignore[reportCallIssue]
56- ],
44+ eligibility_response = build_eligibility_response (eligibility_status )
45+ return make_response (eligibility_response .model_dump (by_alias = True ), HTTPStatus .OK )
46+
47+
48+ def build_eligibility_response (eligibility_status : EligibilityStatus ) -> EligibilityResponse :
49+ return EligibilityResponse ( # pyright: ignore[reportCallIssue]
50+ processed_suggestions = [ # pyright: ignore[reportCallIssue]
51+ ProcessedSuggestion ( # pyright: ignore[reportCallIssue]
52+ condition = condition .condition ,
53+ status = STATUS_MAPPING [condition .status ],
54+ status_text = f"{ condition .status } " , # pyright: ignore[reportCallIssue]
55+ eligibility_cohorts = [], # pyright: ignore[reportCallIssue]
56+ suitability_rules = [], # pyright: ignore[reportCallIssue]
57+ actions = [],
58+ )
59+ for condition in eligibility_status .conditions
60+ ]
5761 )
0 commit comments