Skip to main content

Assessment Overview Applet

The Assessment Overview Applet provides a configurable interface for managing various clinical assessment workflows. This page documents the FHIR resources and their relationships used to implement assessment processes.

The applet supports different assessment types through dynamic configuration, allowing healthcare facilities to customize it for their specific workflows.

Input Parameters

InputTypeRequiredDescription
titlestringYesThe title text displayed in the top-left corner of the applet header.
codesstring[]YesThe codes for the assessments.
summary{ status: string; label: string }[]YesDefines which service requests statuses are shown in the status summary header and how they are labeled.
statusVariants{ [status: string]: string }YesMaps specific statuses to badge color variants to visually distinguish states in the table.
navigateTo{ targetAppletName: string; paramKey: string }NoNavigation configuration used after an assessment is started/confirmed..
prepopulateQuestionnaireIdstring[]YesList of Questionnaire IDs that should be used for prepopulation when starting an assessment (e.g., to create/edit initial QuestionnaireResponses).

Supported Assessment Types

The Assessment Overview Applet supports various clinical assessment workflows through dynamic configuration. The following table shows examples of assessment types that can be configured:

Assessment TypeSystemCodeDisplay
Pre-Anesthesia Assessmenthttp://snomed.info/sct182770003Pre-anaesthetic assessment (procedure)
info

This list is not exhaustive. The applet can be configured to support additional assessment types based on your facility's specific workflows and requirements.

Resource Workflow

The following diagram shows how FHIR resources are connected in an assessment workflow:

Workflow explanation:

  1. A ServiceRequest for the assessment is created
  2. The assessment process generates Observations (relevant clinical data based on assessment type)
  3. A DiagnosticReport is created to summarize the assessment findings
  4. The report references the assessment ServiceRequest and includes all relevant observations

Assessment Overview Table

The overview table displays patients with pending or active assessments and their current status. The specific assessment type and displayed information depend on the configured workflow. The table columns map to FHIR resources as follows:

Patient Information

Displays patient name, gender, and date of birth.

Patient Demographics

💡Context
Basic patient identification displayed in the overview table. The name is typically shown in 'Family, Given' format.
📋FHIR Resource
Patient: Demographics and other administrative information about an individual receiving care or other health-related services.
UI FieldFHIR PathDescriptionData TypeRequiredExample
Patient NamePatient.nameA name associated with the patientHumanName[]No[ { "use": "official", "family": "Doe", "given": [ "John", "Robert" ] } ]
GenderPatient.genderAdministrative gendercodeNomale
Date of BirthPatient.birthDateThe date of birth for the individualdateNo1980-05-15
Common Usage: patient identification, display names, demographic data, clinical considerations, age calculation

Encounter Case ID

Unique identifier for the patient's hospital encounter/case.

Case Identifier

💡Context
The encounter identifier serves as the case number throughout the patient's hospital stay. Use the identifier with system matching your hospital's case management system.
📋FHIR Resource
Encounter: An interaction between a patient and healthcare provider(s) for the purpose of providing healthcare service(s) or assessing the health status of a patient.
UI FieldFHIR PathDescriptionData TypeRequiredExample
Case IDEncounter.identifierIdentifier(s) by which this encounter is knownIdentifier[]No[ { "use": "official", "system": "http://hospital.example.org/encounters", "value": "ENC-2024-001234" } ]
Common Usage: case identification, encounter tracking

Patient ID

Hospital-specific patient identifier (medical record number).

Patient Identifier

💡Context
Use the identifier with 'use: official' and your hospital's patient identifier system (e.g., 'http://hospital.example.org/patients').
📋FHIR Resource
Patient: Demographics and other administrative information about an individual receiving care or other health-related services.
UI FieldFHIR PathDescriptionData TypeRequiredExample
Patient IDPatient.identifierAn identifier for this patientIdentifier[]No[ { "use": "usual", "system": "http://hospital.example.org/patients", "value": "123456789" } ]
Common Usage: patient identification, medical record number

Assessment Status

Current state of the assessment request.

Assessment Request Status

💡Context
The ServiceRequest tracks the assessment workflow status. Use appropriate SNOMED CT or LOINC codes in the code field to identify the specific assessment type (e.g., SNOMED CT 182770003 for pre-anaesthetic assessment).
📋FHIR Resource
ServiceRequest: A record of a request for service such as diagnostic investigations, treatments, or operations to be performed.
UI FieldFHIR PathDescriptionData TypeRequiredExample
Assessment StatusServiceRequest.statusCurrent state of the service requestcodeYesactive
Service TypeServiceRequest.codeWhat is being requested/orderedCodeableConceptYes{ "text": "Appendectomy", "coding": [ { "system": "http://snomed.info/sct", "code": "80146002", "display": "Appendectomy" } ] }
Common Usage: workflow management, status tracking, surgery planning, procedure documentation, premedication

Status values and their meaning:

StatusUI Display
draftRequested
activeIn Progress
on-holdOn-hold
completedCompleted
revokedCancelled

Implementation Examples

The following examples demonstrate how to implement assessment workflows using FHIR resources. These examples use pre-anesthesia assessment as a reference case, but the same patterns apply to other assessment types.

Querying the Overview Table Data

To populate the assessment overview table, use a single FHIR query with _include parameters to fetch all related resources in one Bundle:

GET /ServiceRequest?code={assessment-code}&_include=ServiceRequest:encounter&_include:iterate=Encounter:subject

Query Parameters:

  • code - Filter by assessment type code(s), can be comma-separated for multiple types
  • _include=ServiceRequest:encounter - Include the referenced Encounter resources
  • _include:iterate=Encounter:subject - Include the Patient resources referenced by the Encounters

Optional Parameters:

  • subject:Patient.name:contains={searchString} - Filter by patient name (partial match)

This returns a Bundle containing all ServiceRequests matching the assessment code(s), along with their associated Encounters and Patients in a single response.

Creating an Assessment ServiceRequest

Example: Pre-Anesthesia Assessment

{
"resourceType": "ServiceRequest",
"status": "draft",
"intent": "order",
"code": {
"coding": [{
"system": "http://snomed.info/sct",
"code": "182770003",
"display": "Pre-anaesthetic assessment (procedure)"
}]
},
"subject": { "reference": "Patient/123456" },
"encounter": { "reference": "Encounter/ENC-2024-001234" },
"occurrenceDateTime": "2024-03-14T10:00:00Z"
}
tip

For other assessment types, use the appropriate SNOMED CT or LOINC code in the code.coding field to identify the specific assessment type.

Referenced Resources

FHIR resources used in assessment workflows:

  • Patient - Demographics and identification
  • Encounter - Case/episode management
  • ServiceRequest - Assessment requests and workflow tracking
  • DiagnosticReport - Assessment findings and conclusions
  • Observation - Detailed clinical data and measurements

Visual Configuration (Title & Colors)

The appearance of the applet can be customized using title and statusVariants.

  • title - Defines the headline text shown in the header.
  • statusVariants - Maps internal status codes to visual badge styles.

Status Summary Header

The mona-assessment-status-summary is a lightweight summary header used in the Assessment Overview to make the assessment list scannable and actionable. Instead of forcing users to rely only on the table and search, it provides an “at a glance” view of how many assessments are currently in each relevant status and allows one-click filtering by status.

  • Each config summary entry defines a status and the label.
  • Only statuses listed here will be counted and shown.
  • each displayed summary has label (-> input label) and its related count (e.g. number of all assessments in 'draft' -> draft comes from input status )
  • Clicking a tile toggles a filter for that status (clicking the active tile again resets the filter).
const summary: [
{ status: 'draft', label: 'Draft' },
{ status: 'active', label: 'Active' },
{ status: 'completed', label: 'Completed' }];

If navigateTo is configured, the applet can navigate to another applet/view after the user starts an assessment.

  • targetAppletName: the destination applet identifier/name.
  • paramKey: the parameter name used to pass the identifier to the destination.
const navigateTo?: {
targetAppletName: string;
paramKey: string;
};

ParamKey

The paramKey defines the name of the parameter under which the applet passes the selected assessment identifier (typically a ServiceRequest id) to the next target when navigateTo is used. In other words: it’s the key of the parameter, not the value.

What it’s used for

When navigation is triggered, the applet prepares a parameter object like:

{ [paramKey]: serviceRequestId }

The target applet (or route) must be configured to read exactly that key.

How to choose a correct paramKey

Pick a paramKey that matches what your destination applet expects, e.g.:

  • If the applet expects serviceRequestId, set paramKey: "serviceRequestId".
  • If the applet expects a generic id, set paramKey: "id".

Questionnaire Prepopulation

The prepopulateQuestionnaireIds defines a list of Questionnaire IDs that should be automatically prepopulated when a user starts an assessment. The goal is to create initial data (typically QuestionnaireResponses) for the current patient/encounter, so the applets can immediately display/edit content without an extra manual setup.

  • Provide Questionnaire IDs as strings.

Behaviour

When the user clicks “Start Assessment” in the start dialog:

  1. Prepopulation runs only for new assessments (draft). Prepopulation is executed only if the current assessment’s underlying request is in status draft. If the status is not draft, prepopulation is skipped (this enforces “prepopulate only once”).

  2. One Questionnaire at a time. For each Questionnaire ID:

  • prepopulation is executed in the context of the resource (e.g. patient)
  • progress is tracked per questionnaire
  • errors are collected per questionnaire (ID + error message)
  1. Progress feedback: While running, the UI shows a progress indicator (“Created X response of Y questionnaires.”).

  2. Error handling / fallback:

  • If all questionnaires succeed: the dialog completes and proceeds.
  • If any questionnaire fails: errors are displayed, and the user can choose to continue without prepopulating.
  1. Status transition: If the assessment was in status draft, it is updated to active. This also ensures that prepopulation will be skipped on subsequent starts (because it is no longer draft).

  2. Optional navigation: If navigateTo is configured, the app navigates to the configured destination and passes the current assessment identifier (typically a ServiceRequest id) using the configured parameter key. If navigateTo is not configured, no navigation is performed.

Notes

  • This mechanism is designed to be one-time per assessment: after the first successful start, the assessment is no longer draft, so prepopulation will not run again.

Example Config

const       config: {
title: 'Assessment Overview',
codes: ['http://snomed.info/sct|182770003'],
summary: [
{
status: 'active',
label: 'Active',
},
{
status: 'draft',
label: 'Draft',
},
{
status: 'on-hold',
label: 'On Hold',
},
{
status: 'revoked',
label: 'Revoked',
},
{
status: 'completed',
label: 'Completed',
},
],
statusVariants: {
'active': 'success',
'draft': 'grey',
'on-hold': 'warning',
'revoked': 'destructive',
'completed': 'default',
'unknown': 'grey-muted'
},
navigateTo: {
targetAppletName: 'FormSummaryComponent',
paramKey: 'serviceRequestId',
},

prepopulateQuestionnaireIds: ['anamnese', 'patientenstammdaten'],
},