/ SONDA · PROTOCOLS

The trading desk and the hospital, on the same desk.

FIX with a real session layer, not a message formatter. HL7 v2 over MLLP in both directions, every segment named. FHIR and OData read the way their specifications mean them, with verdicts and paging. All of it from a project in Sonda, next to the REST calls that surround it.

FIX 4.0 – 5.0 SP2 HL7 2.1 – 2.8.2 FHIR ODATA V4

At a glance

FIXSonda's own engine, initiator role. FIX 4.0 to 4.4 and FIXT.1.1 for 5.0, SP1 and SP2. About 1,600 fields and 117 message types from the QuickFIX dictionaries.
HL7 v2Sender and listener in one item. Twelve versions, 2.1 to 2.8.2, every segment, field, repetition and component named. 16 MB messages.
FHIRA CapabilityStatement becomes a project: search, read, vread, create, update, patch, delete, history, $operations. OperationOutcome and Bundle verdicts.
OData$metadata becomes a project: entity sets with their query options, CRUD, navigations, functions and actions. Error, count and nextLink verdicts.
/ FIX

A session, kept the way a venue expects.

TCP or TLS with a client certificate, because many venues ask for one. CompIDs and SubIDs, a logon with username and password masked in the log, ResetOnLogon, extra logon fields.

The session layer

Heartbeats and test requests when the counterparty goes quiet; the counterparty's test requests answered. Resend requests honoured — application messages resent with PossDupFlag, administrative ones gap-filled. Gaps in what arrives asked for again. Sequence resets followed, logout both ways, sequence numbers set by hand while disconnected. Garbled messages reported and skipped.

The composer

Tags by number or by name, in the order you give them, repeating groups as written. "now" and "today" filled in. Rows or text, one tag=value per line. Templates for a new order, a cancel, a replace, an order status, market data, a quote request, a security list and a mass status. Paste a message with SOH, pipe or ^A separators. Build a cancel from an order already in the log.

The answer

Wait for the reply matched by a shared tag — ClOrdID, MDReqID — with a Reject or a BusinessMessageReject counted as the answer. Every field named, with its value's meaning: 54=1 Buy. Filter the log by ClOrdID or by symbol. A test request with its round-trip time.

/ HL7 V2

Send to the engine. Listen like one.

MLLP over TCP or TLS to Mirth, Rhapsody, Cloverleaf, an EHR or a lab — and a listener that opens a port of its own and acknowledges the way the sender asked.

Sending

Empty MSH fields filled in: the time, a control ID, the applications and facilities, the processing ID, the version. "now" in any date field. The ACK carrying your control ID is waited for: AA, AE or AR, or the enhanced-mode CA, CE and CR.

Listening

A port for this computer only or for the LAN, up to 32 peers. Answers AA, AE, AR or nothing, with an MSA-3 text, in original or enhanced mode as MSH-15 and MSH-16 ask. An ERR segment on errors and rejects from 2.5 on. A flow can produce the acknowledgement.

Reading

UTF-8 or ISO-8859-1, MSH-18 respected, escapes handled. A parsed view with every segment, field, repetition and component named for the message's version, coded values explained, problems flagged. Templates for ADT A01, A04, A08 and A03, ORM O01, ORU R01, SIU S12, VXU V04 and MDM T02. Filter the log by control ID or by patient.

/ FHIR AND ODATA

Read as the specification means it.

Both import into a project from the server's own description, and both get a verdict the HTTP status cannot give.

FHIR

Import a CapabilityStatement and get every interaction the server declares. An OperationOutcome in a 200 is named by its worst issue. A Bundle shows its count and a Next page button that follows the link.

OData v4

Import $metadata and get entity sets with $filter, $select and the rest, the CRUD calls, navigations, functions and actions. @odata.error is a verdict, @odata.count is shown, @odata.nextLink is a button.

/ LOCKFLARE SONDA

FIX, HL7, FHIR and OData, in the free edition.

Listed, line by line →