Skip to main content

fhirpath.py

Build Status codecov pypi Supported Python version

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)

Source distribution for fhirpathpy 2.2.4
File Size Uploaded
fhirpathpy-2.2.4.tar.gz 218.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fhirpathpy 2.2.4
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

2.2.4 This release

2 release files

2.2.3

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.3

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.1.2

2 release files

0.1.1

1 release file

0.1.0

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page