-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
TECH_DEBT: Moving documentation from confluence to github (#550)
### 🛠 Description of Changes Please see the root README on my branch for docs. Added a section for "Documentation" that links to the docs/README.md Exported from confluence each of the service specs and moved them to the docs/service_specs folder. Moved the service-specific docs from that root README.md into their equivalent service spec. Created new documentation for Census Management under "functionality" and moved the "submission folder structure" in functionality from confluence. ### 🧪 Testing Performed N/A But, after approval and merging, I plan to archive each of the equivalent pages in confluence. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Release Notes - **New Features** - Introduced a comprehensive documentation structure for various services including Census Management, Submission, and Reporting. - Added detailed guides for each service, enhancing user understanding of functionalities and configurations. - **Documentation** - Removed outdated service descriptions and replaced them with a centralized "Documentation" section. - Added new documentation files for services such as Account, Admin UI, Audit, Notification, and others, improving navigability and clarity. - Enhanced existing documentation with specific details on service responsibilities, environment variables, and event handling. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
- Loading branch information
Showing
22 changed files
with
723 additions
and
60 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
|
||
## Overview | ||
|
||
This page and its references include documentation for Link's services and the functionality those services supports. | ||
|
||
## Functionality | ||
|
||
* [Census Management](functionality/census_management.md) | ||
* Submission | ||
* [Folder Structure](functionality/submission_folder.md) | ||
|
||
## Service Specifications | ||
|
||
* [Account](service_specs/account.md) | ||
* [Admin UI](service_specs/admin_ui.md) | ||
* [Audit](service_specs/audit.md) | ||
* [Backend For Frontend (BFF)](service_specs/bff.md) | ||
* [Census](service_specs/census.md) | ||
* [Data Acquisition](service_specs/data_acquisition.md) | ||
* [Measure Evaluation](service_specs/measure_eval.md) | ||
* [Normalization](service_specs/normalization.md) | ||
* [Notification](service_specs/notification.md) | ||
* [Query Dispatch](service_specs/query_dispatch.md) | ||
* [Report](service_specs/report.md) | ||
* [Submission](service_specs/submission.md) | ||
* [Tenant](service_specs/tenant.md) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
[← Back Home](../README.md) | ||
|
||
## Overview | ||
|
||
Link includes a **Census Management** module designed to acquire, evaluate, and maintain a real-time census of patients actively or recently treated within a hospital system. This module supports the submission of required patient data to governing bodies (such as NHSN) per established reporting criteria. | ||
|
||
The system routinely gathers census data by leveraging multiple methods compatible with hospital EHRs. This document provides an overview of each acquisition method, the data elements tracked, and future considerations for expanding data persistence. | ||
|
||
## Census Data Acquisition Methods | ||
|
||
### 1. FHIR Standard - List Resource | ||
|
||
The **FHIR List Resource** method is one of the primary approaches for acquiring patient lists from hospital EHR systems. In systems like Epic, patient lists are generated through proprietary queries within the EHR, associated with the FHIR List resource for access through FHIR integrations. | ||
|
||
- **Endpoint**: `GET /List/<listId>` | ||
- **Functionality**: Queries the EHR for patient lists identified by a `listId`. | ||
- **Tenant Configurability**: The `listId` is configurable per tenant within Link, allowing each institution to define the patient population that constitutes their census. | ||
- **Applicability**: This method supports census management for any EHR that utilizes FHIR Lists representing relevant patient groups. | ||
|
||
### 2. FHIR Standard - Bulk FHIR Implementation Guide | ||
|
||
The **Bulk FHIR** method allows Link to acquire patient data via batch processing, useful for large patient groups in systems that support flexible querying. | ||
|
||
- **Endpoint**: Bulk FHIR `$export` request with `groupId` | ||
- **Process**: | ||
- Link initiates a `$export` request for patient data by `groupId`. | ||
- The export process is monitored and polled routinely until completion. | ||
- Upon completion, patient resources are retrieved, and the FHIR ID of each patient is extracted and stored. | ||
- **Tenant Configurability**: Each tenant configures a unique `groupId` corresponding to their desired patient group. | ||
|
||
### 3. ADT Feeds (Under Exploration) | ||
|
||
Link is evaluating the feasibility of using **ADT feeds**—specifically for admission, discharge, and cancellation events—to dynamically manage census data. This approach would offer real-time census updates and potentially enhance the accuracy and responsiveness of the census. | ||
|
||
## Scheduling and Frequency | ||
|
||
Both the FHIR List and Bulk FHIR methods utilize a configurable scheduling system, allowing each tenant to define query intervals. The scheduling system is based on CRON patterns, ensuring Link can automatically query the EHR at specified times to maintain an updated census. | ||
|
||
## Data Persistence and Tracking | ||
|
||
Currently, Link persists only the **FHIR ID** of each patient. This identifier allows Link to accurately track patients across census updates without storing additional demographic information. | ||
|
||
### Future Considerations | ||
|
||
In the interest of enhancing the user interface, Link is considering storing additional data elements, such as the **patient name** associated with each FHIR ID. This would provide users with meaningful patient identifiers, facilitating easier navigation and record management within the Link UI. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
[← Back Home](../README.md) | ||
|
||
## Folder Submission - Link Documentation | ||
|
||
### Naming Convention | ||
|
||
Format: `<nhsn-org-id>-<plus-separated-list-of-measure-ids>-<period-start>-<period-end?>-<timestamp>` | ||
|
||
Example: `1234-NHSNdQMAcuteCareHospitalInitialPopulation+NHSNGlycemicControlHypoglycemicInitialPopulation-20240401-20240430-20240503T084523` | ||
|
||
### Files | ||
|
||
- `_manifest.json` | ||
- `submitting-device.json` - The submitting Device (always “NHSNLink” for reports generated by NHSNLink) | ||
- `submitting-org.json` - The submitting Organization | ||
- `census.json` | ||
- `query-plan.yml` | ||
- `aggregate-NHSNdQMAcuteCareHospitalInitialPopulation.json` - a MeasureReport | ||
- `aggregate-NHSNGlycemicControlHypoglycemicInitialPopulation.json` - a MeasureReport | ||
- `patient-X.json` - X is the patient’s Patient.id and is a Bundle of: | ||
- individual MeasureReport for ACH | ||
- individual MeasureReport for HYPO | ||
- Patient/X | ||
- Condition/X, etc. | ||
- `shared-resources.json` - a Bundle of shared resources, such as Medication and Location | ||
- `validation-results.json` - an OperationOutcome of raw validation results for all data in the submission | ||
- `validation-report.html` - categorized validation results for all data in the submission in a renderable HTML |
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
[← Back Home](../README.md) | ||
|
||
## Account Overview | ||
|
||
The Account service is responsible for maintaining roles and permissions for Link Cloud users. | ||
|
||
- **Technology**: .NET Core | ||
- **Image Name**: link-account | ||
- **Port**: 8080 | ||
- **Database**: MSSQL (previously Postgres) | ||
|
||
## Environment Variables | ||
|
||
| Name | Value | Secret? | | ||
|------------------------------------------|---------------------------------|---------| | ||
| ExternalConfigurationSource | AzureAppConfiguration | No | | ||
| ConnectionStrings__AzureAppConfiguration | `<AzureAppConfigEndpoint>` | Yes | | ||
|
||
## App Config | ||
|
||
### Kafka Connection | ||
|
||
| Name | Value | Secret? | | ||
|--------------------------------------|---------------------------|----------| | ||
| KafkaConnection__BootstrapServers__0 | `<KafkaBootstrapServer>` | No | | ||
| KafkaConnection__GroupId | Account | No | | ||
|
||
### Redis | ||
|
||
| Name | Value | Secret? | | ||
|--------------------------|---------------------------|--------| | ||
| ConnectionStrings__Redis | `<RedisConnectionString>` | Yes | | ||
| Cache__Enabled | true/false | No | | ||
|
||
### Database Settings (MSSQL) | ||
|
||
| Name | Value | Secret? | | ||
|---------------------------------------|-----------------------|----------| | ||
| ConnectionStrings__DatabaseConnection | `<ConnectionString>` | Yes | | ||
|
||
### Tenant API Settings | ||
|
||
| Name | Value | Secret? | | ||
|-----------------------------------------------|-------------------------------------|---------| | ||
| TenantApiSettings__TenantServiceBaseEndpoint | `<TenantServiceUrl>/api` | No | | ||
|
||
## Consumed Events | ||
|
||
- **NONE** | ||
|
||
## Produced Events | ||
|
||
- **Event**: `AuditableEventOccurred` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
[← Back Home](../README.md) | ||
|
||
## Admin UI | ||
|
||
> ⚠️ **Note:** This service is currently called "demo app" and is planned to be renamed. | ||
## Admin UI Overview | ||
|
||
- **Technology**: JavaScript (TypeScript) & Angular | ||
- **Image Name**: link-admin-ui | ||
- **Port**: 80 | ||
- **Database**: NONE | ||
- **Scale**: 0-5 | ||
|
||
## Volumes | ||
|
||
| Volume | Mount Path | Sub-path | | ||
|-------------------------------|------------------------------------------------------|-------------------------| | ||
| Azure Storage Account | `/usr/share/nginx/html/assets/app.config.local.json` | `app.config.local.json` | | ||
|
||
## app.config.local.json | ||
|
||
```json | ||
{ | ||
"baseApiUrl": "<DEMO-API-GATEWAY-BASE-URL>/api", | ||
"idpIssuer": "https://oauth.nhsnlink.org/realms/NHSNLink", | ||
"idpClientId": "link-botw" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
[← Back Home](../README.md) | ||
|
||
## Audit Overview | ||
|
||
The Audit service is responsible for persisting auditable events that are generated by the Link Cloud services. | ||
|
||
- **Technology**: .NET Core | ||
- **Image Name**: link-audit | ||
- **Port**: 8080 | ||
- **Database**: MSSQL | ||
|
||
## Environment Variables | ||
|
||
| Name | Value | Secret? | | ||
|---------------------------------------------|-------------------------------|---------| | ||
| Link__Audit__ExternalConfigurationSource | AzureAppConfiguration | No | | ||
| ConnectionStrings__AzureAppConfiguration | `<AzureAppConfigEndpoint>` | Yes | | ||
|
||
## App Config | ||
|
||
### Kafka Connection | ||
|
||
| Name | Value | Secret? | | ||
|---------------------------------------------------|--------------------------|---------| | ||
| Link__Audit__KafkaConnection__BootstrapServers__0 | `<KafkaBootstrapServer>` | No | | ||
| Link__Audit__KafkaConnection__GroupId | audit-events | No | | ||
| Link__Audit__KafkaConnection__ClientId | audit-events | No | | ||
|
||
## Consumed Events | ||
|
||
- **AuditableEventOccurred** | ||
|
||
## Produced Events | ||
|
||
- **NONE** |
Oops, something went wrong.