Skip to main content

Transform FHIR to Dataset

Project description

FHIR2Dataset

Transform FHIR to dataset for ML applications

FHIR2Dataset in Detail

This project is still under development.

This repo allows to make a SQL query on a FHIR API and to retrieve tabular data.

FHIR2Dataset is still under active development!

Installation

With pip

pip install fhir2dataset

From source

After cloning this repository, you can install the required dependencies

pip install -r requirements.txt
npm install --prefix ./fhir2dataset/metadata

For usage, refer to this turorial and then this Jupyer Notebook

Getting started

Two possible ways to enter the query : as a SQL query or as a JSON config file

SQL query as entry

from fhir2dataset import Query, FHIRRules, FHIR2DatasetParser

fhir_api_url = 'http://hapi.fhir.org/baseR4/'
fhir_rules = FHIRRules(fhir_api_url=fhir_api_url)
query = Query(fhir_api_url, fhir_rules=fhir_rules)
parser = FHIR2DatasetParser()
sql_like_query = "SELECT (alias n°1).a, (alias n°1).b, (alias n°1).c, (alias n°2).a FROM (Resource type 1) as (alias n°1)
INNER JOIN (Resource type 2) as (alias n°2)
ON (alias n°1).d = (alias n°2)
INNER JOIN (Resource type 3) as (alias n°3)
ON (alias n°2).b = (alias n°3) WHERE (alias n°2).c = "value 1"
AND (alias n°2).d = "value 2"
AND (alias n°3).a = "value 3"
AND (alias n°3).b = "value 4""
config_from_parser = parser.parse(sql_like_query)
query.from_config(config_from_parser)
query.execute()
df = query.main_dataframe

JSON config file as entry

from fhir2dataset.query import Query
from fhir2dataset.fhirrules_getter import FHIRRules

fhir_api_url = 'http://hapi.fhir.org/baseR4/'
fhir_rules = FHIRRules(fhir_api_url=fhir_api_url)
query = Query(fhir_api_url, fhir_rules=fhir_rules)

config.json :

{"select":{
    "alias n°1":[
        "a",
        "b",
        "c"
    ],
    "alias n°2":[
        "a"
    ]
},
"from":{
    "alias n°1":"Resource type 1",
    "alias n°2":"Resource type 2",
    "alias n°3":"Resource type 3"
},
"join":{
    "inner": {
        "alias n°1":{
            "d":"alias n°2"

        },
        "alias n°2":{
            "b":"alias n°3"
        }

    }
},
"where":{
    "alias n°2":{
        "c":"value 1",
        "d":"value 2"
    },
    "alias n°3":{
        "a":"value 3",
        "b":"value 4"
    }
}}
# Enter in dirname the path of config.json
filename_config = 'config.json'

with open(os.path.join(dirname, filename_config)) as json_file:
    config = json.load(json_file)

query.from_config(config)
query.execute()
df = query.main_dataframe

Examples

Check out examples of queries and how they are transformed in call to the FHIR api!

Contributing

The following commands on a terminal and in your virtual environment allow you to do some minimal local testing before each commit:

pip install -r requirements-dev.txt
pre-commit install

If you ever want to delete them you just have to do:

pre-commit clean

Publish

First, you need to have twine installedd

pip install --user --upgrade twine

Make sure you have bumped the version number in setup.py, then run the following:

python setup.py sdist bdist_wheel
python -m twine upload dist/*

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fhir2dataset-0.1.1a1.tar.gz (144.6 kB view hashes)

Uploaded Source

Built Distribution

fhir2dataset-0.1.1a1-py3-none-any.whl (154.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page