samedi HL7gateway

Version v0.23.3


hl7gateway changes

0.23.3 – 2022-06-10

  • Fix an error on, PID-3 is required, not PID-4.

0.23.2 – 2022-05-19

0.23.1 – 2022-05-18

  • Minor changes in log output formatting

0.23.0 – 2022-04-25

  • DIM client: remove stiko_* fields which are deprecated since DIM release 2.6

0.22.4 – 2022-03-28

0.22.2 – 2022-01-13

  • Fix an issue where patient birthdates were sometimes not parsed correctly.
  • Fix an issue where the windows service would not be restarted correctly on failure.

0.22.0 – 2022-01-11

  • Changed how error reporting works. Errors are now reported to a samedi-hosted Sentry ( instance.
    • This can be disabled by setting the SENTRY_DSN environment variable to an empty string or to your own endpoint.
  • Example config file is now located in data directory instead of install directory.

0.21.0 – 2021-12-09

  • Support writing chunked medical record attachments from incoming MDM messages.

0.20.14 – 2021-11-30

  • Support reading chunked medical record attachments. HL7 is now compatible with streamed MRE uploads on platform.

0.20.11 – 2021-11-25

  • Update the way medical record attachments are fetched from samedi for MDM messages

0.20.8 – 2021-10-13

  • Fix loading Form data for DIM reporting client
  • Normalize vacc_product for DIM reporting

0.20.7 – 2021-10-04

0.20.1 – 2021-08-24

  • Handle ADT^A01 and ADT^A04 messages.

0.20.0 – 2021-08-03

  • Add dim-client releases

0.19.3 – 2021-06-29

  • Stop shipping because it is no longer required.
  • Upgrades of internal dependencies.

0.19.2 – 2021-01-20

  • Fix an issue where MDM messages would use the wrong key to encrypt files

0.19.1 – 2021-01-04

  • pretty-print JSON in hl7gateway-state.json

0.19.0 – 2020-12-15

  • hl7_version in the configuration is no longer ignored.
  • MSA message replies now echo the HL7-version (MSH-11) of the incoming message.
  • Changed RSA key handling in the samedi API

0.18.3 – 2020-10-13

  • Strip linefeeds (\r) from message contents.

0.18.2 – 2020-08-24

  • Make sure to handle incoming messages serially for each listener to avoid race conditions with messages for the same appointment sent through different connections at the same time.

0.18.1 – 2020-05-14

  • Fall back to reading patient ids from PID-2 when PID-3 does not have data.

0.18.0 – 2020-05-07

  • Introduce new configuration option log_file_backups. (default: 3)
  • Make samedi API calls robust against IDs being strings vs. numbers.

0.17.4 – 2020-01-07

  • Support notifications for cancellations through SRM^S04 and SRM^S05 messages

0.17.3 – 2019-12-19

  • Support sending notifications in SRM without a PID segment when updating existing appointments.

0.17.2 – 2019-12-16

0.17.0 – 2019-11-29

  • Support for sending notifications when creating or updating appointments with notify^true in AIS-12

  • Include ERR segment for ACK messages on ApplicationError and ApplicationReject

  • Use \r\n line endings when logging on windows

  • Fix hl7_facility for outgoing HL7 messages. When hl7_facility is configured for a samedi account, it will now correctly be sent in MSH-4 (default is samedi)

0.16.1 – 2019-10-22

  • Support incoming SRM^S04 and SRM^S05 messages (appointment cancellation)

0.16.0 – 2019-10-15

  • Send MDM^T02 messages for medical record entries that are created in samedi for patients
    • added a new configuration option medical_record_polling_enabled to enable this per samedi account.

0.15.0 – 2019-09-09

  • Support for incoming MDM^T02 messages.

0.14.0 – 2019-08-07

  • Support for configuring receiving_application and receiving_facility (MSH-5, MSH-6) per connection for outgoing HL7 messages.

0.13.7 – 2019-06-20

  • FIXED: patients where zip, phone numbers or insurance number encrypted as integers would crash the gateway.

0.13.6 – 2019-06-03

  • Use 99SAMEDI-RESOURCE instead of SAMEDI-RESOURCE in AIG-3-3 to not generate invalid HL7 messages. SAMEDI-RESOURCE is still accepted in incoming AIG/AIL/AIP segments.

  • FIXED: patients with “insurance_company” set to “public” or “private” would break during ADT message handling.

0.13.5 – 2019-05-21

  • Support AIP/AIL/AIG segments in SRM messages: When updating an existing appointment in samedi with an SRM message, it’s now possible to override the booking logic by sending appropriate resource segments. This updates the booked resources on that appointment to be exactly as sent.

0.13.4 – 2019-05-20

  • Add a configuration option mllp.sender.peer_error_handling = "ignore". If set, the program will not terminate when it receives a MSA message with AE or CE status and the message will not be retried.

0.13.3 – 2019-05-15

  • hl7gateway instances now periodically announce their status when running normally.

0.13.2 – 2019-05-14

  • Moved default configuration into non-roaming %ProgramData%.

  • Add a Start Menu shortcut for program and configuration directories.

  • FIXED: multiple incoming connections on the same channel work now.

  • FIXED: service restart would sometimes not work when there were network errors during program initialization.

  • FIXED: logging to the windows event log didn’t work.

0.13.1 – 2019-05-02

  • Note: existing integrations that send SIU messages to samedi with AIG-3-4, AIL-3-4 or AIP-3-4 need to be updated to keep this field empty or to have an actual resource xref there (this field was previously ignored).

  • Change parsing of incoming AIG/AIL/AIP segments.

    • AIG-3-1 can now describe a samedi Resource ID. For this AIG-3-3 must have the value SAMEDI-RESOURCE
    • If AIG-3-4 is set, it will be interpreted as samedi resource xref. This will always take precedence over AIG-3-1. (the same applies to AIL and AIP segments)
    • Accordingly, in outgoing SIU messages, AIG-3-3 is now set to SAMEDI-RESOURCE to indicate that AIG-3-1 is a resource ID, not a resource xref
  • Save access token in the state file by account name instead of user name

0.13.0 – 2019-04-29

  • hl7gateway instances now use an access token to authenticate themselves with

0.12.9 – 2019-04-17

  • Duration is calculated differently for appointment types that are configured with negative start offsets
  • Moved the public website to

0.12.6 – 2019-04-05

  • FIXED: do not send patients birthdate in outgoing PID segments when it is before the year 1900.

  • FIXED: when an xref was used in different resources across multiple samedi accounts it would only be associated with a single account.

  • Support multiple independent MLLP connections.

  • Remove dump_dir configuration option to write HL7 messages to a directory. Use samedi.log_file to log messages.

0.12.5 – 2019-04-02

  • Skip patient birthdate in PID, when the year is less than 1900

0.12.4 – 2019-03-26

  • Use “.br” escape sequence instead of newlines when sending messages to KIS

0.12.3 – 2019-03-21

  • Do not attempt to book appointments into ressources that are shared from another account.

0.12.2 – 2019-03-20

  • Add samedi.log_file configuration option.

0.12.1 – 2019-03-06

  • Support more fields in SRM-S02 messages:
    • Allow ignoring availability calculations when updating appointments with force^yes in APR-5.
    • Support updating appointment duration with ARQ-9/ARQ-10.

0.12.0 – 2019-02-26

  • Support incoming SRM^S02 messages for updating appointments in samedi.
  • Don’t send U+200C characters in NTE fields of appointment comments.
  • Make UTF-8 the default MLLP message encoding for new installations

0.11.0 – 2019-02-05

  • Use MSH-9-1 and MSH-9-2 exclusively for recognizing messages. Stop using MSH-9-3 (Message Structure)
    • SIU-Messages now don’t need to include SUI_S12 in MSH-9-3 any more.
    • Only S12 - S15 messages are now handled. Older versions would silently accept other types of SIU-Messages.
  • outgoing SIU messages now send AIG||X segments inside an RGS||X group for each unchanged resource in an appointment.
  • FIXED: SIU messages now always contain at least one RGS segment.

0.10.4 – 2019-01-15

  • FIX: listen for shutdown signal even while syncing is not yet finished
  • Send recreate_if_exists parameter for events when creating them. When gateway sends a request to create an event, in case the event with such xref already exists, platform will cancel it and create a new event with that xref.

0.10.3 – 2018-11-20

  • FIX: put outgoing appointment namespace in SCH-2-2 as described, not SCH-2(2)-1

0.10.2 – 2018-11-20

  • Add a configuration option patients_polling_enabled to disable sending of ADT messages
  • Add a configuration option appointments_polling_enabled to disable sending SIU messages
  • deprecated polling_enabled configuration option, which now disables outgoing ADT and SIU messages.

0.10.1 – 2018-11-15

  • Add a configuration option “appointments_namespace” to “samedi” section. When present, this will be put to SCH-2-2 of outgoing SIU messages.

0.10.0 – 2018-11-06

  • Drop support for service installation in Unix/macOS.
  • Make windows service handling more robust:
    • Add a command line option “workingDirectory” to make relative paths in configuration work. (they would be relative to “%WINDIR%/System32” before)
    • Log errors during startup to Windows EventLog.
    • Configure automatic restart of the service during installation.
  • MLLP: don’t attempt to connect automatically during startup. Connect when the first message needs to be sent.

0.9.0 – 2018-11-02

  • retry network requests to make the program more robust
  • Support “enhanced mode” for Acknowledgements, allow outgoing messages to be acknowledged with CA/CR/CE codes in addition to AA/AR/AE.

0.8.3 – 2018-10-30

  • Include hl7 specification and changelog

0.8.2 – 2018-10-26

  • Fix merging of non-existent patient by id but by xref

0.8.0 – 2018-10-18

  • when updating patient after ADT message from KIS do not erase any data in samedi patient record

0.7.0 – 2018-10-02

  • do not re-update patients in samedi if the data did not change in order to prevent loops
  • poll for patient updates in samedi and send out ADT Messages
    • ADT^A08 for patients that are created/updated
    • ADT^A23 messages for patients that are deleted

0.6.0 – 2018-09-20

  • accept ADT^A08 Message type and allow patients to be created and updated
  • accept local phone number on PID-13

0.5.7 – 2018-09-10

  • fix born_on parsing

0.5.6 – 2018-06-07

  • Add release build for macOS

0.5.5 – 2018-05-03

  • Support PID fields in SIU messages.

0.5.0 – 2018-04-10

  • Require the ‘hl7gateway’ package in all connected samedi accounts.
  • Appintment updates now send all resource changes, not the current state of the appointments.
    • A moved appointment will have an RGS||D part with removed resources and an RGS||A part with added resources.
    • Cancelled appointments now send AIG||D segments for the booked resources.
    • Segment IDs in AIG-1 and RGS-1 now increment instead of always being 1.
  • Send “DELETED” instead of “BOOKED” in SCH-6 field for S15 messages.

0.4.14 – 2018-03-19

  • Add HTTP[S]_PROXY support. Use the proxy server given in the HTTPS_PROXY or HTTP_PROXY environment variable.

0.4.13 – 2018-03-16

  • Add hl7send tool for sending single messages from text files.

0.4.12 – 2018-03-14

  • send patient address in PID-11 (street, city, zip)
  • send patient email address in PID-13 (type X.400)
  • send patient phone numbers in PID-13 (PC: mobile number, PH: phone, PX: fax)

0.4.11 – 2018-03-06

  • Build a distributable linux archive on CI

0.4.10 – 2018-02-23

  • Make HL7 message IDs non-deterministic.

0.4.9 – 2018-02-23

  • Make timeout configurable with config.mllp.sender.acknowledge_timeout_seconds configuration option.
  • Only start acknowledgement timeout when HL7 message is about to be sent and never run multiple timeouts in parallel.

0.4.8 – 2018-02-22

  • Increase timeout when waiting for HL7 message acknowledgements to 30 seconds. (from 10 seconds)
  • Load practice encryption keys immediately on startup, not only when required.

0.4.7 – 2018-02-16

  • fixed: patients from referrals that are encrypted with a public key are decrypted correctly now.

0.4.6 – 2018-02-12

  • data that can’t be represented with the chosen HL7 message encoding will have non-encodable bytes replaced with a replacement character. (0x1A for ISO 8859-1) Before, the HL7 component would be skipped entirely.

0.4.5 – 2018-02-08

  • installer: Create a batch file in “%APPDATA%/samedi HL7gateway” for a better first-run experience.
  • installer: Ship util/hl7listener.exe for easier debugging.

0.4.4 – 2018-02-07

  • always set RGS-2 in outgoing SIU-messages (segment action code)
  • SIU-Messages always send message structure SIU_S12
  • send TQ1 segments for appointment time
  • allow setting structured MSH message headers in configuration file
  • DEPRECATION: consumers should use TQ1-7 and TQ1-13 instead of SCH-11 and SCH-9

0.4.3 – 2018-02-05

  • send gender in PID messages
  • bundle in windows installer so that loading timezones works there
  • don’t generate NTE segments for empty appointment comments

0.4.2 – 2018-02-05

  • fix parsing of patient data where birthdate is a timestamp
  • fix that invalid birthdates would get sent as “00010101” in PID segments

0.4.1 – 2018-02-02

  • send “Deleted” in SCH-25 for deleted appointments

0.4.0 – 2018-02-02

  • HL7 message segments are separated by CR (\r) instead of LF (\n) for conformance with the HL7 specification.
  • Send out S12/S13/S14/S15 messages, compatible with java HL7gateway with the following differences:
    • HL7 Version declared in MSH header defaults to 2.5
    • MSH sending facility is different. “HL7Gateway^^DNS|scheduling^^DNS” now is “samedi-hl7gateway|samedi”
    • Comment field names are sent as-is. Existing mappings do not work any more.
    • Charset defaults to “8859/1” and is always sent in all messages.
    • Add three utility scripts
      • “service-install-hl7gateway.bat”, “service-uninstall-hl7gateway.bat” for installing and removing the service (run as Administrator)
      • “utils/tail-service-log.ps1” to more easily look at log output of the running service.
  • wait for ACK/NACK replies when sending out SIU messages
  • report an error when config file contains unknown configuration options
  • configurable sync interval (set with config.samedi.polling_interval_seconds = 60)
  • new option to disable outgoing HL7 messages per samedi account polling_enabled = false

0.3.1 – 2018-01-16

  • better debug output: log HTTP response body for failed requests.

0.3.0 – 2018-01-03

  • read samedi practice ID from incoming SIU S14 messages if one is set. This makes hl7gateway work with multiple configured accounts when updating appointments is required.
  • Remember which samedi appointments have already been imported. (With new samedi.state_file configuration option, which defaults to hl7gateway-state.json in the current directory.)

0.2.6 – 2017-12-11

  • Handle SIU S14 messages from Orbis and put Orbis Case-ID and Patient ID into samedi appointment comments.

0.2.5 – 2017-12-08

  • parse appointment time out of SIU messages when there are no TQ1 segments.

0.2.3 – 2017-12-01

  • Don’t exit program when an incoming HL7 messages can not be assigned to any configured samedi account.

0.2.2 – 2017-11-30

  • Handle AIP/AIL/AIG segments in SIU messages.
  • Send NACK replies for messages that can’t be handled.
  • Fixed: upgrading with the MSI installer uninstalls old version.

0.2.1 – 2017-11-24

  • New dump_dir configuration option to log all HL7 messages into files.
  • Fixed: SIU messages with appointment times in TQ1 are parsed correctly now.
  • Fixed: make disabling outgoing HL7 connections actually work.

0.2.0 – 2017-11-23

  • Add windows installer.
  • Ability to run as a windows service.

0.0.1 – 2017-11-16

  • initial version