Skip to content

v1.10.0

Choose a tag to compare

@github-actions github-actions released this 11 Oct 17:42
· 62 commits to main since this release

v1.10.0 (2026-10-11)

✨ Features

  • find message groups by the names other versions give them (5479b68)
  • dictionary: generate the dictionaries from HL7's v2 XML schemas, 2.1 to 2.9 (ec536df)
  • dictionary: field enums for every field of every version (ab3a574)
  • dictionary: element numbers, minimum and conformance lengths, truncation (09ef5bd)
  • HL7 table values, and checking codes against them (65f3157)
  • typed access - segments as objects, with generated interfaces (00b8268)
  • typed access by version - flat interfaces per distinct shape (d458e2c)
  • field() takes only the fields of a typed message's version (875e161)
  • check a path's components against its field's data type (f808ddc)
  • typed assign(), toObject() and components for a typed message (6d9d63f)
  • whole messages as objects, typed by version and structure (b90e24b)

🐛 Bug Fixes

  • keep HL7 date/time values as written, write Dates with their offset (6236696)
  • never reinterpret a date read from HL7 text (e1bad61)
  • type sub-components by their data types in version-specific objects (5fd2592)
  • read numbers as HL7 writes them, and check OBX-5 by OBX-2 (af0e222)
  • dictionary: 2.5.1's RSP_K21 repeats QUERY_RESPONSE (53e756c)
  • union object types give sub-components their own types; README asks node 20 (1cfe942)

🔧 Refactoring

  • dictionary: complete versions from one generated file, shared and built on first use (b1404f7)

🧹 Chores

  • dictionary: update valgen to 7.0.4 (e650c68)

v1.10.0 (2026-10-11)

✨ Features

  • find message groups by the names other versions give them (5479b68)
  • dictionary: generate the dictionaries from HL7's v2 XML schemas, 2.1 to 2.9 (ec536df)
  • warn on an unknown character set, make the default one configurable (30f3437)
  • validate messages against their version's dictionary (be8d9fa)
  • net: enhanced acknowledgment mode (MSH-15, MSH-16) (6cbc41e)
  • read and write values by path, as HAPI's Terser does (2c1ad0b)
  • batch files - FHS/BHS ... BTS/FTS (93d1214)
  • HL7 table values, and checking codes against them (65f3157)
  • typed access - segments as objects, with generated interfaces (00b8268)
  • typed access by version - flat interfaces per distinct shape (d458e2c)
  • field() takes only the fields of a typed message's version (875e161)
  • check paths against a typed message's version (ef9f26b)
  • check a path's components against its field's data type (f808ddc)
  • typed assign(), toObject() and components for a typed message (6d9d63f)
  • whole messages as objects, typed by version and structure (b90e24b)

🐛 Bug Fixes

  • honour MSH-18 when encoding, transliterate what the charset cannot hold (9221895)
  • map character sets as HAPI does, recognize UTF-16/UTF-32 by BOM (4a49525)
  • conformance review against HL7 v2 and HAPI HL7v2, with tests (7e6a639)
  • read and write escape sequences as the standard and HAPI do (bdc3a2c)
  • lay ERR out as each version defines it, reject with AR (2bea5e7)
  • keep HL7 date/time values as written, write Dates with their offset (6236696)
  • a value set to an empty string is empty (249f7bc)
  • locate errors as ERL does - segment occurrence and repetition from 1 (d0233b5)
  • never reinterpret a date read from HL7 text (e1bad61)
  • MSA-3 holds the first error's text, not the last (40e55ca)
  • write and read as HAPI does where they differed (3746f97)
  • read numbers as HL7 writes them, and check OBX-5 by OBX-2 (af0e222)
  • write UTF-16 big-endian after FE FF, as Java and HAPI do (6920cfb)
  • match the structure around Z segments, keep them where they are (0bf34ec)
  • dictionaries given replace the default ones for their versions only (a33c5e5)

🧪 Tests

  • compare the library with HAPI HL7v2, case by case (ec7c98f)
  • more HAPI cases - message types, versions, charsets, validation, batches (d187cf8)
  • compare where segments are placed in the structure with HAPI (8de48d3)
  • choices in message objects, set IDs given as numbers; docs: HL7Request.send() (e46fa36)

v1.10.0 (2026-10-11)

✨ Features

  • introduce .onError() method to HL7Server and HL7Router for error middleware support, update README docs accordingly (cf1bdf8)
  • warn on an unknown character set, make the default one configurable (30f3437)
  • validate messages against their version's dictionary (be8d9fa)
  • net: route messages by type, event or structure (ca4c7d2)
  • net: enhanced acknowledgment mode (MSH-15, MSH-16) (6cbc41e)
  • net: batches over MLLP - received, processed, answered with a batch (9832761)

🐛 Bug Fixes

  • update HL7Response error handling to emit single error instead of array (b11058c)
  • honour MSH-18 when encoding, transliterate what the charset cannot hold (9221895)
  • map character sets as HAPI does, recognize UTF-16/UTF-32 by BOM (4a49525)
  • conformance review against HL7 v2 and HAPI HL7v2, with tests (7e6a639)
  • net: make TLS work - read the decrypted socket, wait for the handshake (b0d77df)
  • lay ERR out as each version defines it, reject with AR (2bea5e7)

🧪 Tests

  • choices in message objects, set IDs given as numbers; docs: HL7Request.send() (e46fa36)

🧹 Chores

  • update rman to 2.24.1, format the remaining files, check format in CI (dc87603)

v1.10.0 (2026-10-11)

✨ Features

  • find message groups by the names other versions give them (5479b68)
  • dictionary: generate the dictionaries from HL7's v2 XML schemas, 2.1 to 2.9 (ec536df)
  • warn on an unknown character set, make the default one configurable (30f3437)
  • validate messages against their version's dictionary (be8d9fa)
  • net: enhanced acknowledgment mode (MSH-15, MSH-16) (6cbc41e)
  • read and write values by path, as HAPI's Terser does (2c1ad0b)
  • batch files - FHS/BHS ... BTS/FTS (93d1214)
  • HL7 table values, and checking codes against them (65f3157)
  • typed access - segments as objects, with generated interfaces (00b8268)
  • typed access by version - flat interfaces per distinct shape (d458e2c)
  • field() takes only the fields of a typed message's version (875e161)
  • check paths against a typed message's version (ef9f26b)
  • check a path's components against its field's data type (f808ddc)
  • typed assign(), toObject() and components for a typed message (6d9d63f)
  • whole messages as objects, typed by version and structure (b90e24b)

🐛 Bug Fixes

  • honour MSH-18 when encoding, transliterate what the charset cannot hold (9221895)
  • map character sets as HAPI does, recognize UTF-16/UTF-32 by BOM (4a49525)
  • conformance review against HL7 v2 and HAPI HL7v2, with tests (7e6a639)
  • read and write escape sequences as the standard and HAPI do (bdc3a2c)
  • lay ERR out as each version defines it, reject with AR (2bea5e7)
  • keep HL7 date/time values as written, write Dates with their offset (6236696)
  • a value set to an empty string is empty (249f7bc)
  • locate errors as ERL does - segment occurrence and repetition from 1 (d0233b5)
  • never reinterpret a date read from HL7 text (e1bad61)
  • MSA-3 holds the first error's text, not the last (40e55ca)
  • write and read as HAPI does where they differed (3746f97)
  • read numbers as HL7 writes them, and check OBX-5 by OBX-2 (af0e222)
  • write UTF-16 big-endian after FE FF, as Java and HAPI do (6920cfb)
  • match the structure around Z segments, keep them where they are (0bf34ec)
  • dictionaries given replace the default ones for their versions only (a33c5e5)

🧪 Tests

  • compare the library with HAPI HL7v2, case by case (ec7c98f)
  • more HAPI cases - message types, versions, charsets, validation, batches (d187cf8)
  • compare where segments are placed in the structure with HAPI (8de48d3)
  • choices in message objects, set IDs given as numbers; docs: HL7Request.send() (e46fa36)