Appearance
Plugins
Plugins extend what an instance can do without changing the platform itself. Server plugins add actions that workflows and administrators can invoke: sending email, calling an external API described by an OpenAPI document, reading platform data. Frontend plugins add tabs, panels and buttons to the web app.
Server plugins
A server plugin is installed on the instance by the operator. Once installed it appears under Admin Panel → Configuration → Plugins in the Installed Plugins list with its version, runtime and the number of actions it provides. View Actions shows each action with its input and output fields, whether it is idempotent, and its timeout.
Plugin instances
An installed plugin is used through instances. An instance is a named configuration of the plugin, for example "Hospital SMTP relay" or "Partner API (production)". One plugin can have several instances.
To create one:
- Choose Create Instance, pick the plugin definition and give the instance a display name.
- Fill in the Configuration form. The form is generated from the plugin's own configuration schema, so each plugin asks for exactly what it needs.
- For any credential, use the vault picker in the field and select a Secret. The reference
$secret:nameis stored instead of the value. See Vault. - Save with Enabled on.
Instances can be edited, disabled (kept but not callable) and deleted. Disabling an instance stops workflows that use it from calling it.
Testing an action
From the instance list, Invoke opens a form built from the action's input fields, runs the action once and shows the result. This is the quickest way to check credentials after creating an instance.
Plugins in workflows
An Action node in a workflow selects a plugin instance and one of its actions, then maps values from the event or earlier nodes into the action's inputs. The action's declared outputs become available to later nodes. See Workflows.
Plugins that read platform data
Some plugins need to read from the instance, for example to evaluate a patient's latest scores. Such an instance is given an API key stored in the Vault. Every read the plugin performs is checked against that key's scopes, so the plugin can never see more than the key allows.
Plugins shipped with the platform
| Plugin | Actions | Typical use |
|---|---|---|
| Email (SMTP) | Send email | Notifications to clinicians, reminders, escalations |
| OpenAPI client | Call an operation | Any REST API that publishes an OpenAPI document; requests are validated against it before sending |
| Platform resource | Command, list commands | Reading analytics, questionnaires and other platform data from within a workflow |
Custom plugins can be developed with the Plugin SDK. See Server Plugins.
Version changes
When the operator installs a newer version of a plugin, its instances are carried over to the new version automatically and the old version is retired.
Frontend plugins
Frontend plugins are packages that extend the Medipal web app itself. They can add:
- buttons and panels in predefined places (navigation bar, side panel, login page, questionnaire page, patient page, designer),
- new tabs on the questionnaire, patient, admin panel, admin system and user profile pages,
- new pages under the admin panel.
Frontend plugins are installed with the web app by the operator; there is no runtime installation from the admin panel. They respect the same scopes as the rest of the interface. Development is described in Frontend Plugins.
Permissions
Viewing the Plugins tab requires plugin read rights; creating and editing instances require plugin write rights; invoking an action from the admin panel requires plugin execute rights. See Users, Roles & Scopes.
Troubleshooting
| Symptom | Likely cause | What to do |
|---|---|---|
| The plugin is not in the Installed list | Not installed on the instance | Ask the operator to install it; the list refreshes automatically. |
| Invoke fails with a configuration error | A required configuration field is missing or a vault reference is broken | Edit the instance; check the Vault entry exists and is enabled. |
| Invoke fails with an authentication error from the target | Wrong credential | Rotate the secret in the Vault and try again. |
| A workflow Action node lists no actions | The instance is disabled or the plugin was retired | Enable the instance or select one on the current plugin version. |
| An OpenAPI call is rejected before sending | The mapped input does not match the operation's schema | Compare with the action's input fields; use a Mapper node. |