Admin UI (front-end)

Produces: None
Consumes: None

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

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)"]