{"id":24441720,"url":"https://github.com/inferno-framework/inferno-core","last_synced_at":"2025-04-06T02:08:42.874Z","repository":{"id":37087434,"uuid":"367094766","full_name":"inferno-framework/inferno-core","owner":"inferno-framework","description":"Core library for the Inferno Framework","archived":false,"fork":false,"pushed_at":"2024-10-29T18:36:14.000Z","size":10229,"stargazers_count":26,"open_issues_count":16,"forks_count":5,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-10-29T18:43:36.471Z","etag":null,"topics":["fhir","health-data","ruby","testing-framework"],"latest_commit_sha":null,"homepage":"https://inferno-framework.github.io/","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":"CHANGELOG.md","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":"2021-05-13T15:37:38.000Z","updated_at":"2024-10-28T14:47:45.000Z","dependencies_parsed_at":"2024-11-05T23:22:25.041Z","dependency_job_id":"b78cfe22-8242-4211-9e3c-c8772e96779a","html_url":"https://github.com/inferno-framework/inferno-core","commit_stats":{"total_commits":333,"total_committers":13,"mean_commits":"25.615384615384617","dds":0.6336336336336337,"last_synced_commit":"f01ce181a65d0fd6dbdf4e57ff001e87cf6ac78d"},"previous_names":[],"tags_count":89,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inferno-framework%2Finferno-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inferno-framework%2Finferno-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inferno-framework%2Finferno-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inferno-framework%2Finferno-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/inferno-framework","download_url":"https://codeload.github.com/inferno-framework/inferno-core/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247423514,"owners_count":20936626,"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":["fhir","health-data","ruby","testing-framework"],"created_at":"2025-01-20T21:19:08.739Z","updated_at":"2025-04-06T02:08:42.833Z","avatar_url":"https://github.com/inferno-framework.png","language":"Ruby","readme":"# Inferno Core\n[![codecov](https://codecov.io/gh/inferno-framework/inferno-core/branch/main/graph/badge.svg?token=6NJTBHF82R)](https://codecov.io/gh/inferno-framework/inferno-core)\n\nInferno Core is the central library of the [Inferno\nFramework](https://inferno-framework.github.io) that allows you to write,\nexecute, and distribute executable conformance tests for the [HL7® FHIR®\nstandard](http://hl7.org/fhir/) standard. Inferno Core isn't built to be used\nalone; it is imported as a library into Inferno Test Kits, which are web-based\ntesting applications that target specific data exchange use cases enabled by\nFHIR.\n\nTo learn how to use the Inferno Framework and Inferno Core to develop your own\nInferno Test Kit, visit [Inferno Framework Documentation: Getting Started for\nInferno Test\nWriters](https://inferno-framework.github.io/docs/getting-started/).\n\n## About Inferno Core\nInferno Core is a [Ruby](https://ruby-lang.org/) library used to create\nRuby-based test applications (called Inferno Test Kits) and provides features\nuseful for writing and executing FHIR API tests:\n\n* **Inferno DSL**: A domain specific language for authoring FHIR API tests that\n  includes a FHIR client, native Ruby classes for FHIR, and FHIR instance validators\n* **API, Web and CLI Interfaces**: Multiple interfaces for executing tests and\n  retrieving results\n* **Test Reuse**: Methods for reusing tests within a project or from other projects\n\nBecause tests are written as Ruby scripts, test writers are able to leverage a\nfully-featured programming language and a rich ecosystem of open source\nthird-party libraries to write their tests if needed.  This makes Inferno\nwell-suited for testing data exchanges that:\n\n* include the use of additional standards beyond FHIR,\n* have large specifications that could benefit from Ruby's meta-programming\n  capabilities to ease maintenance burden,\n* or require complex logic to thoroughly validate API responses.\n\nInferno Core provides common utilities for FHIR-based testing, but tests are not\nlimited to what is provided by Inferno Core.  Inferno Core's goal is to expand on\nthe set of common utilities it provides for the benefit of the community.\n\nTo learn more about Inferno Framework and Inferno Core, please visit:\n- [Inferno Framework documentation](https://inferno-framework.github.io/docs/)\n- [Inferno Core Ruby API documentation](https://inferno-framework.github.io/inferno-core/docs)\n- [Inferno Core JSON API documentation](https://inferno-framework.github.io/inferno-core/api-docs)\n\n## Contributing to Inferno Core\n\nInferno Core contains functionality that should be broadly useful for testing\nany FHIR-based data exchange, and the team welcomes contributions.\n\nDevelopers\ninterested in contributing to the Inferno Core gem must have [Ruby\n3.1+](https://www.ruby-lang.org/en/), [Node.js and\nNPM](https://www.npmjs.com/get-npm), and [Docker\nDesktop](https://www.docker.com/products/docker-desktop/) installed.\n[Podman](https://podman.io/) may be used an alternative to Docker Desktop.\n\nInferno Core development is supported within MacOS, Linux or Windows environments.\nHowever, Windows development currently requires the use of WSL2.  Please visit\nthe [Inferno Framework\ndocumentation](https://inferno-framework.github.io/docs/getting-started/#development-with-ruby)\nsite for more information.\n\n## Running Inferno Core for Development Purposes\n```\n# Install dependencies\nnpm install\nbundle install\ngem install foreman\n\n# Set up database\nbin/inferno migrate\n\n# Start Inferno background services using Docker/Podman (validator, redis, nginx)\nbin/inferno services start\n# Start web server, worker, and webpack\nbin/inferno start\n\n# When you're done, stop the background services\nbin/inferno services stop\n```\n\nInferno Core can then be accessed by navigating to\n[http://localhost:4567/inferno](http://localhost:4567/inferno)\n\nTo only run the server (JSON API with no UI): `bundle exec puma`\n\nIf you would like to test other test suites with changes being made\nto Inferno Core, you may do so by following the instructions\nprovided in the Gemfile:\n\n```ruby\n# To test with the g10 test kit (this also adds the US Core, SMART, and TLS test\n# kits):\n# - Uncomment this line (and change test kit gem as necessary):\n# gem 'onc_certification_g10_test_kit'\n\n# - Run `bundle`\n# - Uncomment (and change as necessary) the require at the top of\n# `dev_suites/dev_demo_ig_stu1/demo_suite.rb`.\n\n```\n\n## Running tests via JSON API\nWith the server running, first retrieve a list of available test suites:\n```\nGET http://localhost:4567/inferno/api/test_suites\n```\nSee the details of a test suite:\n```\nGET http://localhost:4567/inferno/api/test_suites/TEST_SUITE_ID\n```\nThen create a test session for the suite you want to use:\n```\nPOST http://localhost:4567/inferno/api/test_sessions?test_suite_id=TEST_SUITE_ID\n```\nTests within a suite are organized in groups. Create a test run to run an entire\nsuite, a group, or an individual test. Only one of `test_suite_id`,\n`test_group_id`, or `test_id` should be provided.\n```\nPOST http://localhost:4567/inferno/api/test_runs\n{\n  \"test_session_id\": \"TEST_SESSION_ID\",\n  \"test_suite_id\": \"TEST_SUITE_ID\",\n  \"test_group_id\": \"TEST_GROUP_ID\",\n  \"test_id\": \"TEST_ID\",\n  \"inputs\": [\n    {\n      \"name\": \"input1\",\n      \"value\": \"input1 value\"\n    },\n    {\n      \"name\": \"input2\",\n      \"value\": \"input2 value\"\n    }\n  ]\n}\n```\nThen you can view the results of the test run:\n```\nGET http://localhost:4567/inferno/api/test_runs/TEST_RUN_ID/results\nor\nGET http://localhost:4567/inferno/api/test_sessions/TEST_SESSION_ID/results\n```\n\n## Development in a Ruby console\nTo get to an interactive console, run `bundle exec bin/inferno console`\n\n## Documentation\nInferno Core documentation has primarily moved to the\n[Inferno Framework documentation site](https://github.com/inferno-framework/inferno-framework.github.io/).\nHowever, Ruby Docs (generated from the source code using `./bin/docs`) and the Swagger API\ndocumentation is still located within the `docs/` directory. This documentation\nis rendered using Jekyll, which creates a site that can be built and served\nwith:\n\n```sh\n./bin/docs\ncd docs/\nbundle install\nbundle exec jekyll serve\n```\n\nView the Ruby Docs at [http://localhost:4000/inferno-core/docs](http://localhost:4000/inferno-core/docs) and the API Docs at\n[http://localhost:4000/inferno-core/api-docs](http://localhost:4000/inferno-core/api-docs).\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\n## Trademark Notice\n\nHL7, FHIR and the FHIR [FLAME DESIGN] are the registered trademarks of Health\nLevel Seven International and their use does not constitute endorsement by HL7.\n","funding_links":[],"categories":["Compliance \u0026 Security"],"sub_categories":["Testing \u0026 Reliability"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finferno-framework%2Finferno-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finferno-framework%2Finferno-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finferno-framework%2Finferno-core/lists"}