smart-on-fhir-client


Namesmart-on-fhir-client JSON
Version 0.1.14 PyPI version JSON
download
home_page
SummarySmart on fhir python client
upload_time2022-07-19 08:31:33
maintainer
docs_urlNone
authorMarc
requires_python>=3.10,<4.0
license
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # smart-on-fhir-client 🔥

Package allowing to request a fhir server with the smart-on-fhir protocol. 

> ℹ Warning
>
> It is not a webserver providing a webserver with a callback url
> usually involved in the smart-on-fhir procedure


### Tutorial

First, we will need to create a partner. We can do this easily subclassing the `Partner` class.
```python
import os
from smart_on_fhir_client.partner import Partner
from typing import Set
from smart_on_fhir_client.strategy import Strategy

class Lifen(Partner):
    name = 'LIFEN'
    supported_strategies: Set[Strategy] = {Strategy.M2M}
    client_id: str = os.getenv("LIFEN_CLIENT_ID")
    client_secret: str = os.getenv("LIFEN_CLIENT_SECRET")
    token_url: str = ... # set the token url
    fhir_url: str = ... # set the fhir url

    # additional information
    audience: str = ... # audience
    database_reference: str = ... # optional 
    grant_type: str = "client_credentials" # set the credentials

LIFEN = Lifen()
```

```python
from smart_on_fhir_client.client import smart_client_factory
from smart_on_fhir_client.requester.fhir_requester import fhir_client_manager
from smart_on_fhir_client.strategy import Strategy

# set up your own fhir server url
fhir_client_manager.set_own_fhir_url("http://localhost:8080/fhir")

async def register():
    async with smart_client_factory:
        await fhir_client_manager.register_partner_async(
            smart_client_factory.builder()
                .for_partner(LIFEN)
                .for_strategy(Strategy.M2M)
                # you can register special classes for specific fhir resources
                .register_cls_for('Patient', LifenPatientResource)
        )
        first_patient = await fhir_client_manager.LIFEN.Patient.search().limit(10).first()
        await first_patient.pipe_to_target_fhir_server()

```


### Features

Allow to send some fetched fhir resources to another fhir server
via the `pipe_to_target_fhir_server`, making data transfer between two fhir
servers easier.

### Notes
Work based heavily on fhir-py and fhir-resources python packages

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "smart-on-fhir-client",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.10,<4.0",
    "maintainer_email": "",
    "keywords": "",
    "author": "Marc",
    "author_email": "marc@synapse-medicine.com",
    "download_url": "https://files.pythonhosted.org/packages/cb/c6/d6bf5351674ac5306d8d70220d8c3231705afd753823d14c87189e6bc0f5/smart-on-fhir-client-0.1.14.tar.gz",
    "platform": null,
    "description": "# smart-on-fhir-client \ud83d\udd25\n\nPackage allowing to request a fhir server with the smart-on-fhir protocol. \n\n> \u2139 Warning\n>\n> It is not a webserver providing a webserver with a callback url\n> usually involved in the smart-on-fhir procedure\n\n\n### Tutorial\n\nFirst, we will need to create a partner. We can do this easily subclassing the `Partner` class.\n```python\nimport os\nfrom smart_on_fhir_client.partner import Partner\nfrom typing import Set\nfrom smart_on_fhir_client.strategy import Strategy\n\nclass Lifen(Partner):\n    name = 'LIFEN'\n    supported_strategies: Set[Strategy] = {Strategy.M2M}\n    client_id: str = os.getenv(\"LIFEN_CLIENT_ID\")\n    client_secret: str = os.getenv(\"LIFEN_CLIENT_SECRET\")\n    token_url: str = ... # set the token url\n    fhir_url: str = ... # set the fhir url\n\n    # additional information\n    audience: str = ... # audience\n    database_reference: str = ... # optional \n    grant_type: str = \"client_credentials\" # set the credentials\n\nLIFEN = Lifen()\n```\n\n```python\nfrom smart_on_fhir_client.client import smart_client_factory\nfrom smart_on_fhir_client.requester.fhir_requester import fhir_client_manager\nfrom smart_on_fhir_client.strategy import Strategy\n\n# set up your own fhir server url\nfhir_client_manager.set_own_fhir_url(\"http://localhost:8080/fhir\")\n\nasync def register():\n    async with smart_client_factory:\n        await fhir_client_manager.register_partner_async(\n            smart_client_factory.builder()\n                .for_partner(LIFEN)\n                .for_strategy(Strategy.M2M)\n                # you can register special classes for specific fhir resources\n                .register_cls_for('Patient', LifenPatientResource)\n        )\n        first_patient = await fhir_client_manager.LIFEN.Patient.search().limit(10).first()\n        await first_patient.pipe_to_target_fhir_server()\n\n```\n\n\n### Features\n\nAllow to send some fetched fhir resources to another fhir server\nvia the `pipe_to_target_fhir_server`, making data transfer between two fhir\nservers easier.\n\n### Notes\nWork based heavily on fhir-py and fhir-resources python packages\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Smart on fhir python client",
    "version": "0.1.14",
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "md5": "2c206ff047639519f28549573e52f60d",
                "sha256": "d40fde012a7674477ab4a92c24cbc8454dd0ccda3fc64e0a37977d45f7433cab"
            },
            "downloads": -1,
            "filename": "smart_on_fhir_client-0.1.14-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "2c206ff047639519f28549573e52f60d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10,<4.0",
            "size": 13759,
            "upload_time": "2022-07-19T08:31:32",
            "upload_time_iso_8601": "2022-07-19T08:31:32.339883Z",
            "url": "https://files.pythonhosted.org/packages/79/68/b489b4ced945f7c02ce6d8c8e1758289caf20ddc213fe642744f295a14eb/smart_on_fhir_client-0.1.14-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "9338795a05c15eff6bbd1c27ee3a3fc8",
                "sha256": "1390cde029cdc27cf09e3d80e111fb73d7727f46ce921895758b1dec021ab6da"
            },
            "downloads": -1,
            "filename": "smart-on-fhir-client-0.1.14.tar.gz",
            "has_sig": false,
            "md5_digest": "9338795a05c15eff6bbd1c27ee3a3fc8",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10,<4.0",
            "size": 11616,
            "upload_time": "2022-07-19T08:31:33",
            "upload_time_iso_8601": "2022-07-19T08:31:33.876341Z",
            "url": "https://files.pythonhosted.org/packages/cb/c6/d6bf5351674ac5306d8d70220d8c3231705afd753823d14c87189e6bc0f5/smart-on-fhir-client-0.1.14.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2022-07-19 08:31:33",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "lcname": "smart-on-fhir-client"
}
        
Elapsed time: 0.41508s