Tonic commited on
Commit
26ac540
·
unverified ·
1 Parent(s): 19fdd83

big changes to the application flow - get_language

Browse files
Files changed (2) hide show
  1. utils/oneclick.py +1 -1
  2. utils/responseparser.py +18 -4
utils/oneclick.py CHANGED
@@ -150,4 +150,4 @@ def generate_discharge_paper_one_click(
150
 
151
  except Exception as e:
152
  logger.error("Error in one-click discharge generation: %s\n%s", str(e), traceback.format_exc())
153
- return None, f"Error: {str(e)}", None
 
150
 
151
  except Exception as e:
152
  logger.error("Error in one-click discharge generation: %s\n%s", str(e), traceback.format_exc())
153
+ return None, f"Error: {str(e)}", None
utils/responseparser.py CHANGED
@@ -3,6 +3,14 @@ import lxml.etree as etree
3
  from datetime import datetime
4
  from typing import List, Dict, Optional, Union
5
  import base64
 
 
 
 
 
 
 
 
6
 
7
  class PatientDataExtractor:
8
  """Class to extract fields from FHIR Patient Bundle (JSON) or C-CDA (XML)."""
@@ -221,7 +229,14 @@ class PatientDataExtractor:
221
  return lang[0] if lang else ""
222
  elif self.format == "json":
223
  comms = patient.get("communication", [])
224
- return comms[0]["language"]["text"] if comms and "language" in comms[0] else ""
 
 
 
 
 
 
 
225
 
226
  # Medications
227
  def get_medications(self) -> List[Dict[str, str]]:
@@ -235,7 +250,7 @@ class PatientDataExtractor:
235
  start_list = med.xpath(".//hl7:effectiveTime/hl7:low/@value", namespaces=self.ns)
236
  start = start_list[0] if start_list else ""
237
  stop_list = med.xpath(".//hl7:effectiveTime/hl7:high/@value", namespaces=self.ns)
238
- stop = stop_list[0] if stop_list else "" # Safely handle missing <high>
239
  desc_list = med.xpath(".//hl7:manufacturedMaterial/hl7:code/@displayName", namespaces=self.ns)
240
  desc = desc_list[0] if desc_list else ""
241
  code_list = med.xpath(".//hl7:manufacturedMaterial/hl7:code/@code", namespaces=self.ns)
@@ -449,5 +464,4 @@ class PatientDataExtractor:
449
 
450
  def get_patient_ids(self) -> List[str]:
451
  """Return a list of all patient IDs."""
452
- return [self.get_id() for _ in self.patients]
453
-
 
3
  from datetime import datetime
4
  from typing import List, Dict, Optional, Union
5
  import base64
6
+ import logging
7
+
8
+ # Set up logging
9
+ logging.basicConfig(
10
+ level=logging.INFO,
11
+ format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
12
+ )
13
+ logger = logging.getLogger(__name__)
14
 
15
  class PatientDataExtractor:
16
  """Class to extract fields from FHIR Patient Bundle (JSON) or C-CDA (XML)."""
 
229
  return lang[0] if lang else ""
230
  elif self.format == "json":
231
  comms = patient.get("communication", [])
232
+ if comms and "language" in comms[0]:
233
+ lang = comms[0]["language"]
234
+ # Try 'text' first, then fall back to 'coding' if available
235
+ if "text" in lang:
236
+ return lang["text"]
237
+ elif "coding" in lang and lang["coding"]:
238
+ return lang["coding"][0].get("display", lang["coding"][0].get("code", ""))
239
+ return ""
240
 
241
  # Medications
242
  def get_medications(self) -> List[Dict[str, str]]:
 
250
  start_list = med.xpath(".//hl7:effectiveTime/hl7:low/@value", namespaces=self.ns)
251
  start = start_list[0] if start_list else ""
252
  stop_list = med.xpath(".//hl7:effectiveTime/hl7:high/@value", namespaces=self.ns)
253
+ stop = stop_list[0] if stop_list else ""
254
  desc_list = med.xpath(".//hl7:manufacturedMaterial/hl7:code/@displayName", namespaces=self.ns)
255
  desc = desc_list[0] if desc_list else ""
256
  code_list = med.xpath(".//hl7:manufacturedMaterial/hl7:code/@code", namespaces=self.ns)
 
464
 
465
  def get_patient_ids(self) -> List[str]:
466
  """Return a list of all patient IDs."""
467
+ return [self.get_id() for _ in self.patients]