Perfuse

Connectors

Every way in, every way out

A connector is how Perfuse reaches another system: the cable, the folder, the queue or the web address messages travel through. Perfuse has 24 kinds of source and 26 kinds of destination, and the healthcare formats that travel over them.

Healthcare formats

The languages health systems speak

A format is the shape of the message itself. Hospitals use several at once, often for the same patient: the admission in HL7 v2, the record in FHIR, the X-ray in DICOM, the bill in X12. Perfuse reads, checks, writes and converts all of them.

HL7 v2

The workhorse of hospital interfaces since the 1990s: admissions, orders, results, scheduling. Parsed fast, every quirk handled, acknowledgements generated.

FHIR R4, R4B and R5

The modern web standard for health data. A full FHIR server, a validator, and conversion from HL7 v2 to FHIR and US Core.

DICOM

Medical images. All five network services, sending and receiving, with de-identification as a step in the channel.

X12

Insurance transactions: 837 claims, 835 remittances, 270/271 eligibility, 278 prior authorization and 275 attachments.

CDA and C-CDA

Clinical documents, including those hidden inside HL7 v2 messages. Checked, signed, repaired and rendered to PDF.

NCPDP, JSON, XML and delimited

Pharmacy messages, and the general formats partners invent for themselves.

Transports

The classic hospital connections

Most interfaces in a hospital still travel over a few well-worn routes. Perfuse speaks each in both directions, with encryption where the route allows it.

MLLP, with TLSTCPHTTP and RESTSOAP web servicesFiles and folders FTP and FTPSSFTPWindows shares (SMB)WebDAVEmail (SMTP) Serial cablesDICOMDICOM query (C-FIND)PostgreSQLMySQL SQL ServerOracleSQLiteAnother channelJavaScript reader and writer

Each is tested against the real thing: SFTP against OpenSSH, databases against PostgreSQL, mutual TLS against OpenSSL, DICOM against the Orthanc archive.

Perfuse in the middle: a lab system over MLLP, radiology over DICOM and a payer over X12 on one side; the EHR, a FHIR API and an archive on the other.

Cloud and message queues

Straight into the cloud, without the cloud's toolkits

Perfuse talks to AWS, Azure and Google Cloud over their own web interfaces, with the signing done inside Perfuse, so nothing extra is installed. A message taken from a queue is confirmed only once it has been handled, so a crash means it is read again, never lost.

ServiceRead from itSend to itTested against
Amazon S3YesYes, any storage class, Glacier includedLocalStack, AWS's signature example
Amazon SQSYesYes, FIFO in patient orderLocalStack
Amazon SNS—YesLocalStack
Azure Service Bus and Event Hubs (AMQP 1.0)YesYesMicrosoft's Service Bus emulator
Azure Blob StorageYesYes, Hot to ArchiveAzurite
Google Cloud Pub/SubYesYes, in patient orderGoogle's Pub/Sub emulator
Google Cloud StorageYesYes, any storage classfake-gcs-server
KafkaYesYes, keyed by patientApache Kafka 3.9
RabbitMQ, ActiveMQ, Artemis (AMQP 1.0, STOMP)YesYesRabbitMQ 4, ActiveMQ 6.2
MQTT (Mosquitto, EMQX, HiveMQ, AWS IoT Core)YesYesMosquitto 2.0
IBM MQYesYes, persistentIBM MQ 10 for developers

"Tested against" means a channel read from one place and delivered to another on that software. Emulators stand in where the service itself needs a paid account; the verification record says exactly what each test did and did not show.

Need a connector that is not here?

Tell us on GitHub. The JavaScript reader and writer cover the rest in the meantime.