Bases: OnconovaFhirBaseSchema, OnconovaCancerFamilyMemberHistory
__model__
class-attribute
instance-attribute
__schema__
class-attribute
instance-attribute
fhir_to_onconova(obj)
classmethod
Source code in onconova/interoperability/fhir/schemas/cancer_family_member_history.py
| @classmethod
def fhir_to_onconova(
cls, obj: fhir.OnconovaCancerFamilyMemberHistory
) -> schemas.FamilyHistoryCreate:
condition: fhir.OnconovaCancerFamilyMemberHistoryCancerCondition | None = (
obj.fhirpath_single(
"FamilyMemberHistory.condition.where(code.coding.code='363346000')"
)
)
return schemas.FamilyHistoryCreate(
caseId=obj.fhirpath_single(
"FamilyMemberHistory.patient.reference.getValue()"
).replace("Patient/", ""),
date=obj.fhirpath_single("FamilyMemberHistory.date.getValue()"),
isDeceased=obj.fhirpath_single(
"FamilyMemberHistory.deceasedBoolean.getValue()"
),
relationship=CodedConcept.model_validate(
obj.fhirpath_single(
"FamilyMemberHistory.relationship.coding"
).model_dump()
),
hadCancer=condition is not None,
onsetAge=(
condition.fhirpath_single("onsetAge.value.getValue()")
if condition
else None
),
contributedToDeath=(
condition.fhirpath_single(
"extension('http://onconova.github.io/fhir/StructureDefinition/onconova-ext-family-member-condition-contributed-to-death').valueBoolean.getValue()"
)
if condition
else None
),
morphology=(
CodedConcept.model_validate(coding.model_dump())
if condition
and (
coding := condition.fhirpath_single(
"extension('http://onconova.github.io/fhir/StructureDefinition/onconova-ext-family-history-member-cancer-morphology').valueCodeableConcept.coding"
)
)
else None
),
topography=(
CodedConcept.model_validate(coding.model_dump())
if condition
and (
coding := condition.fhirpath_single(
"extension('http://onconova.github.io/fhir/StructureDefinition/onconova-ext-family-history-member-cancer-topography').valueCodeableConcept.coding"
)
)
else None
),
)
|
onconova_to_fhir(obj)
classmethod
Source code in onconova/interoperability/fhir/schemas/cancer_family_member_history.py
| @classmethod
def onconova_to_fhir(
cls, obj: schemas.FamilyHistory
) -> fhir.OnconovaCancerFamilyMemberHistory:
resource = fhir.OnconovaCancerFamilyMemberHistory.model_construct()
resource.id = str(obj.id)
resource.text = Narrative(
status="generated",
div=f'<div xmlns="http://www.w3.org/1999/xhtml">{obj.description}</div>',
)
resource.date = obj.date.isoformat()
resource.patient = Reference(
reference=f"Patient/{obj.caseId}",
)
resource.deceasedBoolean = obj.isDeceased
resource.relationship = construct_fhir_codeable_concept(obj.relationship)
if obj.hadCancer:
condition = fhir.OnconovaCancerFamilyMemberHistoryCancerCondition(
onsetAge=(
fhir.OnconovaCancerFamilyMemberHistoryOnsetAge(
value=obj.onsetAge, system="http://unitsofmeasure.org", code="a"
)
if obj.onsetAge is not None
else None
)
)
condition.extension = []
if obj.contributedToDeath is not None:
condition.extension.append(
fhir.FamilyMemberConditionContributedToDeath(
valueBoolean=obj.contributedToDeath
)
)
if obj.topography:
condition.extension.append(
fhir.FamilyMemberHistoryCancerTopography(
valueCodeableConcept=construct_fhir_codeable_concept(
obj.topography
)
)
)
if obj.morphology:
condition.extension.append(
fhir.FamilyMemberHistoryCancerMorphology(
valueCodeableConcept=construct_fhir_codeable_concept(
obj.morphology
)
)
)
resource.condition = [condition]
return resource
|