Metadata-Version: 2.1
Name: fhir-parse-qs
Version: 0.7.1
Summary: Parse FHIR query string
Home-page: https://github.com/teffalump/fhir_parse_qs
Author: teffalump
Author-email: chris@teffalump.com
License: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Operating System :: OS Independent
Requires-Dist: pendulum

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

Usage
^^^^^

::

   from fhir_parse_qs import Search

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

   # simple use
   search = Search('Patient', 'name=bob') # Search(<endpoint>, <query_string>)

   # endpoint
   search.endpoint --> 'Patient'

   # all the namedtuples
   search.parsed --> [FHIRSearch(...)]

   # index as key; each parameter/value pair gets parsed into a namedtuple
   search[0] --> FHIRSearch(...)
   search[0].modifier --> None
   search[0].prefix --> None
   search[0].value --> 'bob'
   search[0].parameter --> 'name'
   search[0].type_ --> 'string'
   search[0].chain --> None

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

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

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

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

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


