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
3130DEFAULT_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