Parse FHIR query strings
Project description
fhir_parse_qs
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
_filterparameter - Reverse chains
- Composite searches
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
73e3ef2c46437ff851f8fdc5f009dab141b1c0380edad278a04c8136a25ca912
|
|
| MD5 |
571d288c3c64cafd4e41c640cdeedbec
|
|
| BLAKE2b-256 |
c216b48476ea16f0a507c27df5610fe4032d3785ef86132553aa6b04537f7601
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a5fd6a97e8aa32801072740035755d6302ac18eff06a7f3c809015602d626d3
|
|
| MD5 |
21c94a6c2d985f400cc28aa91cab30ac
|
|
| BLAKE2b-256 |
50d77c3444d95c6bd3cebcfc9227b31b39afbee115e1deae1585c7ea9a9b445b
|