Prostate Cancer Message HL7 FHIR Guide
1. Introduction
This guide aims to explain the process to follow in order to read and understand the xml message “HL7FHIRMessageProstate.xml” based on prostate Excel template.
2. Message description
In this chapter describes the xml message content in a table containing these columns.
2.1. Table Columns description
Column Name | Description |
---|---|
Tab Template | Tab name included in excel file of Prostate Cancer |
Variable | Variable name included in Excel file |
ID resource | ID identification inside the assigned resource |
FHIR message location | Attribute used to inform the variable inside the bundle |
Example value | Example value used to inform the variable assigned |
Required by FHIR specification | Inform the variable is mandatory/optional in XML, based on compliance with the FHIR specification |
INCISIVE profile | URL of profiles created by INCISIVE |
Condition | Description term condition |
2.2. Table with Message description
2.2.1. Tab template General Info
Variable | ID resource | FHIR message location | Example value | Required by FHIR specification | INCISVE Profile | Comments |
---|---|---|---|---|---|---|
Patient Number | patient01 | Patient.identifier.value | 004-000001 | Optional | ||
Age at diagnosis | diagnosticReport01 | DiagnosticReport.extension.valueAge.value | 56 | Mandatory | Extension | |
Ethnicity | patient01 | Patient.extension.valueCodeableConcept.coding.code | 1 | Optional | Extension | |
Patient.extension.valueCodeableConcept.coding.display | White | Optional | ||||
Family history of Pca | observation01 | Observation.component.valueBoolean | true | Optional | ||
Familial Cancer History Father | observation01 | Observation.component.valueBoolean | true | Optional | ||
Familial Cancer History Mother | observation01 | Observation.component.valueBoolean | true | Optional | ||
Medical History | condition01 | Condition.code.text | MG30.10 | Optional | ||
Medication general info | medication01 | Medication.code.text | Medication therapy | Optional | ||
Symptoms general info | condition01 | Condition.evidence.code.coding.code | 1 | Optional | CodeSystem | |
Condition.evidence.code.coding.display | Difficulty starting urination | Optional | ||||
Clinical findings general info | condition02 | Condition.note.text | Dysuria | Mandatory | If Clinical findings general info=null delete all condition02 | |
Current state | patient01 | Patient.extension.valueCode | 0 | Optional | Extension | |
Provider | organization01 | Organization.identifier.type.coding.code | 001 | Optional | CodeSystem | |
Organization.identifier.type.coding.display | AUTH | Optional | ||||
Case | - | MessageHeader.eventCoding.display | Malignant tumor of prostate (disorder) | Mandatory | ||
Delivery Time general info | - | Bundle.timestamp | 2023-07-24T12:29:17.239+02:00 | Optional |
2.2.2. Tab template Baseline
Variable | ID resource | FHIR message location | Example value | Required by FHIR specification | INCISVE Profile | Comments |
---|---|---|---|---|---|---|
Computerized axial tomography (CT) baseline | observation02 | Observation.component.valueBoolean | true | Optional | ||
Annotated CT baseline | observation02 | Observation.component.valueCodeableConcept.coding.code | 1 | Optional | CodeSystem | |
Observation.component.valueCodeableConcept.coding.display | Positive annotation | Optional | ||||
Positron emission tomography (PET) baseline | observation02 | Observation.component.valueBoolean | true | Optional | ||
Annotated PET baseline | observation02 | Observation.component.valueCodeableConcept.coding.code | 1 | Optional | CodeSystem | |
Observation.component.valueCodeableConcept.coding.display | Positive annotation | Optional | ||||
Magnetic resonance imaging (MRI) baseline | observation02 | Observation.component.valueBoolean | true | Optional | ||
Annotated MRI baseline | observation02 | Observation.component.valueCodeableConcept.coding.code | 1 | Optional | CodeSystem | |
Observation.component.valueCodeableConcept.coding.display | Positive annotation | Optional | ||||
MRI type baseline | observation02 | Observation.component.valueCodeableConcept.coding.code | 0 | Optional | CodeSystem | |
Observation.component.valueCodeableConcept.coding.display | Prior biopsy | Optional | ||||
Bone Scintigraphy Scan baseline | observation02 | Observation.component.valueBoolean | true | Optional | ||
Annotated Bone Scintigraphy Scan baseline | observation02 | Observation.component.valueCodeableConcept.coding.code | 1 | Optional | CodeSystem | |
Observation.component.valueCodeableConcept.coding.display | Positive annotation | Optional | ||||
Histopathology Image baseline | observation02 | Observation.component.valueBoolean | true | Optional | ||
Annotated Histopathology Image baseline | observation02 | Observation.component.valueCodeableConcept.coding.code | 1 | Optional | CodeSystem | |
Observation.component.valueCodeableConcept.coding.display | Positive annotation | Optional | ||||
Xray baseline | observation02 | Observation.component.valueBoolean | true | Optional | ||
Annotated Xray baseline | observation02 | Observation.component.valueCodeableConcept.coding.code | 1 | Optional | CodeSystem | |
Observation.component.valueCodeableConcept.coding.display | Positive annotation | Optional | ||||
Prostate volume | observation02 | Observation.component.valueQuantity.value | 2 | Optional | ||
Side of tumor | observation02 | Observation.component.valueCodeableConcept.coding.code | 0 | Optional | CodeSystem | |
Observation.component.valueCodeableConcept.coding.display | Right | Optional | ||||
Maximum PIRADS | observation02 | Observation.component.valueCodeableConcept.coding.code | 1 | Optional | CodeSystem | |
Observation.component.valueCodeableConcept.coding.display | PIRADS 1 | Optional | ||||
Localization of PIRADS | observation02 | Observation.bodySite.coding.code | 3 | Optional | CodeSystem | |
Observation.bodySite.coding.display | pZp apex | Optional | ||||
Extraprostatic extention | observation02 | Observation.component.valueBoolean | true | Optional | ||
Seminal vesicle invasion baseline | observation02 | Observation.component.valueBoolean | true | Optional | ||
PSA baseline | observation02 | Observation.component.valueQuantity.value | 4.48 | Optional | ||
cT baseline | observation02 | Observation.component.valueCodeableConcept.coding.code | 1 | Optional | CodeSystem | |
Observation.component.valueCodeableConcept.coding.display | cT1 | Optional | ||||
cN baseline | observation02 | Observation.component.valueCodeableConcept.coding.code | 1 | Optional | CodeSystem | |
Observation.component.valueCodeableConcept.coding.display | N1 | Optional | ||||
cM baseline | observation02 | Observation.component.valueCodeableConcept.coding.code | 1 | Optional | CodeSystem | |
Observation.component.valueCodeableConcept.coding.display | M1 | Optional |
2.2.3. Tab template Timepoints
Variable | ID resource | FHIR message location | Example value | Required by FHIR specification | INCISVE Profile | Comments |
---|---|---|---|---|---|---|
Label timepoints | observation08 | Observation.code.coding.code | 1 | Mandatory | CodeSystem | |
Observation.code.coding.display | After 1st Treatment | Mandatory | ||||
Define other if selected timepoints | observation08 | Observation.category.text | Between 1st and 2nd dose of CT | Optional | ||
Date timepoints | observation08 | Observation.valueInteger | 2 | Optional | ||
PSA 1 | observation03 | Observation.component.valueQuantity.value | 4.26 | Optional | ||
Date - PSA 1 | observation03 | Observation.valueInteger | 2 | Optional | ||
PSA 2 | observation04 | Observation.component.valueQuantity.value | 3.5 | Optional | ||
Date - PSA 2 | observation04 | Observation.valueInteger | 3 | Optional | ||
PSA 3 | observation05 | Observation.component.valueQuantity.value | 4.1 | Optional | ||
Date - PSA 3 | observation05 | Observation.valueInteger | 4 | Optional | ||
PSA 4 | observation06 | Observation.component.valueQuantity.value | 2.7 | Optional | ||
Date - PSA 4 | observation06 | Observation.valueInteger | 5 | Optional | ||
PSA 5 | observation07 | Observation.component.valueQuantity.value | 5.8 | Optional | ||
Date - PSA 5 | observation07 | Observation.valueInteger | 6 | Optional | ||
Biochemical recurrence | observation08 | Observation.component.valueBoolean | true | Optional | ||
Date of biochemical recurrence | observation08 | Observation.component.valueInteger | 2 | Optional | If Biochemical recurrence=true, else delete component Date of biochemical recurrence | |
Free period of BR | observation08 | Observation.component.valueInteger | 4 | Optional | If Biochemical recurrence=true, else delete component Free period of BR | |
Magnetic resonance imaging (MRI) timepoints | observation08 | Observation.component.valueBoolean | true | Optional | ||
Annotated MRI timepoints | observation08 | Observation.component.valueCodeableConcept.coding.code | 1 | Optional | CodeSystem | |
Observation.component.valueCodeableConcept.coding.display | Positive annotation | Optional | ||||
Computerized axial tomography (CT) timepoints | observation08 | Observation.component.valueBoolean | true | Optional | ||
Annotated CT timepoints | observation08 | Observation.component.valueCodeableConcept.coding.code | 1 | Optional | CodeSystem | |
Observation.component.valueCodeableConcept.coding.display | Positive annotation | Optional | ||||
Bone Scintigraphy Scan timepoints | observation08 | Observation.component.valueBoolean | true | Optional | ||
Annotated Bone Scintigraphy Scan timepoints | observation08 | Observation.component.valueCodeableConcept.coding.code | 1 | Optional | CodeSystem | |
Observation.component.valueCodeableConcept.coding.display | Positive annotation | Optional | ||||
Positron emission tomography (PET-choline) timepoints | observation08 | Observation.component.valueBoolean | true | Optional | ||
Annotated PET-choline timepoints | observation08 | Observation.component.valueCodeableConcept.coding.code | 1 | Optional | CodeSystem | |
Observation.component.valueCodeableConcept.coding.display | Positive annotation | Optional | ||||
Histopathology Image timepoints | observation08 | Observation.component.valueBoolean | true | Optional | ||
Annotated Histopathology Image timepoints | observation08 | Observation.component.valueCodeableConcept.coding.code | 1 | Optional | CodeSystem | |
Observation.component.valueCodeableConcept.coding.display | Positive annotation | Optional | ||||
Xray timepoints | observation08 | Observation.component.valueBoolean | true | Optional | ||
Annotated Xray timepoints | observation08 | Observation.component.valueCodeableConcept.coding.code | 1 | Optional | CodeSystem | |
Observation.component.valueCodeableConcept.coding.display | Positive annotation | Optional | ||||
Salvage therapy with radiotherapy | observation08 | Observation.component.valueBoolean | true | Optional | ||
PSA nadir post-RDT | observation08 | Observation.component.valueQuantity.value | 4.26 | Optional | ||
Salvage therapy with ADT | observation08 | Observation.component.valueBoolean | true | Optional | ||
Distance recurrence | observation08 | Observation.component.valueBoolean | true | Optional |
2.2.4. Tab template Treatment
Variable | ID resource | FHIR message location | Example value | Required by FHIR specification | INCISVE Profile | Comments |
---|---|---|---|---|---|---|
Label treatment | observation09 | Observation.code.coding.code | 1 | Mandatory | CodeSystem | |
Observation.code.coding.display | After 1st Treatment-1st FollowUp | Mandatory | ||||
Define other if selected treatment | observation09 | Observation.category.text | Between 1st and 2nd dose of CT | Optional | ||
Treatment | procedure01 | Procedure.code.coding.code | 1 | Optional | CodeSystem | |
Procedure.code.coding.display | Active surveillance | Optional | ||||
Date of treatment | procedure01 | Procedure.performedString | 2 | Optional | ||
Type of therapy | procedure01 | Procedure.category.coding.code | 0 | Optional | CodeSystem | |
Procedure.category.coding.display | EBRT = External Beam Radiotherapy | Optional | ||||
Lymph node dissection | observation09 | Observation.component.valueBoolean | true | Optional | ||
Response to treatment | observation09 | Observation.component.valueCodeableConcept.coding.code | 1 | Optional | CodeSystem | |
Observation.component.valueCodeableConcept.coding.display | CR | Optional |
2.2.5. Tab template Histology - Mutations
Variable | ID resource | FHIR message location | Example value | Required by FHIR specification | INCISVE Profile | Comments |
---|---|---|---|---|---|---|
Biopsy label | procedure02 | Procedure.statusReason.coding.code | 1 | Optional | CodeSystem | |
Procedure.statusReason.coding.display | After 1st Treatment | Optional | ||||
Date of Biopsy | procedure02 | Procedure.performedString | 3 | Optional | ||
Type of Biopsy | procedure02 | Procedure.category.coding.code | 1 | Optional | CodeSystem | |
Procedure.category.coding.display | Randomized biopsy | Optional | ||||
Define other if selected histology-mutations | procedure02 | Procedure.category.text | Between 1st and 2nd dose of CT | Optional | ||
Max Gleason | observation10 | Observation.component.valueInteger | 7 | Optional | ||
ISUP group | observation10 | Observation.component.valueInteger | 4 | Optional | ||
% of affected cores in the right lobe | observation10 | Observation.component.valueQuantity.value | 95 | Optional | ||
% of affected cores in the left lobe | observation10 | Observation.component.valueQuantity.value | 60 | Optional | ||
Intraductal | observation10 | Observation.component.valueBoolean | true | Optional | ||
Cribriform features | observation10 | Observation.component.valueBoolean | true | Optional | ||
pT histology-mutations | observation10 | Observation.component.valueCodeableConcept.coding.code | 1 | Optional | CodeSystem | |
Observation.component.valueCodeableConcept.coding.display | pT1 | Optional | ||||
Gleason Total PR | observation10 | Observation.component.valueInteger | 6 | Optional | ||
Seminal vesicle invasion histology-mutations | observation10 | Observation.component.valueBoolean | true | Optional | ||
Extraprostatic extension | observation10 | Observation.component.valueBoolean | true | Optional | ||
pN histology-mutations | observation10 | Observation.component.valueCodeableConcept.coding.code | 1 | Optional | CodeSystem | |
Observation.component.valueCodeableConcept.coding.display | N1 | Optional | ||||
Sampling | observation11 | Observation.component.valueString | Light microscopy | Optional | ||
Staining/type of assay performed | observation11 | Observation.component.valueString | Hematoxylin | Optional | ||
Magnification | observation11 | Observation.component.valueString | x10 | Optional | ||
Other sample-related information | observation11 | Observation.component.valueString | example | Optional |
2.2.6. Tab template Lab Results
Variable | ID resource | FHIR message location | Example value | Required by FHIR specification | INCISVE Profile | Comments |
---|---|---|---|---|---|---|
Exam label | observation12 | Observation.code.coding.code | 1 | Mandatory | CodeSystem | |
Observation.code.coding.display | After 1st Treatment | Mandatory | ||||
Define other if selected lab results | observation12 | Observation.category.text | Between 1st and 2nd dose of CT | Optional | ||
Date Laboratory | observation12 | Observation.valueInteger | 2 | Optional | ||
Leukocytes | observation12 | Observation.component.valueQuantity.value | 15.8 | Optional | ||
Hemoglobin (Hb) | observation12 | Observation.component.valueQuantity.value | 16.7 | Optional | ||
Hematocrit (HCT) | observation12 | Observation.component.valueQuantity.value | 47.4 | Optional | ||
Platelets (PLT) | observation12 | Observation.component.valueQuantity.value | 287 | Optional | ||
Blood sugar level | observation12 | Observation.component.valueQuantity.value | 87 | Optional | ||
Insulin | observation12 | Observation.component.valueQuantity.value | 4 | Optional | ||
Urea | observation12 | Observation.component.valueQuantity.value | 36 | Optional | ||
Creatinine | observation12 | Observation.component.valueQuantity.value | 0.72 | Optional | ||
Uric acid | observation12 | Observation.component.valueQuantity.value | 3.5 | Optional | ||
Potassium | observation12 | Observation.component.valueQuantity.value | 4.8 | Optional | ||
Sodium | observation12 | Observation.component.valueQuantity.value | 142 | Optional | ||
Calcium | observation12 | Observation.component.valueQuantity.value | 9.31 | Optional | ||
Cholesterol | observation12 | Observation.component.valueQuantity.value | 197 | Optional | ||
Triglycerides | observation12 | Observation.component.valueQuantity.value | 59 | Optional | ||
HDL | observation12 | Observation.component.valueQuantity.value | 60 | Optional | ||
Low density lipoprotein (LDL) | observation12 | Observation.component.valueQuantity.value | 120 | Optional | ||
SGOT | observation12 | Observation.component.valueQuantity.value | 19 | Optional | ||
SGPT | observation12 | Observation.component.valueQuantity.value | 33 | Optional | ||
y-GT | observation12 | Observation.component.valueQuantity.value | 14 | Optional | ||
ALP | observation12 | Observation.component.valueQuantity.value | 227 | Optional | ||
LDH | observation12 | Observation.component.valueQuantity.value | 270 | Optional | ||
TSH | observation12 | Observation.component.valueQuantity.value | 0.73 | Optional | ||
Cortisol | observation12 | Observation.component.valueQuantity.value | 22 | Optional | ||
CRP | observation12 | Observation.component.valueQuantity.value | 0.5 | Optional | ||
BNP | observation12 | Observation.component.valueQuantity.value | 120 | Optional | ||
HbA1c | observation12 | Observation.component.valueQuantity.value | 5.1 | Optional | ||
Total protein in urine | observation12 | Observation.component.valueQuantity.value | 80 | Optional | ||
Creatinine urine | observation12 | Observation.component.valueQuantity.value | 100 | Optional |
In order to build the message for each patient, and to report the variables in the table above, the following steps must be followed:
- Search inside the message text with the same word that appears in the "Variable" column.
- Check that the resource to which it redirects us has the same id as in the “ID resource” column.
- Enter the desired value in the double quoted space of the attribute indicated in the "Fhirmessage location" column.
- Do not delete any part of the message, the whole structure must be the same, just change the example value, for the value you want to report. Do not change the order.
- If you don’t have the information of the element, you can delete the node, but validate XML to ensure the structure of the XML FHIR is still correct and has no errors (you can omit the warnings in the validation).
The entire message structure is static except for the values given for the attributes in the "Fhir message location" column and the timestamp which is the current datatime.
2.3. Description mandatory/optional of term
There will be mandatory/optional for different scenarios, according to different scenarios corresponding to different rules. These scenarios are described separately below.
- If the attribute is mandatory, all attribute structure information for this column must be reported. It cannot be deleted.
Label timepoints | observation08 | Observation.code.coding.code | 1 | Mandatory | CodeSystem | |
Observation.code.coding.display | After 1st Treatment | Mandatory |
- If the attribute is mandatory with a comment reporting the condition of this variable, all attribute structure information for this column must be reported, unless the variable has not value for report, all resources must be deleted.
Clinical findings general info | condition02 | Condition.note.text | Dysuria | Mandatory | If Clinical findings general info=null delete all condition02 |
- If an optional attribute needs to be deleted, all attribute structures except for the primary resource (e.g., observation, procedure, condition, etc.) must be deleted if that primary resource has another variable. For example, for the variable Gender, you can delete the attribute gender from the resource Patient, while other attributes such as identifier have values and do not have to be deleted.
Current state | patient01 | Patient.extension.valueCode | 0 | Optional | Extension |
- If the attribute is optional, this happens in observation.component because Observation.component has two parts inside, Observation.component.code and Observation.component.value (this value can be valueCodeableConcept, ValueBoolean, ValueSrting, valueInteger, valueQuantity, etc.). If the variable has a value that needs to be informed, then code is mandatory, that code is mostly the SNOMED CT code or LOINC code for that variable. This means that if you need to delete variable, then you need to delete all Observation.component and cannot delete the whole Observation resource, unless there are no other elements in the same Observation, then you can delete the whole Observation resource.
Annotated CT baseline | observation02 | Observation.component.valueCodeableConcept.coding.code | 1 | Optional | CodeSystem | |
Observation.component.valueCodeableConcept.coding.display | Positive annotation | Optional |
- If the attribute is optional with a comment reporting the condition of this variable, you can delete all resource if the variable has not value for report.
Date of biochemical recurrence | observation08 | Observation.component.valueInteger | 2 | Optional | If Biochemical recurrence=true, else delete component Date of biochemical recurrence |