Skip to content

Commit 3361c2a

Browse files
committed
primary source logic
1 parent aa9cfd2 commit 3361c2a

File tree

6 files changed

+25
-31
lines changed

6 files changed

+25
-31
lines changed

delta_backend/data.json

Whitespace-only changes.

delta_backend/src/ConversionChecker.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -394,13 +394,12 @@ def _convertToBoolean(self, expressionRule, fieldName, fieldValue, summarise, re
394394
if isinstance(fieldValue, bool):
395395
return fieldValue
396396

397-
if isinstance(fieldValue, str):
398-
lowered = fieldValue.strip().lower()
399-
if lowered == "true":
400-
return True
401-
elif lowered == "false":
402-
return False
403-
raise ValueError(f"Invalid string data: {fieldValue}")
397+
if str(fieldValue).strip().lower() == "true":
398+
return True
399+
if str(fieldValue).strip().lower() == "false":
400+
return False
401+
elif report_unexpected_exception:
402+
self._log_error(fieldName, fieldValue, "Invalid String Data")
404403
return ""
405404
except Exception as e:
406405
if report_unexpected_exception:

delta_backend/src/Converter.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
SchemaFile = {}
2020
imms = []
2121
Converted = {}
22-
ErrorRecords = []
22+
# ErrorRecords = []
2323

2424

2525
# Converter
@@ -28,13 +28,13 @@ class Converter:
2828
def __init__(self, fhir_data):
2929
self.FHIRData = fhir_data # Store JSON data directly
3030
self.SchemaFile = ConversionLayout.ConvertLayout
31-
# self.ErrorRecords = []
31+
self.ErrorRecords = []
3232

3333
# Utility logs tailored to conveter class errors
3434
def _log_error(self,e,code=ExceptionMessages.UNEXPECTED_EXCEPTION):
3535
message = str(e) # if a simple string message was passed
3636

37-
if any(existing.get("message") == message for existing in ErrorRecords):
37+
if any(existing.get("message") == message for existing in self.ErrorRecords):
3838
return
3939

4040
error_obj = {
@@ -44,7 +44,7 @@ def _log_error(self,e,code=ExceptionMessages.UNEXPECTED_EXCEPTION):
4444

4545
# Ensure message-level deduplication
4646
# if not any(existing.get("message") == message for existing in self.ErrorRecords):
47-
ErrorRecords.append(error_obj)
47+
self.ErrorRecords.append(error_obj)
4848
return error_obj
4949

5050
# create a FHIR parser - uses fhir json data from delta
@@ -74,7 +74,7 @@ def _convertData(self, ConversionValidate, expression, dataParser, json_data):
7474
except Exception as e:
7575
message = "Data get value Unexpected exception [%s]: %s" % (e.__class__.__name__, e)
7676
p = {"code": ExceptionMessages.PARSING_ERROR, "message": message}
77-
ErrorRecords.append(p)
77+
self.ErrorRecords.append(p)
7878
return p
7979

8080
for conversionValue in conversionValues:
@@ -101,7 +101,7 @@ def runConversion(self, json_data, summarise=False, report_unexpected_exception=
101101
if report_unexpected_exception:
102102
message = "Schema Parser Unexpected exception [%s]: %s" % (e.__class__.__name__, e)
103103
p = {"code": 0, "message": message}
104-
ErrorRecords.append(p)
104+
self.ErrorRecords.append(p)
105105
return p
106106
# error = self._log_error("FHIR Parser Unexpected exception [%s]: %s" % (e.__class__.__name__, e),code=0)
107107
# return error
@@ -113,7 +113,7 @@ def runConversion(self, json_data, summarise=False, report_unexpected_exception=
113113
if report_unexpected_exception:
114114
message = "Expression Checker Unexpected exception [%s]: %s" % (e.__class__.__name__, e)
115115
p = {"code": 0, "message": message}
116-
ErrorRecords.append(p)
116+
self.ErrorRecords.append(p)
117117
return p
118118

119119
# get list of expressions
@@ -123,15 +123,15 @@ def runConversion(self, json_data, summarise=False, report_unexpected_exception=
123123
if report_unexpected_exception:
124124
message = "Expression Getter Unexpected exception [%s]: %s" % (e.__class__.__name__, e)
125125
p = {"code": 0, "message": message}
126-
ErrorRecords.append(p)
126+
self.ErrorRecords.append(p)
127127
return p
128128

129129
for conversion in conversions:
130130
rows = self._convertData(ConversionValidate, conversion, dataParser, json_data)
131131

132132
# Collect and store any errors from ConversionChecker
133133
allErrors = ConversionValidate.get_error_records()
134-
ErrorRecords.extend(allErrors)
134+
self.ErrorRecords.extend(allErrors)
135135

136136
# Add CONVERSION_ERRORS as the 35th field
137137
error_records = self.getErrorRecords()
@@ -145,7 +145,7 @@ def runConversion(self, json_data, summarise=False, report_unexpected_exception=
145145
return imms
146146

147147
def getErrorRecords(self):
148-
return ErrorRecords
148+
return self.ErrorRecords
149149

150150
# def getErrorRecords(self):
151151
# return self.ErrorRecords

delta_backend/tests/sample_data/fhir_sample.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
},
7575
"occurrenceDateTime": "2021-02-07T13:28:17+00:00",
7676
"recorded": "2021-02-07T13:28:17+00:00",
77-
"primarySource": true,
77+
"primarySource": "True",
7878
"manufacturer": {
7979
"display": "AstraZeneca Ltd"
8080
},

delta_backend/tests/test_convert_to_flat_json.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -261,8 +261,8 @@ def test_schema_parser_exception(self, mock_schema_parser, mock_fhir_parser):
261261

262262
# Check if the error message was added to ErrorRecords
263263
errors = converter.getErrorRecords()
264-
self.assertEqual(len(errors), 3)
265-
self.assertIn("Schema Parser Unexpected exception", errors[2]["message"])
264+
self.assertEqual(len(errors), 1)
265+
self.assertIn("Schema Parser Unexpected exception", errors[0]["message"])
266266
self.assertEqual(errors[0]["code"], 0)
267267

268268
@patch("Converter.ConversionChecker")
@@ -290,7 +290,7 @@ def test_get_conversions_exception(self, mock_get_conversions):
290290
response = converter.runConversion(ValuesForTests.json_data)
291291

292292
# Check if the error message was added to ErrorRecords
293-
self.assertEqual(len(converter.getErrorRecords()), 2)
293+
self.assertEqual(len(converter.getErrorRecords()), 1)
294294
self.assertIn(
295295
"FHIR Parser Unexpected exception [JSONDecodeError]: Expecting value: line 1 column 1 (char 0)",
296296
converter.getErrorRecords()[0]["message"],

delta_backend/tests/utils_for_converter_tests.py

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -203,9 +203,7 @@ def get_expected_imms(expected_action_flag):
203203
"INDICATION_CODE": "443684005",
204204
"LOCATION_CODE": "EC1111",
205205
"LOCATION_CODE_TYPE_URI": "https://fhir.nhs.uk/Id/ods-organization-code",
206-
"CONVERSION_ERRORS": [{"code": 0, "message": "FHIR Parser Unexpected exception [JSONDecodeError]: Expecting value: line 1 column 1 (char 0)"},
207-
{'code': 0, 'message': 'FHIR Parser Unexpected exception [Exception]: FHIR Parsing Error'},
208-
]
206+
"CONVERSION_ERRORS": ''
209207
}
210208
]
211209

@@ -245,8 +243,7 @@ def get_expected_imms(expected_action_flag):
245243
"INDICATION_CODE": "443684005",
246244
"LOCATION_CODE": "EC1111",
247245
"LOCATION_CODE_TYPE_URI": "https://fhir.nhs.uk/Id/ods-organization-code",
248-
"CONVERSION_ERRORS": [{"code": 0, "message": "FHIR Parser Unexpected exception [JSONDecodeError]: Expecting value: line 1 column 1 (char 0)"},
249-
{'code': 0, 'message': 'FHIR Parser Unexpected exception [Exception]: FHIR Parsing Error'}]
246+
"CONVERSION_ERRORS": ''
250247
}
251248
]
252249

@@ -286,8 +283,7 @@ def get_expected_imms(expected_action_flag):
286283
"INDICATION_CODE": "443684005",
287284
"LOCATION_CODE": "EC1111",
288285
"LOCATION_CODE_TYPE_URI": "https://fhir.nhs.uk/Id/ods-organization-code",
289-
"CONVERSION_ERRORS": [{"code": 0, "message": "FHIR Parser Unexpected exception [JSONDecodeError]: Expecting value: line 1 column 1 (char 0)"},
290-
]
286+
"CONVERSION_ERRORS": ''
291287
}
292288
]
293289

@@ -340,7 +336,7 @@ class ErrorValuesForTests:
340336
"patient": {"reference": "#Pat1"},
341337
"occurrenceDateTime": "2021-02-07T13:28:17+00:00",
342338
"recorded": "2021-02-07T13:28:17+00:00",
343-
"primarySource": "True",
339+
"primarySource": True,
344340
"manufacturer": {"display": "AstraZeneca Ltd"},
345341
"location": {
346342
"type": "Location",
@@ -441,7 +437,6 @@ def get_expected_imms_error_output(expected_action_flag):
441437
"INDICATION_CODE": "443684005",
442438
"LOCATION_CODE": "E712",
443439
"LOCATION_CODE_TYPE_URI": "https://fhir.nhs.uk/Id/ods-organization-code",
444-
"CONVERSION_ERRORS": [{"code": 0, "message": "FHIR Parser Unexpected exception [JSONDecodeError]: Expecting value: line 1 column 1 (char 0)"},
445-
{'code': 0, 'message': 'FHIR Parser Unexpected exception [Exception]: FHIR Parsing Error'}]
440+
"CONVERSION_ERRORS": ''
446441
}
447442
]

0 commit comments

Comments
 (0)