Skip to content

Commit

Permalink
Fixed README.rst
Browse files Browse the repository at this point in the history
  • Loading branch information
zensoup committed Dec 15, 2018
1 parent 138a93c commit d56e1f2
Showing 1 changed file with 62 additions and 90 deletions.
152 changes: 62 additions & 90 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,31 +13,26 @@ you are interested in making it better, you are very welcome to contribute!

**What fhirball does:**

- It provides the ability to create "real time" transformations between your
ORM models to valid FHIR resources through an extensive mapping API.
- Has been designed to work with existing data-sets and database schemas
but can of course be used with its own database.
- It's compatible with the SQLAlchemy, DjangoORM and PyMODM ORMs, so if you
can describe your database in one of them, you are good to go. It should also
be pretty easy to extend to support any other ORM, feel free to submit a pull
request!
- Handles many of the FHIR REST operations and searches like creating and
updating resources, performing advanced queries such as reverse includes,
paginated bundles, contained or referenced resources, and more.
- Provides the ability to audit each request, at the granularity that you
desire, all the way down to limiting which of the attributes for each model
should be accessible for each user.

- It provides the ability to create "real time" transformations between your ORM models to valid FHIR resources through an extensive mapping API.

- Has been designed to work with existing data-sets and database schemas but can of course be used with its own database.

- It's compatible with the SQLAlchemy_, DjangoORM_ and PyMODM_ ORMs, so if you can describe your database in one of them, you are good to go. It should also be pretty easy to extend to support any other ORM, feel free to submit a pull request!

- Handles many of the FHIR REST operations and searches like creating and updating resources, performing advanced queries such as reverse includes,paginated bundles, contained or referenced resources, and more.

- Provides the ability to audit each request, at the granularity that you desire, all the way down to limiting which of the attributes for each model should be accessible for each user.

**What fhirball does not do:**

- Provide a ready to use solution for a Fhir server. Fhirball is a framework,
we want things to be as easy as possible but you will still have to write code.
- Contain a web server. Fhirball takes over once there is a request string
and request body and returns a json object. You have to handle the actual
requests and responses.
- Handle authentication and authorization. It supports it, but you must write
the implementation.
- A ton of smaller stuff, which you can find in the _Roadmap_.
- Provide a ready to use solution for a Fhir server. Fhirball is a framework, we want things to be as easy as possible but you will still have to write code.

- Contain a web server. Fhirball takes over once there is a request string and request body and returns a json object. You have to handle the actual requests and responses.

- Handle authentication and authorization. It supports it, but you must write the implementation.

- A ton of smaller stuff, which you can find in the _Roadmap_.

___________________
Quick Overview
Expand All @@ -53,7 +48,8 @@ Begin by declaring your models using the ORM of your choice. Subclass or extend
Inside FhirMap, use Attributes to declare properties using the name of the corresponding Fhir resource.

Here's a simple example for SQLAlchemy:
::

.. code-block:: python
from sqlalchemy import Column, Integet, String
from fhirball.db.backends.SQLAlchemy.base import Base, engine
Expand Down Expand Up @@ -85,14 +81,16 @@ Here's a simple example for SQLAlchemy:
The mapping we defined is as simple as it gets but lets see what it can do. The class we defined is still a normal SQLAlchemy class
and we can use it the way we would any other:
::

.. code-block:: python
>>> location = Location.query.first()
>>> location.location_name
'Ward-1'
But it also has FHIR superpowers:
::

.. code-block:: python
>>> from fhirball.server.requestparser import parse_url
>>> request = parse_url('Location?name:contains=storage')
Expand Down Expand Up @@ -125,7 +123,8 @@ and defining a FhirMap, we gain the ability to handle it ad both a model and a
Fhir resource.

We we can interchangeably get and set attributes through the `.Fhir` magic property:
::

.. code-block:: python
>>> location = Location.query.first()
>>> location.location_name
Expand All @@ -139,7 +138,8 @@ We we can interchangeably get and set attributes through the `.Fhir` magic prope
'Ward-2'
And get the JSON representation:
::

.. code-block:: python
>>> location.to_fhir()
<fhirball.Fhir.Resources.location.Location at 0x7fb2445c6080>
Expand All @@ -150,80 +150,52 @@ And get the JSON representation:
'name': 'Ward_1'
}
.. _Roadmap:
___________________
Roadmap
___________________


[ ] Complete unit test coverage

[ ] pagination

[ ] request handlers

[ ] Integration tests

[ ] Complete documendation coverage

[ ] Add DELETE functionality

[ ] Support all `search parameters`_

[ ] _content

[ ] _lastUpdated

[ ] _profile

[ ] _security

[ ] _tag

[ ] _text

[ ] _list

[ ] _has

[ ] _summary

[ ] _sort

[ ] _count

[ ] `_at`_

[ ] _since

[ ] logging

[ ] `Documents`_

[ ] More Searches

[ ] More attributes

[ ] If-Modified-Since header

[ ] Support application/fhir+json and _format

[ ] Html serving (?)

[ ] Versions

[ ] Versioned updates

[ ] Auto-generate Capability Statement

[ ] Auto-generate Strtucture Definition
| [ ] Complete unit test coverage
| [ ] pagination
| [ ] request handlers
| [ ] Integration tests
| [ ] Complete documendation coverage
| [ ] Add DELETE functionality
| [ ] Support all `search parameters`_
| [ ] _content
| [ ] _lastUpdated
| [ ] _profile
| [ ] _security
| [ ] _tag
| [ ] _text
| [ ] _list
| [ ] _has
| [ ] _summary
| [ ] _sort
| [ ] _count
| [ ] `_at`_
| [ ] _since
| [ ] logging
| [ ] `Documents`_
| [ ] More Searches
| [ ] More attributes
| [ ] If-Modified-Since header
| [ ] Support application/fhir+json and _format
| [ ] Html serving (?)
| [ ] Versions
| [ ] Versioned updates
| [ ] Auto-generate Capability Statement
| [ ] Auto-generate Strtucture Definition


.. _fhir: https://www.hl7.org/fhir/
.. _flask: http://flask.pocoo.org/
.. _django: https://www.djangoproject.com/
.. _DjangoORM: https://www.djangoproject.com/
.. _PyMODM: https://github.com/mongodb/pymodm
.. _SQLAlchemy: https://www.sqlalchemy.org/
.. _`search parameters`: https://www.hl7.org/fhir/searchparameter-registry.html
.. _`Documents`: https://www.hl7.org/fhir/documents.html
.. _`_at`: https://www.hl7.org/fhir/http.html#history

0 comments on commit d56e1f2

Please sign in to comment.