Admin UI (front-end)

The administrative front-end UI service

Service Angular 8066:80 CPU: 50m-500m RAM: 256Mi-1Gi

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 .tgz packages 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

VolumeMount PathSub-path
Azure Storage Account/usr/share/nginx/html/assets/app.config.local.jsonapp.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 variableJSON PropertyDescriptionDefault ValueRequired
LINK_BASE_API_URLbaseApiUrlThe base URL for the Admin BFF API.http://localhostYes
LINK_AUTH_REQUIREDauthRequiredIndicates whether authentication is required for the Admin UI.trueYes
LINK_OAUTH2_ENABLEDoauth2.enabledIndicates whether OAuth2 authentication is enabled.falseYes
LINK_OAUTH2_ISSUERoauth2.issuerThe issuer URL for the OAuth2 provider.nullIf oauth2 enabled
LINK_OAUTH2_CLIENT_IDoauth2.clientIdThe client ID for the OAuth2 application.nullIf oauth2 enabled
LINK_OAUTH2_SCOPEoauth2.scopeThe scope for the OAuth2 application.openid profile emailIf oauth2 enabled
LINK_OAUTH2_RESPONSE_TYPEoauth2.responseTypeThe response type for the OAuth2 application.codeIf oauth2 enabled
GRAFANA_URLgrafanaUrlURL for the Grafana UI.http://localhost:3000Yes
KAFKA_URLkafkaUrlURL for the Kafka UI.http://localhost:9095If 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:

Terminal window
ng serve --proxy-config proxy.conf.json --configuration=development