fhirbase connector
Project description
fhirbase.py
FHIRBase connector for python. This package provides wrapper over psycopg2 connection which provides CRUD for resources in fhirbase.
Install
pip install fhirbase
Usage
Import fhirbase
and psycopg2
libraries:
import fhirbase
import psycopg2
Create a connection using psycopg2.connect
;
connection = psycopg2.connect(
dbname='postgres', user='postgres',
host='localhost', port='5432')
Create an instance of FHIRBase
:
fb = fhribase.FHIRBase(connection)
Now you can use the following methods of FHIRBase
instance:
.execute(sql, params=None, commit=False)
.execute_without_result(sql, params=None, commit=False)
.row_to_resource(row)
CRUD methods work with FHIR resources.
Resource represented as a dict with specified resourceType
key as required key.
The following methods works with resource and returns resources.
.create(resource, txid=None, commit=True)
.update(resource, txid=None, commit=True)
.delete(resource, txid=None, commit=True)
/.delete(resource_type, id, txid=None, commit=True)
.read(resource)
/.read(resource_type, id)
.list(sql, params=None)
Methods
.execute
Executes sql with params.
Syntax: .execute(sql, params=None, commit=False)
Returns: context manager with cursor as context
Example:
with fb.execute('SELECT * FROM patient WHERE id=%s', ['id']) as cursor:
print(cursor.fetchall())
.execute_without_result
Executes sql with params.
Syntax: .execute_without_result(sql, params=None, commit=False)
Returns: nothing
Example:
fb.execute_without_result('INSERT INTO transaction (resource) VALUES (%s)', ['{}'])
.row_to_resource
Transforms row raw from DB to resource.
Syntax: .row_to_resource(row)
Returns: resource representation (dict)
Example:
fb.row_to_resource({
'resource': {'name': []},
'ts': 'ts',
'txid': 'txid',
'resource_type': 'Patient',
'meta': {'tag': 'created'},
'id': 'id',
}))
will return resource representation:
{
'id': 'id',
'meta': {'lastUpdated': 'ts', 'versionId': 'txid'},
'name': [],
'resourceType': 'Patient',
}
.create
Creates resource. If txid is not specified, new unique logical transaction id will be generated.
Syntax: .create(resource, txid=None, commit=True)
Returns: resource representation (dict)
Example:
fb.create({
'resourceType': 'Patient',
'name': [{'text': 'John'}],
})
returns
{
'resourceType': 'Patient',
'id': 'UNIQUE ID',
'name': [{'text': 'John'}],
'meta': {'lastUpdated': 'timestamp', 'versionId': 'txid'},
}
.update
Updates resource. If txid is not specified, new unique logical transaction id will be generated.
Key id
is required in resource
argument.
Syntax: .update(resource, txid=None, commit=True)
Returns: resource representation (dict)
Example:
fb.update({
'resourceType': 'Patient',
'id': 'id',
'name': [{'text': 'John'}],
})
returns
{
'resourceType': 'Patient',
'id': 'UNIQUE ID',
'name': [{'text': 'John'}],
'meta': {'lastUpdated': 'timestamp', 'versionId': 'txid'},
}
.delete
Deletes resource.
If txid is not specified, new unique logical transaction id will be generated.
Keys id
and resourceType
are required in resource
argument in first variant of usage.
Syntax: .delete(resource, txid=None, commit=True)
or .delete(resource_type, id, txid=None, commit=True)
Returns: nothing
Example:
fb.delete({
'resourceType': 'Patient',
'id': 'id',
})
or
fb.delete(resource_type='Patient', id='id')
.read
Reads resource.
Keys id
and resourceType
are required in resource
argument in first variant of usage.
Syntax: .read(resource)
or .read(resource_type, id)
Returns: resource representation (dict)
Example:
fb.read({
'resourceType': 'Patient',
'id': 'id',
})
or
fb.read(resource_type='Patient', id='id')
.list
Executes SQL and returns iterator of resources. Note: sql query must return all fields of resource table.
Syntax: .list(sql, params)
Returns: iterator of resources
Example:
for patient in fb.list('SELECT * FROM patient'):
print(patient)
or
patients = list(fb.list('SELECT * FROM patient'))
Example application
To run example, just do:
docker-compose build
docker-compose up -d
Wait until db starting process will be completed, and run:
docker-compose run --rm fhirbase fhirbase init 3.0.1
docker-compose run --rm fhirbasepy python examples/example.py
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
File details
Details for the file fhirbase-0.0.1.tar.gz
.
File metadata
- Download URL: fhirbase-0.0.1.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.6.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 530408651a35a96e779ba2a2b22dc14eed1c47d026c296d300185ccf5574433f |
|
MD5 | b62fd592b0130cd88c2cfebc7a0cb878 |
|
BLAKE2b-256 | 94765f7cd40c23216d5bf21037ef225bce66e7a8c5c37f4ee9e4f0e4a287e80e |