- Created by Peter Scott, last modified on Aug 28, 2024
Just as known previous medical history can help inform decision making about a presenting complaint, a properly constituted family history can be very helpful. Here is some code that illustrates the pedigree model of HL7 as implemented in the HL7 V2 VMR, which is the default model for the Medical Objects GELLO editor.
As before, lets add some data to our test file:
<familyHistory>
<!-- for the following II datatypes root is not correct but is taken as an example from iso-21090-examples.xml-->
<patientsFamilyTreeID root="2.16.840.1.113883.12.333" extension="001" />
<naturalMotherID root="2.16.840.1.113883.12.333" extension="002" />
<naturalFatherID root="2.16.840.1.113883.12.333" extension="003" />
<relatives>
<relativeName value = "Bertha" />
<relationship code="65656005"
codeSystem="2.16.840.1.113883.6.96"
codeSystemName="SNOMED-CT">
<displayName value = "natural mother" />
<translation code="NMTH"
codeSystem="2.16.840.1.113883.1.11.19563"
codeSystemName="HL7_PersonalRelationshipType">
<displayName value = "natural mother" />
</translation>
</relationship>
<relativeID root="2.16.840.1.113883.12.333" extension="002" />
<naturalMotherID root="2.16.840.1.113883.12.333" extension="007" />
<naturalFatherID root="2.16.840.1.113883.12.333" extension="006" />
<deceasedEstimatedAge></deceasedEstimatedAge> <!--REAL-->
<livingEstimatedAge value = "76" />
<clinicalGenomicChoices>
<clinicalObservation code="254837009"
codeSystem="2.16.840.1.113883.6.96"
codeSystemName="SNOMED-CT">
<displayName value = "Malignant tumor of breast" />
</clinicalObservation>
<negationIndicator value = "false" /><!--BL-->
<causeOfDeath value = "false" /><!--BL-->
<dataEstimatedAge value = "39" />
<geneticLoci value = "MSI-HIGH" />
</clinicalGenomicChoices>
<clinicalGenomicChoices>
<clinicalObservation code="254837009"
codeSystem="2.16.840.1.113883.6.96"
codeSystemName="SNOMED-CT">
<displayName value = "Malignant tumor of breast" />
</clinicalObservation>
<negationIndicator value = "false" /><!--BL-->
<causeOfDeath value = "false" /><!--BL-->
<dataEstimatedAge value = "46" />
<geneticLoci value = "MSI-HIGH" />
</clinicalGenomicChoices>
</relatives>
<relatives>
<relativeName value = "Bruce" />
<relationship code="9947008"
codeSystem="2.16.840.1.113883.6.96"
codeSystemName="SNOMED-CT">
<displayName value = "natural father" />
<translation code="NFTH"
codeSystem="2.16.840.1.113883.1.11.19563"
codeSystemName="HL7_PersonalRelationshipType">
<displayName value = "natural father" />
</translation>
</relationship>
<relativeID root="2.16.840.1.113883.12.333" extension="003" />
<livingEstimatedAge value = "78" />
<clinicalGenomicChoices>
<clinicalObservation code="68496003"
codeSystem="2.16.840.1.113883.6.96"
codeSystemName="SNOMED-CT">
<displayName value = "polyp of colon" />
</clinicalObservation>
<dataEstimatedAge value = "59" />
</clinicalGenomicChoices>
</relatives>
<relatives>
<relativeName value = "Alison" />
<relationship code="73678001"
codeSystem="2.16.840.1.113883.6.96"
codeSystemName="SNOMED-CT">
<displayName value = "natural sister" />
</relationship>
<relativeID root="2.16.840.1.113883.12.333" extension="004" />
<naturalMotherID root="2.16.840.1.113883.12.333" extension="002" />
<naturalFatherID root="2.16.840.1.113883.12.333" extension="003" />
<deceasedEstimatedAge></deceasedEstimatedAge> <!--REAL-->
<livingEstimatedAge value = "52" />
<clinicalGenomicChoices>
<clinicalObservation code="363406005"
codeSystem="2.16.840.1.113883.6.96"
codeSystemName="SNOMED-CT">
<displayName value = "Malignant tumor of colon" />
</clinicalObservation>
<negationIndicator value = "false" /><!--BL-->
<causeOfDeath value = "false" /><!--BL-->
<dataEstimatedAge value = "49" />
</clinicalGenomicChoices>
</relatives>
<relatives>
<relativeName value = "Colin" />
<relationship code="394857004"
codeSystem="2.16.840.1.113883.6.96"
codeSystemName="SNOMED-CT">
<displayName value = "maternal Grandfather" />
<translation></translation>
</relationship>
<relativeID root="2.16.840.1.113883.12.333" extension="006" />
<deceasedEstimatedAge value="84" />
<clinicalGenomicChoices>
<clinicalObservation code="399068003"
codeSystem="2.16.840.1.113883.6.96"
codeSystemName="SNOMED-CT">
<displayName value = "Malignant tumor of prostate" />
</clinicalObservation>
<negationIndicator value = "false" />
<causeOfDeath value = "false" />
<dataEstimatedAge value = "71" />
<geneticLoci></geneticLoci>
</clinicalGenomicChoices>
</relatives>
<relatives>
<relativeName value = "Deidre" />
<relationship code="394859001"
codeSystem="2.16.840.1.113883.6.96"
codeSystemName="SNOMED-CT">
<displayName value = "maternal Grandfather" />
<translation></translation>
</relationship>
<relativeID root="2.16.840.1.113883.12.333" extension="007" />
<deceasedEstimatedAge value="72" />
<clinicalGenomicChoices>
<clinicalObservation code="363406005"
codeSystem="2.16.840.1.113883.6.96"
codeSystemName="SNOMED-CT">
<displayName value = "Malignant tumor of colon" />
</clinicalObservation>
<negationIndicator value = "false" />
<causeOfDeath value = "true" />
<dataEstimatedAge value = "71" />
<geneticLoci></geneticLoci>
</clinicalGenomicChoices>
</relatives>
<relatives>
<relativeName value = "Bill" />
<relationship code="38048003"
codeSystem="2.16.840.1.113883.6.96"
codeSystemName="SNOMED-CT">
<displayName value = "uncle" />
</relationship>
<relativeID root="2.16.840.1.113883.12.333" extension="005" />
<naturalMotherID root="2.16.840.1.113883.12.333" extension="007" />
<naturalFatherID root="2.16.840.1.113883.12.333" extension="006" />
<deceasedEstimatedAge></deceasedEstimatedAge> <!--REAL-->
<livingEstimatedAge value = "70" />
<clinicalGenomicChoices>
<clinicalObservation code="363406005"
codeSystem="2.16.840.1.113883.6.96"
codeSystemName="SNOMED-CT">
<displayName value = "Malignant tumor of colon" />
</clinicalObservation>
<negationIndicator value = "false" /><!--BL-->
<causeOfDeath value = "false" /><!--BL-->
<dataEstimatedAge value = "62" />
</clinicalGenomicChoices>
</relatives>
<relatives>
<relativeName value = "Sandra" />
<relationship code="34581001"
codeSystem="2.16.840.1.113883.6.96"
codeSystemName="SNOMED-CT">
<displayName value = "niece" />
</relationship>
<relativeID root="2.16.840.1.113883.12.333" extension="010" />
<naturalMotherID root="2.16.840.1.113883.12.333" extension="004" />
<naturalFatherID root="2.16.840.1.113883.12.333" extension="008" />
<deceasedEstimatedAge></deceasedEstimatedAge> <!--REAL-->
<livingEstimatedAge value = "20" />
<clinicalGenomicChoices>
<clinicalObservation code="34486009"
codeSystem="2.16.840.1.113883.6.96"
codeSystemName="SNOMED-CT">
<displayName value = "Hyperthyroidism" />
</clinicalObservation>
<negationIndicator value = "false" /><!--BL-->
<causeOfDeath value = "false" /><!--BL-->
<dataEstimatedAge value = "4" />
</clinicalGenomicChoices>
</relatives>
</familyHistory>
Save as fourthTest.xml.
Here is the full code:
Context HL7_v2_VMR_V1::SinglePatient
Let colonCancer: CD = factory.CD_SNOMED('363406005','malignant tumor of colon')
Let naturalMother_SCT: CD = factory.CD_SNOMED_CT('65656005')
Let naturalFather_SCT: CD = factory.CD_SNOMED_CT('9947008')
Let naturalSister_SCT: CD = factory.CD_SNOMED_CT('73678001')
Let naturalBrother_SCT: CD = factory.CD_SNOMED_CT('60614009')
familyHistory.relatives->select((relationship = naturalMother_SCT
or relationship = naturalFather_SCT
or relationship = naturalSister_SCT
or relationship = naturalBrother_SCT
)
and
clinicalGenomicChoices -> select(clinicalObservation.implies(colonCancer).value
and
(not negationIndicator.value)
and
dataEstimatedAge <= 50.0)->notEmpty()
)->notEmpty()
So going through it, as previously done we have set up a concept to search for, namely colon cancer; we then say what codes to describe the relation to first degree relatives will be; then we do the final expression. The family history model we use says for a patient, relatives have conditions (called a Clinical Genomic Choice).These conditions have a code, a negation indicator (eg a condition may be not present) and an age of the relative at occurrence. So this GELLO example searches for some first degree relatives with a history of colon cancer occurring before age 50. The patient's sister meets this criteria so the returned Sequences are not empty, which returns an answer of True.
- No labels