CET+-+Reference+Implementations



toc

1.0 Reference Implementations Overview
The S&I Framework defines the Reference Implementation (RI) processes as follows:

The reference implementation activity creates a fully instantiated software solution that is verified to be compliant with the standards and serves as a “reference” to other software developers of what an interoperable solution looks like. The reference implementation will be accessible as a public resource with compiled code, source code, and supporting documentation.

A reference implementation provides value to the community through a thorough assessment of the technology, support for established standards, and vetting within the S&I Framework.

2.0 Scope of Reference Implementations
The RI WG development team will support the purposes and goals of the initiative as outlined in the Initiative Charter and communicated by the Use Case and Functional Requirements team and the Architecture Workgroup, if the said workgroups are formed at the discretion of the initiative members. The RI WG development team will then identify the constraints, exclusions, assumptions, and acceptance criteria used to complete the project. A sample of RI Scope as defined by the Architecture Workgroup can be found at the following link: RI Scope.

To support the objectives of the Initiative, the RI WG development team, comprised of participants from the community, should focus its efforts on two key tasks:
 * building a Reference Implementation by analyzing the requirements specifications that are provided by Harmonization/Implementation Specifications team, and
 * augmenting the high level architecture provided by the Architecture Workgroup.

An Overview of the RI Architecture developed by the Architecture Workgroup as an example can be found at the following link: RI Arch Overview.

The RI development team will provide open source code to assist other stakeholders (vendors, providers, individuals, etc.) to more efficiently create, understand, and exchange valid clinical content/information, as defined by the specifications provided by the Harmonization/Implementation Specifications team.

All utilized software tools and developed software can have no license fees associated with use, and therefore the developers and end users of the RI will not incur license fees.

3.0 Reference Implementation Workgroups
Participants from the community should come together to form a Reference Implementation Workgroup. This group will adopt a collaborative open-source development process (for example, see this adoptation), and follow Agile Sprint techniques to do the following:
 * Support the analysis of specifications
 * Use Case and Functional Requirements
 * Develop open-source software
 * Perform internal testing of the RI

Workgroup members should assist in all activities, such as defining change resolutions; evaluating the need for scope changes and communicating them to the Initiative Coordinator as necessary; assisting in the design of RI; contributing to writing and/or internally testing any RI software code; and designing and/or verifying test data. Participants should assign themselves to a role from the list below and post their chosen role and contact information on the Workgroup wiki page. More than one role may be selected.
 * **Role** || **Responsibilities** ||
 * **Analyst** || Participate in the development and review of detailed design documentation for the Reference Implementation. ||
 * **Developer** || Actively participate in the development and peer review of code for the Reference Implementation. Coding may involve the modification and adaptation of existing tools and software packages or the development of original code required to realize necessary functions in the architecture. ||
 * **Domain** **SME** || Provide input and guidance on the use of the S&I Framework Clinical Element Data Dictionary (CEDD), Vocabularies, HL7 standards (v 2.5.1, CDA, CCD, CCR, etc.) ||
 * **Pilot/Demo** || Serve as a test or demonstration site of Reference Implementation tools developed by this Workgroup. Provide test data for pilots, if possible. ||
 * **ONC Contractor** || Select this role if you are a contractor to ONC as part of the S&I Framework. ||
 * **Tools SME** || Provide the group with expertise on a particular existing tool set which might be leveraged in achieving the goals of the Reference Implementation. Please indicate the tool set in which you are expert. ||

Workgroup Formation Process
The Workgroup members should set up wiki pages to organize the work efforts related to the RI phase.

The Workgroup members must identify and/or develop open source tools for project management, document storage, issue tracking, and communications within the workgroup. An example of a tool to aid in development efforts is Redmine. Please refer to the following link for an example of Redmine Wiki. Please refer to [|Redmine] for installation instructions and information on key features.

Software Development Process
For the software development efforts to be successful, it is important that the contributing participants adopt a process that they have confidence in and can commit to following. The process should define standards and common practices that the development team intends to adopt. The RI Workgroup members can customize the process by consensus to meet the needs of the group. A sample of a collaborative open source development process can be found at: S&I Framework WG OSS Reference Implementation Development Process. Below is a list of other suggested tasks the RI Workgroup should complete throughout its duration:
 * **Perform an analysis of the specifications and define a detailed design of the RI components, their functions, and their interactions.**
 * **Produce a Development Setup Guide and an Implementation Developer’s Guide.** The former should be a guide for setting up the Development environment, and the latter should provide guidance on the use of development tools and libraries. Together, these tools will aid new members to provide their inputs to the code development and code review. Please refer to the following sample of Development Setup Guide and an Implementation Developer's Guide.
 * **Ensure that the authorship and provenance of the software is unambiguous and that the claims are credible and dependable.** As participants in an open source development process, all authors retain original copyright to their contributions, but agree to license it publicly. A sample of the RI software licensing process is located here: S&I Framework Software Licensing Process
 * **Identify tasks, perform Sprint planning, and execute Sprints following the Agile Sprint scrum techniques.** As a part of the process, members should participate in daily stand-ups to determine progress, make updates to the Sprint tasks, and share next steps/ obstacles that they are facing.
 * **Agree on the use of an open source tool such as Redmine or Jira** **to help track development related questions and issues.** These tools can also be used to store working documents for the WG members to review. Such a tool helps in Sprint planning and execution, Issue tracking, and communication of relevant information about releases to the workgroup.
 * **Develop iterations of the functional internal testable software packages based upon the specifications and/or requirements traceability matrix (RTM) provided by the Implementation Specifications team.** If an RTM is not provided, the Workgroup members may find it beneficial to create a one to aid in their development and internal testing efforts. Please refer to this [|Requirements Traceability Matrix] sample.
 * **Follow best practices such as conducting peer review of the code and executing continuous integration testing.** Each release of the RI should be tested internally for conformance to the specifications and for interoperability through established tests, test cases, data and tools.
 * **Provide an overview of the RI implementation once the software code is developed and internally tested.** The overview is in the form of a document that provides a summary of the objectives, scope, status, plans, and products of the RI. Please refer to the following link for an example of the Implementation Overview.
 * **Build and deploy milestone releases, using tools such as Redmine, for the Pilots to execute.** The team should include the release notes to inform the end users of the functionality and features included in the release.