Extending Inferno - onc-healthit/inferno-community GitHub Wiki
Extending Inferno
Inferno is a testing application that was written to support testing of the open API certification criteria in the 21st Century Cures Act: Interoperability, Information Blocking, and the ONC Health IT Certification Program. It is principally focused on the 'patient data access' data exchange use case, in which servers must provide a standardized API that patient and provider-facing apps can receive authorized access to relevant patient records. It is also intended to support population-level API access, in which large amounts of data can be exchanged between systems.
While FHIR is central to these APIs, many of the testing requirements are defined outside of FHIR's machine-readable conformance framework. This includes:
- OAuth2, using the SMART on FHIR profiles, with additional ONC-defined constraints
- OpenID Connect
- Bulk Data API
- TLS requirements
- Additional requirements on MUST SUPPORT
While Inferno tries to make it really easy to test FHIR as a specification, it is also designed to support testing things that may not look anything like FHIR's simple request-response RESTful interface (e.g. the SMART EHR Launch Sequence). If you can write logic to represent tests in Ruby, you should be able to provide conformance tests using Inferno. That allows Inferno great flexibility to perform testing of additional standards ONC's base criteria expands over time. It also means that Inferno should be flexible to handle most any testing situation, without artificially limiting testing to what falls into the traditional 'FHIR' scope.
Inferno's API is currently in a very early stage, but others are encouraged to reuse Inferno and provide feedback on how well it is suited to test their use case. Currently that requires users to clone the Inferno repository, and to add their our own tests. The team expects to have an improved API for extension in the next major release. Please let us know how you would like to use Inferno to help us guide that API.