All notable changes to the "hl7tools" extension will be documented in this file.
- Initial release.
- Added function 'HL7 Tools: Highlight Field'. This prompts the user to enter a HL7 field location (e.g. PID-3), the corresponding field is then highlighted in the editor.
- Bugfix: Mask identifiers was failing on PID and NK1 segments if not all fields were present in the message.
- Added keymap to bind 'HL7 Tools: Highlight Field' to ctrl+alt+h (only applies to hl7 files)
- Added function 'HL7 Tools: Identify Fields' to add a tooltip description for each field. This is loaded on startup if the file has a .hl7 file extension.
- updated function 'HL7 Tools: Identify Fields' to search for matching fields based on field name (in addition to location). e.g. entering 'birth' would highlight all fields with 'birth' in the field name (such as 'birth date', 'multiple birth indicator', 'country of birth').
- When masking identifiable fields, the GT1 segment is now included.
- The message schema specific to the version of HL7 in the message is now used (as reported by MSH-12)
- Minor update to display of component numbers when displaying fields in a segment, uses '.' instead of '-' to match HL7 nomenclature.
- Minor update to add border characters to output from 'Display Segment fields' to link components to the parent field.
- Added the version of HL7 schema detected to the status bar.
- Added function to split HL7 batch files into separate files per message.
- HL7 schema (and field identification) is only loaded on activation for messages with .hl7 file extensions, or a Header segment (MSH) as the first line (or FHS and BHS segments for HL7 batch files). The field identification can still be applied manually (via F1 --> HL7 Tools: Identify Fields) for messages that do not match the criteria listed above.
- Bugfix: Fixed duplication of MSH segment when splitting HL7 batch files.
- Added filename to output window name for 'Display Segment Fields' - less confusion when comparing segments from more than one file.
- When using the 'Mask Identifiers' command, the masked message is now opened as a new document in the editor window, instead of being displayed in the output window.
- Fixed issue in 'Highlight Field' command where searches to highlight an item based on location (not name) failed if the location entered was in lowercase.
- Fixed issued in 'Highlight Field' command where highlighting fields in the MSH segment were shifted 1 field to the right.
- The 'Highlight Field' now persists the highlighting for all HL7 files open in the current editor session. Previously switching to another tab would clear the highlighting. The command 'Clear Highlighted Fields' has been added to manually clear the highlighted fields.
- Custom segments now displayed by the 'Display Segment Fields' command.
- Fixed issue where fields not defined in the schema where not displayed by the 'Display Segment Fields' command.
- The background colour for highlighted fields can now be defined via a user preference (hl7tools.highlightBackgroundColor). e.g: "hl7tools.highlightBackgroundColor": "rgba(0,255,0,0.3)"
-
Added 'Send Message' command to send the current HL7 message to a remote host.
-
Added user preferences for 'Send Message' function
// The TCP connection timeout (in seconds) when sending a HL7 message.
"hl7tools.ConnectionTimeout": 10
// The default remote host and IP address to send HL7 messages to.
"hl7tools.DefaultRemoteHost": "127.0.0.1:5000"
- Incorrect case in path name caused extension commands to fail under Linux with v1.4.0.
- Added function to listen on a TCP port for HL7 messages send from remote hosts. Messages received are displayed in the editor as new documents. The listener expects MLLP framing for the messages.
-
If splitting a large HL7 batch file, the user is given the opportunity to cancel the operation. Opening a large number of files could have a negative impact on performance. Dealing with a large number of files is better left for a solution that does not require then to be opened in the editor.
-
A setting has been added to suppress the generation of the hover field descriptions for large hl7 files. By default only the first 200 segments of each message will include field descriptions when fields are hovered over with the mouse. The default value is user configurable via the following setting.
// Stop applying hover fields descriptions after this number of lines in a file (poor performance on large files)
"hl7tools.MaxLinesForFieldDescriptions"
- Bugfix: HL7 batch files with less than 100 messages were ignored, this is now fixed.
- Added the command 'Extract Matching Segments'
- Updated all functions to query the HL7 delimiter characters used, rather than assuming defaults used.
- fixed issue introduced in v1.6.1 - for files without .hl7 file extensions the hl7 delimiters were not parsed on activation of the extension. This caused several commands to fail to run.
- re factored the 'Display Segment Fields' command to improve maintainability. Fixed issue where MSH-2 was not displayed correctly.
- added function 'Add Line break to Segments'. This identifies and extracts segments from a file where no segment delimiter (line break) was included. Useful if importing from a system that does not separate segments.
- bugfix to prevent the 'Add Line break to Segments' being applied to non HL7 files on activation
- bugfix to correct issue with 'Display Segment Fields' command. The issue caused the command to fail to run when a field containing a value was not defined in the HL7 message schema.
- updated Mask Identifiers command to mask out spaces included in field values. The mask character was changed from '#' to '*'.
- added the function 'Extract field from all open files'
- refactored functions to improve maintenance/reuse. No functional changes.
- added function 'Check Required Fields'
- added function 'Find Field' and 'Find Next Field'. HL7 fields are searched for in the message based on description (e.g. "Date of Birth") or location (e.g. "PV1-3"). 'Find Next' will loop through all matching fields in the file. The cursor will be moved to the start of the field, the field text will be selected (if not empty)
- minor fixes identified when adding unit tests
- updated 'Display Segment Fields' command to ignore any text prefixed to the line containing the segment - such as line numbers etc.
- fixed issue with 'Display Segment Fields' command not displaying MSH-1 and MSH-2 correctly
- vscode v1.29 changed the allowed values for the config.files.eol setting which broke the 'Add Linebreaks To Segments' command, this version adds a workaround to fix the issue.
- more fixes for other commands impacted by the config.files.eol setting change.
- changed the EOL detection not to rely on vscode's config settings.
- fixed 'Highlight Field' command impacted by config.files.eol setting change with vscode v1.29
- fixed issue with Extract Matching Segments command and Receive Message command only displaying the last message instead of all messages.
- updated the end of line detection use the document.eol property, instead of searching for EOL characters.
- when sending messages using CRLF line ending, these were not successfully converted to LF (replace was not global for the entire message).
- Updated 'Send Message' command to optionally display a picklist of favourite endpoints (defined by the setting hl7tools.FavouriteRemoteHosts).
- added support for defining the socket encoding when sending/receiving messages. Defaults to utf-8 (prior behaviour), but can now be optionally changed to ISO-8859-1. Set via "SocketEncoding" option in the extension preferences.
- The 'Add Linebreak to segments' may find false positive matches for 'Z' segments - such as names like ZOE, ZAK, etc. It now requires a space the precede the Zxx string to be detected as a segment. Still prone to some false detections.
- Support for custom segment definitions
- fixed issue with descriptions for FHS and BHS segments
- fixed issue where HL7 version was not detected if MSH was not the first line of the file. Now searches for the first occurrence of a MSH segment.
- fixed issue that resulted in the SendACK preference always returning false.
- Send messages now uses a webview panel to enter connection details
- TLS connections supported when sending messages to remote hosts that implement TLS
- Fixed issue when favouriteRemoteHosts list was empty
- Added basic validation to ensure favourites defined in user settings contain all required properties (invalid entries removed from favourites drop list)
- Fixed error in onDidChangeTextDocument event
- Any active field highlighting will be reapplied when the document text changes.
- converted to TypeScript. No changes to functionality.
- Fixed issue with missing segment terminator in MSA segment when ACKs are returned
- Fixed issuer where starting the HL7 listener failed if a document wasn't open in the editor.
- Preference added to specify an MSA-1 value to return in ACK messages (Recieve HL7 Message function). Defaults to "CA". Thanks @jacobMedisoft for implementing this.
- Implemented a document formatter for HL7 files. This add linebreaks between segments if not present, and removes multiple linebreaks (i.e. blank lines)