---
title: FHIR Oncology PHR Use-case
tags: fhir-project
---
[DRAFT] FHIR Oncology PHR Use-case
===
---
## Table of Contents
[TOC]
---
## 1. Background
Many patients prefer to receive care in the comfort of their homes whenever possible. However, this can pose challenges for healthcare providers in monitoring patients' health remotely, especially in scenarios where patients receive treatment at healthcare facilities far from their home.
A Personal Health Records (PHR) platform enables patients to report their health status, symptoms, and medication adherence from home. The PHR system plays an important role, especially for scenarios involving chronic diseases. Patients with chronic diseases such as cancer require require repetitive treatment (e.g. radiotherapy, chemotherapy, etc.), thus they need ongoing monitoring of their vital signs, symptoms, and treatment responses. One of the common observed symptoms in patients with cancer is changes in body weight, which can have significant psychological effects on the patients. This monitoring is essential for detecting any changes or complications early, which can significantly impact treatment outcomes and patient survival rates.
Patients with chronic diseases often receive care from multiple healthcare providers across different departments, including primary care physicians, oncologists, radiotherapist, nurses, and home health aides. In this case, PHR can serves as a centralized platform for storing and sharing patients' health information, facilitating communication and collaboration among healthcare team members, and ensuring continuity of care.
Additionally, integrating alert mechanisms for unusual symptoms or critical changes in vital signs can notify healthcare providers promptly. These alerts can be routed to shift nurses or emergency personnel who are available to respond, even during weekends or off-hours.
In this scenario, both data from PHR and data from healthcare facilities must be sent to a centralized platform to enable effective data sharing. In order to build a centralized platform that facilitates seamless integration and accessibility of patient information, we are going to adopt an internationally standardized specification format known as Fast Healthcare Interoperability Resources (FHIR). FHIR provides a set of resources and standards for exchanging healthcare information electronically, enabling interoperability between different healthcare systems. This standardization will allow for better care coordination, more accurate and timely patient information, and a more integrated approach to healthcare management.
<!--Patient daily monitoring vital sign, drug consumption, and condition is very important in many scenario either for elderly home care scenario or chronic disease such as cancer where patient need a repetitive treatment such as radiotherapy, chemotherapy, and etc. This required the help of PHR for patient to report their self monitoring result via PHR. Currently the lack of system is:
1. Some unusual symptom occurs post treatment worries patient and family, nurse and physician will not always available to pick up your phone call especially on weekend. Shift nurse or emergency nurse can be available to monitor you via PHR
2. When patient seek medication in a long distance healthcare facility, they might not able to have vital sign check at the healthcare facility everyday. Thus checking
3. Patient might forget their own drug consumption time especially for old people, having to track patient drug administration on PHR will help monitoring patient health-->
## 2. Goals
**Business Goals**
* Improve care coordination between healthcare facility and patient remotely
**Technical Goals**
* Provide an Implementation Guide (IG) for implementing the FHIR Standard for PHR Oncology Use-Case
## 3. Integration Methods
The integration workflow and resources used for PHR Oncology use-case can be seen in Figure 1

<center>Figure 1. Integration Architecture FHIR Data Consumer and Provider </center><br>
<p>
Based on Figure 1, it shows an advance health data sharing system that use FHIR (Fast Healthcare Interoperability Resources) standard to ensure secure and efficient data transaction. Personal Health Record (PHR) systems and/or healthcare facility system serve the <b>Data Provider</b> role on the left. These providers input the health data via mobile devices or other interfaces, which is then transmitted to a central FHIR Server using HTTP methods such as POST, PUT, DELETE, and GET. This methods allow for dynamics updating and secure the submission of health information from various of healtcare to a centralized database.
</p>
<p>
The processed health data is retrieved by the <b>Data Consumer</b> on the right side of the figure throught HTTP GET request from the FHIR Server. Similar to the data providers, the customers can be either PHR System or healthcare facility system. The utilize the data for diverse purposes, ranging from patient care to medical research. Through enhanced data interoperability, this architecture's FHIR server plays a key role in guaranteeing that data providers and consumers-whether they be PHR systems or medical facilities-can access and use the data safely and effectively, boosting the potential of healthcare services and research.
</p>
<!--Scenario 2. EHR Drug Record History

Scenario 3. PHR Vital Sign, Condition, and Medication Self Management
-->

<center>Figure 2. Oncology PHR Data and Resources </center><br>
<p>
The workflow illustrated in Figure 2 highlights the interaction between the PHR (Personal Health Record) platform and various repositories that store Patient, Vital Sign, and Condition data. The PHR platform plays a crucial role as the data provider, enabling users to input records/data such as patient's information, vital signs, and conditions, into the system. Users of Data Provider take an active role in managing their personal health by directly submitting informations to the PHR platform. While the Data Consumer, represented mainly by healthcare facility system. The Data Consumer access and utilize the data provided by the patient for further medical analysis and treatment planning.
**The Patient Repository** stores patient information, such as demographic data, identification, and other personal health records. There are two main scenarios for interacting with this repository. The first is the Patient Provider Scenario, where an entity (e.g., a healthcare provider or the patient themselves) submits or provides patient data to the repository. The second is the Patient Consumer Scenario, where an entity (e.g., medical personnel or the patient themselves) retrieves patient data from the repository.
**The Vital Sign Repository** holds crucial health data related to the patient's vital signs, such as body weight, body height, body temperature, blood pressure, and oxygen saturation. Two scenarios are involved here. The Vital Sign Provider Scenario refers to an entity that provides or updates vital sign data in the repository. This could be a healthcare provider during a patient visit or a value meassured by the patient themselves. The Vital Sign Consumer Scenario also allows an entity, like a medical personnel or the patient themselves, to retrieve the vital sign data to monitor the current vitals.
**The Condition Repository** stores information about the patient's health conditions which is the current symptoms and the side-effects their having. There are two scenarios for interacting with this repository. The Condition Provider Scenario involves a healthcare provider or the patient themselves inputting or updating condition data. The Condition Consumer Scenario allows entities like hospital systems or the patient themselves to access or retrieve condition data for diagnosis, treatment planning, or monitoring purposes.
Overall, the diagram highlights how different entities can interact with the PHR as either providers (the ones inputting data) or consumer (the ones retrieving data), across three key health information areas: Patient's Information, Patient's Vital Signs, and Patient's Conditions. It emphasizes the flow of data between actors and repositories within the context of an Oncology PHR system, ensuring that relevant health data can be efficiently shared and accessed for optimal use of PHR.
<p>
<!--menjelaskan fhir melempar variable nama, patient id, email ke rumah sakit setelah pasien mengisi 3 tersebut-->
<!--data provider / data consumer bisa siapa aja, menjelaskan secara general dulu. dta prvider bisa http post, put, delete, get, masuk ke fhir server (sotre, process, serve), lalu data customer akan http get dari fhir server-->
</p>
Below are the list of FHIR Resources used for PHR Oncology use-case:
<table class="table-fhir-resources">
<tr>
<th>Category</th>
<th>No</th>
<th>Resource</th>
<th>Entry Mandatory</th>
</tr>
<tr>
<td rowspan="2">Base</td>
<td>1</td>
<td>Patient</td>
<td><b>Required</b></td>
</tr>
<tr>
<td>2</td>
<td>Organization</td>
<td><b>Required</b></td>
</tr>
<tr>
<td rowspan="8">Clinical</td>
<td>3</td>
<td>Bundle</td>
<td><i>Optional</i></td>
</tr>
<tr>
<td>4</td>
<td>Composition</td>
<td><i>Optional</i></td>
</tr>
<tr>
<td>5</td>
<td>Condition</td>
<td><b>Required</b></td>
</tr>
<tr>
<td>6</td>
<td>DocumentReference</td>
<td><i>Optional</i></td>
</tr>
<tr>
<td>7</td>
<td>Observation</td>
<td><b>Required</b></td>
</tr>
</table>
### Variable List
<a id="vpt"></a>
<h4>Patient</h4>
<table>
<caption>Variable Table for FHIR Patient</caption>
<thead>
<tr>
<th>Path</th>
<th>Description</th>
<th>Type</th>
<th>Notes</th>
</tr>
</thead>
<body>
<tr>
<td>name.text</td>
<td>Full name of patient</td>
<td>String</td>
<td>Need to be able to track patient's multiple names</td>
</tr>
<tr>
<td>name.family</td>
<td>Patient's family name</td>
<td>String</td>
<td>Ex. Smith</td>
</tr>
<tr>
<td>name.given</td>
<td>Patient's given name</td>
<td>String</td>
<td>Ex. Billy James</td>
</tr>
<tr>
<td>telecom</td>
<td>A contact detail of the patient</td>
<td>String</td>
<td>Only store patient's email data</td>
</tr>
</body>
</table>
<br>
<a id="ovs"></a>
<h4>Observation (Vital Signs)</h4>
<table>
<thead>
<tr>
<th>Path</th>
<th>Description</th>
<th>Type</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>status</td>
<td>Observation Status</td>
<td>code</td>
<td>Observation status (ex: final, cancelled)</td>
</tr>
<tr>
<td>category</td>
<td>Observation Variable Name</td>
<td>CodeableConcept</td>
<td>(ex: Body Weight)</td>
</tr>
<tr>
<td>code</td>
<td>code</td>
<td>CodeableConcept</td>
<td>The system code used (ex: 29463-7)</td>
</tr>
<tr>
<td>subject</td>
<td>The Patient</td>
<td>Reference</td>
<td>Who and/or what the observation is about</td>
</tr>
<tr>
<td>valueQuantity.code</td>
<td>Value Quantity Code</td>
<td>CodeableConcept</td>
<td>This is a code that identifies the specific unit of measure used for the quantity.</td>
</tr>
<tr>
<td>valueQuantity.system</td>
<td>Value Quantity System</td>
<td>CodeableConcept</td>
<td>string that specifies the unit of measurement used for the quantity.</td>
</tr>
<tr>
<td>valueQuantity.unit</td>
<td>UCUM unit</td>
<td>String</td>
<td>Units measure (ex: Kg)</td>
</tr>
<tr>
<td>valueQuantity.value</td>
<td>The Value Measured</td>
<td>Quantity</td>
<td>The Result Measured</td>
</tr>
<tr>
<td>component[i].code</td>
<td>Component results</td>
<td>BackboneElement</td>
<td>For this use-case it is only used for variable Vital-Sign Blood Pressure, because it has 2 values to be recorded <b>(systolic and diastolic)</b></td>
</tr>
<tr>
<td>component[i].valueQuantity</td>
<td>Component results</td>
<td>BackboneElement</td>
<td>For this use-case it is only used for variable Vital-Sign Blood Pressure, because it has 2 values to be recorded <b>(systolic and diastolic)</b> where the value data type is float</td>
</tr>
<tr>
<td>effectiveDateTime</td>
<td>Timestamp</td>
<td>dateTime</td>
<td>The Date and Time recorded (ex: 2018-03-11T16:07:54Z) </td>
</tr>
</tr>
</tbody>
</table>
<a href="https://build.fhir.org/observation.html">Reference Used for Observation</a>
<br>
<br>
<a id="ocse"></a>
<h4>Condition (Symptom)</h4>
<table>
<caption>Variable Table for FHIR Condition (Symptom Condition)</caption>
<thead>
<tr>
<th>Path</th>
<th>Description</th>
<th>Type</th>
<th colspan="3">Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>code</td>
<td>code condition of patient's condition</td>
<td>CodeableConcept</td>
<td colspan="3">Code from codesystem (codesystem Snomed ex: 84229001)</td>
</tr>
<tr>
<td>clinicalStatus</td>
<td>The clinical status of the condition</td>
<td>CodeableConcept</td>
<td colspan="3">active | recurrence | relapse | inactive | remission | resolved | unknown</td>
</tr>
<tr>
<td>category</td>
<td>Category</td>
<td>CodeableConcept</td>
<td colspan="3">A category assigned to the condition</td>
</tr>
<tr>
<td rowspan="2">severity</td>
<td rowspan="2">The level of condition</td>
<td rowspan="2">CodeableConcept</td>
<td>Mild</td>
<td>Moderate</td>
<td>High</td>
</tr>
<tr>
<td>255604002</td>
<td>6736007</td>
<td>24484000</td>
</tr>
<tr>
<td>subject</td>
<td>The Patient</td>
<td>reference</td>
<td colspan="3">Patient/Who has the condition</td>
</tr>
<tr>
<td>onsetDateTime</td>
<td>Timestamp</td>
<td>dateTime</td>
<td colspan="3">Patient's Condition started</td>
</tr>
<tr>
<td>recordedDate</td>
<td>Timestamp</td>
<td>dateTime</td>
<td colspan="3">Date condition was first recorded</td>
</tr>
</tbody>
</table>
<a href="https://build.fhir.org/condition.html">Reference Used for Condition</a><br><br>
---
### Integration Steps for PHR Platform
<h4>Step 1. Patient Log In to PHR</h4>
<p>
Assuming that we use google sign-in authentication for patient account authorization. In our PHR system, we are going to use google sign-in as authentication platform. Assuming that we have a separated database called PHR DB. PHR DB will use google firebase DB for storing PHR user account information such as google ID, PHR ID, and FHIR Patient ID.
</p>
<h5>
Steps for Log In to PHR
</h5>
<ol>
<li class="step">
<strong>
User use Google Sign-In
</strong>
<p>
In this step, user will use google sign-in. After the user is successfully signs in, the system will get the user's google ID token to be validates by the PHR backend system.
</p>
</li>
<li class="step">
<strong>Make sure Google token ID is Validated</strong>
<p>
When the google token ID is successfully validate by PHR Backend System, it will retrieve 4 fields including email, name, given name, and family name.
</p>
</li>
<li class="step">
<strong>Check if User's email exist in PHR DB</strong>
<ul>
<li>If User's email not stored in PHR DB then POST a new FHIR Patient by sorting these values. Each piece of patient information such as email, name, given name and family name corresponds to a specific FHIR "path" where it is stored in the system. For an example, the Patient's email will be stored under Patient.telecom[0].value but if only Patient.telecom[0].system, is equals to "email". This means that the email field for the patient in FHIR is found in the first telecom entry (index 0) and it specifically refers to an email due to the system is set to "email".</li>
<table>
<thead>
<tr>
<th>Variable Name</th>
<th>FHIR Path</th>
</tr>
</thead>
<tbody>
<tr>
<td>Email</td>
<td>Patient.telecom[0].value where Patient.telecom[0].system = "email"</td>
</tr>
<tr>
<td>Name</td>
<td>Patient.name[0].text</td>
</tr>
<tr>
<td>Given Name</td>
<td>Patient[0].given</td>
</tr>
<tr>
<td>Family Name</td>
<td>Patient.name[0].family</td>
</tr>
</tbody>
</table>
<pre>
<code class="language-json">
{
"resourceType": "Patient",
"email": "peterchalmers@gmail.com",
"name": {
"use": "official",
"family": "Chalmers",
"given": [
"Peter",
"James"
]
}
}
</code>
</pre>
<li>
If User's email already exist in PHR DB
</li>
<p>
When User's email already exist in PHR DB, the system will get FHIR Patient ID in PHR DB.
</p>
</ul>
</li>
</ol>
<h4>Step 2. Patient input vital sign data into PHR</h4>
<p>The User inputs the appropriate values for each type of vital sign into the PHR. The vital signs used here in our PHR Scope are:</p>
<ol>
<li>Body Weight (measured in Kilogram)</li>
<li>Body Height (measured in Centimeter)</li>
<li>Body Temperature (measured in Celsius)</li>
<li>Blood Pressure - Systolic (measured in Millimeters of mercury)</li>
<li>Blood Pressure - Diastolic (measured in Millimeters of mercury)</li>
<li>Oxygen Saturation (measured in per minutes)</li>
</ol>
<p>For each vital signs the user has inputted, the PHR will send it in form of JSON code to FHIR Server. The following is FHIR path terminology along with examples of JSON for each observation vital signs:</p>
<ol>
<li>Body Weight</li>
<table>
<thead>
<tr>
<th>FHIR Path</th>
<th>Terminology/ Input Format</th>
</tr>
</thead>
<tbody>
<tr>
<td>Observation.category[0].coding[0].system</td>
<td>http://terminology.hl7.org/CodeSystem/observation-category</td>
</tr>
<tr>
<td>Observation.category[0].coding[0].code</td>
<td>vital-signs</td>
</tr>
<tr>
<td>Observation.category[0].coding[0].display</td>
<td>Vital Signs</td>
</tr>
<tr>
<td>Observation.code.coding[0].system</td>
<td>http://loinc.org</td>
</tr>
<tr>
<td>Observation.code.coding[0].code</td>
<td>29463-7</td>
</tr>
<tr>
<td>Observation.code.coding[0].display</td>
<td>Body Weight</td>
</tr>
<tr>
<td>Observation.valueQuantity.value</td>
<td>{Decimal data type}</td>
</tr>
<tr>
<td>Observation.valueQuantity.system</td>
<td>http://unitsofmeasure.org</td>
</tr>
<tr>
<td>Observation.valueQuantity.code</td>
<td>kg</td>
</tr>
<tr>
<td>Observation.valueQuantity.unit</td>
<td>kg</td>
</tr>
</tbody>
</table>
JSON Example for Body Weight:
<pre><code class="language-json">
{
"resourceType": "Observation",
"status": "final",
"category": [ {
"coding": [ {
"system": "http://terminology.hl7.org/CodeSystem/observation-category",
"code": "vital-signs",
"display": "Vital Signs"
} ]
} ],
"code": {
"coding": [ {
"system": "http://loinc.org",
"code": "29463-7",
"display": "Body Weight"
} ],
"text": "Vital Sign Observation"
},
"subject": {
"reference": "Patient/2ce6f9c5-8ebc-4f88-8f85-f45e411b6551"
},
"effectiveDateTime": "2024-10-05T07:12:00.000Z",
"valueQuantity": {
"value": 90,
"unit": "kg",
"system": "http://unitsofmeasure.org",
"code": "kg"
}
}
</code></pre>
<li>Body Height</li>
<table>
<thead>
<tr>
<th>FHIR Path</th>
<th>Terminology/ Input Format</th>
</tr>
</thead>
<tbody>
<tr>
<td>Observation.category[0].coding[0].system</td>
<td>http://terminology.hl7.org/CodeSystem/observation-category</td>
</tr>
<tr>
<td>Observation.category[0].coding[0].code</td>
<td>vital-signs</td>
</tr>
<tr>
<td>Observation.category[0].coding[0].display</td>
<td>Vital Signs</td>
</tr>
<tr>
<td>Observation.code.coding[0].system</td>
<td>http://loinc.org</td>
</tr>
<tr>
<td>Observation.code.coding[0].code</td>
<td>8302-2</td>
</tr>
<tr>
<td>Observation.code.coding[0].display</td>
<td>Body height</td>
</tr>
<tr>
<td>Observation.valueQuantity.value</td>
<td>{Decimal data type}</td>
</tr>
<tr>
<td>Observation.valueQuantity.system</td>
<td>http://unitsofmeasure.org</td>
</tr>
<tr>
<td>Observation.valueQuantity.code</td>
<td>cm</td>
</tr>
<tr>
<td>Observation.valueQuantity.unit</td>
<td>cm</td>
</tr>
</tbody>
</table>
JSON Example for Body Height:
<pre><code class="language-json">
{
"resourceType": "Observation",
"status": "final",
"category": [ {
"coding": [ {
"system": "http://terminology.hl7.org/CodeSystem/observation-category",
"code": "vital-signs",
"display": "Vital Signs"
} ]
} ],
"code": {
"coding": [ {
"system": "http://loinc.org",
"code": "3137-7",
"display": "Body height Measured"
} ],
"text": "Body height Measured"
},
"subject": {
"reference": "Patient/9a3ef9e7-3f88-46fa-9150-eb2e6cd19b5c"
},
"effectiveDateTime": "2024-09-25T03:33:00.000Z",
"valueQuantity": {
"value": 178.6,
"unit": "cm",
"system": "http://unitsofmeasure.org",
"code": "cm"
}
}
</code></pre>
<li>Body Temperature</li>
<table>
<thead>
<tr>
<th>FHIR Path</th>
<th>Terminology/ Input Format</th>
</tr>
</thead>
<tbody>
<tr>
<td>Observation.category[0].coding[0].system</td>
<td>http://terminology.hl7.org/CodeSystem/observation-category</td>
</tr>
<tr>
<td>Observation.category[0].coding[0].code</td>
<td>vital-signs</td>
</tr>
<tr>
<td>Observation.category[0].coding[0].display</td>
<td>Vital Signs</td>
</tr>
<tr>
<td>Observation.code.coding[0].system</td>
<td>http://loinc.org</td>
</tr>
<tr>
<td>Observation.code.coding[0].code</td>
<td>8310-5</td>
</tr>
<tr>
<td>Observation.code.coding[0].display</td>
<td>Body temperature</td>
</tr>
<tr>
<td>Observation.valueQuantity.value</td>
<td>{Decimal data type}</td>
</tr>
<tr>
<td>Observation.valueQuantity.system</td>
<td>http://unitsofmeasure.org</td>
</tr>
<tr>
<td>Observation.valueQuantity.code</td>
<td>Cel</td>
</tr>
<tr>
<td>Observation.valueQuantity.unit</td>
<td>Cel</td>
</tr>
</tbody>
</table>
JSON Example for Body Temperature:
<pre><code class="language-json">
{
"resourceType": "Observation",
"status": "final",
"category": [ {
"coding": [ {
"system": "http://terminology.hl7.org/CodeSystem/observation-category",
"code": "vital-signs",
"display": "Vital Signs"
} ]
} ],
"code": {
"coding": [ {
"system": "http://loinc.org",
"code": "8310-5",
"display": "Body Temperature"
} ],
"text": "Vital Sign Observation"
},
"subject": {
"reference": "Patient/6d7b547c-40ed-4ded-b31e-5a5b78005c9b"
},
"effectiveDateTime": "2024-09-20T08:53:00.000Z",
"valueQuantity": {
"value": 45.3,
"unit": "°C",
"system": "http://unitsofmeasure.org",
"code": "Cel"
}
}
</code></pre>
<li>Blood Pressure - Systolic and Diastolic</li>
<table>
<tr>
<th>FHIR Path</th>
<th>Terminology/ Input Format</th>
</tr>
</thead>
<tbody>
<tr>
<td>Observation.category[0].coding[0].system</td>
<td>http://terminology.hl7.org/CodeSystem/observation-category</td>
</tr>
<tr>
<td>Observation.category[0].coding[0].code</td>
<td>vital-signs</td>
</tr>
<tr>
<td>Observation.category[0].coding[0].display</td>
<td>Vital Signs</td>
</tr>
<tr>
<td>Observation.code.coding[0].system</td>
<td>http://loinc.org</td>
</tr>
<tr>
<td>Observation.code.coding[0].code</td>
<td>35094-2</td>
</tr>
<tr>
<td>Observation.code.coding[0].display</td>
<td>Blood Pressure Panel</td>
</tr>
<tr>
<td>Observation.component[0].code.coding.code</td>
<td>8480-6</td>
</tr>
<tr>
<td>Observation.component[0].code.coding.display</td>
<td>Blood Pressure - Diastolic</td>
</tr>
<tr>
<td>Observation.component[1].code.coding.code</td>
<td>8462-4</td>
</tr>
<tr>
<td>Observation.component[1].code.coding.display</td>
<td>Blood Pressure - Diastolic</td>
</tr>
<tr>
<td>Observation.valueQuantity.value</td>
<td>{Decimal data type}</td>
</tr>
<tr>
<td>Observation.valueQuantity.system</td>
<td>http://unitsofmeasure.org</td>
</tr>
<tr>
<td>Observation.valueQuantity.code</td>
<td>mm</td>
</tr>
<tr>
<td>Observation.valueQuantity.unit</td>
<td>mm</td>
</tr>
</tbody>
</table>
JSON Example for Blood Pressure (Systolic & Diastolic):
<pre><code class="language-json">
{
"resourceType": "Observation",
"status": "final",
"category": [ {
"coding": [ {
"system": "http://terminology.hl7.org/CodeSystem/observation-category",
"code": "vital-signs",
"display": "Vital Signs"
} ]
} ],
"code": {
"coding": [ {
"system": "http://loinc.org",
"code": "35094-2",
"display": "Blood Pressure Panel"
} ],
"text": "Blood Pressure Panel"
},
"subject": {
"reference": "Patient/1c84db05-9ac5-456b-8aea-56e4c56a0f62"
},
"effectiveDateTime": "2024-09-26T08:26:00.000Z",
"component": [ {
"code": {
"coding": [ {
"system": "http://loinc.org",
"code": "8480-6",
"display": "Systolic Blood Pressure"
} ]
},
"valueQuantity": {
"value": 90,
"unit": "mmHg",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
}
}, {
"code": {
"coding": [ {
"system": "http://loinc.org",
"code": "8462-4",
"display": "Diastolic Blood Pressure"
} ]
},
"valueQuantity": {
"value": 90,
"unit": "mmHg",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
}
} ]
}
</code></pre>
<li>Oxygen Saturation</li>
<table>
<thead>
<tr>
<th>FHIR Path</th>
<th>Terminology/ Input Format</th>
</tr>
</thead>
<tbody>
<tr>
<td>Observation.category[0].coding[0].system</td>
<td>http://terminology.hl7.org/CodeSystem/observation-category</td>
</tr>
<tr>
<td>Observation.category[0].coding[0].code</td>
<td>vital-signs</td>
</tr>
<tr>
<td>Observation.category[0].coding[0].display</td>
<td>Vital Signs</td>
</tr>
<tr>
<td>Observation.code.coding[0].system</td>
<td>http://loinc.org</td>
</tr>
<tr>
<td>Observation.code.coding[0].code</td>
<td>9279-1</td>
</tr>
<tr>
<td>Observation.code.coding[0].display</td>
<td>Respiratory rate</td>
</tr>
<tr>
<td>Observation.valueQuantity.value</td>
<td>{Decimal data type}</td>
</tr>
<tr>
<td>Observation.valueQuantity.system</td>
<td>http://unitsofmeasure.org</td>
</tr>
<tr>
<td>Observation.valueQuantity.code</td>
<td>/min</td>
</tr>
<tr>
<td>Observation.valueQuantity.unit</td>
<td>/min</td>
</tr>
</tbody>
</table>
JSON Example for Oxygen Saturation:
<pre><code class="language-json">
{
"resourceType": "Observation",
"status": "final",
"category": [ {
"coding": [ {
"system": "http://terminology.hl7.org/CodeSystem/observation-category",
"code": "vital-signs",
"display": "Vital Signs"
} ]
} ],
"code": {
"coding": [ {
"system": "http://loinc.org",
"code": "59408-5",
"display": "Oxygen saturation in Arterial blood by Pulse oximetry"
} ],
"text": "Vital Sign Observation"
},
"subject": {
"reference": "Patient/54f3f5d8-b39c-4772-9755-e3e9bec7ca90"
},
"effectiveDateTime": "2024-10-04T11:14:00.000Z",
"valueQuantity": {
"value": 34.6,
"unit": "%",
"system": "http://unitsofmeasure.org",
"code": "%"
}
}
</code></pre>
</ol>
<br>
<a id="stp"></a>
<h4>Step 3. Patient input current symptoms & side effects into PHR</h4>
<p>
There are 2 type of conditions that will be send to the FHIR system which is Current Symptoms and Side Effects.
</p>
<p>In this section, the user will be shown a page containing a collection of questions in the form of a questionnaire and the user must fill it in by ticking the level of pain (severity of condition) they may experience (if there is none then they just need to leave the checkbox blank). Below are the list of pain levels in the questionnaire :</p>
<ol>
<li>Mild (Minimal Impact on Daily Life)</li>
<li>Moderate (Causing Problems in Daily Life)</li>
<li>Severe (Life-Threatening)</li>
</ol>
<p>When the user ticks one of the levels of pain on the questionnaire. The PHR will convert the ticks from the questionnaire (Condition data along with the severity code from the level of pain) to values that will be send to FHIR Server in a form of <a href="#codeexamplecon">JSON code</a>. Each questionnaire item can only be check once for the level of pain or none at all. </p>
<a href="#qcs">See the Questionnaire for Current Symptoms</a>
<br>
<a href="#qse">See the Questionnaire for Side Effects</a>
<br>
<br>
<p>The following is FHIR path terminology along with an example of JSON Condition.</p>
<table>
<caption>Condition</caption>
<thead>
<tr>
<th>FHIR Path</th>
<th colspan="3">Terminology/ Input Format</th>
</tr>
</thead>
<tbody>
<tr>
<td>Condition.severity[0].coding[0].system</td>
<td colspan="3">http://snomed.info/sct</td>
</tr>
<tr>
<td>Condition.code.coding[0].system</td>
<td colspan="3"><a href="#ter">Table 1. Terminology for Current Symptoms & Side Effects</a></td>
</tr>
<tr>
<td>Condition.code.coding[0].code</td>
<td colspan="3"><a href="#ter">Table 1. Terminology for Current Symptoms & Side Effects</a></td>
</tr>
<tr>
<td>Condition.code.coding[0].display</td>
<td colspan="3"><a href="#ter">Table 1. Terminology for Current Symptoms & Side Effects</a></td>
</tr>
<tr>
<td>Condition.clinicalStatus[0].coding[0].code</td>
<td colspan="3">active | recurrence | relapse | inactive | remission | resolved | unknown</td>
</tr>
<tr>
<td>Condition.clinicalStatus[0].coding[0].display</td>
<td colspan="3">Active| Recurrence | Relapse | Inactive | Remission | Resolved | Unknown</td>
</tr>
<tr>
<td>Condition.category[0].coding[0].system</td>
<td colspan="3">http://hl7.org/fhir/condition-category</td>
</tr>
<tr>
<td>Condition.category[0].coding[0].code</td>
<td colspan="3">problem-list-item</td>
</tr>
<tr>
<td>Condition.category[0].coding[0].display</td>
<td colspan="3">Problem List Item</td>
</tr>
<tr>
<td>Condition.severity[0].coding[0].code</td>
<td>255604002</td>
<td>6736007</td>
<td>24484000</td>
</tr>
<tr>
<td>Condition.severity[0].coding[0].display</td>
<td>Mild</td>
<td>Moderate </td>
<td>Severe</td>
</tr>
</tbody>
</table>
<a id="codeexamplecon"></a>
Example of JSON for Condition (case Fatigue):
<pre><code class="language-json">
{
"resourceType": "Condition",
"code": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "84229001",
"display": "Fatigue"
}
],
"text": "Fatigue"
},
"clinicalStatus": {
"coding": [
{
"system": "http://hl7.org/fhir/condition-clinical",
"code": "active",
"display": "Active"
}
],
"text": "Active"
},
"category": [
{
"coding": [
{
"system": "http://hl7.org/fhir/condition-category",
"code": "problem-list-item",
"display": "Problem List Item"
}
],
"text": "Problem List Item"
}
],
"severity" : {
"coding" : [{
"system" : "http://snomed.info/sct",
"code" : "255604002",
"display" : "Mild"
}]
},
"subject": {
"reference": "Patient/example-patient"
},
"onsetDateTime": "2024-09-01T00:00:00Z",
"recordedDate": "2024-09-01T00:00:00Z"
}
</code></pre>
---
### Terminology Table
<a id="ter"></a>
<a href="#qcs">Go to Questionnaire for Current Symptoms</a>
<a href="#qse">Go to Questionnaire for Side Effects</a>
<h4>Table 1. Terminology for Current Symptoms & Side Effects</h4>
<table style="width:100%; border-collapse: collapse;"border="1">
<thead>
<tr>
<th>Condition.code.coding.system</th>
<th>Condition.code.coding.code</th>
<th>Condition.code.coding.display</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>http://snomed.info/sct</td>
<td>84229001</td>
<td>Fatigue</td>
<td>Fatigue</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>249497008</td>
<td>Vomiting symptom (finding)</td>
<td>Vomiting</td>
</tr>
<tr>
<td>https://loinc.org/45699-6</td>
<td>45699-6</td>
<td>Dizziness or vertigo</td>
<td>Dizziness/Lightheadedness</td>
</tr>
<tr>
<td>http://terminology.hl7.org/CodeSystem/mdr</td>
<td>10005886</td>
<td>Blurred vision</td>
<td>Blurred vision or other visual disturbances</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>111516008</td>
<td>Blurring of visual image (finding)</td>
<td>Blurred vision or other visual disturbances</td>
</tr>
<tr>
<td>http://terminology.hl7.org/CodeSystem/mdr</td>
<td>10043882</td>
<td>Tinnitus</td>
<td>Tinnitus (ringing in the ears)</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>60862001</td>
<td>Tinnitus (finding)</td>
<td>Tinnitus (ringing in the ears)</td>
</tr>
<tr>
<td>http://terminology.hl7.org/CodeSystem/mdr</td>
<td>10039100</td>
<td>Rhinorrhea</td>
<td>Runny nose</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>26284000</td>
<td>Ulcer of mouth (disorder)</td>
<td>Mouth sores</td>
</tr>
<tr>
<td>https://loinc.org/58259-3</td>
<td>58259-3</td>
<td>Chest pain</td>
<td>Chest tightness</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>14760008</td>
<td>Constipation (finding)</td>
<td>Constipation or difficulty digesting foods</td>
</tr>
<tr>
<td>http://terminology.hl7.org/CodeSystem/mdr</td>
<td>10046539</td>
<td>Urinary frequency</td>
<td>Urinary frequency or urgency</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>29738008</td>
<td>Proteinuria (finding)</td>
<td>Proteinuria (protein in urine)</td>
</tr>
<tr>
<td>https://www.meddra.org/</td>
<td>10037032</td>
<td>Proteinuria</td>
<td>Proteinuria (protein in urine)</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>28538005</td>
<td>Hand foot syndrome</td>
<td>Hand-foot syndrome (tingling, redness, and pain in hands and feet)</td>
</tr>
<tr>
<td>http://www.cms.gov/Medicare/Coding/ICD9</td>
<td>ICD-9-CM 282.61</td>
<td>Hand foot syndrome</td>
<td>Hand-foot syndrome (tingling, redness, and pain in hands and feet)</td>
</tr>
<tr>
<td>https://www.meddra.org/</td>
<td>10054524</td>
<td>Palmar-plantar erythrodysesthesia syndrome</td>
<td>Hand-foot syndrome (tingling, redness, and pain in hands and feet)</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>707724006</td>
<td>Liver enzymes level above reference range (finding)</td>
<td>Liver problems, including elevated liver enzymes</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>166643006</td>
<td>Liver enzymes abnormal</td>
<td>Liver problems, including elevated liver enzymes</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>10017947</td>
<td>Gastrointestinal Disorder</td>
<td>Liver problems, including elevated liver enzymes</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>90708001</td>
<td>Kidney disease</td>
<td>Kidney problems, including proteinuria and decreased urine output</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>709044004</td>
<td>Chronic Kidney disease</td>
<td>Kidney problems, including proteinuria and decreased urine output</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>718403007</td>
<td>Decrease urine output</td>
<td>Kidney problems, including proteinuria and decreased urine output</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>84114007</td>
<td>Heart failure</td>
<td>Heart problems, including heart failure, irregular heartbeat, or chest pain</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>361137007</td>
<td>Irregular Heartbeat</td>
<td>Heart problems, including heart failure, irregular heartbeat, or chest pain</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>29857009</td>
<td>Chest Pain</td>
<td>Heart problems, including heart failure, irregular heartbeat, or chest pain</td>
</tr>
<tr>
<td>https://loinc.org/</td>
<td>58259-3</td>
<td>Chest Pain</td>
<td>Heart problems, including heart failure, irregular heartbeat, or chest pain</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>213313005</td>
<td>Infection after infusion (disorder)</td>
<td>Infusion reactions, such as fever, chills, rash, or difficulty breathing</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>61783001</td>
<td>Infusion reaction</td>
<td>Infusion reactions, such as fever, chills, rash, or difficulty breathing</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>95376002</td>
<td>Injection site disorder (disorder)</td>
<td>Pain at the injection site</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>370782005</td>
<td>Assessment of susceptibility for infection (procedure)</td>
<td>Increased risk of infections</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>102466009</td>
<td>Increased susceptibility to infections (finding)</td>
<td>Increased risk of infections</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>74474003</td>
<td>Gastrointestinal hemorrhage (disorder)</td>
<td>Bleeding, including gastrointestinal bleeding</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>416596008</td>
<td>Nail Changes</td>
<td>Nail changes, such as nail bed separation or brittle nails</td>
</tr>
<tr>
<td>https://www.meddra.org/</td>
<td>10028689</td>
<td>Nail Changes</td>
<td>Nail changes, such as nail bed separation or brittle nails</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>274640006</td>
<td>Fever with Chills</td>
<td>Fever and chills</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>386661006</td>
<td>Fever (finding)</td>
<td>Fever and chills</td>
</tr>
<tr>
<td>https://loinc.org/</td>
<td>54564-0</td>
<td>Shortness of breath</td>
<td>Shortness of breath or coughing</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>267036007</td>
<td>Dyspnea (finding)</td>
<td>Shortness of breath or coughing</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>263731006</td>
<td>Coughing (observable entity)</td>
<td>Shortness of breath or coughing</td>
</tr>
<tr>
<td>http://snomed.info/sct</td>
<td>91019004</td>
<td>Paresthesia (finding)</td>
<td>Fingertip tingling or numbness (paresthesia)</td>
</tr>
</tbody>
</table>
---
---
<a id="qcs"></a>
#### Patient Health Questionnaire for Current Sympthom
<a href="#stp">Back to Steps</a>
<a href="#qse">Go to Questionnaire for Side Effects</a>
<a href="#ter">See Terminology</a>
<table>
<thead>
<tr>
<th>No</th>
<th>Symptom</th>
<th>Level of Pain</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Fatigue/Weakness</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</tr>
<tr>
<td>2</td>
<td>Nausea/Vomiting</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>3</td>
<td>Skin Changes (e.g., rash or dry skin)</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>4</td>
<td>Joint Pain or Muscle Aches</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>5</td>
<td>Swelling of Hands, Feet, Ankles, or Legs</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>6</td>
<td>Difficulty Breathing or Shortness of Breath</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>7</td>
<td>Heart Palpitations or Racing Heartbeat</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>8</td>
<td>Changes in Mood or Emotional State (e.g., anxiety, depression, irritability)</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>9</td>
<td>High Blood Pressure</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>10</td>
<td>Low Blood Pressure</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>11</td>
<td>Dizziness/Lightheadedness</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>12</td>
<td>Headache</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>13</td>
<td>Hair Loss or Changes in Hair Texture</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>14</td>
<td>Blurred Vision or Other Visual Disturbances</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>15</td>
<td>Dry Eyes</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>16</td>
<td>Tinnitus (Ringing in the Ears)</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>17</td>
<td>Earache</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>18</td>
<td>Hearing Loss</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>19</td>
<td>Runny Nose</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>20</td>
<td>Stuffy Nose</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>21</td>
<td>Mouth Sores</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>22</td>
<td>Dry Mouth</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>23</td>
<td>Chest Tightness</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>24</td>
<td>Palpitations</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>25</td>
<td>Constipation or Difficulty Digesting Foods</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>26</td>
<td>Abdominal Pain or Cramping</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>27</td>
<td>Urinary Frequency or Urgency</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>28</td>
<td>Sexual Dysfunction (Erectile Dysfunction or Decreased Libido)</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
</tbody>
</table>
---
<a id="qse"></a>
#### Patient Health Questionnaire for Side Effects
<a href="#stp">Back to Steps</a>
<a href="#ter">Back to Terminology</a>
<a href="#qcs">Go to Questionnaire for Current Sympthom </a>
<table>
<thead>
<tr>
<th>No</th>
<th>Side-Effects</th>
<th>Level of Pain</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Proteinuria (Protein in Urine)</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>2</td>
<td>Hand-Foot Syndrome (Tingling, Redness, and Pain in Hands and Feet)</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>3</td>
<td>Liver Problems, Including Elevated Liver Enzymes</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>4</td>
<td>Kidney Problems, Including Proteinuria and Decreased Urine Output</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>5</td>
<td>Heart Problems, Including Heart Failure, Irregular Heartbeat, or Chest Pain</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>6</td>
<td>Infusion Reactions, Such as Fever, Chills, Rash, or Difficulty Breathing</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>7</td>
<td>Pain at the Injection Site</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>8</td>
<td>Increased Risk of Infections</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>9</td>
<td>Bleeding, Including Gastrointestinal Bleeding</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>10</td>
<td>Nail Changes, Such as Nail Bed Separation or Brittle Nails</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>11</td>
<td>Fever and Chills</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>12</td>
<td>Shortness of Breath or Coughing</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
<tr>
<td>13</td>
<td>Fingertip Tingling or Numbness (Paresthesia)</td>
<td class="checkbox-group">
<input type="checkbox" name="fatigue" value="Mild">Mild
<input type="checkbox" name="fatigue" value="Moderate">Moderate
<input type="checkbox" name="fatigue" value="Severe">Severe
</td>
</td>
</tr>
</tbody>
</table>
---
### Integration Steps for Medical System

<a id="fig3"></a><center>Figure 3. FHIR Server Integration and HIS with Middleware</center>
<h4>Step 1. Matching Patient ID</h4>
<p>
When a patient arrives at the hospital, they are required to provide their Personal Health Record (PHR) ID. This PHR ID is a unique identifier that is then stored in the hospital's Hospital Information System (HIS) and linked to the patient’s existing medical records. Currently, there are three methods available for retrieving patient data from the PHR: by full name, email address, or PHR ID. However, the full name is often insufficient due to its lack of uniqueness, leading to potential duplication or mismatch in the HIS system. Furthermore, email addresses may not always be stored in the HIS or available for every patient. As a result, the PHR ID is the most reliable and accurate identifier.Therefore, the PHR ID becomes the primary means of identification for retrieving a patient’s health data stored in external systems.
As the matching process begins, the HIS system then communicates with the FHIR Server, utilizing the PHR ID to securely retrieve the all of the relevant patient information that have been stored in the Personal Health Record prior. This ensures seamless integration between the hospital’s system and the patient’s PHR, making the PHR ID the most effective and preferred method for linking records.
However, in reality, many hospitals or healthcare institutions operating in different countries use integrated Hospital Information Systems (HIS) with different units of measure. To handle this complexity, the integration must take into account the need for another third party acting as the middleware, ensuring that the patient data retrieved from the FHIR Server via the PHR ID is correctly translated and converted according to the standards of the data consumer system. Thus, it is necessary to add a stage or layer during the integration of matching patient id from FHIR Server to HIS. <a href="#fig3">Figure 3</a> shows by adding Middleware for Automatic Unit Conversion: Middleware can be developed between FHIR Server and HIS to convert different units according to UCUM used by the HIS before data is send. For example, if a hospital uses a system with imperial units (pounds, inches), this middleware will automatically convert data to metric units (kilograms, centimeters) or vice versa, when data is sent between systems. This will be very important and simplify record keeping when hospitals in different countries exchange medical data.
</p>
<h4>Step 2. Retrieve Patient Vital Sign Data from PHR</h4>
<p>
Once the PHR ID has been successfully matched, the next step involves the retrieval of the patient’s Vital Sign Data from the PHR platform. In this phase, the hospital’s client or Medical System (acting as a data consumer) can directly access the data stored in the FHIR Server. The client system initiates a request using the HTTP GET method, passing along the patient’s PHR ID in the query.
The FHIR Server, acting as a repository for the patient’s health data, responds to this request by returning the Vital Sign information, which could include measurements such as blood pressure, heart rate, body temperature, and other essential health indicators. The real-time retrieval of these vital signs is critical for clinicians, allowing them to make informed decisions based on the latest data available in the patient’s PHR. This data integration streamlines the continuity of care between patient visits and remote monitoring through the PHR.
</p>
<h4>Step 3. Retrieve Patient Condition/Symptom Data from PHR</h4>
<p>
In addition to vital signs, another critical component of the integration process is the retrieval of Patient Condition/Symptom Data. This step is essential for monitoring ongoing health issues, treatment progress, and any side effects the patient may be experiencing. As part of the PHR platform, patients are encouraged to regularly update their records with any symptoms or conditions they experience, whether new or recurring, throughout their treatment or daily life.
These symptom updates, including information on current conditions, treatment side effects, or new medical issues, are processed and stored by the FHIR Server. The client or Medical System then issues an HTTP GET request, similarly using the patient’s PHR ID to retrieve this information. The data returned can provide valuable insights for healthcare providers, enabling them to assess and manage the patient’s symptoms and conditions more effectively. By integrating symptom data with clinical records, healthcare providers gain a fuller understanding of the patient’s health beyond vital signs alone, allowing for better personalized treatment and care.
</p>
---
## 4.System Requirements
<!-- 1. Introduction
An SRS introduction is exactly what you expect—it’s a 10,000-foot view of the overall project. When writing your introduction, describe the purpose of the product, the intended audience, and how the audience will use it. In your introduction, make sure to include:
Product scope: The scope should relate to the overall business goals of the product, which is especially important if multiple teams or contractors will have access to the document. List the benefits, objectives, and goals intended for the product.
Product value: Why is your product important? How will it help your intended audience? What function will it serve, or what problem will it solve? Ask yourself how your audience will find value in the product.
Intended audience: Describe your ideal audience. They will dictate the look and feel of your product and how you market it.
Intended use: Imagine how your audience will use your product. List the functions you provide and all the possible ways your audience can use your product depending on their role. It’s also good practice to include use cases to illustrate your vision.
Definitions and acronyms: Every industry or business has its own unique acronyms or jargon. Lay out the definitions of the terms you are using in your SRS to ensure all parties understand what you’re trying to say.
Table of contents: A thorough SRS document will likely be very long. Include a table of contents to help all participants find exactly what they’re looking for.
Make sure your introduction is clear and concise. Remember that your introduction will be your guide to the rest of the SRS outline, and you want it to be interpreted the same by everyone using the doc.
2. System requirements and functional requirements
Once you have your introduction, it’s time to get more specific.Functional requirements break down system features and functions that allow your system to perform as intended.
Use your overview as a reference to check that your requirements meet the user’s basic needs as you fill in the details. There are thousands of functional requirements to include depending on your product. Some of the most common are:
If/then behaviors
Data handling logic
System workflows
Transaction handling
Administrative functions
Regulatory and compliance needs
Performance requirements
Details of operations conducted for every screen
If this feels like a lot, try taking it one requirement at a time. The more detail you can include in your SRS document, the less troubleshooting you’ll need to do later on.
3. External interface requirements
External interface requirements are types of functional requirements that ensure the system will communicate properly with external components, such as:
User interfaces: The key to application usability that includes content presentation, application navigation, and user assistance, among other components.
Hardware interfaces: The characteristics of each interface between the software and hardware components of the system, such as supported device types and communication protocols.
Software interfaces: The connections between your product and other software components, including databases, libraries, and operating systems.
Communication interfaces: The requirements for the communication functions your product will use, like emails or embedded forms.
Embedded systems rely on external interface requirements. You should include things like screen layouts, button functions, and a description of how your product depends on other systems.
4. Non-functional requirements (NRFs)
The final section of your SRS details non-functional requirements. While functional requirements tell a system what to do, non-functional requirements (NFRs) determine how your system will implement these features. For example, a functional requirement might tell your system to print a packing slip when a customer orders your product. An NFR will ensure that the packing slip prints on 4”x6” white paper, the standard size for packing slips.
While a system can still work if you don’t meet NFRs, you may be putting user or stakeholder expectations at risk. These requirements keep functional requirements in check, so it still includes attributes like product affordability and ease of use.
The most common types of NFRs are called the ‘Itys’. They are:
Security: What’s needed to ensure any sensitive information your software collects from users is protected.
Capacity: Your product’s current and future storage needs, including a plan for how your system will scale up for increasing volume demands.
Compatibility: The minimum hardware requirements for your software, such as support for operating systems and their versions.
Reliability and availability: How often you expect users to be using your software and what the critical failure time is under normal usage.
Scalability: The highest workloads under which your system will still perform as expected.
Maintainability: How your application should use continuous integration so you can quickly deploy features and bug fixes.
Usability: How easy it is to use the product.
Other common types of non-functional requirements include performance, regulatory, and environmental requirements.
-->
---
## References
https://build.fhir.org/observation.html
https://build.fhir.org/condition.html\
https://build.fhir.org/valueset-condition-severity.html