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
Metadata
Release files for fhirpathpy 2.2.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fhirpathpy-2.2.4.tar.gz | 218.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fhirpathpy-2.2.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 450.8 kB
Release files / fhirpathpy-2.2.4.tar.gz
| Download URL | fhirpathpy-2.2.4.tar.gz |
|---|---|
| Size | 218.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ff592994edb7a30fd499e1462f3f7ec6d83568df58487e9d522ead2f7a85ffdb
|
|
BLAKE2b-256 checksum How to use checksums |
f68ad606a7bf9a8ef16898d28a252b99c214d5bcec68a34d5b68ab6f222f3bf5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / fhirpathpy-2.2.4-py3-none-any.whl
| Download URL | fhirpathpy-2.2.4-py3-none-any.whl |
|---|---|
| Size | 232.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5ea363963598a9c8c23425b6594986dc8c8e33600656b70639e088f0c62c355d
|
|
BLAKE2b-256 checksum How to use checksums |
8c9ad0ff5aae5cf5b688f300b5b21c604bfbfd23feee4451de5f980a0773a5c5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|