Systems and methods for indexing and searching health data
Systems and methods for indexing and searching health data are disclosed herein. In some embodiments, a method for querying patient records includes receiving a search input that specifies a plurality of events, one or more temporal relationships between the events, and inclusion and/or exclusion criteria. An index query is constructed based at least in part on the plurality of events within the search input. The index query is then executed against an inverted index to identify matching patient records. One or more temporal constraints can be solved against the identified patient records. Finally, patient records satisfying the constraint(s) are returned.
1 . A method for querying patient records, the method comprising:
receiving a search input that specifies a plurality of events and one or more temporal relationships between the events, wherein the one or more temporal relationships include a temporal relationship that specifies a first event from a first input event set, a second event from a second input event set, wherein the second input event set is different from the first input event set, and a maximum time gap between the first event and the second event, and that the first event is the closest previous event from the first input event set to the second event;
constructing a search query from the search input, the search query including an index query and one or more constraints, wherein the index query is based at least in part on the plurality of events within the search input, and the one or more constraints are based at least in part on the one or more temporal relationships from the search input;
executing the index query against an inverted index to identify matching patient records;
solving the one or more constraints against the identified matching patient records; and
returning patient records that satisfy the one or more constraints.
2 . The method of claim 1 , further comprising:
receiving a user input including a second search input with a second plurality of events with at least one specified temporal relationship;
generating index terms based on the second plurality of events;
combining the generated index terms into predicate search trees;
combining two or more of the predicate search trees via Boolean operator(s);
generating a multi-clause query based on the combined predicate search trees; and
applying the multi-clause query to a corpus of target data to obtain a plurality of matching patient records.
3 . The method of claim 1 , wherein receiving the search input that specifies the plurality of events and one or more temporal relationships between the events comprises receiving one or more temporal constraints between events, the method further comprising:
decomposing the search input into a first set of logical operations and a second set of logical operations;
based on the first set of logical operations, identifying candidate patient records having the events specified in the search input; and
based on the second set of logical operations, filtering the candidate patient records to those patient records that satisfy the temporal constraints specified in the search input.
4 . The method of claim 1 , further comprising:
generating an inverted index for patient records, wherein the generating comprises:
receiving, at a health data platform, a set of patient records from one or more health systems;
processing the set of patient records at the health data platform, wherein the processing includes converting the set of patient records into a common format;
generating a plurality of index terms for each patient record; and
storing the index terms and corresponding matching patient records in a posting list.
5 . The method of claim 1 , wherein constructing the search query further comprises generating index terms based on the plurality of events.
6 . The method of claim 5 , wherein constructing the search query further comprises combining a plurality of index terms via one or more Boolean operators.
7 . The method of claim 1 , wherein constructing the search query further comprises:
generating predicate clauses based at least in part on the events within the search input; and
designating the predicate clauses as inputs to one or more operators, the operator(s) returning a set of events if a specified temporal relationship based on the predicate clauses is identified.
8 . The method of claim 1 , wherein constructing the search query further comprises:
generating predicate clauses based at least in part on the events within the search input; and
designating the predicate clauses as inputs to one or more operators, the operator(s) returning a true or false designation depending on whether a specified temporal relationship based on the predicate clauses is identified.
9 . The method of claim 1 , wherein the search input further specifies inclusion and/or exclusion criteria and wherein solving the one or more constraints against the identified matching patient records comprises applying the inclusion and/or exclusion criteria from the search input.
10 . The method of claim 1 , wherein solving the constraints comprises determining whether each identified matching patient record includes events having the temporal relationships from the search input.
11 . The method of claim 1 , wherein the events include one or more of: a diagnosis, a medication, or a lab result.
12 . The method of claim 1 , wherein the inverted index is constructed from a plurality of de-identified patient records.
13 . The method of claim 1 , further comprising, after building the index query, enhancing the index query using constraints from the search input, and wherein issuing the index query to the inverted index comprises using the enhanced index query.
14 . The method of claim 1 , further comprising:
receiving one or more of the patient records;
providing remote access to users over a network so that any one or more of the users can provide at least one updated patient record in real time through an interface, wherein at least one of the users provides an updated patient record in a format other than a common format, wherein the format other than the common format is dependent on hardware and software platform used by the at least one user;
converting the at least one updated patient record into the common format;
generating a plurality of index terms for the at least one updated patient record;
storing the index terms and corresponding matching patient records in a posting list;
generating a set of at least one de-identified record from the at least one updated patient record;
storing the converted at least one updated patient record;
after storing the converted at least one updated patient record, generating a message containing the converted at least one updated patient record; and
transmitting the message to one or more users over the network in real time, so that the users have access to the updated patient record.
15 . A computer-readable storage medium storing instructions that, when executed by a computing system having a memory and a processor, cause the computing system to perform operations for query patient records, the operations comprising:
receiving a search input that specifies a plurality of events and one or more temporal relationships between the events, wherein the one or more temporal relationships include a temporal relationship that specifies a first event from a first input event set, a second event from a second input event set, wherein the second input event set is different from the first input event set, a maximum time gap between the first event and the second event, and that the first event is the closest previous event from the first input event set to the second event;
constructing a search query from the search input, the search query including an index query and one or more constraints, wherein the index query is based at least in part on the plurality of events within the search input, and the one or more constraints are based at least in part on the one or more temporal relationships from the search input;
executing the index query against an inverted index to identify matching patient records;
solving the one or more constraints against the identified matching patient records; and
returning patient records that satisfy the one or more constraints.
16 . The computer-readable storage medium of claim 15 , the operations further comprising:
receiving a user input including a second search input with a second plurality of events with at least one specified temporal relationship;
generating index terms based on the second plurality of events;
combining the generated index terms into predicate search trees;
combining two or more of the predicate search trees via Boolean operator(s);
generating a multi-clause query based on the combined predicate search trees; and
applying the multi-clause query to a corpus of target data to obtain a plurality of matching patient records.
17 . The computer-readable storage medium of claim 15 , wherein receiving the search input that specifies the plurality of events and one or more temporal relationships between the events comprises receiving one or more temporal constraints between events, the operations further comprising:
decomposing the search input into a first set of logical operations and a second set of logical operations;
based on the first set of logical operations, identifying candidate patient records having the events specified in the search input; and
based on the second set of logical operations, filtering the candidate patient records to those patient records that satisfy the temporal constraints specified in the search input.
18 . The computer-readable storage medium of claim 15 , the operations further comprising:
generating an inverted index for patient records, wherein the generating comprises:
receiving, at a health data platform, a set of patient records from one or more health systems;
processing the set of patient records at the health data platform, wherein the processing includes converting the set of patient records into a common format;
generating a plurality of index terms for each patient record; and
storing the index terms and corresponding matching patient records in a posting list.
19 . The computer-readable storage medium of claim 15 , wherein constructing the search query further comprises generating index terms based on the plurality of events.
20 . The computer-readable storage medium of claim 19 , wherein constructing the search query further comprises combining a plurality of index terms via one or more Boolean operators.
21 . The computer-readable storage medium of claim 15 , wherein constructing the search query further comprises:
generating predicate clauses based at least in part on the events within the search input; and
designating the predicate clauses as inputs to one or more operators, the operator(s) returning a set of events if a specified temporal relationship based on the predicate clauses is identified.
22 . The computer-readable storage medium of claim 15 , wherein constructing the search query further comprises:
generating predicate clauses based at least in part on the events within the search input; and
designating the predicate clauses as inputs to one or more operators, the operator(s) returning a true or false designation depending on whether a specified temporal relationship based on the predicate clauses is identified.
23 . The computer-readable storage medium of claim 15 , wherein the search input further specifies inclusion and/or exclusion criteria and wherein solving the one or more constraints against the identified matching patient records comprises applying the inclusion and/or exclusion criteria from the search input.
24 . A computing system comprising:
one or more processors;
one or more memories;
a receiving component configured to receive a search input that specifies a plurality of events and one or more temporal relationships between the events, wherein the one or more temporal relationships include a temporal relationship that specifies a first event from a first input event set, a second event from a second input event set, wherein the second input event set is different from the first input event set, a maximum time gap between the first event and the second event, and that the first event is the closest previous event from the first input event set to the second event;
a constructing component configured to construct a search query from the search input, the search query including an index query and one or more constraints, wherein the index query is based at least in part on the plurality of events within the search input, and the one or more constraints are based at least in part on the one or more temporal relationships from the search input;
an execution component configured to execute the index query against an inverted index to identify matching patient records;
a solving component configured to solve the one or more constraints against the identified matching patient records; and
a component configured to return patient records that satisfy the one or more constraints,
wherein each component comprises computer-executable instructions stored in the one or more memories for execution by the computing system.
25 . The computing system of claim 24 , wherein the constructing component is further configured to generate index terms based on the plurality of events.
26 . The computing system of claim 25 , wherein the constructing component is further configured to combine a plurality of index terms via one or more Boolean operators.
27 . The computing system of claim 24 , wherein the constructing component is further configured to generate predicate clauses based at least in part on the events within the search input and designate the predicate clauses as inputs to one or more operators, the operator(s) returning a set of events if a specified temporal relationship based on the predicate clauses is identified.
28 . The computing system of claim 24 , wherein constructing component is further configured to generate predicate clauses based at least in part on the events within the search input and designate the predicate clauses as inputs to one or more operators, the operator(s) returning a true or false designation depending on whether a specified temporal relationship based on the predicate clauses is identified.
29 . The computing system of claim 24 , wherein the search input further specifies inclusion and/or exclusion criteria and wherein solving the one or more constraints against the identified matching patient records comprises applying the inclusion and/or exclusion criteria from the search input.
30 . The computing system of claim 24 , wherein the solving component is further configured to determine whether each identified matching patient record includes events having the temporal relationships from the search input.
31 . The computing system of claim 24 , wherein the events include one or more of: a diagnosis, a medication, or a lab result and wherein the inverted index is constructed from a plurality of de-identified patient records.