Skip to content

Commit a9608fc

Browse files
committed
feat: wip consent responses as json
1 parent 90c629a commit a9608fc

File tree

3 files changed

+139
-25
lines changed

3 files changed

+139
-25
lines changed

sandbox/api/app.py

Lines changed: 91 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,17 @@
1717
VALIDATE_RELATIONSHIP_009,
1818
VALIDATE_RELATIONSHIP_025,
1919
VALIDATE_RELATIONSHIP_INCLUDE_009,
20-
VALIDATE_RELATIONSHIP_INCLUDE_025,
20+
VALIDATE_RELATIONSHIP_INCLUDE_025, CONSENT_PATIENT, BAD_REQUEST_INCLUDE_PARAM_INVALID,
21+
CONSENT__STATUS_PARAM_INVALID, CONSENT__SINGLE_CONSENTING_ADULT_RELATIONSHIP_INCLUDE_PERFORMER,
22+
CONSENT__SINGLE_CONSENTING_ADULT_RELATIONSHIP_INCLUDE_PATIENT, CONSENT__SINGLE_CONSENTING_ADULT_RELATIONSHIP,
23+
CONSENT__SINGLE_CONSENTING_ADULT_RELATIONSHIP_INCLUDE_BOTH, CONSENT__SINGLE_MOTHER_CHILD_RELATIONSHIP,
24+
CONSENT__SINGLE_MOTHER_CHILD_RELATIONSHIP_INCLUDE_PERFORMER,
25+
CONSENT__SINGLE_MOTHER_CHILD_RELATIONSHIP_INCLUDE_PATIENT, CONSENT__SINGLE_MOTHER_CHILD_RELATIONSHIP_INCLUDE_BOTH,
26+
CONSENT__MULTIPLE_RELATIONSHIPS_STATUS_ACTIVE_INCLUDE_PERFORMER,
27+
CONSENT__MULTIPLE_RELATIONSHIPS_STATUS_ACTIVE_INCLUDE_PATIENT, CONSENT__MULTIPLE_RELATIONSHIPS_INCLUDE_BOTH,
28+
CONSENT__MULTIPLE_RELATIONSHIPS_STATUS_ACTIVE, CONSENT__MULTIPLE_RELATIONSHIPS_STATUS_ACTIVE_INCLUDE_BOTH,
29+
CONSENT__MULTIPLE_RELATIONSHIPS_INCLUDE_PERFORMER, CONSENT__MULTIPLE_RELATIONSHIPS_INCLUDE_PATIENT,
30+
CONSENT__MULTIPLE_RELATIONSHIPS, CONSENT__NO_RELATIONSHIPS,
2131
)
2232
from .utils import (
2333
check_for_empty,
@@ -127,32 +137,94 @@ def get_consent() -> Union[dict, tuple]:
127137
Union[dict, tuple]: Response for GET /Consent
128138
"""
129139
try:
140+
# Check headers
141+
if errors := check_for_errors(request):
142+
return errors
143+
130144
performer_identifier = remove_system(request.args.get("performer:identifier"))
131145
status = request.args.get("status")
132146
_include = request.args.get("_include")
133147

148+
# Invalid status params
149+
if (status != "active" or status != None):
150+
return generate_response(load_json_file(CONSENT__STATUS_PARAM_INVALID), 400)
151+
# Invalid include params
134152
if (
135-
performer_identifier == "9000000010"
136-
and status == "active"
137-
and _include == CONSENT_PERFORMER
153+
_include != CONSENT_PERFORMER
154+
or _include != CONSENT_PATIENT
155+
or _include != f"{CONSENT_PATIENT},{CONSENT_PERFORMER}"
156+
or _include != f"{CONSENT_PERFORMER},{CONSENT_PATIENT}"
157+
or _include != None
138158
):
139-
return generate_response_from_example(
140-
CONSENT__ADULT_CONSENTING_EXAMPLE, 200
141-
)
142-
elif (
143-
performer_identifier == "9000000017"
144-
and status == "active"
145-
and _include == CONSENT_PERFORMER
146-
):
147-
return generate_response_from_example(CONSENT__MIXED_EXAMPLE, 200)
148-
elif (
149-
performer_identifier == "9000000019"
150-
and status == "active"
151-
and _include == CONSENT_PERFORMER
152-
):
153-
return generate_response_from_example(CONSENT__MOTHER_CHILD_EXAMPLE, 200)
159+
return generate_response(load_json_file(BAD_REQUEST_INCLUDE_PARAM_INVALID), 400)
160+
# Single consenting adult relationship
161+
if (performer_identifier == 9000000010):
162+
if (_include == CONSENT_PERFORMER):
163+
return generate_response(
164+
load_json_file(CONSENT__SINGLE_CONSENTING_ADULT_RELATIONSHIP_INCLUDE_PERFORMER), 200
165+
)
166+
elif (_include == CONSENT_PATIENT):
167+
return generate_response(
168+
load_json_file(CONSENT__SINGLE_CONSENTING_ADULT_RELATIONSHIP_INCLUDE_PATIENT), 200
169+
)
170+
if (_include == f"{CONSENT_PATIENT},{CONSENT_PERFORMER}" or f"{CONSENT_PERFORMER},{CONSENT_PATIENT}"):
171+
return generate_response(
172+
load_json_file(CONSENT__SINGLE_CONSENTING_ADULT_RELATIONSHIP_INCLUDE_BOTH), 200
173+
)
174+
else :
175+
return generate_response(load_json_file(CONSENT__SINGLE_CONSENTING_ADULT_RELATIONSHIP), 200)
176+
# Single mother child relationship
177+
if (performer_identifier == 9000000019):
178+
if (_include == CONSENT_PERFORMER):
179+
return generate_response(
180+
load_json_file(CONSENT__SINGLE_MOTHER_CHILD_RELATIONSHIP_INCLUDE_PERFORMER), 200
181+
)
182+
elif (_include == CONSENT_PATIENT):
183+
return generate_response(
184+
load_json_file(CONSENT__SINGLE_MOTHER_CHILD_RELATIONSHIP_INCLUDE_PATIENT), 200
185+
)
186+
elif (_include == f"{CONSENT_PATIENT},{CONSENT_PERFORMER}" or f"{CONSENT_PERFORMER},{CONSENT_PATIENT}"):
187+
return generate_response(
188+
load_json_file(CONSENT__SINGLE_MOTHER_CHILD_RELATIONSHIP_INCLUDE_BOTH), 200
189+
)
190+
else :
191+
return generate_response(load_json_file(CONSENT__SINGLE_MOTHER_CHILD_RELATIONSHIP), 200)
192+
# multiple relationships
193+
if (performer_identifier == 9000000017):
194+
if (status == "active"):
195+
if (_include == CONSENT_PERFORMER):
196+
return generate_response(
197+
load_json_file(CONSENT__MULTIPLE_RELATIONSHIPS_STATUS_ACTIVE_INCLUDE_PERFORMER), 200
198+
)
199+
if (_include == CONSENT_PATIENT):
200+
return generate_response(
201+
load_json_file(CONSENT__MULTIPLE_RELATIONSHIPS_STATUS_ACTIVE_INCLUDE_PATIENT), 200
202+
)
203+
if (_include == f"{CONSENT_PATIENT},{CONSENT_PERFORMER}" or f"{CONSENT_PERFORMER},{CONSENT_PATIENT}"):
204+
return generate_response(
205+
load_json_file(CONSENT__MULTIPLE_RELATIONSHIPS_STATUS_ACTIVE_INCLUDE_BOTH), 200
206+
)
207+
else:
208+
return generate_response(load_json_file(CONSENT__MULTIPLE_RELATIONSHIPS_STATUS_ACTIVE), 200)
209+
else:
210+
if (_include == CONSENT_PERFORMER):
211+
return generate_response(
212+
load_json_file(CONSENT__MULTIPLE_RELATIONSHIPS_INCLUDE_PERFORMER), 200
213+
)
214+
if (_include == CONSENT_PATIENT):
215+
return generate_response(
216+
load_json_file(CONSENT__MULTIPLE_RELATIONSHIPS_INCLUDE_PATIENT), 200
217+
)
218+
if (_include == f"{CONSENT_PATIENT},{CONSENT_PERFORMER}" or f"{CONSENT_PERFORMER},{CONSENT_PATIENT}"):
219+
return generate_response(load_json_file(CONSENT__MULTIPLE_RELATIONSHIPS_INCLUDE_BOTH), 200)
220+
else:
221+
return generate_response(load_json_file(CONSENT__MULTIPLE_RELATIONSHIPS), 200)
222+
# No relationships
223+
if (performer_identifier == 9000000025):
224+
return generate_response(load_json_file(CONSENT__NO_RELATIONSHIPS), 200)
154225
else:
155226
return generate_response(load_json_file(NOT_FOUND), 400)
227+
156228
except Exception as e:
157229
logger.error(e)
158230
return generate_response_from_example(INTERNAL_SERVER_ERROR_EXAMPLE, 500)

sandbox/api/constants.py

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
NOT_FOUND = "./api/responses/not_found.json"
2-
EMPTY_RESPONSE = "./api/responses/GET_RelatedPerson/empty_response_9000000033.json"
2+
EMPTY_RESPONSE = "./api/responses/GET_RelatedPerson/no_relationships.json"
33
LIST_RELATIONSHIP = (
44
"./api/responses/GET_RelatedPerson/list_relationship_9000000017.json"
55
)
@@ -25,15 +25,57 @@
2525
"./api/responses/POST_QuestionnaireResponse/questionnaire_response_success.json"
2626
)
2727

28+
BAD_REQUEST_INCLUDE_PARAM_INVALID = "./api/responses/bad_request_include_param_invalid.json"
29+
30+
consent_dir = "./api/responses/GET_Consent/"
31+
CONSENT__MULTIPLE_RELATIONSHIPS = consent_dir + "multiple_relationships.json"
32+
CONSENT__MULTIPLE_RELATIONSHIPS_INCLUDE_BOTH = consent_dir + "multiple_relationships_include_both.json"
33+
CONSENT__MULTIPLE_RELATIONSHIPS_INCLUDE_PATIENT = consent_dir + "multiple_relationships_include_patient.json"
34+
CONSENT__MULTIPLE_RELATIONSHIPS_INCLUDE_PERFORMER = consent_dir + "multiple_relationships_include_performer.json"
35+
CONSENT__MULTIPLE_RELATIONSHIPS_INCLUDE_PERFORMER = consent_dir + "multiple_relationships_include_performer.json"
36+
CONSENT__MULTIPLE_RELATIONSHIPS_STATUS_ACTIVE = consent_dir + "multiple_relationships_status_active.json"
37+
CONSENT__MULTIPLE_RELATIONSHIPS_STATUS_ACTIVE_INCLUDE_BOTH = (
38+
consent_dir + "multiple_relationships_status_active_include_both.json"
39+
)
40+
CONSENT__MULTIPLE_RELATIONSHIPS_STATUS_ACTIVE_INCLUDE_PATIENT = (
41+
consent_dir + "multiple_relationships_status_active_include_patient.json"
42+
)
43+
CONSENT__MULTIPLE_RELATIONSHIPS_STATUS_ACTIVE_INCLUDE_PERFORMER = (
44+
consent_dir + "multiple_relationships_status_active_include_performer.json"
45+
)
46+
CONSENT__NO_RELATIONSHIPS = consent_dir + "no_relationships.json"
47+
CONSENT__SINGLE_CONSENTING_ADULT_RELATIONSHIP = consent_dir + "single_consenting_adult_relationship.json"
48+
CONSENT__SINGLE_CONSENTING_ADULT_RELATIONSHIP_INCLUDE_BOTH = (
49+
consent_dir + "single_consenting_adult_relationship_include_both.json"
50+
)
51+
CONSENT__SINGLE_CONSENTING_ADULT_RELATIONSHIP_INCLUDE_PATIENT = (
52+
consent_dir + "single_consenting_adult_relationship_include_patient.json"
53+
)
54+
CONSENT__SINGLE_CONSENTING_ADULT_RELATIONSHIP_INCLUDE_PERFORMER = (
55+
consent_dir + "single_consenting_adult_relationship_include_performer.json"
56+
)
57+
CONSENT__SINGLE_MOTHER_CHILD_RELATIONSHIP = consent_dir + "single_mother_child_relationship.json"
58+
CONSENT__SINGLE_MOTHER_CHILD_RELATIONSHIP_INCLUDE_BOTH = (
59+
consent_dir + "single_mother_child_relationship_include_both.json"
60+
)
61+
CONSENT__SINGLE_MOTHER_CHILD_RELATIONSHIP_INCLUDE_PATIENT = (
62+
consent_dir + "single_mother_child_relationship_include_patient.json"
63+
)
64+
CONSENT__SINGLE_MOTHER_CHILD_RELATIONSHIP_INCLUDE_PERFORMER = (
65+
consent_dir + "single_mother_child_relationship_include_performer.json"
66+
)
67+
CONSENT__STATUS_PARAM_INVALID = consent_dir + "bad_request_status_param_invalid.json"
68+
2869
PATIENT_IDENTIFIERS = ["9000000017", "9000000033"]
2970
RELATED_IDENTIFIERS = ["9000000009", "9000000025"]
3071

3172
CONSENT_PERFORMER = "Consent:performer"
73+
CONSENT_PATIENT = "Consent:performer"
3274

3375
# Example files
3476

3577
# Common examples
36-
INTERNAL_SERVER_ERROR_EXAMPLE = "./api/examples/errors/internal-server-error.yaml"
78+
INTERNAL_SERVER_ERROR_EXAMPLE = "./api/examples/shared/internal-server-error.yaml"
3779
# Consent examples
3880
CONSENT__ADULT_CONSENTING_EXAMPLE = "./api/examples/GET_Consent/adults-consenting.yaml"
3981
CONSENT__MIXED_EXAMPLE = "./api/examples/GET_Consent/mixed.yaml"

sandbox/api/utils.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def load_json_file(file_name: str) -> dict:
2323

2424

2525
def check_for_errors(request: Request) -> Optional[tuple]:
26-
"""Check for errors in the request headers and arguments
26+
"""Check for shared in the request headers and arguments
2727
2828
Args:
2929
request (Request): Flask request object
@@ -37,15 +37,15 @@ def check_for_errors(request: Request) -> Optional[tuple]:
3737
if not identifier:
3838
return (
3939
load_json_file(
40-
"./api/responses/GET_RelatedPerson/bad_request_identifier_missing.json"
40+
"./api/responses/bad_request_identifier_missing.json"
4141
),
4242
400,
4343
)
4444
elif identifier and len(identifier_without_system) != 10:
4545
# invalid identifier
4646
return (
4747
load_json_file(
48-
"./api/responses/GET_RelatedPerson/bad_request_identifier_invalid.json"
48+
"./api/responses/bad_request_identifier_invalid.json"
4949
),
5050
400,
5151
)
@@ -57,7 +57,7 @@ def check_for_errors(request: Request) -> Optional[tuple]:
5757
# invalid identifier system
5858
return (
5959
load_json_file(
60-
"./api/responses/GET_RelatedPerson/bad_request_identifier_invalid_system.json"
60+
"./api/responses/bad_request_identifier_invalid_system.json"
6161
),
6262
400,
6363
)

0 commit comments

Comments
 (0)