{"id":24752062,"url":"https://github.com/inferno-framework/inferno-saner","last_synced_at":"2026-04-28T13:38:16.919Z","repository":{"id":40126989,"uuid":"262031666","full_name":"inferno-framework/inferno-saner","owner":"inferno-framework","description":"Inferno Tests for the SANER IG","archived":false,"fork":false,"pushed_at":"2024-01-10T20:01:01.000Z","size":4304,"stargazers_count":1,"open_issues_count":10,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-23T04:14:39.500Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/inferno-framework.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-07T11:28:25.000Z","updated_at":"2024-03-12T12:46:11.000Z","dependencies_parsed_at":"2025-01-28T10:44:48.651Z","dependency_job_id":null,"html_url":"https://github.com/inferno-framework/inferno-saner","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/inferno-framework/inferno-saner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inferno-framework%2Finferno-saner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inferno-framework%2Finferno-saner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inferno-framework%2Finferno-saner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inferno-framework%2Finferno-saner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/inferno-framework","download_url":"https://codeload.github.com/inferno-framework/inferno-saner/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inferno-framework%2Finferno-saner/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260945593,"owners_count":23087039,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-28T10:34:39.839Z","updated_at":"2026-04-28T13:38:11.867Z","avatar_url":"https://github.com/inferno-framework.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg\nsrc=\"https://raw.githubusercontent.com/onc-healthit/inferno/master/public/images/inferno_logo.png\"\nwidth=\"300px\" /\u003e\n\n[![Build\nStatus](https://travis-ci.org/onc-healthit/inferno.svg?branch=master)](https://travis-ci.org/onc-healthit/inferno-program)\n\n# Inferno for SANER\n\n## The Situational Awareness for Novel Epidemic Response Implementation Guide Testing\n\n**Inferno SANER Edition** performs API conformance testing for the [Situational Awareness for Novel Epidemic Response Implementation Guide](http://build.fhir.org/ig/HL7/fhir-saner/).\n\n**Inferno SANER Edition** is a pre-configured and customized version of the\nopen source [Inferno](https://github.com/onc-healthit/inferno) FHIR\ntesting tool, and only contains tests and functionality relevant to the SANER Implementation Guide. \nUsers interested in extending or reusing this open\ntesting capability to meet their own needs are encouraged to visit the [Inferno\nGitHub repository](https://github.com/onc-healthit/inferno).\n\n## Installation and Deployment\n\n### Docker Installation\n\nDocker is the recommended installation method for Windows devices and can also\nbe used on Linux and MacOS hosts.\n\n1. Install [Docker](https://www.docker.com/) for the host platform as well as\n   the [docker-compose](https://docs.docker.com/compose/install/) tool (which\n   may be included in the distribution, as is the case for Windows and MacOS).\n2. Download the [latest release of the `inferno`\n   project](https://github.com/onc-healthit/inferno/releases) to your local\n   computer on a directory of your choice.\n3. Open a terminal in the directory where the project was downloaded (above).\n4. Run the command `docker-compose up` to start the server. This will\n   automatically build the Docker image and launch both the ruby server (using\n   unicorn) and an NGINX web server.\n5. Navigate to http://localhost:4567 to find the running application.\n\nIf the docker image gets out of sync with the underlying system, such as when\nnew dependencies are added to the application, you need to run `docker-compose\nup --build` to rebuild the containers.\n\nCheck out the [Troubleshooting\nDocumentation](https://github.com/onc-healthit/inferno/wiki/Troubleshooting) for\nhelp.\n\n### Native Installation\n\nInferno can installed and run locally on your machine.  Install the following\ndependencies first:\n\n* [Ruby 2.5+](https://www.ruby-lang.org/en/)\n* [Ruby Bundler](http://bundler.io/)\n* [SQLite](https://www.sqlite.org/)\n\nAnd run the following commands from the terminal:\n\n```sh\n# MacOS or Linux\ngit clone https://github.com/onc-healthit/inferno\ncd inferno\nbundle install\nbundle exec rackup\n```\n\nInferno can then be accessed at http://localhost:4567 in a web browser.\n\nIf you would like to use a different port it can be specified when calling\n`rackup`.  For example, the following command would host Inferno on port 3000:\n\n```sh\nrackup -p 3000\n```\n\n### Remote Deployment\n\nInferno can also be deployed onto a server to test many different instances of\nthe FHIR Servers by multiple users.  Test results are kept private at a unique,\nunguessable URI that can be saved for future reference or shared.\n\nDeployment on a remote server can be done by using a modified form of the Docker\ncontainers provided (see above) or by direct installation on the remote host.\n\nPlease see the file\n[deployment-configuration.md](https://github.com/onc-healthit/inferno-program/blob/master/deployment-configuration.md)\nfor details.\n\n### Terminology Support\nIn order to validate terminologies, Inferno must be loaded with files generated from the \nUnified Medical Language System (UMLS).  The UMLS is distributed by the National Library of Medicine (NLM) and requires an account to access.\n\nInferno provides some rake tasks which may make this process easier, as well as a Dockerfile and docker-compose file that will create the validators in a self-contained environment.\n\nPrerequisites:\n* A UMLS account\n* A working Docker toolchain, which has been assigned at least 10GB of RAM (The Metathesaurus step requires 8GB of RAM for the Java process)\n* A copy of the Inferno repository, which contains the required Docker and Ruby files\n\nYou can prebuild the terminology docker container by running the following command:\n```sh\ndocker-compose -f terminology_compose.yml build\n```\nOnce the container is built, you can run the terminology creation task by using the following commands, in order:\n```sh\nexport UMLS_USERNAME=\u003cyour UMLS username\u003e\nexport UMLS_PASSWORD=\u003cyour UMLS password\u003e\ndocker-compose -f terminology_compose.yml up\n```\nThis will run the terminology creation steps in order, using the UMLS credentials supplied. These tasks may take several hours. If the creation task is cancelled in progress and restarted, it will restart after the last _completed_ step. Intermediate files are saved to `tmp/terminology` in the Inferno repository that the Docker Compose job is run from, and the validators are saved to `resources/terminology/validators/bloom`, where Inferno can use them for validation.\n\nIf this Docker-based method does not work based on your architecture, manual setup and creation of the terminology validators is documented [on this wiki page](https://github.com/onc-healthit/inferno/wiki/Installing-Terminology-Validators#building-the-validators-without-docker)\n\n#### UMLS Data Sources\nSome material in the UMLS Metathesaurus is from copyrighted sources of the respective copyright holders.\nUsers of the UMLS Metathesaurus are solely responsible for compliance with any copyright, patent or trademark\nrestrictions and are referred to the copyright, patent or trademark notices appearing in the original sources,\nall of which are hereby incorporated by reference.\n\n      Bodenreider O. The Unified Medical Language System (UMLS): integrating biomedical terminology.\n      Nucleic Acids Res. 2004 Jan 1;32(Database issue):D267-70. doi: 10.1093/nar/gkh061.\n      PubMed PMID: 14681409; PubMed Central PMCID: PMC308795.\n\n### Reference Implementation\n\nWhile it is recommended that users install Inferno locally, a reference\nimplementation of Inferno is hosted at https://inferno.healthit.gov\n\nUsers that would like to try out Inferno before installing locally can use that\nreference implementation, but should be forewarned that the database will be\nperiodically refreshed and there is no guarantee that previous test runs will be\navailable in perpetuity.\n\n## Supported Browsers\n\nInferno has been tested on the latest versions of Chrome, Firefox, Safari, and\nEdge.  Internet Explorer is not supported at this time.\n\n## Unit Tests\n\nInferno contains a robust set of self-tests to ensure that the test clients\nconform to the specification and performs as intended.  To run these tests,\nexecute the following command:\n\n```sh\nbundle exec rake test\n```\n\n## Inspecting and Exporting Tests\n\nTests are written to be easily understood, even by those who aren't familiar\nwith Ruby.  They can be viewed directly [in this\nrepository](https://github.com/onc-healthit/inferno/tree/master/lib/app/modules).\n\nTests contain metadata that provide additional details and traceability to\nstandards.  The active tests and related metadata can be exported into CSV\nformat and saved to a file named `testlist.csv` with the following command:\n\n```sh\nbundle exec rake inferno:tests_to_csv\n```\n\nArguments can be provided to the task in order to export a specific set of tests\nor to specify the output file.\n\n```sh\nbundle exec rake inferno:tests_to_csv[onc,all_tests.csv]\n```\n\nTo just choose the module and use the default groups and filename:\n\n```sh\nbundle exec rake inferno:tests_to_csv[onc]\n\n```\n\n## Running Tests from the Command Line\nInferno provides two methods of running tests via the command line: by directly\nproviding the sequences or running automated scripts\n\n_Note: This feature is still in development and we are looking for feedback on\nfeatures and improvements in ways it can be used_\n\n### Running Tests Directly\n\nTesting sequences can be run from the command line via a rake task which takes\nthe sequence (or sequences) to be run and server url as arguments:\n```sh\nbundle exec rake inferno:execute[https://my-server.org/data,onc,ArgonautConformance]\n```\n\n### Running Automated Command Line Interface Scripts\nFor more complicated testing where passing arguments is unwieldy, Inferno\nprovides the ability to use a script containing parameters to drive test\nexecution. The provided `example_script.json` shows an example of this script\nand how it can be used.  The `execute_batch` task runs the script:\n\n```sh\nbundle exec rake inferno:execute_batch[script.json]\n```\n\nInferno also provides a  `generate_script` rake task which prompts the user for\na series of inputs which are then used to generate a script. The user is\nexpected to provide a url for the FHIR Server to be tested and the module name\nfrom which sequences will be pulled.\n```sh\nbundle exec rake inferno:generate_script[https://my-server.org/data,onc]\n```\n\n### Caveats\n* For `DynamicRegistration` users must provide instructions similar to that\n  provided in `example_script.json` to automate the webdriver.\n* The `confidential_client` field is a boolean and must be provided as `true` or\n  `false`\n\n## Using with Continuous Integration Systems\nInstructions and examples are available in the [Continuous Integration Section\nof the\nWiki](https://github.com/onc-healthit/inferno/wiki/Using-with-Continuous-Integration-Systems).\n\n## Contact Us\nThe Inferno development team can be reached by email at\ninferno@groups.mitre.org.  Inferno also has a dedicated [HL7 FHIR chat\nchannel](https://chat.fhir.org/#narrow/stream/153-inferno).\n\n## License\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at\n```\nhttp://www.apache.org/licenses/LICENSE-2.0\n```\nUnless required by applicable law or agreed to in writing, software distributed\nunder the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\nCONDITIONS OF ANY KIND, either express or implied. See the License for the\nspecific language governing permissions and limitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finferno-framework%2Finferno-saner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finferno-framework%2Finferno-saner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finferno-framework%2Finferno-saner/lists"}