Admin UI (front-end)
Overview
The Admin UI is an Angular-based front-end application that provides a comprehensive interface for managing the Link platform, configuring tenants, and monitoring report generation and submission workflows.
System-wide Functionality
- User Management: Allows administrators to manage user accounts, including creation, editing, and deletion. Currently, the system supports a single "admin" role for platform-wide access.
- Measure Management: Upload and manage FHIR-based measure definitions. Administrators can upload measure bundles in JSON format and explore related artifacts.
- Validation Profile (IG) Management: Supports the management of FHIR Implementation Guides (IGs). Administrators can upload IGs as
.tgzpackages and view their terminology dependencies and package details. - Terminology Management: Allows for viewing and filtering terminology resources, such as CodeSystems and ValueSets, that are utilized by the platform's terminology service.
- Integration Testing Support: Offers tools to initiate and track integration tests, enabling administrators to validate service connectivity and workflow correctness within the environment.
Tenant Configuration
- Basic Configuration: Administrators can define tenant-specific settings, including Facility IDs, names, and timezones.
- Census Scheduling and Acquisition Methods: Supports configuring how patient census data is acquired, including defining schedules and enabling/disabling automated census retrieval.
- Measure Association & Scheduling: Enables associating specific measures with a tenant and configuring automated reporting schedules (Daily, Weekly, or Monthly cadences).
- Data Sources & Acquisition:
- FHIR Query Config: Configuration of FHIR-based data acquisition parameters.
- FHIR List Config: Management of patient list-based acquisition settings.
- Query Plans: Definition and management of query plans used to retrieve clinical data from data sources.
- Normalization Operations: Configuration of transformation rules and operations applied to data during the normalization phase.
Tenant & Report Viewing
- Tenant Dashboard: Provides a high-level view of a tenant's configuration and a list of all reports generated for that tenant.
- Report Details:
- Report Summary: Visual representation of report status using donut charts for Measure IP counts, Reporting Status, and Submission Status.
- Patient List: A detailed table of all patients included in a report, showing individual reporting and submission statuses.
- Pre-qualification (Validation): Detailed access to validation results, categorized by issue type (e.g., missing profiles or terminology warnings), allowing for quick identification of data quality issues.
- Report Downloading: Enables download of generated report packages for manual delivery, archival, or verification once a report has been submitted.
Data Acquisition Log Analysis
- Log Access: Integration with data acquisition logs allows administrators to analyze acquisition statistics and troubleshoot data retrieval issues directly from the report view.
- Analysis Tools: Provides insights into the success and failure rates of data acquisition steps for a given report.
Generating Adhoc Reports
- On-demand Generation: Allows administrators to manually trigger report generation for a specific facility, reporting period, and set of measures.
- Patient Scoping: Supports restricting adhoc reports to a specific cohort by manually entering patient IDs or uploading a CSV file of patient identifiers.
- Submission Control: Includes an option to bypass automatic submission, enabling administrators to generate and review reports before they are sent to external entities.
Volumes
| Volume | Mount Path | Sub-path |
|---|---|---|
| Azure Storage Account | /usr/share/nginx/html/assets/app.config.local.json |
app.config.local.json |
Configuration
An app.config.local.json file is used to configure the Admin UI service at deployment time, overriding the defaults in app.config.json.
{
"baseApiUrl": "<ADMIN-BFF-BASE-URL>/api",
"authRequired": true,
"oauth2": {
"enabled": true,
"issuer": "...",
"clientId": "...",
"scope": "openid profile email",
"responseType": "code"
}
}
This configuration file can be customized at deployment time and mounted in the /assets folder, or it can be overridden by ENV variables in a docker deployment.
Authentication
The Admin UI supports authentication using:
- OAuth2 via an identity provider (e.g., Azure AD, Keycloak), enabling secure login with centralized identity and access management.
- Token Generation via AdminBFF /api/login, which provides session tokens for downstream API access when deployed in a simplified or standalone context.
Environment Variables
| ENV variable | JSON Property | Description | Default Value | Required |
|---|---|---|---|---|
| LINK_BASE_API_URL | baseApiUrl |
The base URL for the Admin BFF API. | http://localhost |
Yes |
| LINK_AUTH_REQUIRED | authRequired |
Indicates whether authentication is required for the Admin UI. | true |
Yes |
| LINK_OAUTH2_ENABLED | oauth2.enabled |
Indicates whether OAuth2 authentication is enabled. | false |
Yes |
| LINK_OAUTH2_ISSUER | oauth2.issuer |
The issuer URL for the OAuth2 provider. | null |
If oauth2 enabled |
| LINK_OAUTH2_CLIENT_ID | oauth2.clientId |
The client ID for the OAuth2 application. | null |
If oauth2 enabled |
| LINK_OAUTH2_SCOPE | oauth2.scope |
The scope for the OAuth2 application. | openid profile email |
If oauth2 enabled |
| LINK_OAUTH2_RESPONSE_TYPE | oauth2.responseType |
The response type for the OAuth2 application. | code |
If oauth2 enabled |
| GRAFANA_URL | grafanaUrl |
URL for the Grafana UI. | http://localhost:3000 |
Yes |
| KAFKA_URL | kafkaUrl |
URL for the Kafka UI. | http://localhost:9095 |
If Kafka UI is available |
Local Development with Proxy Configuration
To facilitate local development and testing, the Admin UI can be configured to proxy API requests to a local or remote instance of the Admin BFF service. This is achieved by setting up a proxy configuration file.
{
"/api": {
"target": "http://localhost:5218",
"secure": false,
"changeOrigin": true,
"logLevel": "debug"
}
}
To use the proxy configuration, start the Angular development server with the following command:
ng serve --proxy-config proxy.conf.json --configuration=development
Relationships
flowchart LR nAdminUI_22956967["Service: Admin UI (front-end)"]