| Literature DB >> 29888045 |
Na Hong1, Andrew Wen1, Feichen Shen1, Sunghwan Sohn1, Sijia Liu1, Hongfang Liu1, Guoqian Jiang1.
Abstract
Standards-based modeling of electronic health records (EHR) data holds great significance for data interoperability and large-scale usage. Integration of unstructured data into a standard data model, however, poses unique challenges partially due to heterogeneous type systems used in existing clinical NLP systems. We introduce a scalable and standards-based framework for integrating structured and unstructured EHR data leveraging the HL7 Fast Healthcare Interoperability Resources (FHIR) specification. We implemented a clinical NLP pipeline enhanced with an FHIR-based type system and performed a case study using medication data from Mayo Clinic's EHR. Two UIMA-based NLP tools known as MedXN and MedTime were integrated in the pipeline to extract FHIR MedicationStatement resources and related attributes from unstructured medication lists. We developed a rule-based approach for assigning the NLP output types to the FHIR elements represented in the type system, whereas we investigated the FHIR elements belonging to the source of the structured EMR data. We used the FHIR resource "MedicationStatement" as an example to illustrate our integration framework and methods. For evaluation, we manually annotated FHIR elements in 166 medication statements from 14 clinical notes generated by Mayo Clinic in the course of patient care, and used standard performance measures (precision, recall and f-measure). The F-scores achieved ranged from 0.73 to 0.99 for the various FHIR element representations. The results demonstrated that our framework based on the FHIR type system is feasible for normalizing and integrating both structured and unstructured EHR data.Entities:
Year: 2018 PMID: 29888045 PMCID: PMC5961797
Source DB: PubMed Journal: AMIA Jt Summits Transl Sci Proc
Figure 1The framework for integrating structured and unstructured EHR data using FHIR
Figure 2An example of an FHIR MedicationStatement instance
Figure 3Populating the FHIR resource “MedicationStatement” from a textual medication list
Figure 4The FHIR annotation schema in Protégé (MedicationStatement)
Model Elements Mapping Between MedXN/MedTime and FHIR
| NLP tools and Output Types | FHIR Elements (MedicationStatement) | Mapping Rules and Examples |
|---|---|---|
| MedXN:Drug | MedicationStatement.medication CodableConcept | 1:1 Example: Guaifenesin [RxCUI: 5032] |
| MedXN: | Dosage.frequency | 1:n |
| Drug:attributes:type=’frequency’ | Dosage.frequencyMax | Examples: |
| Dosage.period | once daily | |
| MedTime: | Dosage.periodMax | →1[frequency], 1[period], |
| Dosage.periodUnit | d[periodUnit] | |
| MedTimex3:type=’SET’ | Dosage.asNeededBoolean | 4-6 times |
| Dosage.dayofWeek | →4[frequency], 6[frequencyMax] | |
| Dosage.when | Regular: once daily every six hours | |
| Irregular: as needed for pain | ||
| MedXN: | Dosage.duration | 1:n |
| Drug:attributes:type=’duration’ | Dosage.durationMax | Example: |
| MedTime: | Dosage.durationUnit | 3 days |
| MedTimex3:type=’DURATION’ | →3[duration], d[durationUnit] | |
| MedXN: | Dosage.route | 1:1 |
| Drug:attributes:type=’route’ | Examples: | |
| by mouth [oral route] | ||
| MedXN: | Medication.ingredient.amount. | 1:n |
| Drug:attributes:type=’strength’ | numerator.quantity.value | Examples: |
| Medication.ingredient.amount. | Regular: 500 mg /5 ml→ | |
| numerator.quantity.unit | 500[numerator.quantity.value], | |
| Medication.ingredient.amount. | mg[numerator.quantity.unit], | |
| denumerator.quantity.value | 5[denumerator.quantity.value], ml | |
| Medication.ingredient.amount. | [denumerator.quantity.unit] | |
| denumerator.quantity.unit | Irregular: 200 mg → Default assign: | |
| 1[denumerator.quantity. | ||
| MedXN: | Medication.form | 1:1 |
| Drug:attributes:type=’form’ | Examples: | |
| tab[Tablet] | ||
| MedXN: | Dosage.doseQuantity.value | 1:n |
| Drug:attributes:type=’dosage’ | Dosage.doseQuantity.unit | |
| Dosage.doseQuantity.Range.low.value | 10 ml →10[value], ml[unit] | |
| Dosage.doseQuantity.Range.low.unit | 2-3 tabs →2[range.low.value], tab[range.low.unit], | |
| Dosage.doseQuantity.Range.high.value | 3[range.high.value], tab[range.high.unit] | |
| Dosage.doseQuantity.Range.high.unit | Notes: we currently both map “tab” to dose unit and medication form | |
| MedTime: MedTimex3:type=“DATE” | MedicationStatement.effectiveD atetime | 1:1 Examples: April 16th |
| MedTime: | MedicationStatement.effectiveD atetime | 1:n Examples: |
| MedTimex3:type=“TIME” | Dosage.timeofDay | April 8, 2008 at 04:38 PM |
Figure 5The FHIR type system in UIMA
Evaluation on FHIR resource “MedicationStatement”
| FHIR Elements | Total | Precision | Recall | F-score |
|---|---|---|---|---|
| MedicationStatement.medicationCodeableConcept | 166 | 0.996 | 0.982 | 0.988 |
| Dosage.timing.repeat.frequency | 87 | 0.795 | 0.873 | 0.832 |
| Dosage.timing.repeat.period | 133 | 0.959 | 0.914 | 0.936 |
| Dosage.timing.repeat.periodUnit | 129 | 0.951 | 0.943 | 0.947 |
| Dosage.timing.repeat.duration | 5 | 0.600 | 1 | 0.750 |
| Dosage.route | 143 | 0.957 | 0.816 | 0.878 |
| Medication.ingredient.amount.numerator.quantity.value | 155 | 0.930 | 0.815 | 0.869 |
| Medication.ingredient.amount. numerator.quantity.unit | 135 | 0.926 | 0.899 | 0.911 |
| Medication.form | 127 | 0.871 | 0.704 | 0.779 |
| Dosage.dose.quantity.value | 93 | 0.974 | 0.835 | 0.899 |
| Dosage.timing.repeat.when | 21 | 1 | 0.571 | 0.727 |
| Dosage.asNeededBoolean | 38 | 0.913 | 0.583 | 0.712 |