Skip to content

Commit dd7786a

Browse files
authored
VED-759: Allow empty date fields in delta conversion. (#808)
1 parent 10e7d6c commit dd7786a

File tree

1 file changed

+9
-17
lines changed

1 file changed

+9
-17
lines changed

delta_backend/src/extractor.py

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def _get_valid_names(self, names, occurrence_time):
4343

4444

4545
def _get_person_names(self):
46-
occurrence_time = self._get_occurance_date_time()
46+
occurrence_time = self._get_occurrence_date_time()
4747
patient = self._get_patient()
4848
names = patient.get("name", [])
4949
names = [n for n in names if "given" in n and "family" in n]
@@ -61,7 +61,7 @@ def _get_person_names(self):
6161

6262
def _get_practitioner_names(self):
6363
contained = self.fhir_json_data.get("contained", [])
64-
occurrence_time = self._get_occurance_date_time()
64+
occurrence_time = self._get_occurrence_date_time()
6565
practitioner = next((c for c in contained if isinstance(c, dict) and c.get("resourceType") == "Practitioner"), None)
6666
if not practitioner or "name" not in practitioner:
6767
return "", ""
@@ -97,18 +97,11 @@ def _is_current_period(self, name, occurrence_time):
9797

9898
return (not start or start <= occurrence_time) and (not end or occurrence_time <= end)
9999

100-
def _get_occurance_date_time(self) -> str:
101-
try:
102-
occurrence_time = datetime.fromisoformat(self.fhir_json_data.get("occurrenceDateTime", ""))
103-
if occurrence_time and occurrence_time.tzinfo is None:
104-
occurrence_time = occurrence_time.replace(tzinfo=timezone.utc)
105-
return occurrence_time
106-
return occurrence_time
107-
108-
except Exception as e:
109-
message = "DateTime conversion error [%s]: %s" % (e.__class__.__name__, e)
110-
error = self._log_error(ConversionFieldName.DATE_AND_TIME, message, e, code=exception_messages.UNEXPECTED_EXCEPTION)
111-
return error
100+
def _get_occurrence_date_time(self) -> datetime:
101+
occurrence_time = datetime.fromisoformat(self.fhir_json_data.get("occurrenceDateTime", ""))
102+
if occurrence_time and occurrence_time.tzinfo is None:
103+
occurrence_time = occurrence_time.replace(tzinfo=timezone.utc)
104+
return occurrence_time
112105

113106
def _get_first_snomed_code(self, coding_container: dict) -> str:
114107
codings = coding_container.get("coding", [])
@@ -189,8 +182,7 @@ def _convert_date(self, field_name, date, format) -> str:
189182
"""
190183
Convert a date string according to match YYYYMMDD format.
191184
"""
192-
if not date or not isinstance(date, str):
193-
self._log_error(field_name, date, "Invalid value. Must be non empty string")
185+
if not date:
194186
return ""
195187
try:
196188
dt = datetime.fromisoformat(date)
@@ -258,7 +250,7 @@ def normalize(self, value):
258250
return value.lower() if isinstance(value, str) else value
259251

260252
def extract_valid_address(self):
261-
occurrence_time = self._get_occurance_date_time()
253+
occurrence_time = self._get_occurrence_date_time()
262254
patient = self._get_patient()
263255

264256
addresses = patient.get("address", [])

0 commit comments

Comments
 (0)