Skip to content

Commit 968117e

Browse files
committed
NRL-1051 tests, permissions, logs, other stuff
1 parent 40d1915 commit 968117e

File tree

5 files changed

+549
-16
lines changed

5 files changed

+549
-16
lines changed

api/producer/processTransaction/process_transaction_bundle.py

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
OperationOutcomeIssue,
2727
)
2828

29-
# TODO - Figure out sensible defaults
3029
# NOTE: while type, category and custodian are not required in MHDS profile, they will be required by NRLF
3130
DEFAULT_MHDS_AUTHOR = {
3231
"identifier": {
@@ -295,6 +294,7 @@ def _convert_document_reference(
295294
if requested_profile.endswith(
296295
"profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.UnContained.Comprehensive.ProvideBundle"
297296
):
297+
logger.log(LogReference.PROTRAN006, requested_profile=requested_profile)
298298
docref_properties: dict[str, Any] = {}
299299
docref_properties.update(DEFAULT_MHDS_PROPERTIES)
300300
docref_properties.update(raw_resource)
@@ -329,28 +329,30 @@ def handler(
329329
Returns:
330330
Response: The response indicating the result of the operation.
331331
"""
332-
# TODO - Add logging
332+
logger.log(LogReference.PROTRAN000)
333+
333334
requested_profile = (
334335
body.meta.profile[0].root if body.meta and body.meta.profile else None
335336
)
336337

337-
# TODO - Add profile for NRLF too (assume NRLF profile if not provided)
338338
if requested_profile and not requested_profile.endswith(
339339
"profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.UnContained.Comprehensive.ProvideBundle"
340340
):
341+
logger.log(LogReference.PROTRAN001, requested_profile=requested_profile)
341342
return SpineErrorResponse.BAD_REQUEST(
342343
diagnostics="Only IHE.MHD.UnContained.Comprehensive.ProvideBundle profiles are supported",
343344
expression="meta.profile[0]",
344345
)
345346

346347
if body.type != "transaction":
348+
logger.log(LogReference.PROTRAN002)
347349
return SpineErrorResponse.BAD_REQUEST(
348350
diagnostics="Only transaction bundles are supported",
349351
expression="type",
350352
)
351353

352354
if body.entry is None:
353-
# TODO - Log that there was no entry
355+
logger.log(LogReference.PROTRAN003)
354356
return Response.from_resource(
355357
resource=Bundle(resourceType="Bundle", type="transaction-response")
356358
)
@@ -360,6 +362,7 @@ def handler(
360362

361363
for entry in body.entry:
362364
if not entry.resource or entry.resource["resourceType"] != "DocumentReference":
365+
logger.log(LogReference.PROTRAN004)
363366
issues.append(
364367
OperationOutcomeIssue(
365368
severity="error",
@@ -371,6 +374,7 @@ def handler(
371374
)
372375

373376
if entry.request.method != "POST":
377+
logger.log(LogReference.PROTRAN005)
374378
issues.append(
375379
OperationOutcomeIssue(
376380
severity="error",
@@ -389,15 +393,6 @@ def handler(
389393
responses: list[Response] = []
390394
for entry in entries:
391395
try:
392-
if not entry.resource:
393-
raise OperationOutcomeError(
394-
severity="error",
395-
code="exception",
396-
diagnostics="No resource provided",
397-
expression=["entry.resource"],
398-
details=SpineErrorConcept.from_code("BAD_REQUEST"),
399-
)
400-
401396
if requested_profile:
402397
document_reference = _convert_document_reference(
403398
entry.resource, requested_profile
@@ -421,6 +416,7 @@ def handler(
421416
for response in responses
422417
]
423418

419+
logger.log(LogReference.PROTRAN999)
424420
return Response.from_resource(
425421
resource=Bundle(
426422
resourceType="Bundle", type="transaction-response", entry=response_entries

0 commit comments

Comments
 (0)