Aidbox client for python
Project description
aidbox-py
Aidbox client for python. This package provides an API for CRUD operations over Aidbox resources.
The library is based on fhir-py and the main difference between libraries in our case is the way they represent resource references (read more about differences).
Aidbox-py also going to support some Aidbox features like _assoc operation, AidboxQuery and so on.
Most examples from fhir-py readme also work for aidbox-py (but you need to replace FHIR client with AsyncAidboxClient/SyncAidboxClient). See base aidbox-py example below.
Getting started
Install
Most recent version:
pip install git+https://github.com/beda-software/aidbox-py.git
PyPi:
pip install aidboxpy
Async example
import asyncio from aidboxpy import AsyncAidboxClient from fhirpy.base.exceptions import ( OperationOutcome, ResourceNotFound, MultipleResourcesFound ) async def main(): # Create an instance client = AsyncAidboxClient( 'http://localhost:8080', authorization='Bearer TOKEN' ) # Search for patients resources = client.resources('Patient') # Return lazy search set resources = resources.search(name='John').limit(10).page(2).sort('name') patients = await resources.fetch() # Returns a list of AsyncAidboxResource # Get exactly one resource try: patient = await client.resources('Practitioner') \ .search(id='id').get() except ResourceNotFound: pass except MultipleResourcesFound: pass # Validate resource try: await client.resource( 'Person', custom_prop='123', telecom=True ).is_valid() except OperationOutcome as e: print('Error: {}'.format(e)) # Create Organization resource organization = client.resource( 'Organization', name='beda.software', active=False ) await organization.save() # Get patient resource by reference and delete patient_ref = client.reference('Patient', 'new_patient') patient_res = await patient_ref.to_resource() await patient_res.delete() # Iterate over search set and change organization org_resources = client.resources('Organization').search(active=False) async for org_resource in org_resources: org_resource['active'] = True await org_resource.save() if __name__ == '__main__': loop = asyncio.get_event_loop() loop.run_until_complete(main())
API
Import library:
from aidboxpy import SyncAidboxClient
or
from aidboxpy import AsyncAidboxClient
To create AidboxClient instance use:
SyncAidboxClient(url, authorization='', extra_headers={})
or
AsyncAidboxClient(url, authorization='', extra_headers={})
Returns an instance of the connection to the server which provides:
- .reference(resource_type, id, reference, **kwargs) - returns
SyncAidboxReference
/AsyncAidboxReference
to the resource - .resource(resource_type, **kwargs) - returns
SyncAidboxResource
/AsyncAidboxResource
which described below - .resources(resource_type) - returns
SyncAidboxSearchSet
/AsyncAidboxSearchSet
SyncAidboxResource
/AsyncAidboxResource
provides:
- .serialize() - serializes resource
- .get_by_path(path, default=None) – gets the value at path of resource
- .save() - creates or updates resource instance
- .delete() - deletes resource instance
- .to_reference(**kwargs) - returns
SyncAidboxReference
/AsyncAidboxReference
for this resource
SyncAidboxReference
/AsyncAidboxReference
provides:
- .to_resource() - returns
SyncAidboxResource
/AsyncAidboxResource
for this reference
SyncAidboxSearchSet
/AsyncAidboxSearchSet
provides:
- .search(param=value)
- .limit(count)
- .page(page)
- .sort(*args)
- .elements(*args, exclude=False)
- .include(resource_type, attr=None, recursive=False, iterate=False)
- .revinclude(resource_type, attr=None, recursive=False, iterate=False)
- .has(*args, **kwargs)
- .assoc(elements)
async
.fetch() - makes query to the server and returns a list ofResource
filtered by resource typeasync
.fetch_all() - makes query to the server and returns a full list ofResource
filtered by resource typeasync
.fetch_raw() - makes query to the server and returns a raw BundleResource
async
.first() - returnsResource
or Noneasync
.get(id=None) - returnsResource
or raisesResourceNotFound
when no resource found or MultipleResourcesFound when more than one resource found (parameter 'id' is deprecated)async
.count() - makes query to the server and returns the total number of resources that match the SearchSet
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.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size aidboxpy-1.2.0-py3-none-any.whl (5.0 kB) | File type Wheel | Python version py3 | Upload date | Hashes View |
Filename, size aidboxpy-1.2.0.tar.gz (5.3 kB) | File type Source | Python version None | Upload date | Hashes View |