Transformation utility to translate data formats into FHIR
Project description
Python FHIR converter, fastish, most nuts and bolts included, ready for production
Provides a python implementation of FHIR-Converter written in C#. This allows the data transformation to live and breath as any other python module in your favorite python based data pipeline framework
Whats supported:
- CDA->FHIR R4
- STU3->FHIR R4
Key features:
- Fast. Speed is relative. Minimizes overhead outside the rendering engine
- Designed to be extensibile. Use the thin rendering API or leverage the builtin parts
- Designed to be easy to use, extend and deploy. Use what's bundled or manage the environment your way
- Multiple enhancement / bug corrections included with the packaged CDA->R4 templates.
Limitations:
- Additional work is needed to support JSON->FHIR, HL7v2->FHIR and FHIR->HL7v2.
- Comma between parameters. Python-liquid requires a comma between parameters. Templates brought to this environment may need commas added.
- Variable names when passing variables to a snippet. Python-liquid requires the identifier / variable name. Templates brought to this environment may need changes. See Resource.liquid as an example of a template that has been updated.
- C# date format strings are supported to an extent to mimimize the impact of migrating templates. See filters for more information.
Built on the back of:
Table of Contents
Install
Install Python FHIR Converter using Pipenv:
$ pipenv install -u python-fhir-converter
Or pip:
$ pip install python-fhir-converter
Links
- Documentation: https://chaseastewart.github.io/fhir-converter/
- PyPi: https://pypi.org/project/python-fhir-converter/
- Source: https://github.com/chaseastewart/fhir-converter
- Issues: https://github.com/chaseastewart/fhir-converter/issues
Basic Usage
See examples for more indepth usage / usecases.
from fhir_converter.renderers import CcdaRenderer
with open("data/sample/ccda/ccd.ccda") as xml_in:
print(CcdaRenderer().render_fhir_string("CCD", xml_in))
Command line interface
The package comes with a CLI interface that can be invoked either by the script name
fhir_converter_cli
or as python module python -m fhir_converter
. The CLI allows you to transform a single file or an entire directory.
fhir_converter_cli --from-file ./data/sample/ccda/CCD.ccda --to-dir ./data/out --template-name CCD
---------------------------------------------------------------
RENDER SUCCESS
---------------------------------------------------------------
Total time: 0.14s
Finished at: 2024-01-11 10:49:44.182033
Final Memory: 32M
---------------------------------------------------------------
Templates
Templates can be loaded from any python-liquid supported mechanism. To make packaging easier a ResourceLoader is provided. When a rendering environment is not provided, templates will be loaded from the module resources. To ease the creation / reuse of templates a TemplateSystemLoader is provided that handles the template name conventions establised by FHIR-Converter. This allows user defined templates to reference existing templates without change. The example user defined templates reuse the default section / header templates.
Benchmark
You can run the benchmark from the root of the source tree. Test rig is a 14-inch, 2021 Macbook Pro with the M1 Pro. The benchmark performs the conversion for each template showing the min, max and mean times for the sample data used.
Python Version=3.12.1
Iterations=20
Sample=data/sample/ccda/Discharge_Summary.ccda
CCD max=0.042 min=0.013 avg=0.015
ConsultationNote max=0.015 min=0.013 avg=0.014
DischargeSummary max=0.020 min=0.014 avg=0.014
HistoryandPhysical max=0.015 min=0.013 avg=0.014
OperativeNote max=0.014 min=0.010 avg=0.010
ProcedureNote max=0.013 min=0.011 avg=0.012
ProgressNote max=0.013 min=0.012 avg=0.012
ReferralNote max=0.015 min=0.014 avg=0.014
TransferSummary max=0.016 min=0.014 avg=0.014
LabsandVitals max=0.009 min=0.008 avg=0.008
Pampi max=0.010 min=0.009 avg=0.009
Sample=data/sample/ccda/History_and_Physical.ccda
CCD max=0.053 min=0.018 avg=0.020
ConsultationNote max=0.021 min=0.018 avg=0.019
DischargeSummary max=0.018 min=0.016 avg=0.017
HistoryandPhysical max=0.020 min=0.018 avg=0.019
OperativeNote max=0.013 min=0.011 avg=0.012
ProcedureNote max=0.015 min=0.014 avg=0.014
ProgressNote max=0.017 min=0.015 avg=0.016
ReferralNote max=0.022 min=0.018 avg=0.019
TransferSummary max=0.021 min=0.019 avg=0.020
LabsandVitals max=0.012 min=0.010 avg=0.011
Pampi max=0.013 min=0.012 avg=0.012
Related Projects
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for python_fhir_converter-0.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 362a2808d01d8f3b384f80da4001bfad848cc8d0c5c8e8d162715ed1fc7ea18f |
|
MD5 | 669f4b71d29433e09deab6d81adcf8ae |
|
BLAKE2b-256 | 290f685aa2fab8e92accce4bd2ad3b4dcbc106f33e1229986bad02f58ae8b2da |
Hashes for python_fhir_converter-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e8adc3c53a7f6525a121b520a3c1a472b2a26edd44abb526971c82f6759e3168 |
|
MD5 | 8aef60f916a495233abcf283bc32dab7 |
|
BLAKE2b-256 | 5d05bad0863531bb27f4fbef480c1e44a16e7a93d88270bc64b28ab9fc917015 |