System settings
Settings holds the installation-wide configuration: values the suite reads, which modules are on, the colours, the hospital's wording, and tools for checking notifications and system health. Changes here affect everyone.
Open Administration › Settings. You need view_settings to look and edit_settings to change anything. The notification tools also need view_notification_tools and send_test_notifications. Each tab can be linked to directly, for example Settings › Health.
The tabs, left to right: Variables, Modules, Appearance, Terminology, WhatsApp, JWT Generator, Notifications and Health.
Variables
A table of named values the suite reads. Each row has a Key, a Label, a Value and a Description. Values are JSON: text in quotes ("UATH"), numbers (48), true / false, lists or objects.
- The tabs.
- Key. The identifier the suite looks up, such as
approvals.require_comment. Do not rename existing keys. - Value. The value, as JSON.
- Add variable. Adds an empty row. Remove on a row deletes it.
- Save changes. Saves the whole table at once.
Save replaces the whole list. Change one value at a time, check the page reloads without an error, and never remove a row you do not recognise. Modules, the colour scheme and terminology have their own tabs; change them there, not here.
Useful variables
| Key | What it does | Hospital value |
|---|---|---|
org.name, org.short_name, org.address, org.email_domain | The organisation's name, abbreviation, address and staff email domain. | University of Abuja Teaching Hospital, UATH, …, uath.gov.ng |
org.currency, org.fiscal_year_start, org.working_hours | Currency, start of the financial year (MM-DD), official hours. | NGN, 01-01, 08:00–16:00 Mon–Fri |
approvals.require_comment | Approvers must comment on every decision. | true |
approvals.require_signature | Approving needs a signature on the approver's profile. | false until everyone has uploaded one |
approvals.allow_return | Approvers may return a request for correction. | true |
approvals.critical_amount | Requests and payments at or above this amount are flagged critical on My Desk. | 1000000 |
approvals.sla_default_hours | Turnaround used when a step sets none. | 48 |
approvals.escalate_after_factor | How many times its turnaround a step may overrun before it can be escalated. | 2 |
approvals.stalled_days | A chain that has not moved for this many days is flagged critical. | 7 |
memos.email_mode, memos.email_batch_size | How published memos are emailed. See Memo templates. | "audience_bcc", 80 |
dispatch.default_group_codes | Unit codes that receive every approved request unless its template names its own offices. | REC-SEC, REC-OPN, CMD-SEC, CMAC, DAO |
dispatch.registry_group_codes | The registry offices. Change it from Registry › Registry offices. | REC-SEC, REC-OPN, REC-SEN |
dispatch.finance_group_code | Finance / Accounts office added to the dispatch of payment-linked requests. | "FIN-021" |
organisation.profile | Name, address, contact lines and logo used on printed documents. | Set by the seed |
Modules
Switch whole parts of the suite on or off for everyone. A module that is off is hidden from the menu, its pages show a notice, and its data cannot be reached. Dashboard, Settings, Notifications and Profile are always on. Switching off Mails also switches off Mail Control.
- A module switch. Flip the ones you want to change.
- Save. Nothing changes until you save. Reset undoes unsaved flips.
The switchable modules are: AI Assistant, Projects, Users, User Groups, Events, Meetings, Requests, Payments, Invoices, Customers, Expenses, Accounts, Payroll, Audit Logs, Approvals, Role & Permissions, Memos, Memo templates, Registry, Documents, Fixed Assets, Mails and Mail Control. Switching a module off does not delete its data; switching it back on brings everything back. Modules marked page only (Users, Departments & Units, Customers, Accounts) lose just their page and menu entry, because other parts of the suite still look people and units up.
Appearance
Choose the design system: the colours, corner radius and shadows used across the whole installation, including the sign-in page. Each preset has light and dark variants; each person still picks light or dark from their own account menu.
- Preview (the eye). Shows the preset on your screen only, without saving. Stop previewing goes back.
- Apply. Saves the preset for everyone.
Terminology
The words the suite uses for its own concepts: menu entries, page headings, statuses and field labels. Only the wording changes; stored data and reports are unaffected.
- Your wording. Each row names the default word and where it appears; an empty box shows the default greyed out. Type the hospital’s word, or select the round arrow beside it to go back to the default.
- Save terminology. Discard changes undoes unsaved edits.
The hospital's words (from the seed):
| Default | Hospital's word |
|---|---|
| User Groups / User group | Departments & Units / Department / Unit |
| User Group Head | Head (HOD / HOU) |
| Request types / Request type | Request Templates / Request template |
| Payment types / Payments / payment | Voucher Types / Payment Vouchers / payment voucher |
| Memos | Memos & Circulars |
| Approval workflows | Approval routes |
| Approvals / Needs action / Waiting on others / Step | My Desk / Action required / In progress (with others) / Level |
| Pending approval (request), In review (voucher, memo) | In progress |
| Scheduled / Paid (voucher) | Authorized — awaiting disbursement / Disbursed |
| Published (memo) | Circulated |
| Reference number / Staff number / Submitter | Ref. No. / Staff ID / Originator |
A technical view for the ICT team. It streams the messages the WhatsApp bot publishes on the message broker (NATS), so you can check the bot is connected. Enter a Chat JID (for example 1234567890@c.us) to filter one chat; Raw events (last 50) shows the underlying data. People with edit_settings can also send a test message into a chat.
This tab shows real conversations as they arrive. Open it only when you need to, and never share screenshots of it.
JWT Generator
A technical tool for the ICT team: it creates a signed token that lets the AI assistant's tools act as a chosen user, for testing integrations. Choose Select user, check the claims that fill in (userId, userGroupId, email, phone, issue and expiry times), then select Generate token and Copy. Needs edit_settings.
A token acts as that person until it expires. Keep expiry short, never generate one for a real member of staff unless you have to, and never paste it anywhere public.
Notifications
Checks the three ways the suite can alert people, and sends test notifications.
- In-app live feed
- The bell in the header. Shows whether your browser is connected, with Allow notifications to allow browser pop-ups.
- Desktop push (ntfy, self-hosted)
- Your personal topic URL for the ntfy app, with Rotate topic to issue a new one. “Not configured on this server” means ntfy is not set up.
- Browser push (Web Push / VAPID, optional)
- Push to the browser even when the suite is closed.
To send a test: tick people under Selected Users, give a Title, Body and optional Action URL (the page it opens, such as /notifications), then select Send test notification. Send tests to yourself or a test account, not to real staff.
Health
A live check of every service the suite depends on. It refreshes every 30 seconds while the tab is open; Refresh now checks at once.
- Refresh now.
- Components. Each service with its Status (Healthy, Degraded, Unhealthy, Not configured), Latency and a Message.
The checks cover the database, the sign-in service, object storage (files), transactional email (SMTP), the message broker and its document and notification streams, the background worker, document conversion (Gotenberg), meetings, push notifications and the AI assistant. The banner reads All required checks passing or Required checks failing. Not configured on an optional service is not a fault.