FHIRPath implementation in Python
Project description
fhirpath.py
FHIRPath implementation in Python
Parser was generated with antlr4
Getting started
Install
pip install fhirpathpy
Usage
from fhirpathpy import evaluate
patient = {
"resourceType": "Patient",
"id": "example",
"name": [
{
"use": "official",
"given": [
"Peter",
"James"
],
"family": "Chalmers"
},
{
"use": "usual",
"given": [
"Jim"
]
},
{
"use": "maiden",
"given": [
"Peter",
"James"
],
"family": "Windsor",
"period": {
"end": "2002"
}
}
]
}
# Evaluating FHIRPath
result = evaluate(patient, "Patient.name.where(use='usual').given.first()", {})
# result: `['Jim']`
evaluate
Evaluates the "path" FHIRPath expression on the given resource, using data from "context" for variables mentioned in the "path" expression.
Parameters
resource (dict|list): FHIR resource, bundle as js object or array of resources This resource will be modified by this function to add type information.
path (string): fhirpath expression, sample 'Patient.name.given'
context (dict): a hash of variable name/value pairs.
model (dict): The "model" data object specific to a domain, e.g. R4. See Using data models documentation below.
options (dict) - Custom options.
options.userInvocationTable - a user invocation table used to replace any existing functions or define new ones. See User-defined functions documentation below.
compile
Returns a function that takes a resource and an optional context hash (see "evaluate"), and returns the result of evaluating the given FHIRPath expression on that resource. The advantage of this function over "evaluate" is that if you have multiple resources, the given FHIRPath expression will only be parsed once
Parameters
path (string) - the FHIRPath expression to be parsed.
model (dict) - The "model" data object specific to a domain, e.g. R4. See Using data models documentation below.
options (dict) - Custom options
options.userInvocationTable - a user invocation table used to replace any existing functions or define new ones. See User-defined functions documentation below.
Using data models
The fhirpathpy library comes with pre-defined data models for FHIR versions DSTU2, STU3, R4, and R5. These models can be used within your project.
Example:
from fhirpathpy.models import models
r4_model = models["r4"]
patient = {
"resourceType": "Patient",
"deceasedBoolean": false,
}
result = evaluate(patient, "Patient.deceased", {}, r4_model)
# result: `[False]`
User-defined functions
The FHIRPath specification includes a set of built-in functions. However, if you need to extend the functionality by adding custom logic, you can define your own functions by providing a table of user-defined functions.
Example:
user_invocation_table = {
"pow": {
"fn": lambda inputs, exp=2: [i**exp for i in inputs],
"arity": {0: [], 1: ["Integer"]},
}
}
result = evaluate(
{"a": [5, 6, 7]},
"a.pow()",
options={"userInvocationTable": user_invocation_table},
)
# result: `[25, 36, 49]`
It works similarly to fhirpath.js
Development
To activate git pre-commit hook: autohooks activate
To run tests: pytest
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fhirpathpy-2.1.0.tar.gz.
File metadata
- Download URL: fhirpathpy-2.1.0.tar.gz
- Upload date:
- Size: 217.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce3a8a7f3012f07826cd2c6dcbbe005c3172e00cf24989ba6eea09f4b2a2a5b8
|
|
| MD5 |
c0e51dd6ffceaee4a0318f09164d900c
|
|
| BLAKE2b-256 |
fac7af93d0cb6eda4e845e2842451ad53194b52eb01ceefc8b8b7e1e0f8faf11
|
File details
Details for the file fhirpathpy-2.1.0-py3-none-any.whl.
File metadata
- Download URL: fhirpathpy-2.1.0-py3-none-any.whl
- Upload date:
- Size: 231.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
736deadc8adf75257db2d36db0451a5d07e12a56699f8e974a30423730b1786a
|
|
| MD5 |
7245e47ac075c18e517aaeac393de7ba
|
|
| BLAKE2b-256 |
de91ab3f88a3cc19fee6a4c6e90cc86df6c7ac154c99b446a27a17e8ebc295e0
|