# Non-Functional Requirements

The following are recommended non-functional requirements for the OpenHIE component software depicted in the gray box of figure 2.1 and further defined in this document. OpenHIE supports the use of technology that is appropriate for the use case and does not preclude the use of proprietary tools but rather supports the use of tools that are built to meet the needs and support the implementation. OpenHIE does require that technologies do not create a “lock-in” scenario whereby the implementer has no access to their data and as such supports an approach to an open architecture.

<table data-header-hidden><thead><tr><th width="103">#</th><th width="181">OpenHIE Non-Functional Requirements</th><th width="141">Notes for system evaluation</th><th>Recommendation/ Requirement</th></tr></thead><tbody><tr><td><strong>#</strong></td><td>OpenHIE Non-Functional Requirements</td><td>Notes for system evaluation</td><td><strong>Recommendation/ Requirement</strong></td></tr><tr><td><strong>NRF-1</strong></td><td>Technologies should provide standard means of accessing data within the system that does not lock the client into proprietary data formats or storage mechanisms.</td><td>Please provide documentation on API usage.</td><td>Recommendation</td></tr><tr><td><strong>NFR-2</strong></td><td><p>The system should be well Documented: An OpenHIE reference system should include appropriate background, design,  installation, configuration, and operational documentation to ensure it is easy to understand, maintain, and debug.</p><ol><li>Source code should have comments so that developers do not need to look anywhere else to understand the code.</li><li>Configuration files should have embedded comments explaining the different options.</li><li>Installation, configuration, and operational activities should be describe</li></ol></td><td><p>Please provide links to documentation and source code Including:  </p><ol><li>Source code documentation policies or examples of comment practices should be shared.  </li><li>Please share configuration files.  </li><li>Please provide installation documentation or links to scripts.  </li><li>Please provide links to source code.</li></ol></td><td>Recommendation</td></tr><tr><td><strong>NFR-3</strong></td><td>If the system is an open source tool the system should have open, easy access to source code: A standard version control system (e.g., GitHub) should be used to ensure that source code access is fast, easy to download, compile, and execute code.</td><td><p>Please provide links to read.me files and source code repository.  </p><p></p><p>Also provide the git flow structure of the repository. E.g production, dev and bug branches.</p><p><br></p></td><td>Recommendation</td></tr><tr><td><strong>NFR-4</strong></td><td><p>The system should be built using common technology:  </p><ol><li>In order to make it easy to run/configure/debug, the software should be built on popular technologies that are widely accepted.</li><li>Any 3rd party libraries used by the software should be easy for a typical developer to use.</li><li>Any external software/systems (like the database) should also be easy to use.</li><li>It should be easy to view the contents of the database.</li></ol></td><td><p>Please state the key programming languages and supported technology platforms.</p><p>Please list third-party libraries needed </p><p>Please provide the database entity relationship mapping diagram and documentation.</p><p><br></p></td><td>Recommendation</td></tr><tr><td><strong>NFR-5</strong></td><td>The source code should include unit tests that are based on the specific requirements of OpenHIE and that create a framework to validate functionality and that the system operates as designed.</td><td>Provide links to testing documentation</td><td>Recommendation</td></tr><tr><td><strong>NFR-6</strong></td><td>OpenHIE does not preclude the use of proprietary solutions. If an open source solution is selected it is recommended that the component would, ideally, be distributed under an OSI approved open-source license that minimizes complexity and enables an implementer community to leverage the software in a broad variety of sustainability contexts.</td><td>Please share your license</td><td>Recommendation</td></tr><tr><td><strong>NFR-7</strong></td><td>The system should take into account the IT infrastructure of low resource settings where electricity, internet and/or technical literacy may be limited.  </td><td></td><td>Recommendation</td></tr><tr><td>NFR-8</td><td>Have a community of practices for the global good applications and ensure that there are clear directions on how to engage with the community.</td><td>Link to the community and documentation on the way to contact the leaders.</td><td>Recommendation</td></tr><tr><td>NFR-9</td><td>Security practices should include supporting role-based access control lists where appropriate.</td><td></td><td>Recommendation</td></tr><tr><td>NFR-10</td><td>It is recommended that there are security practices to notify global good application implementers when security patches are needed.</td><td></td><td>Recommendation</td></tr><tr><td>NFR-11</td><td>There should be a community plan for maintaining and evaluating the application for cyber security risks.</td><td></td><td>Recommendation</td></tr><tr><td>NFR-12</td><td>Application licenses shall be clearly stated.</td><td></td><td>Required</td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://guides.ohie.org/arch-spec/openhie-component-specifications-1/non-functional-requirements.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
