Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions healthchain/data_generators/basegenerators.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

from fhir.resources.codeableconcept import CodeableConcept
from fhir.resources.coding import Coding
from healthchain.data_generators.coding_utils import create_coding


faker = Faker()
Expand Down Expand Up @@ -195,11 +196,10 @@ def generate_from_valueset(ValueSet):

return CodeableConcept(
coding=[
Coding(
create_coding(
system=value_set_instance.system,
code=code,
display=display,
# extension=[Extension(value_set_instance.extension)],
)
]
)
Expand Down
30 changes: 30 additions & 0 deletions healthchain/data_generators/coding_utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
from typing import Optional, Dict, Any

# Common system URIs
SNOMED_CT_URI = "http://snomed.info/sct"
ICD10_URI = "http://hl7.org/fhir/sid/icd-10"
LOINC_URI = "http://loinc.org"


def create_coding(
code: str,
system: str,
display: Optional[str] = None,
version: Optional[str] = None,
) -> Dict[str, Any]:
"""Create a standardized FHIR Coding dict.

Mirrors the FHIR Coding structure and keeps optional fields omitted when None,
which matches how other helpers in the codebase behave.
"""
coding: Dict[str, Any] = {
"system": system,
"code": code,
}
if display is not None:
coding["display"] = display
if version is not None:
coding["version"] = version
return coding


3 changes: 2 additions & 1 deletion healthchain/data_generators/patientgenerators.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
from fhir.resources.period import Period
from fhir.resources.codeableconcept import CodeableConcept
from fhir.resources.coding import Coding
from healthchain.data_generators.coding_utils import create_coding
from fhir.resources.patient import Patient


Expand Down Expand Up @@ -81,7 +82,7 @@ def generate():
marital_code = faker.random_element(elements=(marital_status_dict.keys()))
return CodeableConcept(
coding=[
Coding(
create_coding(
system="http://terminology.hl7.org/CodeSystem/v3-MaritalStatus",
code=marital_code,
display=marital_status_dict.get(marital_code),
Expand Down
5 changes: 3 additions & 2 deletions healthchain/data_generators/practitionergenerators.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
)
from fhir.resources.codeableconcept import CodeableConcept
from fhir.resources.coding import Coding
from healthchain.data_generators.coding_utils import create_coding


faker = Faker()
Expand All @@ -37,7 +38,7 @@ def generate():
)
return CodeableConcept(
coding=[
Coding(
create_coding(
system="http://example.org",
code=random_qual,
display=QualificationGenerator.qualification_dict.get(random_qual),
Expand Down Expand Up @@ -79,7 +80,7 @@ def generate():
language = faker.random_element(elements=language_value_dict.keys())
return CodeableConcept(
coding=[
Coding(
create_coding(
system="http://terminology.hl7.org/CodeSystem/languages",
code=language,
display=language_value_dict.get(language),
Expand Down