Configuring Service Queues
Service Queues is one of the most configurable modules in O3, allowing you to customize queue tables, priorities, statuses, vitals, biometrics, and more. This guide covers all configuration options for the Service Queues module.
Overview
The Service Queues module manages patient queues in outpatient settings. You can configure:
- Dashboard title and default service queue
- Priority tags with colors and styles
- Queue table columns and layouts (per queue/status)
- Concept UUIDs for vitals, diagnoses, and other clinical data
- Vitals and biometrics configuration
- Visit queue numbers
- Patient chart URLs
- Start Visit form integration
Dashboard Title
Configure the title displayed on the service queues dashboard:
{
"@openmrs/esm-service-queues-app": {
"dashboardTitle": {
"key": "serviceQueues",
"value": "Service queues"
}
}
}key- Translation key for the titlevalue- Default text if translation is not found
Default Service Queue
Set the default service queue selected when opening the start visit form:
{
"@openmrs/esm-service-queues-app": {
"defaultInitialServiceQueue": "Outpatient Triage"
}
}The default is "Outpatient Triage".
Start Visit Form Integration
The service queues app contributes the visit-form-queue-fields extension to the Patient Chart Start Visit form. Those fields render when the Patient Chart config enables service queue fields, or when the Start Visit form is opened from the service queues add-patient flow:
{
"@openmrs/esm-patient-chart-app": {
"showServiceQueueFields": true
},
"@openmrs/esm-service-queues-app": {
"defaultInitialServiceQueue": "Outpatient Triage"
}
}Recommended visit type tabs are also controlled by the Patient Chart Start Visit form. Configure showRecommendedVisitTypeTab and visitTypeResourceUrl on @openmrs/esm-patient-chart-app, not on @openmrs/esm-service-queues-app.
Priority Configuration
Configure priority tags with colors and styles:
{
"@openmrs/esm-service-queues-app": {
"priorityConfigs": [
{
"conceptUuid": "04f6f7e0-e3cb-4e13-a133-4479f759574e",
"color": "red",
"style": null
},
{
"conceptUuid": "f4620bfa-3625-4883-bd3f-84c2cce14470",
"color": "green",
"style": null
},
{
"conceptUuid": "dc3492ef-24a5-4fd9-b58d-4fd2acf7071f",
"color": "orange",
"style": null
}
]
}
}Available colors: red, magenta, purple, blue, teal, cyan, gray, orange, green, warm-gray, cool-gray, high-contrast, outline
Available styles: bold (or null for no special style)
conceptUuid- UUID of the priority concept to configurecolor- Color of the priority tagstyle- Style to apply (currently onlyboldornull)
Concept UUIDs
Configure concept UUIDs used throughout the service queues module:
{
"@openmrs/esm-service-queues-app": {
"concepts": {
"defaultPriorityConceptUuid": "f4620bfa-3625-4883-bd3f-84c2cce14470",
"defaultStatusConceptUuid": "51ae5e4d-b72b-4912-bf31-a17efb690aeb",
"defaultTransitionStatus": "ca7494ae-437f-4fd0-8aae-b88b9a2ba47d",
"emergencyPriorityConceptUuid": "04f6f7e0-e3cb-4e13-a133-4479f759574e",
"systolicBloodPressureUuid": "5085AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"diastolicBloodPressureUuid": "5086AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"pulseUuid": "5087AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"temperatureUuid": "5088AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"oxygenSaturationUuid": "5092AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"heightUuid": "5090AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"weightUuid": "5089AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"respiratoryRateUuid": "5242AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"generalPatientNoteConceptUuid": "162169AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"problemListConceptUuid": "1284AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"visitDiagnosesConceptUuid": "159947AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"historicalObsConceptUuid": ["161643AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"]
}
}
}Key concepts:
defaultPriorityConceptUuid- Default priority (e.g., “Not urgent”)defaultStatusConceptUuid- Default status (e.g., “Waiting”)defaultTransitionStatus- Status when attending service (e.g., “In Service”)emergencyPriorityConceptUuid- Highest priority (e.g., “Emergency”)- Vitals concepts (systolic/diastolic BP, pulse, temperature, oxygen saturation, height, weight, respiratory rate)
generalPatientNoteConceptUuid- Free text note fieldproblemListConceptUuid- Problem list conceptvisitDiagnosesConceptUuid- Visit diagnoses concepthistoricalObsConceptUuid- Observations displayed in previous visit modal (array)
Queue Tables
Configure queue table columns and layouts. This is a powerful feature that allows you to customize table columns per queue and status.
Column Definitions
Define custom columns or override built-in columns:
{
"@openmrs/esm-service-queues-app": {
"queueTables": {
"columnDefinitions": [
{
"id": "patient-name",
"columnType": "patient-name",
"header": "Patient Name"
},
{
"id": "custom-identifier",
"columnType": "patient-identifier",
"header": "National ID",
"config": {
"identifierTypeUuid": "f85081e2-b4be-4e48-b3a4-7994b69bb101"
}
},
{
"id": "status",
"columnType": "status",
"header": "Status",
"config": {
"statusConfigs": [
{
"conceptUuid": "51ae5e4d-b72b-4912-bf31-a17efb690aeb",
"iconComponent": "Group"
},
{
"conceptUuid": "ca7494ae-437f-4fd0-8aae-b88b9a2ba47d",
"iconComponent": "InProgress"
}
]
}
},
{
"id": "actions",
"columnType": "actions",
"config": {
"actions": {
"buttons": ["call"],
"overflowMenu": ["move", "transition", "edit", "remove", "undo"]
}
}
},
{
"id": "queue-number",
"columnType": "queue-number",
"config": {
"visitQueueNumberAttributeUuid": "c61ce16f-272a-41e7-9924-4c555d3f18b5"
}
},
{
"id": "eligibility",
"columnType": "extension",
"header": "Eligibility"
}
]
}
}
}Available column types:
patient-name- Patient namepatient-identifier- Patient identifier (requiresidentifierTypeUuidin config)patient-age- Patient agecoming-from- Where patient came fromextension- Custom extension slot columnpriority- Priority tagstatus- Status with icons (requiresstatusConfigsin config)queue- Queue namequeue-number- Queue number (requiresvisitQueueNumberAttributeUuid)visit-start-time- Visit start timewait-time- Wait timeactions- Action buttons (requiresactionsconfig)
Status icons: Group, InProgress
Action types: move, call, edit, transition, remove, delete, undo
Column configuration options:
id- Unique identifier for the columncolumnType- Type of column (if different from ID)header- Header text (will be translated if it’s a valid translation key)config- Column-specific configuration:- For
patient-identifier:identifierTypeUuid- UUID of identifier type - For
status:statusConfigs- Array of status icon configurations - For
actions:actions.buttonsandactions.overflowMenu- Arrays of action types - For
queue-number:visitQueueNumberAttributeUuid- UUID of visit attribute containing queue number - For
extension: any extension column renders thequeue-table-<column-id>-slotextension slot and passesqueueEntryin slot state. For example, a column with IDeligibilityrendersqueue-table-eligibility-slot.
- For
Table Definitions
Define which columns appear in which tables:
{
"@openmrs/esm-service-queues-app": {
"queueTables": {
"tableDefinitions": [
{
"columns": [
"patient-name",
"coming-from",
"priority",
"status",
"queue",
"wait-time",
"actions"
],
"appliedTo": [
{
"queue": "",
"status": ""
}
]
},
{
"columns": [
"patient-name",
"custom-identifier",
"priority",
"status",
"actions"
],
"appliedTo": [
{
"queue": "some-queue-uuid",
"status": "some-status-uuid"
}
]
}
]
}
}
}columns- Array of column IDs (fromcolumnDefinitionsor built-in columns)appliedTo- (Optional) Array of conditions specifying which queues/statuses this table applies to- If omitted, applies to all tables
- Empty
queueorstatusstring means “all queues” or “all statuses” - If multiple table definitions match, the first one is used
Example: The first table definition applies to all queues and statuses (default). The second applies only to a specific queue and status combination.
Visit Queue Number Attribute
Configure the visit attribute that contains the queue number:
{
"@openmrs/esm-service-queues-app": {
"visitQueueNumberAttributeUuid": "c61ce16f-272a-41e7-9924-4c555d3f18b5"
}
}Note: This must be set if you use a queue-number column in any table definition (unless set per-column in columnDefinitions).
Default Identifier Types
Configure identifier types displayed in queue tables:
{
"@openmrs/esm-service-queues-app": {
"defaultIdentifierTypes": [
"05ee9cf4-7242-4a17-b4d4-00f707265c8a",
"f85081e2-b4be-4e48-b3a4-7994b69bb101"
]
}
}These identifier types are used when queue entry details need preferred identifiers, such as in the call patient modal.
Contact Attribute Type
Configure the person attribute type for contact information (e.g., “Next of kin contact details”):
{
"@openmrs/esm-service-queues-app": {
"contactAttributeType": "some-attribute-type-uuid"
}
}Patient Chart URL
Configure where users are redirected when clicking a patient name:
{
"@openmrs/esm-service-queues-app": {
"customPatientChartUrl": "${openmrsSpaBase}/patient/${patientUuid}/chart"
}
}The URL template supports:
${openmrsSpaBase}- Base URL for the SPA${openmrsBase}- Base URL for the OpenMRS backend${patientUuid}- UUID of the patient
Vitals Configuration
Configure vitals form settings:
{
"@openmrs/esm-service-queues-app": {
"vitals": {
"formUuid": "a000cb34-9ec1-4344-a1c8-f692232f6edd",
"encounterTypeUuid": "67a71486-1a54-468f-ac3e-7091a9a79584"
}
}
}formUuid- UUID of the vitals formencounterTypeUuid- UUID of the encounter type for vitals encounters
Biometrics Configuration
Configure biometrics display:
{
"@openmrs/esm-service-queues-app": {
"biometrics": {
"bmiUnit": "kg / m²"
}
}
}bmiUnit- Unit for BMI display (default:"kg / m²")