IP Library Granted Patent US 10,552,396
Granted Patent B2
US 10,552,396 · App. 15/471,903 · Granted Feb 4, 2020

Minimize garbage collection in HL7 manipulation

Inventors: Steven E. Dwire (Lawrenceville, GA); Hong Gao (Alpharetta, GA); Sarika Kandaprabhu (Milton, GA); Michael Godinez (Acworth, GA); Hassan Khan (Alpharetta, GA)
Assignee: Health Catalyst, Inc.
G06F16/2228G06F19/3418
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,552,396
App. No.
15/471,903
Granted
Feb 4, 2020
Kind
B2
Abstract

Disclosed are a system and method for processing HL7 messages. A method includes receiving, an HL7 message; storing the HL7 message in a memory; creating a data structure representation of the stored HL7 message in the memory that stores a start index and an end index of the stored HL7 message, wherein the start index indicates a beginning of the stored HL7 message and the end index indicates an end of the stored HL7 message; hierarchically creating, from the data structure representation of the stored HL7 message, one or more data structure representations in the memory that store at least one start index and at least one end index corresponding to one or more fragments in the stored HL7 message; and, modifying the stored HL7 message according to the at least one start index and a corresponding end index of the fragments in the HL7 message.

Claims (64)

1. A method for processing Health Level-7 (HL7) messages, comprising:

receiving, over an electronic data network, an HL7 message and storing the HL7 message in a memory as a stored HL7 message;

creating a data structure representation of the stored HL7 message in the memory that stores a start index of the stored HL7 message and an end index of the stored HL7 message, wherein the start index of the stored HL7 message indicates a beginning of the stored HL7 message and the end index of the stored HL7 message indicates an end of the stored HL7 message;

hierarchically creating, in the memory, from the data structure representation of the stored HL7 message, a first data structure representation of a fragment in the stored HL7 message, the first data structure representation of the fragment including a start index and an end index corresponding to the fragment in the stored HL7 message; and

modifying the stored HL7 message by appending a second data structure representation of the fragment to a child list associated with a parent of the fragment, wherein the second data structure representation of the fragment includes a start index and an end index of a storage location storing an updated value of the fragment.

2. The method according to claim 1 , wherein:

the stored HL7 message is organized in a hierarchical manner, the stored HL7 message comprising segments, the segments comprising fields, the fields comprising repetitions, the repetitions comprising components, and the components comprising subcomponents; and

types of fragments in the stored HL7 message are selected from a group consisting of: (a) a message fragment (b) a segment fragment, (c) a field fragment, (d) a repetition fragment, (e) a component fragment, and (f) a subcomponent fragment.

3. The method according to claim 2 , wherein:

the stored HL7 message comprises delimiters for each fragment, wherein a different delimiter is used for each type of fragment in the stored HL7 message.

4. The method according to claim 2 , wherein:

the end index of the fragment in the stored HL7 message is an index of the stored HL7 message containing a delimiter.

5. The method according to claim 2 , wherein:

the first data structure representation created hierarchically further stores information selected from a group consisting of: (a) information on a hierarchical relationship between the fragment and another fragment indicating a parent relationship, a child relationship, or both, and (b) information on whether a value related to a child fragment has changed.

6. The method according to claim 5 , wherein:

the first data structure representation created hierarchically further stores information selected from a group consisting of: (a) information indicating whether a segment is a required segment, (b) information indicating whether the segment is a ghost parent, the ghost parent signifying that the segment was created for a child segment without a parent, and (c) information indicating a list of child segments.

7. The method according to claim 1 , wherein modifying the stored HL7 message comprises one or more of:

extracting information from the stored HL7 message between the start index and the end index of the fragment in the stored HL7 message;

moving a value from one part of the stored HL7 message to another, the value located between the start index and the end index of the fragment in the stored HL7 message;

copying a value from one part of the stored HL7 message to another, the value located between the start index and the end index of the fragment in the stored HL7 message;

populating a new value in the stored HL7 message to replace a value located between the start index and the end index of the fragment in the stored HL7 message; and

tracking changes that have been made to the stored HL7 message between the start index and the end index of the fragment in the stored HL7 message.

8. The method according to claim 1 , wherein modifying the stored HL7 message results in an HL7 message with fragments stored in non-contiguous locations in the memory.

9. A computing device for processing Health Level-7 (HL7) messages, the computing device comprising a processor and a memory with instructions stored thereon, such that when the processor executes the instructions, the computing device is configured to:

receive, over an electronic data network, an HL7 message and store the HL7 message in the memory as a stored HL7 message;

hierarchically create, in the memory, a first data structure representation of a fragment in the stored HL7 message, the first data structure representation of the fragment including a start index and an end index of the fragment in the stored HL7 message,

wherein the stored HL7 message comprises fragments organized by type in a hierarchical manner, and

wherein the hierarchical manner indicates that the stored HL7 message comprises one or more segments, each segment comprising one or more fields, each field comprising one or more repetitions, each repetition comprising one or more components, and each component comprising one or more subcomponents; and

modify the stored HL7 message by appending a second data structure representation of the fragment to a child list associated with a parent of the fragment, wherein the second data structure representation of the fragment includes a start index and an end index of a storage location storing an updated value of the fragment.

10. The computing device according to claim 9 , wherein:

the stored HL7 message comprises delimiters for each fragment, wherein a different delimiter is used for each type of fragment in the stored HL7 message.

11. The computing device according to claim 10 , wherein:

the end index of the fragment in the stored HL7 message is an index of the stored HL7 message containing a delimiter.

12. The computing device according to claim 9 , wherein:

the first data structure representation created hierarchically further stores information selected from a group consisting of: (a) information on a hierarchical relationship between the fragment and another fragment indicating a parent relationship, (b) information on a hierarchical relationship between the fragment and another fragment indicating a child relationship, and (c) information on whether a value related to a child fragment has changed.

13. The computing device according to claim 12 , wherein:

the first data structure representation created hierarchically further stores information selected from a group consisting of: (a) information indicating whether a segment is a required segment, (b) information indicating whether the segment is a ghost parent, the ghost parent signifying that the segment was created for a child segment without a parent, and (c) information indicating a list of child segments.

14. The computing device according to claim 9 , wherein modifying the stored HL7 message comprises one or more of:

extracting information from the stored HL7 message between the start index and the end index of the fragment in the stored HL7 message;

moving a value from one part of the stored HL7 message to another, the value located between the start index and the end index of the fragment in the stored HL7 message;

copying a value from one part of the stored HL7 message to another, the value located between the start index and the end index of the fragment in the stored HL7 message;

populating a new value in the stored HL7 message to replace a value located between the start index and the end index of the fragment in the stored HL7 message; and

tracking changes that have been made to the stored HL7 message between the start index and the end index of the fragment in the stored HL7 message.

15. A non-transitory computer readable medium for processing Health Level-7 (HL7) messages, the non-transitory computer readable medium containing program instructions that causes a computer to perform a method comprising:

receiving, over an electronic data network, an HL7 message and storing the HL7 message in a memory as a stored HL7 message;

hierarchically creating, in the memory, a first data structure representation of a fragment in the stored HL7 message, the first data structure representation of the fragment including a start index and an end index of the fragment in the stored HL7 message,

wherein the start index indicates a beginning of the fragment and the end index indicates an end of the fragment,

wherein the stored HL7 message comprises fragments organized by type in a hierarchical manner, and

wherein the hierarchical manner indicates that the stored HL7 message comprises one or more segments, each segment comprising one or more fields, each field comprising one or more repetitions, each repetition comprising one or more components, and each component comprising one or more subcomponents; and

modifying the stored HL7 message by appending a second data structure representation of the fragment to a child list associated with a parent of the fragment, wherein the second data structure representation of the fragment includes a start index and an end index of a storage location storing an updated value of the fragment.

16. The non-transitory computer readable medium according to claim 15 , wherein:

the stored HL7 message comprises delimiters for each fragment, wherein a different delimiter is used for each type of fragment in the stored HL7 message.

17. The non-transitory computer readable medium according to claim 16 , wherein:

the end index is an index of the stored HL7 message containing a delimiter.

18. The non-transitory computer readable medium according to claim 15 , wherein:

the first data structure representation created hierarchically further stores information selected from a group consisting of: (a) information on a hierarchical relationship between the fragment and another fragment indicating a parent relationship, (b) information on a hierarchical relationship between the fragment and another fragment indicating a child relationship, and (c) information on whether a value related to a child fragment has changed.

19. The non-transitory computer readable medium according to claim 18 , wherein:

the first data structure representation created hierarchically further stores information selected from a group consisting of: (a) information indicating whether a segment is a required segment, (b) information indicating whether the segment is a ghost parent, the ghost parent signifying that the segment was created for a child segment without a parent, and (c) information indicating a list of child segments.

20. The non-transitory computer readable medium according to claim 15 , wherein modifying the stored HL7 message comprises one or more of:

extracting information from the stored HL7 message between the start index and the end index of the fragment in the stored HL7 message;

moving a value from one part of the stored HL7 message to another, the value located between the start index and the end index of the fragment in the stored HL7 message;

copying a value from one part of the stored HL7 message to another, the value located between the start index and the end index of the fragment in the stored HL7 message;

populating a new value in the stored HL7 message to replace a value located between the start index and the end index of the fragment in the stored HL7 message; and

tracking changes that have been made to the stored HL7 message between the start index and the end index of the fragment in the stored HL7 message.

Assignments (5)
SHORT-FORM PATENTS SECURITY AGREEMENT Recorded Jul 23, 2024
From: HEALTH CATALYST, INC.
To: SILVER POINT FINANCE, LLC, AS ADMINISTRATIVE AGENT
Reel/Frame 068505/0244 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 26, 2019
From: MEDICITY LLC
To: HEALTH CATALYST, INC.
Reel/Frame 049004/0613 →
ENTITY OF CONVERSION Recorded Mar 25, 2019
From: MEDICITY, INC.
To: MEDICITY LLC
Reel/Frame 048691/0564 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2017
From: AETNA INC.
To: MEDICITY, INC.
Reel/Frame 043841/0474 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 30, 2017
From: DWIRE, STEVEN E.; GAO, HONG; KANDAPRABHU, SARIKA; GODINEZ, MICHAEL; KHAN, HASSAN
To: AETNA INC.
Reel/Frame 041798/0015 →
Continuity (2)
Provisional Application 62314043 · Mar 28, 2016
Related Publication 20170277733A1 · Sep 28, 2017