Skip to main content

Parse FHIR query strings

Project description

fhir_parse_qs

PyPI version

A library to parse FHIR query strings.

  • Validates type and returns correct object
  • Built-in search parameters from FHIR standard
  • Supports modifiers, prefixes, and chains

Releases 0.7.x and below used FHIR R3. Releases 0.8.x and greater use FHIR R4.

The update_mappings.py script generates the mappings from the HL7 FHIR releases.

Usage

Provide the endpoint and query_string arguments:

from fhir_parse_qs import Search
search = Search('Patient', 'name=bob') # Search(<endpoint>, <query_string>)

# supported endpoints
Search.supported ==> [...]

# endpoint
search.endpoint ==> 'Patient'

Each parameter/value pair is parsed into a FHIRSearchPair with attached FHIRParameter and FHIRValue namedtuples.

# all the namedtuples
search.parsed ==> [FHIRSearchPair(...)]

FHIRSearchPair.parameter ==> FHIRParameter
FHIRSearchPair.value ==> [FHIRValue, ...]

    FHIRParameter:
        value
        modifier
        chain
            [FHIRChain...]
        type_

        FHIRChain:
            endpoint
            target
            ttype

    FHIRValue:
        value
        prefix
        system
        code

Further features:

# index as key; each parameter/value pair parsed into a namedtuple
search[0] ==> FHIRSearchPair:
    parameter ==> FHIRParameter:
        value ==> 'name'
        modifier ==> None
        chain ==> None
        type_ ==> 'string'
    value ==> [FHIRValue(
        prefix ==> None
        value ==> 'bob'
        system ==> None
        code ==> None
        ]

# act like dict with parameter as key
search['name'] ==> FHIRSearchPair(...) #list if non-unique parameter

# iterate over the parameter/value pairs
for x in search:
     print(x) ==> FHIRSearchPair(...)

# supports comma-separated list of values
search = Search('Patient', 'name=peter,travis')
search["name"] ==> [FHIRValue(...), FHIRValue(...)]

# ignores and logs unrecognized parameters
search = Search('Patient', 'random=test')
search.error ==> [...]

# supports chaining
search = Search('Observation', 'patient.name=peter')
search[0].parameter.value ==> 'name' # last parameter in chain
search[0].value[0].value ==> 'peter'
search[0].parameter.chain ==> [FHIRChain(...), FHIRChain(...)]
search[0].parameter.chain[0].endpoint ==> 'Observation'
search[0].parameter.chain[0].target ==> 'patient'
search[0].parameter.chain[0].ttype ==> 'reference'
search[0].parameter.chain[1].endpoint ==> 'Patient'
search[0].parameter.chain[1].target ==> 'name'
search[0].parameter.chain[1].ttype ==> 'string'

# supports systems and codes
search = Search("Observation", "value-quantity=gt234|http://loinc.org|mg")
search["value-quantity"].value[0].value ==> 234
search["value-quantity"].value[0].prefix ==> "gt"
search["value-quantity"].value[0].system ==> "http://loinc.org"
search["value-quantity"].value[0].code ==> "mg"

# return control parameters (eg, _sort, _count, etc)
search.control ==> [...]

TODO

  • Narrow allowed chains (return error for ambiguous chains) (unreleased)
  • The _filter parameter
  • Reverse chains
  • Composite searches

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

fhir_parse_qs-0.9.0.tar.gz (51.8 kB view details)

Uploaded Source

Built Distribution

fhir_parse_qs-0.9.0-py3-none-any.whl (122.7 kB view details)

Uploaded Python 3

File details

Details for the file fhir_parse_qs-0.9.0.tar.gz.

File metadata

  • Download URL: fhir_parse_qs-0.9.0.tar.gz
  • Upload date:
  • Size: 51.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.6

File hashes

Hashes for fhir_parse_qs-0.9.0.tar.gz
Algorithm Hash digest
SHA256 73e3ef2c46437ff851f8fdc5f009dab141b1c0380edad278a04c8136a25ca912
MD5 571d288c3c64cafd4e41c640cdeedbec
BLAKE2b-256 c216b48476ea16f0a507c27df5610fe4032d3785ef86132553aa6b04537f7601

See more details on using hashes here.

File details

Details for the file fhir_parse_qs-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: fhir_parse_qs-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 122.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.6

File hashes

Hashes for fhir_parse_qs-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7a5fd6a97e8aa32801072740035755d6302ac18eff06a7f3c809015602d626d3
MD5 21c94a6c2d985f400cc28aa91cab30ac
BLAKE2b-256 50d77c3444d95c6bd3cebcfc9227b31b39afbee115e1deae1585c7ea9a9b445b

See more details on using hashes here.

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