Documentation / Ressources / Référence / Bundled plugins

Bundled plugins

These core plugins live in the repository under external-plugins/, are loaded from TypeScript source, and ship inside the API image (they are not published to the registry). They form the layered clinical foundation the demos build on (see Architecture for the layering rationale). Each row of a contributions table is a fact from the plugin's plugin.yaml. On a running instance, the console's Plugins page shows the events, contributions and manifest of each loaded plugin (see Inspect loaded plugins).

@posos/common

The most classic non-clinical building blocks, shared by every business plugin.

Contribution Items
context kinds patient, encounter, order, document
types Coding, CodeableConcept, Quantity, Period, Annotation, Reference, ValidationDecision
value-sets decision-outcome
dimensions dimensionless, fraction, mass, volume, time, amount-of-substance, mass-concentration, molar-concentration, pressure, temperature (the common physical dimensions; the core declares none)
events CommunicationReceived (context patient, encounter optional, default filter event.sender != "meridian")
nodes trigger.communication-received (references CommunicationReceived), text.join, transform.list, transform.expression, transform.datetime, human.approve (accept / reject), human.choose (one output per option); both validation nodes designate an optional connection of the validation port

Everything domain-specific — including these classics and the context kinds themselves — is a plugin contribution; the engine itself holds only primitives and the meta type system.

@posos/clinical

dependsOn: @posos/common

The general-purpose clinical foundation, independent of any specific use case: core FHIR resources, the classic clinical events and their triggers, and the generic patient-record read/write and human-validation nodes. It owns the patient and prescription port contracts (@posos/clinical/ports, typed on the DPI model in @posos/clinical/domain) and ships their reference in-memory adapters (dev/demo, zero infra, seeded from the instance config) and their simulation sandboxes. Use-case-specific computations live elsewhere (e.g. in the example plugins).

Contribution Items
types ReferenceRange, Observation, Condition, MedicationStatement, Allergy, Procedure, Prescription, Demographics, DrugAlert, DrugInteraction, AdverseEffect, CalculationResult
value-sets administrative-gender, observation-status, condition-clinical, condition-verification, alert-type, interaction-severity, incidence, allergy-criticality, procedure-status, medication-status, time-horizon
dimensions filtration-rate
conversions Prescription → Annotation
adapters patient:in-memory (declared record port of the patient context kind, record: { contextKind: patient }), prescription:in-memory
port sandboxes patient, prescription
events BioResultReceived, CriticalResultReceived, DischargePrescriptionEdited, MedicationPrescribed, MedicationDiscontinued, MedicationAdministered, ProcedureScheduled, PatientAdmitted, PatientDischarged, PatientTransferred, AllergyRecorded, ConditionRecorded
triggers (one per event, each referencing it with event:) bio-result-received, critical-result-received, discharge-prescription-edited, medication-prescribed, medication-discontinued, medication-administered, procedure-scheduled, patient-admitted, patient-discharged, patient-transferred, allergy-recorded, condition-recorded (discharge-prescription-edited and the three patient-* triggers are declarative, the others coded)
record nodes patient.load-* (demographics, medications, conditions, allergies, procedures, observations), patient.update-demographics, patient.append-* (observation, condition, allergy, procedure, medication), order.load-prescription, order.record-reconciliation
human tasks human.confirm-condition, human.acknowledge-critical

@posos/fhir

dependsOn: @posos/clinical, @posos/common

Connects an existing FHIR R4 warehouse (tested with Blaze + Synthea) to the patient and prescription ports. Demonstrates port-adapter contribution: switch the target system without touching the engine or the workflows.

Contribution Items
adapters patient:fhir (declared record port of the patient context kind), prescription:fhir
event sources fhir-poll
event bindings fhir-creatinine, fhir-medication-prescribed, fhir-procedure-scheduled, fhir-patient-admitted, fhir-patient-discharged, fhir-allergy-recorded, fhir-communication-received, fhir-condition-recorded, fhir-validation-decided

The event bindings produce events that @posos/clinical and @posos/common declare (fhir-creatinine → BioResultReceived, fhir-communication-received → CommunicationReceived…); the host checks each against the event's contract at load.

The fhir-validation-decided binding is the resolve-mode binding described in ADR 0002.

@posos/hl7

Receives and processes HL7 v2 ER7 messages and CDA R2 documents. HTTP and directory reception are provided by the host; the plugin adds MLLP and the protocol-specific identity, parsing, acknowledgement, mapping, and CDA logic.

Contribution Items
protocols hl7v2, cda
transports mllp for HL7 v2 (proposed port 2575, hint on acknowledgement modes); host HTTP and directory for both protocols
media types application/hl7-v2, text/plain and an example message for HL7 v2; application/xml, text/xml for CDA R2
triggers trigger.hl7v2-received, trigger.cda-received
HL7 nodes hl7v2.parse, hl7v2.extract, hl7v2.serialize, hl7v2.map
CDA nodes cda.parse, hl7v2.extract-cda
message bindings ADT admission, discharge and transfer; ORU numeric and critical results; OMP prescriptions and discontinuations; RDE validated prescriptions; RAS administrations

The CDA parser extracts metadata, narrative sections, embedded PDF attachments, and external references without downloading them. It does not validate XSD or CI-SIS Schematron profiles. See Process a CDA R2 document.

The message bindings produce events that @posos/clinical declares; their require is checked against those contracts at load. The ORU bindings map known LOINC codes to analyte keys and convert their values to a reference unit per analyte. Binding options and emission rules are described in Connect an EAI.

@posos/pn13

Receives and processes PN13 SIPhII XML through host HTTP or directory connections. Its optional XSD profile validates a receipt before any workflow or message binding receives it.

Contribution Items
protocol pn13
media types application/xml, text/xml, and an example message
trigger trigger.pn13-received
nodes pn13.parse, pn13.extract, pn13.map
message binding SIPhII medication prescription → MedicationPrescribed
validation profile pn13-is-4.0.34

Rejected XSD receipts stay in the durable inbox with a structured report that contains line and element diagnostics without XML values. See Connect an EAI and Map an HL7 or PN13 message.

@posos/llm

The LLM agent runner (Anthropic + OpenAI-compatible APIs) — an adapter for the agent port, selected by the instance manifest (ports.agent = { adapter: llm }). Keys via environment variables.

Contribution Items
adapters agent:llm

@posos/notify

Outbound notification delivery — it owns the notification port contract (@posos/notify/ports) and ships the notify.send node, its console and webhook adapters and the simulation sandbox. A channel is an adapter of the port that requires a connection type; notify.send designates a connection of such a type, else it uses the port bound by the instance (ports.notification). Distinct from the record trail (writing a FHIR Communication through the patient port): here we alert humans through a channel, we do not write clinical data. See Send notifications.

Contribution Items
nodes notify.send (connection by port notification)
value-sets notification-severity
connection types notification-webhook
adapters notification:console, notification:webhook (connection notification-webhook)
port sandboxes notification

@posos/slack

Slack channel of the notification and validation ports, through the Web API with the bot token of a Slack app. A validation request is posted with buttons; clicks come back through a Socket Mode listening connection (see Decide validations in Slack). Depends on @posos/notify.

Contribution Items
connection types slack (auth bearer, bot token; params defaultChannel, patientContext), slack-app (auth bearer, app-level token), slack-socket (inbound, format validation-decision, connection slack-app)
adapters notification:slack, validation:slack (connection slack)

@posos/mail

Mail channel of the notification port: sends each notification through an SMTP server (nodemailer). The smtp connection type accepts smtp:// and smtps:// URLs and gives its credential to the plugin (exposeCredentials). Depends on @posos/notify.

Contribution Items
connection types smtp (auth none, basic; params from, defaultTo, requireTls, patientContext)
adapters notification:mail (connection smtp)

@posos/decision

Decision models — the Décision intelligente node (decision.ask, category Agents IA) asks typed questions (yes/no, choice, score) about a state. It owns the neutral decision port contract (@posos/decision/ports) and ships its simulation sandbox, which answers without calling a provider; it ships no adapter. The node designates its connection (connection by port decision), else it uses the port bound by the instance. The node's configuration and ports are declared in its manifest (config[].schema, derivedPorts). See Ask a decision model typed questions.

Contribution Items
nodes decision.ask (connection by port decision)
port sandboxes decision

@posos/typesafe

The typesafe adapter of the decision port (depends on @posos/decision): POST {baseUrl}/v1/systemone, the System One API of TypeSafe (model Jev), or any compatible server, through a connection of type typesafe-systemone (one connection per server). Selected by the instance manifest (ports.decision = { adapter: typesafe }) or by the connection a decision.ask node designates.

Contribution Items
connection types typesafe-systemone (auth bearer, none, header; param defaultModel, default jev-latest)
adapters decision:typesafe (connection typesafe-systemone)

@posos/snomed

Contributes the terminology resolver for the snomed-ct code system (Hermes). Selected via the instance manifest (terminology.snomed-ct = { adapter: hermes }); the resolver reaches the server through a connection of type hermes (parameter languageRefsetId: display language by language reference set). See Configure terminology.

Contribution Items
nodes snomed.verify-concept, snomed.preferred-term, snomed.subsumes
value-sets snomed-ct (external)
adapters terminology:hermes
connection types hermes
97 documents12 sectionssource : /docs · généré au build