IP Library Granted Patent US 12,436,955
Granted Patent B2
US 12,436,955 · App. 18/354,257 · Granted Oct 7, 2025

Systems and methods for cohort analysis using compressed data objects enabling fast memory lookups

Inventors: Nigam H. Shah (Menlo Park, CA); Vladimir Polony (Novato, CA); Juan Manuel Banda (Mableton, GA); Alison Victoria Callahan (Oakland, CA)
Assignee: The Board of Trustees of the Leland Stanford Junior University
G06F16/24568G06F16/2255G06F16/2272G06F16/254G06F21/6245
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,955
App. No.
18/354,257
Granted
Oct 7, 2025
Kind
B2
Abstract

Systems and methods for structuring unstructured data according to a data object structure that enables fast query look-ups across a variety of space and time dimensions. Furthermore, many embodiments optimize the storage of the data objects using a set of compression techniques that configure the data types used for the data objects based on properties of the stored data. Furthermore, many embodiments provide are able to service query look-up requests without having to deserialize data within the byte stream format as stored in memory by encoding information that provide memory locations for requested data, thereby allowing for the immediate retrieval of the data as it is stored in the persistent memory.

Claims (80)

1. A method for computer-implemented data analysis, comprising:

receiving a search query to analyze medical data related to a patient, wherein the search query comprises a plurality of parameters related to data components for a plurality of patient demographics;

determining a data object storing a particular data component relevant to the search query, wherein the data object:

corresponds to the patient; and

comprises:

a plurality of data components, including the particular data component, wherein:

each data component of the plurality of data components corresponds to a different type of data value related to the medical data,

medical data for the patient is encoded, within the plurality of data components, in a serialized in-memory byte-stream format,

the medical data is received from a plurality of different medical information sources, and

the data object is stored, in its entirety, at a unique and continuous memory location; and

at least one header providing information regarding memory mappings of the plurality of data components within a body of the data object, the at least one header comprising:

an offset for each of the plurality of data components in the body of the data object, and

encoding information, wherein the encoding information identifies at least one data type used in storing the offset for each of the plurality of data components;

retrieving a particular data value, responding to the search query, directly from the particular data component, wherein:

retrieving the particular data value comprises using the encoding information, the memory mappings and the offset to identify a memory location of the particular data component, and

the particular data value is retrieved in a serialized in-memory byte-stream format, while the data object remains serialized; and

generating an identification of a cohort of patients for the search query, wherein the identification includes the particular data value.

2. The method of claim 1 , wherein serialized data refers to data translated into a byte-stream format for storage in memory and deserialization comprises extracting a data structure from a series of bytes.

3. The method of claim 1 , wherein the at least one header of the data object further comprises information regarding a data type of the data object.

4. The method of claim 1 , wherein:

a data type of the at least one data type is selected from the group consisting of an INTEGER data type, a BYTE data type, and a SHORT data type; and

the offset of each data component provides a number of bytes between a start of the data component in the body of the data object, and a start of the data object in memory.

5. The method of claim 1 , wherein determining the data object storing the particular data component relevant to the search query comprises: consulting a data index mapping a plurality of data objects to on-disk shards storing the plurality of data objects.

6. The method of claim 5 , wherein determining the data object storing the particular data component relevant to the search query further comprises: consulting a memory index that maps each data object in the plurality of data objects to a memory space.

7. A system for data analysis, comprising:

a processor; and

memory containing software that, when executed, directs the processor to:

receive a search query to analyze medical data related to a patient, wherein the search query comprises a plurality of parameters related to data components for a plurality of patient demographics;

determine a data object storing a particular data component relevant to the search query, wherein the data object:

corresponds to the patient; and

comprises:

a plurality of data components, including the particular data component, wherein:

 each data component of the plurality of data components corresponds to a different type of data value related to the medical data,

 medical data for the patient is encoded, within the plurality of data components, in a serialized in-memory byte-stream format,

 the medical data is received from a plurality of different medical information sources, and

 the data object is stored, in its entirety, at a unique and continuous memory location; and

at least one header providing information regarding memory mappings of the plurality of data components within a body of the data object, the at least one header comprising:

 an offset for each of the plurality of data components in the body of the data object, and

 encoding information, wherein the encoding information identifies at least one data type used in storing the offset for each of the plurality of data components;

retrieve a particular data value, responding to the search query, directly from the particular data component, wherein:

retrieving the particular data value comprises using the encoding information, the memory mappings, and the offset to identify a memory location of the particular data component, and

the data value is retrieved in a serialized in-memory byte-stream format, while the data object remains serialized; and

generate an identification of a cohort of patients for the search query, wherein the identification includes the particular data value.

8. The system of claim 7 , wherein serialized data refers to data translated into a byte-stream format for storage in the memory and deserialization comprises extracting a data structure from a series of bytes.

9. The system of claim 7 , wherein the at least one header of the data object further comprises information regarding a data type of the data object.

10. The system of claim 7 , wherein:

a data type of the at least one data type is selected from the group consisting of an INTEGER data type, a BYTE data type, and a SHORT data type; and

the offset of each data component provides a number of bytes between a start of the data component in the body of the data object, and a start of the data object in memory.

11. The system of claim 7 , wherein determining the data object storing the particular data component relevant to the search query comprises: consulting a data index mapping a plurality of data objects to on-disk shards storing the plurality of data objects.

12. The system of claim 11 , wherein determining the data object storing the particular data component relevant to the search query further comprises: consulting a memory index that maps each data object in the plurality of data objects to a memory space.

13. The system of claim 7 , wherein:

the plurality of data components comprise a plurality of different data types; and

a data component from the plurality of data components possesses at least one data type selected from the group consisting of a hash map, a list, a measured value list, and a computed value list.

14. The method of claim 1 , wherein:

the plurality of data components comprise a plurality of different data types; and

a data component from the plurality of data components possesses at least one data type selected from the group consisting of a hash map, a list, a measured value list, and a computed value list.

15. A non-transitory computer-readable medium comprising instructions that, when executed, are configured to cause a processor to perform a process for computer-implemented data analysis, comprising:

receiving a search query to analyze medical data related to a patient, wherein the search query comprises a plurality of parameters related to data components for a plurality of patient demographics;

determining a data object storing a particular data component relevant to the search query, wherein the data object:

corresponds to the patient; and

comprises:

a plurality of data components, including the particular data component, wherein:

each data component of the plurality of data components corresponds to a different type of data value related to the medical data;

medical data for the patient is encoded, within the plurality of data components, in a serialized in-memory byte-stream format;

the medical data is received from a plurality of different medical information sources; and

the data object is stored, in its entirety, at a unique and continuous memory location; and

at least one header providing information regarding memory mappings of the plurality of data components within a body of the data object, the at least one header comprising:

an offset for each of the plurality of data components in the body of the data object; and

encoding information, wherein the encoding information identifies at least one data type used in storing the offset for each of the plurality of data components;

retrieving a particular data value, responding to the search query, directly from the particular data component, wherein:

retrieving the particular data value comprises using the encoding information, the memory mappings, and the offset to identify a memory location of the particular data component; and

the particular data value is retrieved in a serialized in-memory byte-stream format, while the data object remains serialized; and

generating an identification of a cohort of patients for the search query, wherein the identification includes the particular data value.

16. The non-transitory computer-readable medium of claim 15 , wherein serialized data refers to data translated into a byte-stream format for storage in memory and deserialization comprises extracting a data structure from a series of bytes.

17. The non-transitory computer-readable medium of claim 15 , wherein the at least one header of the data object further comprises information regarding a data type of the data object.

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

a data type of the at least one data type is selected from the group consisting of an INTEGER data type, a BYTE data type, and a SHORT data type; and

the offset of each data component provides a number of bytes between a start of the data component in the body of the data object, and a start of the data object in memory.

19. The non-transitory computer-readable medium of claim 15 , wherein determining the data object storing the particular data component relevant to the search query comprises: consulting a data index mapping a plurality of data objects to on-disk shards storing the plurality of data objects.

20. The non-transitory computer-readable medium of claim 19 , wherein determining the data object storing the particular data component relevant to the search query further comprises: consulting a memory index that maps each data object in the plurality of data objects to a memory space.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 6, 2023
From: SHAH, NIGAM H.; POLONY, VLADIMIR; BANDA, JUAN MANUEL; CALLAHAN, ALISON VICTORIA
To: THE BOARD OF TRUSTEES OF THE LELAND STANFORD JUNIOR UNIVERSITY
Reel/Frame 064821/0152 →
Continuity (4)
Continuation 17645569 · Dec 22, 2021
Continuation 16610440
Provisional Application 62492779 · May 1, 2017
Related Publication 20230367775A1 · Nov 16, 2023
References Cited (30)
US 10296187B1 · Gregg · 2019 [cited by examiner]
US 11210296B2 · Shah et al. · 2021 [cited by applicant]
US 11748359B2 · Shah et al. · 2023 [cited by applicant]
US 20020128861A1 · Lau et al. · 2002 [cited by applicant]
US 20040087336A1 · Payrits et al. · 2004 [cited by applicant]
US 20040103071A1 · Kalia et al. · 2004 [cited by applicant]
US 20080134133A1 · DelloStritto · 2008 [cited by examiner]
US 20080154927A1 · Johnson · 2008 [cited by examiner]
US 20090089078A1 · Bursey · 2009 [cited by applicant]
US 20120110016A1 · Phillips · 2012 [cited by applicant]
US 20140122099A1 · Triebel · 2014 [cited by applicant]
US 20140122523A1 · Aggarwal et al. · 2014 [cited by applicant]
US 20150142821A1 · Rassen et al. · 2015 [cited by applicant]
US 20170060945A1 · Bastide · 2017 [cited by examiner]
US 20170161641A1 · Guirguis · 2017 [cited by examiner]
US 20180089278A1 · Bhattacharjee et al. · 2018 [cited by applicant]
US 20180089328A1 · Bath et al. · 2018 [cited by applicant]
US 20190138642A1 · Pal et al. · 2019 [cited by applicant]
US 20190147084A1 · Pal et al. · 2019 [cited by applicant]
US 20190163821A1 · Pal · 2019 [cited by examiner]
US 20190324960A1 · Bauer · 2019 [cited by examiner]
US 20200057767A1 · Shah et al. · 2020 [cited by applicant]
US 20220188318A1 · Shah et al. · 2022 [cited by applicant]
WO 2018204339A1 · 2018 [cited by applicant]
International Preliminary Report on Patentability for International Application PCT/US2018/030413, Report issued Nov. 5, 2019, Mailed Nov. 14, 2019, 6 Pgs. [cited by applicant]
International Search Report and Written Opinion for International Application No. PCT/US2018/030413, Search completed Jul. 10, 2018, Mailed Aug. 2, 2018, 11 Pgs. [cited by applicant]
Horvath et al., “The DEDUCE Guided Query tool: Providing simplified access to clinical data for research and quality improvement”, Journal of Biomedical Informatics, Apr. 2011, vol. 44, No. 2, pp. 266-276, https://doi.o… [cited by applicant]
Hripcsak et al., “Observational Health Data Sciences and Informatics (OHDSI): Opportunities for Observational Researchers”, Studies in Health Technology and Informatics, 2015, vol. 216, pp. 574-578. [cited by applicant]
Hruby, “Toward a Generalized Model of Biomedical Query Mediation to Improve Electronic Health Record Data Retrieval”, Columbia University, 2016, Thesis, 189 pgs., https://doi.org/10.7916/D8R49QZW. [cited by applicant]
Lowe et al., “STRIDE—An Integrated Standards-Based Translational Research Informatics Platform”, AMIA Annual Symposium Proceedings Archive, Nov. 14, 2009, pp. 391-395. [cited by applicant]