Interop Service — Event Schemas
Status: populated Owner: TBD Last updated: 2026-04-18 Companion: Service Template · 03 platform-services · 02 DDD
1. Transport
JetStream stream: INTEROP — subject wildcard interop.>. CloudEvents envelope via @ghasi/nats-client.
2. Produced Events
interop.hl7v2.adt.received
| Field | Value |
|---|---|
| CloudEvents type | ghasi.interop.hl7v2.adt.received |
| Source | ghasi/interop |
| Version | 1 |
| Retention | 30 days |
{
"type": "ghasi.interop.hl7v2.adt.received",
"data": {
"messageId": "MSG_01J...",
"connectorId": "CONN_01J...",
"messageType": "ADT^A01",
"messageControlId": "12345",
"sendingApp": "HIS-KMC",
"patientId": "PAT_01J...",
"encounterId": "ENC_01J...",
"tenantId": "tenant_01J..."
}
}
interop.hl7v2.orm.sent
| Field | Value |
|---|---|
| CloudEvents type | ghasi.interop.hl7v2.orm.sent |
| Version | 1 |
| Retention | 30 days |
{
"data": {
"messageId": "MSG_01J...",
"connectorId": "CONN_01J...",
"orderId": "SRQ_01J...",
"messageControlId": "67890",
"tenantId": "tenant_01J..."
}
}
interop.hl7v2.oru.received
| Field | Value |
|---|---|
| CloudEvents type | ghasi.interop.hl7v2.oru.received |
| Version | 1 |
| Retention | 30 days |
{
"data": {
"messageId": "MSG_01J...",
"connectorId": "CONN_01J...",
"patientId": "PAT_01J...",
"resultCount": 4,
"fhirObservationIds": ["obs_01J...", "obs_02J..."],
"tenantId": "tenant_01J..."
}
}
interop.hl7v2.oru.sent
| Field | Value |
|---|---|
| CloudEvents type | ghasi.interop.hl7v2.oru.sent |
| Version | 1 |
| Retention | 30 days |
{
"data": {
"messageId": "MSG_01J...",
"connectorId": "CONN_01J...",
"resultId": "RES_01J...",
"tenantId": "tenant_01J..."
}
}
interop.hl7v2.vxu.received
| Field | Value |
|---|---|
| CloudEvents type | ghasi.interop.hl7v2.vxu.received |
| Version | 1 |
| Retention | 30 days |
{
"data": {
"messageId": "MSG_01J...",
"connectorId": "CONN_01J...",
"patientId": "PAT_01J...",
"fhirImmunizationId": "IMM_01J...",
"tenantId": "tenant_01J..."
}
}
interop.fhir.bulk_export.completed
| Field | Value |
|---|---|
| CloudEvents type | ghasi.interop.fhir.bulk_export.completed |
| Version | 1 |
| Retention | 7 days |
{
"data": {
"jobId": "JOB_01J...",
"groupId": "GRP_01J...",
"resourceTypes": ["Patient", "Observation", "DiagnosticReport"],
"fileCount": 3,
"tenantId": "tenant_01J..."
}
}
interop.connector.activated
| Field | Value |
|---|---|
| CloudEvents type | ghasi.interop.connector.activated |
| Version | 1 |
| Retention | 30 days |
{
"data": {
"connectorId": "CONN_01J...",
"protocol": "mllp",
"direction": "inbound",
"tenantId": "tenant_01J..."
}
}
interop.message.dead_lettered
| Field | Value |
|---|---|
| CloudEvents type | ghasi.interop.message.dead_lettered |
| Version | 1 |
| Retention | 90 days |
{
"data": {
"messageId": "MSG_01J...",
"connectorId": "CONN_01J...",
"messageType": "ORU^R01",
"errorCode": "MAPPING_FAILED",
"attemptCount": 5,
"tenantId": "tenant_01J..."
}
}
3. Consumed Events (for outbound HL7 v2 generation)
| Subject | CloudEvents type | Producer | Action |
|---|---|---|---|
clinical.orders.placed | ghasi.orders.placed | orders-service | Generate HL7 v2 ORM^O01 to external LIS |
diag.laboratory.result.released | ghasi.lis.result.released | laboratory-service | Generate HL7 v2 ORU^R01 to external systems |
clinical.immunizations.recorded | ghasi.immunizations.recorded | immunizations-service | Generate VXU^V04 to immunization registry |
registration.encounter.registered | ghasi.registration.encounter.registered | registration-service | Generate ADT^A01 to external HIS |
4. DLQ
Failed processing: dlq.interop.{originalSubject}. Persisted in event_dlq table.