IP Library › Granted Patent US 12,436,999
Granted Patent B1
US 12,436,999 · App. 18/930,926 · Granted Oct 7, 2025

Systems and methods for node graph data storage across disparate data sources

Inventors: Matthew Englehart (Holland, MI); Timothy Allen Pletcher (Petoskey, MI)
Assignee: Michigan Health Information Network Shared Services
G06F16/9024G06F16/93
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 12,436,999
App. No.
18/930,926
Granted
Oct 7, 2025
Kind
B1
Abstract

The present disclosure describes a method for updating a node graph data structure, comprising storing a node graph data structure comprising a plurality of entity nodes and a plurality of attribute nodes; receiving, from a data source during a plurality of time periods, a plurality of data files comprising data for a first entity; identifying a plurality of edges between a first entity node of the plurality of entity nodes that identifies the first entity and an attribute node of the plurality of attribute nodes that identifies a first attribute of the first entity, each of the plurality of edges corresponding to a value and a different time period; and updating a value stored in a data structure for an edge that corresponds to a time period associated with a data file.

Claims (103)

1. A method for reduced latency data retrieval from a node graph data structure, comprising:

storing, by a server, a node graph data structure comprising a plurality of entity nodes and a plurality of attribute nodes, each entity node of the plurality of entity nodes associated with a different entity and each attribute node of the plurality of attribute nodes associated with a different attribute;

receiving, by the server from a data source during a plurality of time periods, a plurality of data files comprising data for a first entity;

identifying, by the server, a plurality of edges between a first entity node of the plurality of entity nodes that identifies the first entity and an attribute node of the plurality of attribute nodes that identifies a first attribute of the first entity, each of the plurality of edges corresponding to a value and a different time period of the plurality of time periods and having a weight indicating a confidence in a relationship between the first entity node and the attribute node for the corresponding time period;

for each of the plurality of data files,

identifying a time period associated with the data file;

determining an evidence weight for the data file based on a first weight associated with the data source and a second weight associated with a document type of the data file;

identifying an edge of the plurality of edges corresponding to the identified time period; and

updating the weight of the identified edge by aggregating the evidence weight with a previous weight of the identified edge;

receiving, by the server from a client device, a request identifying the first entity and a time;

identifying, by the server, a first edge between the first entity node and the attribute node based on the first edge corresponding to a first time period including the time;

in response to determining the weight of the first edge satisfies a threshold, retrieving, by the server, an indication of the first attribute; and

transmitting, by the server, the indication of the retrieved first attribute to the client device in response to the request.

2. The method of claim 1 , wherein for each of the plurality of data files the method further comprising updating the weight of the identified edge stored in the node graph data structure for the edge comprises:

identifying, by the server, the weight associated with the data source; and

aggregating, by the server, the value for the edge with a second value corresponding to the weight associated with the data source.

3. The method of claim 2 , further comprising:

incrementing, by the server, a counter for each data source that provided a data file based on which the weight of the identified edge was determined; and

storing, by the server in the data structure for the edge, a count of the counter.

4. The method of claim 1 , wherein for each of the plurality of data files the method further comprising updating the weight of the identified edge stored in the node graph data structure for the edge comprises:

identifying, by the server, a document type of a document stored in the data file;

identifying, by the server, a weight associated with the document type; and

aggregating, by the server, the value for the edge with a second value corresponding to the weight associated with the document.

5. The method of claim 1 , wherein for each of the plurality of data files the method further comprises updating the weight of the identified edge stored in the node graph data structure for the edge comprises:

identifying, by the server, a first weight associated with the data source;

identifying, by the server, a document type of a document stored in the data file;

identifying, by the server, a second weight associated with the document type;

calculating, by the server, an evidence weight based on the first weight and the second weight; and

aggregating, by the server, the value for the edge with the evidence weight.

6. The method of claim 1 , further comprising:

receiving, by the server, a second data file in addition to the plurality of data files comprising data for the first entity and the first attribute of the first entity and associated with a second time period;

responsive to receiving the second data file, determining, by the server, there is not an edge between the first entity node of the first entity and the attribute node of the first attribute for the second time period; and

generating, by the server, a second edge for the second time period between the first entity node and the attribute node of the first attribute responsive to receiving the second data file associated with the second time period and determining there is not an edge between the first entity node of the first entity and the attribute node of the first attribute for the second time period.

7. The method of claim 6 , wherein generating the second edge for the second time period comprises:

assigning, by the server and based on the second data file, a second value indicating a second confidence in the second edge between the first entity node and the first attribute for the second time period.

8. The method of claim 1 , further comprising:

identifying, by the server, a time stamp for each of the plurality of data files based on text in each respective data file, a time in which the server received the data file, or a timestamp in a data packet containing the data file; and

determining, by the server, time periods for the plurality of datafiles based on the identified time stamps.

9. The method of claim 8 , further comprising:

storing, by the server, data from the plurality of data files in data structures of edges corresponding to the identified time periods associated with the plurality of data files.

10. A non-transitory computer-readable media comprising computer-executable instructions embodied thereon that, when executed by a processor, cause the processor to perform a process for reduced latency data retrieval from a node graph data structure comprising:

storing a node graph data structure comprising a plurality of entity nodes and a plurality of attribute nodes, each entity node of the plurality of entity nodes associated with a different entity and each attribute node of the plurality of attribute nodes associated with a different attribute;

receiving, from a data source during a plurality of time periods, a plurality of data files comprising data for a first entity;

identifying a plurality of edges between a first entity node of the plurality of entity nodes that identifies the first entity and an attribute node of the plurality of attribute nodes that identifies a first attribute of the first entity, each of the plurality of edges corresponding to a value and a different time period of the plurality of time periods and having a weight indicating a confidence in a relationship between the first entity node and the attribute node for the corresponding time period; and

for each of the plurality of data files,

identifying a time period associated with the data file;

determining an evidence weight for the data file based on a first weight associated with the data source and a second weight associated with a document type of the data file;

identifying an edge of the plurality of edges corresponding to the identified time period; and

updating the weight of the identified edge by aggregating the evidence weight with a previous weight of the identified edge;

receive, from a client device, a request identifying the first entity and a time;

identify a first edge between the first entity node and the attribute node based on the first edge corresponding to a first time period including the time;

in response to determining the weight of the first edge satisfies a threshold, retrieve an indication of the first attribute; and

transmit the indication of the retrieved first attribute to the client device in response to the request.

11. The non-transitory computer-readable media of claim 10 , wherein the instructions cause the processor for each of the plurality of data files to update the weight of the identified edge stored in the node graph data structure for the edge by:

identifying the weight associated with the data source; and

aggregating the value for the edge with a second value corresponding to the weight associated with the data source.

12. The non-transitory computer-readable media of claim 11 , wherein the instructions further cause the processor to:

increment a counter for each data source that provided a data file based on which the weight of the identified edge was determined; and

store, in the data structure for the edge, a count of the counter.

13. The non-transitory computer-readable media of claim 10 , wherein the instructions cause the processor for each of the plurality of data files to update the weight of the identified edge stored in the node graph data structure for the edge by:

identifying a document type of a document stored in the data file;

identifying a weight associated with the document type; and

aggregating the value for the edge with a second value corresponding to the weight associated with the document.

14. The non-transitory computer-readable media of claim 10 , wherein the instructions cause the processor for each of the plurality of data files to update the weight of the identified edge stored in the node graph data structure for the edge by:

identifying a first weight associated with the data source;

identifying a document type of a document stored in the data file;

identifying a second weight associated with the document type;

calculating an evidence weight based on the first weight and the second weight; and

aggregating the value for the edge with the evidence weight.

15. A system for reduced latency data retrieval from a node graph data structure, comprising:

one or more processors coupled with memory and configured to:

store a node graph data structure comprising a plurality of entity nodes and a plurality of attribute nodes, each entity node of the plurality of entity nodes associated with a different entity and each attribute node of the plurality of attribute nodes associated with a different attribute;

receive, from a data source during a plurality of time periods, a plurality of data files comprising data for a first entity;

identify a plurality of edges between a first entity node of the plurality of entity nodes that identifies the first entity and an attribute node of the plurality of attribute nodes that identifies a first attribute of the first entity, each of the plurality of edges corresponding to a value and a different time period of the plurality of time periods and having a weight indicating a confidence in a relationship between the first entity node and the attribute node for the corresponding time period; and

for each of the plurality of data files,

identifying a time period associated with the data file;

determining an evidence weight for the data file based on a first weight associated with the data source and a second weight associated with a document type of the data file;

identifying an edge of the plurality of edges corresponding to the identified time period; and

updating the weight of the identified edge by aggregating the evidence weight with a previous weight of the identified edge;

receive, from a client device, a request identifying the first entity and a time;

identify a first edge between the first entity node and the attribute node based on the first edge corresponding to a first time period including the time;

in response to determining the weight of the first edge satisfies a threshold, retrieve an indication of the first attribute; and

transmit the indication of the retrieved first attribute to the client device in response to the request.

16. The system of claim 15 , wherein the one or more processors are configured for each of the plurality of data files to update the weight of the identified edge stored in the node graph data structure for the edge by:

identifying the weight associated with the data source; and

aggregating the value for the edge with a second value corresponding to the weight associated with the data source.

17. The system of claim 16 , wherein the one or more processors are further configured to:

incrementing a counter for each data source that provided a data file based on which the weight of the identified edge was determined; and

storing, in the data structure for the edge, a count of the counter.

18. The system of claim 15 , wherein the one or more processors are configured for each of the plurality of data files to update the weight of the identified edge stored in the node graph data structure for the edge by:

identifying a document type of a document stored in the data file;

identifying a weight associated with the document type; and

aggregating the value for the edge with a second value corresponding to the weight associated with the document.

19. The system of claim 15 , wherein the one or more processors are configured for each of the plurality of data files to update the weight of the identified edge stored in the node graph to update the value stored in the data structure for the edge by:

identifying a first weight associated with the data source;

identifying a document type of a document stored in the data file;

identifying a second weight associated with the document type;

calculating an evidence weight based on the first weight and the second weight; and

aggregating the value for the edge with the evidence weight.

20. The system of claim 15 , wherein the one or more processors are further configured to:

receive a second data file in addition to the plurality of data files comprising data for the first entity and the first attribute of the first entity and associated with a second time period;

responsive to receiving the second data file, determine there is not an edge between the first entity node of the first entity and the attribute node of the first attribute for the second time period; and

generate a second edge for the second time period between the first entity node and the attribute node of the first attribute responsive to receiving the second data file associated with the second time period and determining there is not an edge between the first entity node of the first entity and the attribute node of the first attribute for the second time period.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 13, 2025
From: ENGLEHART, MATTHEW; PLETCHER, TIMOTHY ALLEN
To: MICHIGAN HEALTH INFORMATION NETWORK SHARED SERVICES
Reel/Frame 072012/0333 →
Continuity (2)
Continuation In Part 18199002 · May 18, 2023
Provisional Application 63348751 · Jun 3, 2022
References Cited (26)
US 9225730B1 · Brezinski · 2015 [cited by examiner]
US 10586622B2 · Livesay et al. · 2020 [cited by applicant]
US 11158406B2 · Lyman et al. · 2021 [cited by applicant]
US 20180240536A1 · Bostic et al. · 2018 [cited by applicant]
US 20190362452A1 · Brunets et al. · 2019 [cited by applicant]
US 20190363958A1 · Brunets et al. · 2019 [cited by applicant]
US 20190363959A1 · Rice et al. · 2019 [cited by applicant]
US 20190364009A1 · Joseph et al. · 2019 [cited by applicant]
US 20190364117A1 · Rogynskyy et al. · 2019 [cited by applicant]
US 20190364130A1 · Rogynskyy · 2019 [cited by applicant]
US 20200160942A1 · Lyman et al. · 2020 [cited by applicant]
US 20200250245A1 · Abhyankar · 2020 [cited by examiner]
US 20200357507A1 · Blalock et al. · 2020 [cited by applicant]
US 20200372075A1 · Rogynskyy · 2020 [cited by examiner]
US 20200379885A1 · Englehart et al. · 2020 [cited by applicant]
US 20210064542A1 · Jang · 2021 [cited by applicant]
US 20210090694A1 · Colley et al. · 2021 [cited by applicant]
US 20210183485A1 · Yao et al. · 2021 [cited by applicant]
US 20210304281A1 · Goshen · 2021 [cited by examiner]
US 20220004546A1 · Rogers · 2022 [cited by examiner]
US 20220020458A1 · Francois et al. · 2022 [cited by applicant]
US 20220156934A1 · Lyman et al. · 2022 [cited by applicant]
US 20220164337A1 · Korpman et al. · 2022 [cited by applicant]
US 20240185277A1 · Maas · 2024 [cited by examiner]
Reese et al., KG-COVID-19: a framework to produce customized knowledge graphs for COVID-19 response,&#x201D (2020) bioRxiv preprint doi: https://doi.org/10.1101/2020.08.17.254839, 24 pages. [cited by applicant]
Xu et al., “Predictive Modeling of Clinical Events with Mutual Enhancement Between Longitudinal Patient Records and Medical Knowledge Graph,” (2021) IEEE International Conference on Data Mining (ICDM), DOI 10.1109/ICDM5… [cited by applicant]