Skip to content

Commit

Permalink
initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
ThiagoTrabach committed Aug 29, 2023
1 parent 1f8e9e9 commit fc9f510
Show file tree
Hide file tree
Showing 5 changed files with 92 additions and 0 deletions.
Empty file added fhir_utils/fhir/__init__
Empty file.
Empty file.
45 changes: 45 additions & 0 deletions fhir_utils/fhir/patient/parsers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@


def fhir_to_dict(fhir_json: str, source: str) -> dict:
# Extract identifiers
identifiers = []
for identifier in fhir_json["identifier"]:
identifiers.append({"code": identifier["type"]["coding"][0]["code"],
"value": identifier["value"]})

# Extract extensions
parents = []
race_ethnicity = {"race":"", "indigenous_ethnicity":""}

# TODO: add case for other extensions
for extension in fhir_json["extension"]:
match extension["extension"][0]["url"]:
case "relationship":
parents.append({"code": extension["extension"][0]["valueCode"],
"name": extension["extension"][1]["valueHumanName"]["text"]
})
case "race":
race_ethnicity.update({"race": extension["extension"][0]["valueCodeableConcept"]["coding"][0]["code"]})
case _:
pass

return {"data": {"active": fhir_json["active"] if "active" in fhir_json.keys() else "",
"address": fhir_json["address"] if "address" in fhir_json.keys() else "",
"birth_city": "",
"birth_country": "",
"birth_date": fhir_json["birthDate"] if "birthDate" in fhir_json.keys() else "",
"deceased": fhir_json["deceasedBoolean"] if "deceasedBoolean" in fhir_json.keys() else "",
"gender": fhir_json["gender"] if "gender" in fhir_json.keys() else "",
"identifiers": identifiers,
"name": fhir_json["name"][0]["text"] if "name" in fhir_json.keys() else "",
"nationality": "",
"naturalization": "",
"parents": parents,
"protected_person": "",
"race_ethnicity": race_ethnicity,
"register_quality": "",
"self.telecom": fhir_json["telecom"] if "telecom" in fhir_json.keys() else ""
},
"source": source
}

37 changes: 37 additions & 0 deletions fhir_utils/fhir/patient/resource.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# -*- coding: utf-8 -*-

class Patient:

elements_required = ["active", "birthCountry", "birthDate", "gender", "identifier", "name"]

def __init__(self, patient: dict, source: str):

#verify

# verify if all required elements are in patient
elements_required_missing = []
for key in elements_required:
if key not in patient:
elements_required_missing.append(key)
if len(elements_required_missing) > 0:
raise f"Missing required element(s): {elements_required_missing}"


self.source = source
self.active = None
self.address = None
self.birth_city = None
self.birth_country = None
self.birth_date = None
self.deceased = None
self.gender = None
self.identifier = None
self.name = None
self.nationality = None
self.naturalization = None
self.parents = None
self.protected_person = None
self.race_ethnicity = None
self.register_quality = None
self.telecom = None

10 changes: 10 additions & 0 deletions run.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from fhir_utils.utils import json_to_dict
from fhir_utils.fhir.patient.parsers import fhir_to_dict

patient = json_to_dict("/home/thiagotrabach/tmp/patient_sample.json")

patient_clean = fhir_to_dict(patient, "vitacare")

print(patient_clean)


0 comments on commit fc9f510

Please sign in to comment.