IP Library Granted Patent US 11,804,310
Granted Patent B2
US 11,804,310 · App. 17/150,448 · Granted Oct 31, 2023

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.
G16H70/20G06F16/2228G16H40/67
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 11,804,310
App. No.
17/150,448
Granted
Oct 31, 2023
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 (66)

1. A method comprising:

creating a first fragment object that begins with a first character at a first position within a message block, the message block comprising a plurality of characters arranged in a sequence;

setting a character under test as the first character

evaluating whether the character under test is a first delimiter, the first delimiter associated with a current level of hierarchy within the first fragment object;

responsive to determining that the character under test is not the first delimiter, resetting the character under test to be a next character in the sequence of characters;

repeating the evaluation of whether the character under test is the first delimiter and resetting the character under test to be the next character in the sequence of characters until a first fragment end condition is satisfied, wherein the first fragment end conditions include:

determining that the character under test is a last character in the message block, and

determining that the character under test is the first delimiter associated with a current level of hierarchy; and

responsive to determining that the first fragment end condition is satisfied, setting a second position based on a current position of the character under test, the first position associated with a beginning of the first fragment object and the second position associated with an end of the first fragment object.

2. The method of claim 1 further comprising:

receiving the message block;

creating a first object associated with a first property, a second property, a third property, and a fourth property;

populating the first property with a reference to a storage location of the message block;

populating the second property with a beginning character position associated with a first character in the message block;

populating the third property with a last character position associated with a last character in the message block; and

populating a fourth property with a list of fragment-inherited objects including the first fragment object.

3. The method of claim 2 , wherein the first fragment object is associated with a first property, a second property, a third property, and a fourth property, the first property referencing the first object, the second property identifying the first position, the third property identifying the second position; and the fourth property identifying, when present, one or more child fragments of the first fragment object.

4. The method of claim 1 , wherein the first fragment end condition satisfied is the character under test being determined to be the first delimiter associated with the current level of hierarchy, the method further comprising:

creating a second fragment object;

resetting the character under test as a character following the first delimiter associated with the second position in the sequence of characters;

evaluating whether the character under test is a second delimiter;

responsive to determining that the character under test is not the second delimiter, resetting the character under test to be a next character in the sequence of characters; and

repeating the evaluation of whether the character under test is the second delimiter and resetting the character under test to be the next character in the sequence of characters until a second fragment end condition is satisfied.

5. The method of claim 4 , wherein the first delimiter and the second delimiter are different and associated with different levels of hierarchy within the message.

6. The method of claim 4 , wherein the first delimiter and the second delimiter are different instances of the same delimiter.

7. The method of claim 4 , wherein the second fragment object is associated with a first property, a second property, a third property, and a fourth property, the first property referencing one of a first object associated with the message block and the first fragment object, the second property identifying the character following the first delimiter associated with the second position in the sequence of characters, the third property identifying a position associated with an end of the second fragment object; and the fourth property identifying, when present, one or more child fragments of the second fragment object.

8. The method of claim 1 , wherein the first position and second position indices identify position within the message block.

9. The method of claim 1 , wherein the message is an Health Level-7 (HL7) message.

10. The method of claim 1 , wherein the current level of hierarchy is one of a segment and a field.

11. A system comprising a processor and a memory with instructions stored thereon, such that when the processor executes the instructions, the system is configured to:

create a first fragment object that begins with a first character at a first position within a message block, the message block comprising a plurality of characters arranged in a sequence;

set a character under test as the first character

evaluate whether the character under test is a first delimiter, the first delimiter associated with a current level of hierarchy within the first fragment object;

responsive to determining that the character under test is not the first delimiter, reset the character under test to be a next character in the sequence of characters;

repeat the evaluation of whether the character under test is the first delimiter and resetting the character under test to be the next character in the sequence of characters until a first fragment end condition is satisfied, wherein the first fragment end conditions include:

determining that the character under test is a last character in the message block, and

determining that the character under test is the first delimiter associated with a current level of hierarchy; and

responsive to determining that the first fragment end condition is satisfied, set a second position based on a current position of the character under test, the first position associated with a beginning of the first fragment object and the second position associated with an end of the first fragment object.

12. The system of claim 11 , wherein, when the processor executes the instructions, the system is configured to further comprising:

receive the message block;

create a first object associated with a first property, a second property, a third property, and a fourth property;

populate the first property with a reference to a storage location of the message block;

populate the second property with a beginning character position associated with a first character in the message block;

populate the third property with a last character position associated with a last character in the message block; and

populate a fourth property with a list of fragment-inherited objects including the first fragment object.

13. The system of claim 12 , wherein the first fragment object is associated with a first property, a second property, a third property, and a fourth property, the first property referencing the first object, the second property identifying the first position, the third property identifying the second position; and the fourth property identifying, when present, one or more child fragments of the first fragment object.

14. The system of claim 12 , wherein the first fragment end condition satisfied is the character under test being determined to be the first delimiter associated with the current level of hierarchy, wherein, when the processor executes the instructions, the system is configured to further comprising:

creating a second fragment object;

resetting the character under test as a character following the first delimiter associated with the second position in the sequence of characters

evaluating whether the character under test is a second delimiter;

responsive to determining that the character under test is not the second delimiter, reset the character under test to be a next character in the sequence of characters; and

repeat the evaluation of whether the character under test is the second delimiter and resetting the character under test to be the next character in the sequence of characters until a second fragment end condition is satisfied.

15. The system of claim 14 , wherein the first delimiter and the second delimiter are different and associated with different levels of hierarchy within the message.

16. The system of claim 14 , wherein the first delimiter and the second delimiter are different instances of the same delimiter.

17. The system of claim 14 , wherein the second fragment object is associated with a first property, a second property, a third property, and a fourth property, the first property referencing one of a first object associated with the message block and the first fragment object, the second property identifying the character following the first delimiter associated with the second position in the sequence of characters, the third property identifying a position associated with an end of the second fragment object; and the fourth property identifying, when present, one or more child fragments of the second fragment object.

18. The system of claim 11 , wherein the first position and second position indices identify position within the message block.

19. The system of claim 11 , wherein the message is an Health Level-7 (HL7) message.

20. A non-transitory computer-readable medium containing program instructions that cause a computer to perform a method comprising:

creating a first fragment object that begins with a first character at a first position within a message block, the message block comprising a plurality of characters arranged in a sequence;

setting a character under test as the first character

evaluating whether the character under test is a first delimiter, the first delimiter associated with a current level of hierarchy within the first fragment object;

responsive to determining that the character under test is not the first delimiter, resetting the character under test to be a next character in the sequence of characters;

repeating the evaluation of whether the character under test is the first delimiter and resetting the character under test to be the next character in the sequence of characters until a first fragment end condition is satisfied, wherein the first fragment end conditions include:

determining that the character under test is a last character in the message block, and

determining that the character under test is the first delimiter associated with a current level of hierarchy; and

responsive to determining that the first fragment end condition is satisfied, setting a second position based on a current position of the character under test, the first position associated with a beginning of the first fragment object and the second position associated with an end of the first fragment object.

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 Jan 19, 2021
From: DWIRE, STEVEN E.; GAO, HONG; KANDAPRABHU, SARIKA; GODINEZ, MICHAEL; KHAN, HASSAN
To: AETNA INC.
Reel/Frame 054953/0199 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 19, 2021
From: AETNA INC.
To: MEDICITY, INC.
Reel/Frame 054953/0270 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 19, 2021
From: MEDICITY LLC
To: HEALTH CATALYST, INC.
Reel/Frame 054953/0345 →
ENTITY OF CONVERSION Recorded Jan 19, 2021
From: MEDICITY, INC.
To: MEDICITY LLC
Reel/Frame 055027/0403 →
Continuity (4)
Continuation 16779773 · Feb 3, 2020
Continuation 15471903 · Mar 28, 2017
Provisional Application 62314043 · Mar 28, 2016
Related Publication 20210134466A1 · May 6, 2021