System and method for calculating with personal healthcare data
Secure enclaves and homomorphic encryption enable efficient and secure processing of personal healthcare data, addressing privacy concerns by maintaining confidentiality and adhering to regulatory standards.
Patent Information
- Application Number
- JP2024193940
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2020-04-20
- Filing Date
- 2024-11-05
- Publication Date
- 2025-02-04
AI Technical Summary
Existing technologies face challenges in efficiently processing personal healthcare data while maintaining privacy, as conventional encryption methods are inefficient and vulnerable to data leakage, and non-identification techniques fail to maintain unique relationships in structured and unstructured datasets.
The use of secure enclaves and homomorphic encryption, combined with policy enforcement and trusted chains, ensures that personal data is processed without decryption, minimizing leakage risks and maintaining privacy through secure computing environments.
This approach enhances data processing efficiency and security, allowing secure and private analysis of personal healthcare data, adhering to privacy regulations like HIPAA and GDPR, while ensuring the confidentiality and integrity of the data throughout the calculation process.
Smart Images

Figure 2025016716000001_ABST
Abstract
Description
[Technical field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application is a continuation of U.S. Provisional Application No. 62 / 865,030, filed June 21, 2019, entitled "Systems and Methods for Selective Information Masking in Text," U.S. Provisional Application No. 62 / 962,146, filed January 16, 2020, entitled "Systems and Methods for Retrieving Information Responsive to a Query," U.S. Provisional Application No. 62 / 984,989, filed March 4, 2020, entitled "Systems and Methods for Selective Information Masking in Text," U.S. Provisional Application No. 62 / 985,003, filed March 4, 2020, entitled "Pipelined Federated Architecture for Computing with Private Healthcare Data," and U.S. Provisional Application No. 62 / 985,003, filed April 20, 2020, entitled "Systems and Methods for Augmented Curation and Temporal Discrimination of Healthcare Data." This application claims priority under 35 U.S.C. §119(e) to U.S. Provisional Patent Application No. 63 / 012,738, entitled "Patent Document Records," each of which is incorporated herein by reference in its entirety.
[0002] The present invention relates generally to processing data, which may include information deemed private by consumers or by regulation. [Background technology]
[0003] Hospitals, healthcare providers and caregivers collect large amounts of data from patients. It is a necessary part of the process by which healthcare is provided to the public. Typically, patients provide data to caregivers as part of receiving treatment for their illness. This data can be stored by the caregiver and used later for research purposes, among others. In another typical scenario, data can be collected from consumers via one or more devices, e.g., pulse oximeters, glucose monitors, smart watches, fitness bracelets, etc. In such use cases, the collected data is often used to analyze the patient's health, either continuously or over a period of time. As a result, a huge amount of patient information can be accumulated by the service provider. Summary of the Invention [Problem to be solved by the invention]
[0004] Many aspects of patient data collected by caregivers and service providers may be subject to privacy regulations. The utility and benefits of processing data collected from patients are clear and generally accepted. However, there is growing concern over maintaining the privacy of user data, especially when the data can be used to identify patients. Such concerns are the basis for the Health Insurance Portability and Accountability Act (HIPAA) regulations, first passed by the U.S. Congress in 1996. Many other countries have promulgated similar rules and laws. In general, HIPAA and other regulations restrict the release of personal information that may result in the identification of members of the public or details of their physical attributes or biometric data. [Means for solving the problem]
[0005] There is therefore a need to enable biomedical (and other kinds of) data to be analyzed by computational processes, subject to the constraint of maintaining the privacy of individual patients or consumers. Such systems and methods would result in significant commercial, social and scientific benefits to society. [Brief description of the drawings]
[0006] [Figure 1A] FIG. 1 illustrates a federated approach for processing datasets that include private data.
[0007] [Figure 1B] 1 is a simplified diagram of the architecture of a secure computing environment according to some embodiments.
[0008] [Diagram 2] FIG. 1 is a simplified diagram of a general architecture of a secure enclave according to some embodiments.
[0009] [Diagram 3] 1 is a simplified diagram of an example policy that can be applied to a dataset according to some embodiments.
[0010] [Figure 4A] FIG. 1 is a simplified diagram of an example orchestration to ensure that policies are properly programmed within a secure enclave.
[0011] [Figure 4B] 1 is a simplified diagram of an example orchestration for ensuring that data is computed according to policy constraints.
[0012] [Diagram 5] FIG. 1 is a simplified diagram of the use of techniques to extend the chain of trust, i.e., authentication in relation to a federated pipeline of computations.
[0013] [Figure 6] FIG. 1 is a simplified diagram of validation of an extended chain of trust.
[0014] [Figure 7] 1 is a simplified diagram of a decentralized trust model according to some embodiments.
[0015] [Figure 8] 1 is a simplified diagram of an architecture of a federated group of companies that jointly receive, store, and process private data, according to some embodiments.
[0016] [Figure 9] 1 is a simplified diagram of an architecture of a federated group of companies that jointly receive, store, and process private data, according to some embodiments.
[0017] [Figure 10] 1 is a simplified diagram of an architecture of a federated group of companies that jointly receive, store, and process private data, according to some embodiments.
[0018] [Figure 11] 1 is a simplified diagram of a system for information masking according to some embodiments.
[0019] [Figure 12] 1 is a simplified diagram of a control flow for information masking, according to some embodiments.
[0020] [Figure 13] FIG. 1 is a simplified diagram of an entity tagging process and handling of missing entities according to some embodiments.
[0021] [Figure 14] 1 is a simplified diagram illustrating a testing suite diagnostic flow method for masking validity according to some embodiments.
[0022] [Figure 15] 1 is a simplified diagram of a system for information retrieval according to some embodiments.
[0023] [Figure 16] 2 is a simplified diagram of data flow for information retrieval according to some embodiments.
[0024] [Figure 17] 4 is a simplified diagram of data flow for fragment search according to some embodiments.
[0025] [Figure 18] 1 is a simplified diagram of a method for retrieving information in response to a query, according to some embodiments.
[0026] [Figure 19] 1 is a simplified diagram of a method for performing a fragment search according to some embodiments.
[0027] [Figure 20A] 1A-1C are diagrams illustrating screenshots of a graphical interface of an information retrieval system according to some embodiments. [Figure 20B] 1A-1C are diagrams illustrating screenshots of a graphical interface of an information retrieval system according to some embodiments.
[0028] [Figure 21] 1 is a simplified diagram of a method for information retrieval according to some embodiments.
[0029] [Figure 22A] 1A-1C are diagrams illustrating screenshots of a graphical interface of an information retrieval system according to some embodiments. [Figure 22B] 1A-1C are diagrams illustrating screenshots of a graphical interface of an information retrieval system according to some embodiments.
[0030] [Diagram 23] 1 is a simplified diagram of a method for enhanced management of health records, according to some embodiments.
[0031] [Figure 24] FIG. 1 illustrates a simplified diagram of a method for temporal discrimination of health data, according to some embodiments.
[0032] [Figure 25-1] 1 is a simplified diagram of a visualization generated based on a set of time-aligned health records, according to some embodiments. [Figure 25-2] 1 is a simplified diagram of a visualization generated based on a set of time-aligned health records, according to some embodiments.
[0033] Various objects, features, and advantages of the disclosed subject matter can be more fully understood by reference to the following detailed description of the disclosed subject matter when considered in conjunction with the following drawings, in which like reference numerals identify like elements and in which: DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0034] Truly astonishing amounts of information are being collected from patients and consumers regarding their health status, habits, environment, surroundings, and homes. This information is increasingly being processed by computer programs utilizing machine learning and artificial intelligence models. Such computer programs have shown significant advances in analyzing and predicting consumers' health status, disease occurrence and treatment, user behavior, and the like. Furthermore, because the collected data may include patient biometrics and other personal identification attributes, there is growing concern that such computer programs may enable the identities of patients and consumers to be known. Thus, companies interested in analyzing healthcare data, including personal attributes, are interested in maintaining the privacy of individuals and complying with relevant regulations, such as HIPAA (Health Insurance Portability and Accountability Act of 1996) regulations regarding individuals and personal data.
[0035] In addition to HIPAA, many other regulations have been enacted in various jurisdictions, including the European Union's General Data Protection Regulations (GDPR), the Revised Payment Services Directive (PSD2), and the California Consumer Privacy Act 2018 (CCPA).
[0036] In the following description, the terms "user information," "personal information," "personal health information ("PHI")," "health care information data or records," "identifying information," and PII (personally identifiable information) may be used interchangeably. Similarly, the terms "electronic health record ("EHR")" and "data record" may be used interchangeably.
[0037] One approach to handling private data is to encrypt all records of a data set. Encrypted text is sometimes called ciphertext. Decrypted text is also called plaintext. Encryption can be described, by analogy, as putting the records of a data set into a locked box. Access to the records in the locked box is then controlled by the key to the locked box. The concept is that only authorized entities are allowed access to the (decryption) key.
[0038] Some regulations (e.g., HIPAA) require healthcare data to be stored in encrypted form, sometimes called "encryption at rest."
[0039] However, a malicious entity may gain access to the decryption key or may use computational mechanisms to guess / guess the decryption key. The latter possibility is more likely if the encryption / decryption techniques are not strong enough (e.g., the key length (the number of bits that make up the key) is not long enough to withstand computational attacks) or if the key is lost or not securely stored.
[0040] Encryption and other such security techniques may depend on the expectation that a computational attacker is likely to expend a certain amount of resources (computer time, memory, and computing power) to gain access to the underlying data. The length of the encryption key is one of the variables used to increase the amount of computational resources required to break the encryption.
[0041] Even strong encryption technology cannot solve the security challenges associated with processing personal data. For example, a company processing an encrypted data set may load the data set onto a computer, decrypt the data set, process the records of the data set, and re-encrypt the data set. In this example, one or more records of the data set are decrypted (to plaintext) during processing. A malicious entity could gain access to the computer while the plaintext records are being processed, leading to the disclosure of personal information. That is, decrypting data for the purposes of processing introduces a "runtime" vulnerability.
[0042] It is therefore desirable to develop improved techniques for processing personal data.
[0043] Fully homomorphic encryption (FHE) describes a technique for performing computations using encrypted data without decrypting it.
number
number
number
[0044] However, conventional techniques for computing with FHE datasets can be inefficient to the point of being impractical: calculations reported in 2009 showed that computations performed on FHE datasets are 100 trillion times slower than unencrypted data computations (see Ameesh Divatia, https: / / www.darkreading.com / attacks-breaches / the-fact-and-fiction-of-homomorphic-encryption / a / d-id / 1333691 and Priyadarshan Kolte, https: / / baffle.io / blog / why-is-homomorphic-encryption-not-ready-for-primetime / ).
[0045] Additionally, existing application code may need to be rewritten to use FHE libraries that provide basic FHE functionality.
[0046] A secure enclave describes a computing environment in which sensitive data can be decrypted and processed in memory without exposing the sensitive data to other processes running in the computer. The data is decrypted and processed in a computing environment that is "isolated" from other processes and the network. Protection of such an environment can be further strengthened by protecting the decryption key in a manner described below.
[0047] Secure enclave technology can be more efficient than FHE technology.
[0048] In some cases, a computer that includes a secure enclave may be referred to as a secure computer. A secure computer may include one or more secure enclaves, for example, one secure enclave for each application that runs on the computer.
[0049] In general, ensuring isolation of an enclave from other processes and other enclaves is the goal of secure enclave technology.
[0050] A secure enclave is an isolated environment made up of hardware (CPU, memory, registers, cache, etc.) and / or software (programmed circuitry). A secure enclave is accessible by application programs through specially configured hardware and software elements, sometimes called call gates or firewalls. Access to a secure enclave can be controlled through cryptographic keys, some of which can reside in hardware elements configured at manufacture. Malicious entities may attempt to extract keys during the boot process of the secure enclave. Reverse engineering or other such attacks to extract keys can be thwarted by disallowing repeated key requests and / or lengthening the time between such requests. In some cases, a set of keys may be associated with a particular set of hardware elements.
[0051] Additional protection can be achieved by requiring that data (and computer programs) introduced into the secure enclave be encrypted. In addition, data output from the secure enclave is also encrypted. Once injected into the secure enclave, the encrypted data may be decrypted and processed within the secure enclave, and the results may be encrypted and included in the output. Thus, isolated secure enclaves solve the runtime vulnerability problem mentioned above.
[0052] An additional measure of protecting data within a secure enclave can be introduced by requiring that the process of decrypting data within the secure enclave be made more secure by protecting the decryption key from being known outside the secure enclave, i.e., entities outside the secure enclave infrastructure are prohibited from accessing the decryption key.
[0053] In this manner, encrypted data can be injected into a secure enclave when the injection agent satisfies the constraints of the secure enclave's firewall. The secure enclave contains a decryption key that can be used to decrypt the injected data and process it. The secure enclave can encrypt the results of the processing activity using an encryption key available within the secure enclave before outputting the results.
[0054] Another technique that addresses the problem of protecting personal data is to de-identify or anonymize the data. This technique relies on replacing personal data with random data, e.g., replacing social security numbers with random digits. Such techniques can be used in structured data sets. For example, a structured data set that includes a patient's name, social security number, and heart rate can be anonymized by de-identifying the values of the attributes "name" and "social security number."
[0055] De-identification techniques in structured data sets result in a loss of processing power as follows:
[0056] Structured datasets often need to be combined with other structured datasets to obtain maximum processing benefits. As an example, consider two structured datasets: (First Name, SS#, Heart Rate) and (Last Name, SS#, Weights). By combining the two datasets, a more complete data record of the patient can be obtained; that is, the inherent relationships in the two datasets can be exploited by relating the patients represented in the two datasets. The process of de-identifying the two datasets results in anonymizing the patients who lose their unique relationships.
[0057] Continuing with the example above, in order to maintain unique relationships, the entity performing the de-identification can assign the same random data to the represented patients in the two datasets. That is, the anonymizing entity knows that a patient, say John, is represented by specific data in the two datasets. This means that the knowledge of the anonymizing entity becomes weak.
[0058] De-identifying structured data may therefore introduce vulnerabilities that can be exploited by malicious computing entities.
[0059] Another drawback of conventional de-identification techniques is that they do not apply to unstructured datasets such as medical notes, annotations, medical history, pathology data, etc. A large amount of healthcare data consists of unstructured datasets. In the latter part of this disclosure, techniques are disclosed for de-identifying unstructured datasets using machine learning and artificial intelligence techniques.
[0060] One consequence of de-identifying an unstructured dataset is that the resulting dataset may contain some residual private data. In one embodiment, the de-identification of the unstructured dataset is subjected to a statistical analysis to derive a measure of the effectiveness of the de-identification. That is, a measure of the probability that the dataset has been de-identified can be obtained.
[0061] In an embodiment, entity A de-identifies a data set for a probability measure p and provides it to entity B, the latter also receiving one or more computer programs from entity C. Entity B processes the data received from entity A using the computer programs received from entity C and provides the results of the processing to another entity D. (In an embodiment, A, B, C and D may in principle be separate entities, and in practice one or more of entities A, B, C and D may cooperate through mutual agreement.)
[0062] An embodiment of the present invention allows entity B to assure entity A (and C, and D) that it maintains a probability p that its processing is associated with the data.
[0063] Furthermore, in a process not involving Entity B, Entity A may authorize the use of Entity C's computer program on its data set.
[0064] An embodiment of the invention allows entity B to guarantee to entity C (and A, and D) that the dataset in question was processed only by the computer program provided by entity C, and that the dataset was not processed by any other computer program. Furthermore, entity B can guarantee to the other entities that the computer program provided by entity C and used to process the underlying dataset was not altered, modified or modified in any way, i.e. the binary image of the computer program used during processing was identical to the binary image of the computer program provided. This validation, i.e. preserves the origin of the received computer program.
[0065] Furthermore, invisibility corresponds to the property of satisfying the following conditions: 1. Entity B can guarantee to Entities A, C, and D that it had no access to the data sets provided by Entity A, the computer programs provided by Entity C, and the output provided to Entity D. 2. Entity B can assure entities C and D that entity A only accessed data set A and did not access any of the computer programs provided by C or the output provided to entity D. 3. Entity B can assure entities A and D that entity C only had access to its computer program and did not have access to any of the datasets provided by A or the output provided to D. 4. Entity B can assure entities C and D that it only accessed data set A provided by entity A, and did not access any of the output provided to D or the computer program provided by C.
[0066] Moreover, the various guarantees mentioned above are provided in the form of verifiable and unforgeable data instruments, or certificates, based on cryptographic techniques.
[0067] The embodiment of the invention shown in Fig. 1A allows a first entity 1A100 to build a "computational trust chain" 1A105 that begins at the point where it receives a data set (with a given de-identification probability) from a second entity 1A101, extends through one or more data processing stages 1A102 using a computer program received from a third entity 1A103, and ends at the point where the result of the processing is received by a fourth entity 1A104. Furthermore, the trust chain 1A105 satisfies confidentiality. The trust chain thus embodies the concept of preserving the input probability measure, the origin of the received computer program, and the invisibility property.
[0068] Without loss of generality, for ease of explanation, in the exemplary embodiment of FIG. 1A, a first entity A is labeled as an "operator", a second entity A is labeled as a "data provider", a third entity A is labeled as a "program provider", and a fourth entity A is labeled as a "data scientist". The apparatus that performs the processing is labeled as a "federated pipeline". The term "federated" indicates that the pipeline can receive inputs from and provide outputs to multiple entities.
[0069] This disclosure describes, among other things, a "federated pipeline" (implemented using software techniques and / or hardware / firmware components) that maintains the ambiguity of input de-identification probabilities of a dataset, the origin of the input computer programs, and the various data and computer programs involved in the computation.
[0070] In some cases, a data scientist (e.g., entity 1A104, see FIG. 1A) who has obtained an output dataset or results from a federated pipeline may wish to process the output dataset and share the results with a third party. Note that, as explained above, because the data scientist receives the output from the federated pipeline, the output is associated with a (series of) authentications, i.e., a chain of trust. If the data scientist processes the received output and wishes to share it with a third party, the third party may ask to extend the chain of trust to the newly processed results.
[0071] That is, a third party may wish to obtain proof that outputs received from the federated pipeline are indeed used as inputs to a new computer program, and that outputs provided to the third party are output by the program. That is, a data scientist may be requested by a third party to extend the chain of trust associated with the federated pipeline. If the data scientist is not associated with the federated pipeline, then a method of extending the chain of trust is needed that is independent of the method used in the federated pipeline system.
[0072] Figure 5 illustrates this challenge. When a data scientist shares results, they want the recipient of the results to trust that a particular computer program (P1), possibly provided by the data scientist, was executed, and that they accepted and verified the source of the input dataset (#1) provided by the federated pipeline with authentication. Program P1 may, for example, check a serial number provided as part of dataset #1 against a known external data repository. The alleged execution of program P1 results in dataset #2.
[0073] Further, the data scientist may want the recipient to trust that Dataset #2 was processed by computer program P2 (which may have been provided by the data scientist) and that the alleged execution of program P2 resulted in the final output dataset (Figure 5).
[0074] D. Genkin et al., "Privacy in Decentralized Cryptocurrencies," C. of the ACM, 2018, which is incorporated herein by reference in its entirety, presents exemplary techniques for verifying the execution of programs P1 and P2. A software module called a prover provides a computing environment in which programs P1 and P2 can be executed. Upon such execution, the prover produces two outputs: (1) the outputs of programs P1 and P2, and (2) a data object called a proof of execution of programs P1 and / or P2.
[0075] In addition, the prover also provides a software module called the verifier (see Figure 6) that can be provided to any third party. The verifier takes the proof as input and outputs a binary "yes / no" answer. A "yes" answer indicates that the program in question was executed and produced the input proof object. A "no" response means that the evidence of the alleged execution could not be verified.
[0076] Thus, D. Genkin et al. present a system and method in which the alleged execution of a computer program may be verified by submitting a proof of the alleged execution to a verifier system. The proof object is a cryptographic object that does not leak any information about the underlying data or program (other than a meta-statement that the alleged execution is verifiable).
[0077] In an embodiment, a computer program P may be agreed upon between two enterprises E1 and E2 as incorporating a policy. Old enterprise E1 can now run program P and generate a proof π of its alleged execution using the prover techniques described above. Enterprise E2 can verify π (using the verification techniques described above) and trust that program P was run, thereby trusting that the agreed-upon policy was implemented.
[0078] FIG. 1B shows the logical architecture of a secure enclave from the application's perspective. The application 100 includes its own code, data, and a secure enclave. The application 100 is logically divided into two parts: (1) a non-secure part that runs as a typical application in a conventional computer, and (2) a secure part that runs within a secure enclave. Code in the non-secure part of the application can request that a secure enclave be created and that a particular boot image be loaded into the secure enclave for execution. Control is then returned to the call point upon completion of execution within the secure enclave. The privileged system 200 (including the OS, BIOS, SMM, VM, etc.) is prevented from accessing the secure enclave.
[0079] In some embodiments, the following method may be performed to populate the secure enclave with code and data. How to create and populate a secure enclave (1) Compiling the secure parts of the application, (2) Issue a command to create a secure enclave (e.g., using the underlying hardware / OS instruction set); (3) loading pre-provisioned code from a pre-specified library; (4) Load the compiled code from step 1 into the secure enclave; (5) generate appropriate authentication information; (6) Store images and credentials of the secure enclave.
[0080] In some embodiments, the following method may be performed to execute code within a secure enclave. How to [Execute code within a secure enclave] (1) Compiling the non-secure portion of the application (e.g., application 100) with the secure image; (2) Run the application; (3) The application creates a secure enclave and loads the image into the secure enclave. (4) Verify various authentication information.
[0081] The hardware and software components of a secure enclave provide data privacy by protecting the integrity and confidentiality of the code and data within the enclave. Entry and exit points are predefined when compiling the application code. A secure enclave can send / receive encrypted data from its application and can save encrypted data to disk. An enclave can access its application's memory, but the reverse is not true, i.e., an application cannot access the enclave's memory.
[0082] An enclave is a self-contained executable software that can run on a specified computer. For example, an enclave may contain resources (e.g., code libraries) that it uses during operation rather than calling external or shared resources. In some cases, hardware (e.g., a graphics processing unit or a particular amount of memory) and operating system (e.g., Linux® version 2.7 or AlpineLinux® version 3.2) requirements may be specified for the enclave.
[0083] 2 illustrates a use case scenario for processing healthcare data according to some embodiments. A data provider provides a database 200 that contains data records where some of the attributes may be personal data, such as a user's name, address, patient ID number, zip code, and other user-specific data. Database 200 is connected to one or more computers, collectively referred to as pipeline 210, possibly residing in a cloud server environment.
[0084] 2 also shows a computer program 270 that exists outside of the enclave 220 (provided by a program provider). This is an insecure program because, as previously mentioned, it is not contained in a secure enclave. Using the "create and populate secure enclave" method, the program 270 creates a secure enclave in the pipeline 210 and populates it with its secure application part, application 230. Since app 230 is within a secure enclave, it is by definition secure.
[0085] Pre-provisioned software can also be loaded into the secure enclave, as described in the method "Creating and Populating a Secure Enclave." SE 220 includes pre-provisioned software 240-2 that serves, among other things, as one endpoint for a TLS (Transport Level Security) connection. A second endpoint 240-1 for the TLS connection resides in database 200. (Instead of TLS, any secure network connection technology can be used, e.g., https, VPN, etc.)
[0086] The TLS connection may be used by the application 230 to retrieve data from the database 200. The application 230 may also include a proxy mechanism to effectuate receipt of data records.
[0087] Furthermore, SE 220 includes pre-provisioned software modules PA 250 (Policy Agent) and AC 260 (Access Controller), whose functions are described below.
[0088] Thus, program application 230 of SE 220 can retrieve data from database 200 using TLS endpoints 240-1 and 240-2. TLS technology ensures that the data being transferred is secure. Database 200 may contain encrypted data records. Thus, app 230 receives the encrypted data records. In operation, application 230 decrypts the received data records and processes them according to its programmed logic. (How the decryption is performed is described below.)
[0089] Using the method "executing code in a secure enclave" described above, application 230 can be invoked, which can then retrieve and decrypt data from database 200. The results of the processing can be directed to entity-labeled data scientist 280, which is under the control of policy agent PA 250. In general, PA 250 works in conjunction with policy manager 280. The functionality and interoperation of PA 250 and policy manager 280 are described in more detail below.
[0090] In some embodiments, the policy manager 280 may reside within its own secure enclave 290 .
[0091] FIG. 2 illustrates a pipeline including two secure enclaves 220 and 290. In an embodiment, the pipeline may include one or more secure enclaves. Additionally, one or more secure enclaves may be interconnected (e.g., to distribute computational work tasks). For example, one or more secure enclaves may be interconnected to achieve what is known as a map-reduce configuration to achieve concurrent execution of computational tasks. The pipeline may be implemented using one or more computers, for example, a secure enclave may reside on multiple computers, for example, in a cloud server environment. FIG. 2 illustrates a single database 200 connected to the enclave. In an embodiment, one or more databases may be so connected to one or more enclaves.
[0092] In summary, a computational task may be accomplished by encoding it as an application program with a secure and a non-secure part. When invoked, the non-secure part of the application creates one or more secure enclaves, injects its secure part into the secure enclave, and invokes its execution. The secure part of the application may access data from a (pre-provisioned) database connected to the enclave or to other enclaves. The secure part of the application then decrypts the received data. Processing then proceeds according to the app's logic, possibly taking advantage of the arrangement of interconnected enclaves. Results are presented to the data scientist via a policy agent.
[0093] Compared to the FHE dataset approach, where the data is never decrypted and processing proceeds on the encrypted data, in the configuration shown in Figure 2, the data in the enclave is in encrypted form and is decrypted before processing. It may be re-encrypted before the results are shared with an external entity. Thus, the configuration of Figure 2 is more efficient and can achieve improved processing speed compared to FHE.
[0094] The above-mentioned pipeline technique allows computations to be performed on personal data and data sets that may contain personal data. One aspect of the pipeline technique is that the data (and programs) in the secure enclave are unobservable, i.e., subject to policy control by a policy manager (or its cohort, a policy agent). Furthermore, the output generated as a result of the execution of the program may also be directed according to the policy.
[0095] As an example, consider a calculation performed in a pipeline that calculates the Body Mass Index (BMI) for individual patients stored in a dataset that includes, among other things, the patient's weight, height, date of birth, and address. The calculation then proceeds to calculate the average BMI across various U.S. counties.
[0096] Because these calculations involve personal and individual patient data, the calculations may be subject to privacy regulations. Various types of output may be desired, such as the following illustrative examples: (1) a dataset of the five U.S. counties with the highest average BMI, (2) a dataset of five patients whose addresses have an "overweight" BMI, (3) a dataset of patients from Norfolk County, Massachusetts with zip codes and BMI, (4) a dataset of patients from Dedham, Massachusetts with an "overweight" BMI between 25 and 45 years old, or (5) a dataset of patients from Allied Street, Dedham, Massachusetts with weight, height, and age. In each case, the input to the calculation is personal data and a dataset that may include personal data, and the output is a dataset that may also include personal data and individual data.
[0097] The first output dataset above lists data aggregated to the county population level and does not include PII data attributes. The results are independent of any single individual's data record. The results relate to a population. Thus, the policy may provide that such a dataset may be output, i.e., output as plain text.
[0098] On the other hand, the second output dataset above (1) contains personally identifiable information, i.e., street addresses, and (2) the number of items in the dataset, i.e., the cardinality of the output set, is small. A malicious agent may be able to isolate specific individuals from such a dataset. In this case, a policy can be formed to disallow such requests.
[0099] That is, a parameter K, called the privacy parameter, may be provided that places constraints on the cardinality of the output data set. Thus, the output data set may be disallowed if its PII attributes identify fewer than K individuals.
[0100] Additionally or alternatively, the output dataset may be provided in encrypted form within the secure enclave together with a computer program that responds to queries submitted by an intended recipient, e.g., a data scientist. The enclave may then use a (non-secure) application program to query the (secure) program within the enclave and receive the enclave's response. Thus, the data scientist cannot see the patient data, but can receive responses to his queries. Furthermore, the secure program's response may be constrained to only reveal a selection and a predefined "view" of the output dataset, where the "view" may correspond to the commonly accepted notion of a view in database systems. Alternatively, the output dataset may be provided to the data scientist without encapsulation in a secure enclave by first encrypting the dataset using FHE.
[0101] In the third output request above, the data is aggregated across zip codes for a country, which may not raise privacy concerns if the number of such patients is large enough. In such an example, a policy can be formed that places constraints on the size of the output dataset, e.g., the output dataset must contain data for at least 20 patients. Similar policies can be used for the fourth and fifth output requests.
[0102] In some embodiments, a policy can be formed that provides for adding random data records to the output dataset if the cardinality of the dataset is below an imposed constrained limit, i.e., a constraint is imposed such that the output dataset contains enough records to achieve a minimum size, e.g., 20 output people.
[0103] Further challenges may arise when output requests (e.g., the third, fourth, and fifth output requests above) are issued as a series of requests and the outputs are collected by a single entity (e.g., a data scientist) or multiple entities that collude to share the output. Because the output requests compute a computational dataset that is applied to successively smaller population sizes, such a "narrowing" computation may be used to obtain information about a particular individual.
[0104] It has been shown in the literature (Cynthia Dwork, Differential Privacy: A Survey of Results, International Conference on Theory and Applications of Models of Computation, 2008) that a sequence of increasingly refinements (or more precise responses) will eventually leak individual information.
[0105] Figure 3 illustrates the various policies discussed above. These policies are for illustrative purposes only and the actual policies implemented may vary.
[0106] In some embodiments, a policy agent may be configured to be included as pre-provisioned software in one or more secure enclaves of the pipeline. The policy agent receives its policies from a policy manager (described below) and imposes the policies on all output data sets (some examples of which are provided in the description above). Out-of-band agreements between various (enterprise) parties may be used to allow the parties to specify and view the pre-provisioned policies included in the policy agent.
[0107] The policy agent software also records, or logs, all accesses and other actions taken by programs executing within the enclave.
[0108] A policy manager may be configured to manage one or more policy agents. A policy manager may also perform other functions, described below. For simplicity, this disclosure illustrates a single policy manager for a pipeline that manages all policy agents in the pipeline in a master-slave configuration.
[0109] This disclosure also illustrates the policy manager running in the domain of the pipeline's operator for illustrative purposes, although various alternatives are possible. In some embodiments, the policy manager may be implemented in any domain controlled by either the operator, data provider, program provider, or data scientist. If the policy manager is implemented using decentralized technology, control of the policy manager may be decentralized across one or more of the above business entities. The term "decentralized" as used in this disclosure means that the policies that control the policy manager may be provided by multiple parties rather than a single party.
[0110] For example, Figure 7 illustrates one exemplary embodiment of decentralized control of the policy manager. Figure 7 illustrates a table contained in the policy manager whose rows describe groups. A group is a collection of collaborating entities and elements related to their collaboration. A group of collaborating entities exercises control of the policy manager through their individual policies. The first row illustrates a group named Group1 having an entity named A1 as a member providing an algorithm a1, and another member named D1 providing data d1. The data and algorithm provided by the two members have been processed and a load image is prepared to be loaded into the pipeline. The prepared load image is stored in a safe secure storage and can be accessed using a link L1.
[0111] In some embodiments, policy agents may record their state with a policy manager. Additionally, the policy manager may be constructed to allow regulators and / or third party entities to inspect the recorded state of individual policy agents. Thus, regulators and third party entities can examine the constraints under which a data set was output. In embodiments, a possible implementation of the policy manager is a blockchain system, the ledger of which may include immutable data records.
[0112] In the above scenario, the policy may dictate that the data scientist may receive the output dataset enclosed in a secure enclave. This means that the data in the dataset is opaque to the data scientist. The latter is free to perform additional output requests on the output dataset in the enclave by injecting new requests into the enclave. In these cases, if the output dataset does not have PII data or violate any privacy parameter constraints, the dataset becomes unconstrained and can be made available to the data scientist.
[0113] In some embodiments, a data scientist or other requester can view the contents of a dataset contained within an enclave. The contents of the enclave can be made available to the requester by connecting the enclave to a web browser and causing the enclave's contents to be displayed as a web page. This prevents the requester from saving or copying the state of the browser. In some cases, however, the requester can obtain a visual image of the browser page.
[0114] In some embodiments, data scientists can submit data requests, which are then managed using a curation service. If the curation service deems the data request to be privacy-preserving, the data request can be processed using the dataset in the enclave, and the output dataset can be provided to the data scientist as an unconstrained dataset. In this way, the curation service validates and ensures that submitted data requests are benign, i.e., the data request does not generate outputs that violate privacy rules.
[0115] As discussed above, a further challenge associated with using enclaves to process private data is whether policies can be provided for computations performed within the enclave, since the processes inside the enclave are opaque. For example, consider a use case for secure enclave technology, following the general description above with respect to FIG. 2. A first company that owns encrypted data may store the data in an enclave. The data in the enclave may be processed and prepared for use by a second company that provides a pipeline, and a computer program processes the data provided by a third company. Now, a data scientist may inject a data request into the enclave and expect an output data set as a result. As explained above, in one example, the output data set may be provided to the data scientist as data enclosed in an enclave. In another example, the output data set may be provided as an encrypted store of data. In the latter case, the data scientist may be provided with a decryption key to provide access to the data. All these actions are subject to policies predetermined by either the first, second or third company.
[0116] Furthermore, the policy in question may require that access to process data and receive the data sets output by data scientists must be authorized; i.e., access by data scientists must be authenticated. Data scientists for their part may require assurance that data requests operate on data provided by a specified data provider, since data integrity is critical to the data processing paradigm. In particular, if the data scientist intends to share the output results with a third party, the data scientist may need to ensure the former, the integrity of the input data and the fact that the results were obtained by executing a specific data request. Regulators may require that the entire process of storing and processing data must be transparent and made available for inspection and post-mortem approval.
[0117] To address the various concerns mentioned above, an orchestration method can be implemented as shown in the workflow diagram of Figure 4A. The following entities are involved in the workflow: (1) Data Provider, i.e., an entity that owns the data, (2) Operator, i.e., an entity that provides the pipeline technology, (3) Program Provider, which provides computer programs for processing the data, (4) Data Scientist, i.e., an entity that wants to obtain the output results, and (5) Policy Manager, which can include a software module that controls the Policy Agent.
[0118] Referring to FIG. 4A, in steps 1, 2, 3, and 4, the data provider, data scientist, program provider, and operator specify their policies, respectively. In step 5, the policy manager prepares to start the policy agent. In step 6, the operator creates a new pipeline and in step 7 notifies the orchestration participants about the creation of the pipeline. The participants can inject data, programs, and policies into the pipeline. Note that the pipeline is also started with pre-provisioned software libraries.
[0119] Referring to FIG. 4B, an orchestration between data providers, pipelines, secure application programs provided by program providers, policy managers, data scientists, and policy agents is shown. ⇒ Step 1. The policy manager starts the policy agent prepared in step 5 of Figure 4A. ⇒ Step 2. The secure application initiates a processing request. ⇒ Step 3. Record the start request. ⇒ Step 4. The policy agent selects the appropriate policy and access credentials associated with the processing request. ⇒ Step 5. The policy agent (with the help of the policy manager) verifies the authentication information. If the authentication information is not satisfied, the request is terminated. ⇒ Step 6. The pipeline executes the processing request and stores the data. ⇒ Step 7. The pipeline notifies the data scientist that the requested output is available. key management
[0120] Public key cryptography relies on a pair of complementary keys, usually called a private key and a public key. The latter may be distributed to any party. The former, the private key, is always kept secret. Using the public key distributed by, say, Alice, another party, say Bob, can encrypt and send a message to Alice securely, with the knowledge that only Alice can decrypt the message using his private key. No other key can be used to decrypt a message encrypted by Bob. As mentioned before, ownership of the private key is a major concern, and several techniques are discussed in the literature related to this topic.
[0121] Secure enclave technology can be used to address the problem of private key ownership by ensuring that the private key (corresponding to the public key) always resides within the secure enclave. This can be achieved, for example, by creating a first secure enclave and pre-provisioning it with public / private key encryption software that creates a private and public key pair. Such software is available via open source repositories. A computer program residing in a second secure enclave can then request the first enclave to provide a copy of the required private key (using a secure channel). Thus, the private key never resides outside the secure enclave infrastructure, but always resides within the secure enclave and is transmitted between them using a secure channel.
[0122] In some embodiments, the policy manager may be pre-provisioned with public / private key software and encapsulated in a secure enclave as shown in FIG. 2 (see 280).
[0123] The secure enclave can then request the private key from its policy agent, which, as described above, works in conjunction with the policy manager and can request the private key from the policy manager. A computer program running in a secure enclave may need a private key to decrypt encrypted data that it may receive from a data provider. It can request it from its policy agent, which can then provide the necessary private key for decryption purposes.
[0124] As explained earlier, there exist cryptographic techniques called hash functions or hash algorithms that are able to take a string of plaintext, often called a message, and encrypt it as a sequence of hexadecimal digits, i.e. the sequence of digits [0-9, A-F]. Examples of publicly available hash functions are MD5, SHA-256 and SHA-512. The latter two functions use keys of length 256 and 512 respectively. As mentioned above, the key length is a factor that ensures the strength of a cryptographic technique against malicious attacks.
[0125] One property of a hash function that maps plaintext to hexadecimal digits is that it does not map different plaintexts to the same digits, so that a plaintext can have a unique signature, i.e. the output of a hash function operating on the plaintext as input.
[0126] If secure enclaves containing programs and data can be considered to contain plaintext, then every secure enclave will have a unique signature. Thus, by applying an appropriate hash function to the contents of a secure enclave, the signature of that enclave is obtained. The signature is unique in that no other distinct secure enclave has that signature.
[0127] When a secure enclave is loaded with a known computer program and a known data set, the signature of the secure enclave can be used to assert that the secure enclave is running (or has run) a program on the known data set by comparing the signature of the secure enclave to a previously stored signature.
[0128] Thus, a data provider can be assured that, when provided with the enclave's signature, the data set has not been corrupted or altered and will be manipulated by a given program.
[0129] Similarly, program providers can be assured that their programs are incorruptible and immutable, and data scientists can be assured that their outputs are the result of processing given programs on given data.
[0130] The policy manager can be programmed to disallow operators to access the contents of the secure enclaves by denying access to the associated decryption keys, so that operators of the pipeline cannot view or edit the contents of the secure enclaves.
[0131] In this disclosure, a secure enclave may be pre-provisioned with software to compute hash functions that may be invoked by a policy manager to create signatures. The policy manager may then be programmed to provide these signatures as certificates upon request to various entities, such as data providers or program providers.
[0132] Referring now to FIG. 10, an initial dataset 1001 can be stored in a secure enclave 1001 where it can be processed and output as dataset 1010. The dataset 1010 resides in a secure data layer 1009. One or more applications can be injected into the enclave 1002 by a data scientist and the dataset 1010 can be provided to such applications. Upon processing, the output dataset can be stored as output 1008. The latter can be further injected into an enclave 1004 where an enterprise 1005 can process the results using its (own) applications and output them as dataset 1007. Note that the output dataset 1007 is encrypted.
[0133] Thus, the enterprise 1005 has the choice of running the injected application in the enclave 1003 or receiving the dataset 1008 into a different enclave 1004 and running its own application therein.
[0134] That is, a series of enclaves 1001, 1002, 1003, and 1004 (FIG. 10) can be assembled, with each enclave receiving encrypted data from a secure data store 1009 and generating a secure (encrypted) data set for the next line enclave in turn. Thus, the original data owner 1000 can provide its data 1011 to a third party, i.e., a company 1005, for processing and can be assured that no private or personal data will be leaked.
[0135] The enterprise 1005 has the flexibility to perform its own data requests on the dataset and provide the results of the processing to the customer, with the appropriate data request program being executed and a certificate verifying the origin of the input data. The enterprise 1005 can assume ownership of the dataset 1007, but then assumes legal responsibility for its privacy.
[0136] Figure 10 shows a series of enclaves, each connected to another enclave through an intermediate secure data layer. However, in an embodiment, several enclaves 909 and 910 may also be running simultaneously, as shown in Figure 9. Furthermore, not all code resides within an enclave; enclaves may be intermixed with a computing environment containing non-secure code, as desired, see 902 (Figure 9).
[0137] Along with the secure data layer available to all enclaves, additional layers can be provided for secure messaging 904, access control and policy agent communication 905, and the exchange of cryptographic keys 906. These additional communication layers are provided so that enclaves can exchange various kinds of data securely without leaking to each other.
[0138] With reference to the exemplary embodiment shown in FIG. 8, a first company 800 owns a dataset 1 that can be de-identified and anonymized to obtain a dataset 2A. As previously mentioned, the de-identification procedure may not be completely effective and the dataset 2A may still contain some personal and private data. The first company provides a copy of the dataset 2A, shown as 2B, in the secure data layer 810 so that it can be made available for processing by the second company 890.
[0139] Enterprise 890 can receive dataset 2B and have it stored in enclave 802 where it is processed and prepared for further processing, after which it is stored in secure data layer 810 as dataset 850.
[0140] Enclave 802 is pipelined to enclave 803, meaning that dataset 850 is output from enclave 803 and provided as input to enclave 802. An application within enclave 803 can now process the data and produce it as output dataset 809.
[0141] Enclave 803 is then pipelined to enclave 804, which resides in a network managed by enterprise 899. That is, enclave 803 is managed by enterprise 890 and enclave 804 is managed by enterprise 899. The latter enterprise can inject additional data 811 into enclave 804, and also inject applications for processing dataset 805 together with input dataset 809 to generate dataset 811. The results of the computations can be made accessible to data scientists at enterprise 899, as directed by a policy agent / manager.
[0142] 8 also shows an exemplary embodiment 849 in which an enterprise 899 can provide data from the enclave 803 (possibly resulting from processing) that is injected into the enclave 804. This makes it possible to reintroduce the results obtained for further processing, i.e. allowing a feedback loop for further processing of the results.
[0143] In the preceding description, various embodiments illustrate systems and methods for collaborative storage, processing, and analysis of data by multiple parties. For example, FIG. 8 illustrates three collaborating enterprises 800, 890, and 899. Enterprise 800 provides data, enterprise 890 provides infrastructure that stores data in an enclave, and enterprise 899 processes the data by injecting specific data requests into the enclave. In one embodiment, a centralized trust model is used in which one of the enterprises, e.g., the enterprise providing the infrastructure, is trusted to ensure that data provided by the first enterprise is made available to the second enterprise under a collaborative agreement. That is, the trusted enterprise ensures that data access and data processing are subject to various ownership and processing concerns. Data providers want to be assured that their data is only processed by authorized enterprises. Data processors want to keep data requests private and not share details of processing requests with competing enterprises. Maintenance of such concerns can be transposed to the trusted enterprise. Such an embodiment may be referred to as a centralized trust model, i.e., trust is placed in one enterprise or entity.
[0144] In another embodiment, a decentralized trust model may be provided in which multiple companies are trusted. Such a trust model may be particularly suitable in an open market where data providers provide data and analyzers provide data requests, i.e., computer programs, that process the provided data. No single company or entity should be trusted in a decentralized model. Rather, an openly available structure is provided that any third party can access to verify that the constraints governing the data and algorithm providers are maintained.
[0145] Figure 7 illustrates one exemplary embodiment of a decentralized trust model. Figure 7 illustrates a table whose rows describe groups. A group is a collection of collaborating entities and elements related to their collaboration. The first row illustrates a group named Group 1 having an entity named A1 as a member providing a program a1 and another member named D1 providing data d1. The data and algorithms provided by the two entities have been processed and a load image is prepared to be loaded into the enclave. The prepared load image is stored in a secure storage and can be accessed using a link L1.
[0146] As mentioned above, in order to load an image into the enclave, a specific encryption key is required to encrypt the data (and its corresponding decryption key is used by the enclave to decrypt the data).
[0147] It should be understood that the foregoing embodiments are exemplary and that many additional alternative embodiments are possible. In some embodiments, at least a portion of the federated pipeline described above may be executed on hardware and firmware that provides protected memory, such as Intel Security Guard Extensions (SGX), implementation details of which are described at https: / / www.intel.com / content / www / us / en / architecture-and-technology / software-guard-extensions.html. In some embodiments, at least a portion of the federated pipeline may be executed using virtualization software that creates isolated virtual machines, such as AMD Secure Encryption Virtualization (SEV), implementation details of which are described at https: / / developer.amd.com / sev / . In some embodiments, the federated pipeline may manage encryption keys using a key management service, such as Amazon AWS Key Management Service (KMS), described in further detail at https: / / aws.amazon.com / kms / . However, these examples of hardware, firmware, virtualization software, and key management services cannot independently create isolated software processes based on cryptographic protocols that can be used to create federated pipelines with different ownership, policies, and authorizations. Thus, in some embodiments, a middleware (e.g., a layer of software) can be provided that can use underlying hardware / firmware, operating systems, key management, and cryptographic algorithms to achieve secure, private, isolated processes, such as a secure enclave.
[0148] In some embodiments, secure enclaves can be chained together to form a pipeline. Consistent with such embodiments, a computation can be divided into subtasks, which are processed within a pipeline either simultaneously or sequentially, or both, based on the arrangement of the pipeline.
[0149] In some embodiments, an authentication service may be associated with a pipeline. The authentication service establishes a chain of trust from the start of the pipeline to the end of the pipeline, providing assurance to an external entity even when the internal contents of the pipeline are not observable to the external entity. In some embodiments, the chain of trust may be extended further without extending the associated pipeline itself.
[0150] One way to handle healthcare data is to anonymize or mask personal data attributes, for example, masking social security numbers before it is processed or analyzed. In some embodiments of the present disclosure, methods can be used to mask and de-identify personal information from healthcare records. Using these methods, a dataset that includes healthcare records can have various portions of its data attributes masked or de-identified. Thus, the resulting dataset may not include personal information or personal information that can identify one or more specific individuals.
[0151] However, given the nature of healthcare records, it may not be possible to completely anonymize or de-identify a healthcare dataset. For example, a dataset may contain contemporaneous (handwritten) notes taken by a healthcare provider that are then digitally transcribed. Many healthcare datasets are obtained by digitizing analog data, e.g., pathology data. Thus, a dataset, especially if it contains a large number of records, may contain private and personal information that has not been anonymized or de-identified.
[0152] Information masking in text for a given application domain demands very high levels of performance, especially recall (the ratio between the number of sensitive entities tagged by the model and the total number of sensitive entities). For example, masking patient-identifying information such as name, location, phone, and address in an electronic health record (EHR) and releasing it for research purposes requires a very high level of recall to release the EHR records for research. In US hospitals and medical research centers, EHR adoption has skyrocketed from 9% (2008) to 96% (2017). Clinical trial datasets represent only a small fraction of the real-world evidence data of which EHRs are a part, with around 1 million patients treated per Big Pharma since 2003 in around 3,490 interventional clinical trials per Big Pharma. Through this lens, synthesizing healthcare provider-specific EHR datasets (unstructured and structured) across all of the major healthcare organizations in the U.S. and globally has emerged as the modern kernel of research and development (R&D) data science, replacing the current reliance on clinical trial datasets and purely structured EHR / claims databases. If done properly, managed EHR data can be a critical asset to biopharmaceutical companies as it can significantly enhance / augment the clinical data used for R&D purposes and even provide an alternative way for biopharmaceutical companies to demonstrate to regulators (e.g., FDA) that their drugs are effective in the real world so that they can gain additional approvals and line extensions without having to perform additional clinical trials.
[0153] However, there are several challenges associated with generating such robust “clinical genomic” datasets. First, data ownership and data de-identification are two of these challenges. While identifiable patient information from EHR data is owned by the patient, de-identified patient-level data can be synthesized and commercially available. Since the institution (e.g., hospital) is the current “owner” or “custodian” of the de-identified EHR data, it has the greatest control / leverage over that data, as long as the de-identification process is done in a robust manner. The latter is a complex task when dealing with “deep EHR data” because personal information is ubiquitous (found in clinical notes, pathology reports, etc.) and furthermore, that personal information is available in a huge variety of ways.
[0154] The process for de-identification requires that words, phrases, or numbers flagged as patient health information ("PHI") be replaced with non-identifiable placeholders that do not compromise the patient's privacy or confidentiality. Examples of these requirements are outlined in the Safe Harbor Act defined by the US HIPAA Privacy Rule, Section 164.514, which is incorporated herein by reference in its entirety, and specifies 18 categories of PHI identifiers that must be masked. The Safe Harbor Act also includes associated guidelines, which are incorporated herein by reference in their entirety, to inform entities how to best implement the requirements contained in the Privacy Rule for de-identification of health information. Although the description of some embodiments below is typically directed to masked patient data in accordance with the Safe Harbor Act, the systems and methods described herein may be applied to data records beyond these embodiments as well.
[0155] Current deep learning models in NLP (natural language processing) do not spontaneously meet these high performance criteria required for the present application. One of the reasons they do not meet these standards is the fact that these models require large amounts of labeled data for supervised learning. Publicly available labeled data for specific entity types can be leveraged in some cases, but in practice sufficient domain-specific labeled data is often required for these models to reach the necessary high levels of recall. While precision is not the primary objective from a masking perspective, precision must be high in order for the masked data to have any material use in research. Validity requirements are high for both precision and recall, with recall usually being higher (e.g., the minimum acceptable precision may be 99.999% or higher).
[0156] Large-scale masking of entities that reveal sensitive information is not limited to EHR applications: for example, the release of documents containing sensitive information by government agencies has the same problems to address, although in practice this is often solved by human curation on a small scale.
[0157] Dictionary-based methods prior to deep learning models fall even further short, requiring human curation / verification, making large-scale masking applications largely impractical due to scale.
[0158] The present disclosure may address one or more of these limitations, as described below.
[0159] Figure 11 is a simplified diagram of a system for information masking according to some embodiments. Once the system has been trained to selectively mask information, text input 1101 fed into the system 1102 results in an output 1103 in which a subset of entities of interest, either single words or multiple word phrases, are selectively masked (replaced with a generic placeholder token). In the example shown in Figure 11, four entity types are masked: people, places, dates, and ages. The text input 1101 can represent a portion of a corpus of EHRs drawn from third party records databases such as EPIC or Cerner, among other repositories of text-based information.
[0160] 12 is a simplified diagram of a control flow for information masking, according to some embodiments. The control flow describes a method for masking information in a large data set that has an unknown probability distribution (over entities of interest) and is impractical to sample completely given its size. The method described in this disclosure automatically encompasses the unknown distribution over a small data set.
[0161] FIG. 12 shows two datasets 1200a and 1200b. Dataset 1200a is a labeled dataset for one or more entity types to be masked. Datasets 1200a and 1200b may be structured datasets organized using a tabular format with rows and / or columns related to specific entity types. Additionally, datasets 1200a and 1200b may include unstructured data within specific cells of the structured data format, where the unstructured data may be free-form text or sentences. Entity types may include the name, location, age, date and time, phone number, pager number, clinical identification number, email and IP address, web URL, vehicle number, physical address, zip code, social security number, and date of birth of an individual or organization, among other identifying characteristics. Any dictionary for entity types may be added to 1200a for a specified entity type. Subword-based models such as Bidirectional Encoder Representations from Transformers (BERT), which uses subwords to represent words, can leverage the subwords that make up words in a dictionary to tag entities that share those subwords. The unknown distribution dataset 1200b is data that requires selective masking of certain entity types. It is not necessary for all entity types that need to be masked to have a pre-labeled dataset 1200a. Samples of the dataset 1200b can be used to create a labeled dataset 1200a for bootstrapping. In some cases, the samples of the dataset 1200b may be created manually by a system administrator or subject matter expert, while other samples may be created using machine learning or rule-based algorithms that use pattern matching rules, regular expressions, dictionaries, and public database searches to identify PHI elements.For example, a rule-based algorithm may be based solely on a set of information in a standard format, such as a date presented in the format of "year / month / date" (e.g., XX / XX / XX or XX / XX / XXXX) or a phone number presented in a 10-digit format (e.g., (XXX)XXX-XXXX). Based on these standard formats, the rule-based algorithm can identify patterns and mask the information by replacing potentially identifying information with generic placeholders.
[0162] The entities of interest do not need to be limited to those that need to be masked. It can be a larger set of entities to ensure that the model not only has high recall for the entities that need to be masked, but also has high precision for the entities required for the study (e.g., drugs, diseases, etc.). Only a subset of the entities of interest is masked. The remaining entities, while detected, are used only for model performance evaluation.
[0163] The labeled dataset for each entity type is used to fine-tune that entity type's model 1202. The preferred embodiment describes at least one separate model for tagging each entity, but does not preclude models that tag multiple entities.
[0164] In a preferred embodiment of the present disclosure, each tagging model is an attention-based model, e.g., the BERT model described in Devlin, et al., "BERT: Pre-training of deep bidirectional transformers for language understanding," arXiv preprint arXiv:1810.04805, which is incorporated herein by reference in its entirety. However, other models, such as sequence models (e.g., long short-term memory networks (LSTM), LSTM with conditional random fields (LSTM-CRF), or recurrent neural networks (RNN)), can be used to tag entities. When using BERT, for each entity type, a pre-trained model that best suits the entity type is selected. For example, when tagging entities such as people, places, etc., a model trained unsupervised on a general corpus such as Wikipedia may be sufficient. In some embodiments, the pre-trained model can be based on other existing publicly available databases to augment model training, such as health science journals, specialty publications, peer-reviewed journal publications, or operator-compiled databases, among others. When tagging entities such as diseases, genes, etc., models trained on scientific publications / biomedical corpora can deliver better results by incorporating domain-specific linguistic features into the model or by helping to identify emerging terms that may not otherwise be widespread in the field.
[0165] One method for discovering text templates or patterns from large corpora of text data can include inferences generated by applying statistical named entity recognition (NER) models to individual sentences in the corpus. In large corpora where patterns of text are frequently repeated, statistical methods may not capture all instances of the pattern. For example, in the sentence ´´Electronically signed by: SMITH,JOHN C on 01 / 02 / 1980 at 12:12 PM CST´´, "SMITH,JOHN C" may be detected as a person entity, but in the very similar sentence ´´Electronically signed by: DEWEY,JONES K on 01 / 02 / 1980 at 12:12 PM CST´´, "DEWEY,JONES K" may not be detected as a person at all. In such situations, pattern-based methods perform better. A regular expression syntax like ´´Electronically signed by:[A-Za-z]+,[A-Za-z]+[A-Za-z]+on ¥d+ / ¥d+ / ¥d+at ¥d+:¥d+PM CST´´ captures all such cases. However, identifying patterns, especially if done manually, involves the examination of a sufficiently large sample of sentences in the corpus, making it a difficult, if not impossible, task. NER predictions can be used to generate sentence templates with entity values encoded by their type and to map those encodings to syntactic patterns. This provides a way to automate the generation of candidate pattern matching templates.
[0166] According to one embodiment, the NER model can be used by first splitting the corpus into individual sentences as a form of pre-processing, which is further described below with respect to FIG. 13. This can be completed by using natural language processing tools such as the Natural Language Toolkit, spaCy, CoreNLP, TextBlob, Gensim, etc. In some embodiments, splitting the corpus into sentences can reduce the overall amount of text to be processed, for example, when the same sentence occurs multiple times in the corpus. Thus, by splitting the corpus into sentences and de-duplicating the resulting set of sentences, computational efficiency can be improved. In some embodiments, one or more short sentences (e.g., sentences with fewer words or terms than a threshold) can be combined, which can provide additional context to the machine learning model and improve NER tagging performance. As an example, in the sentence ´´Performed by pet´´, the term ´pet´ can mean either an animal pet or (among other possibilities) an acronym for a person named ´Peter´ without capitalization. However, if the previous sentence was "The epidural wore off after 4 hours," this would provide adequate context for the machine learning model to infer that "pet" most likely refers to the proper noun of the person who administered the epidural.
[0167] After dividing the corpus into sentences (or multi-sentence clauses), each unique sentence may be mapped to a syntactic template that includes tokens associated with alphabets, numbers, and alphanumeric characters. For example, consecutive sequences of letters may be identified using the token "W", sequences of numbers only may be identified using the token "N", and sequences of alphanumeric characters may be identified using the token "A". For example, the sentence "Electronically signed by: SMITH,JOHN C on 01 / 02 / 1980 at 12:12 PM CST" may be translated to "WWW:W,WWWN / N / NWN:NWW". The system may then create a list of sentences in the corpus that align to each unique template generated using the above tokens and apply a statistical NER model to determine how many sentences in the corpus align to the selected template. However, using this token-based approach, all words, numbers, and alphanumeric characters in the sentence are tokenized, some of which do not need to be masked. The system also encodes the tokens based on the entity type identified in the template. Token encoding techniques can include Inside, Outside, Beginning (IOB) or IOB2 formats. For example, following this step, the original text "Electronically signed by: SMITH,JOHN C on 01 / 02 / 1980 at 12:12 PM CST" becomes "Electronically signed by: B-PER,I-PER I-PER on B-DATE at B-TIME PM CST".
[0168] If many samples map to the same template, the system identifies the template as a candidate to become a rule, reducing ambiguity of rules matching different templates. Before transitioning a candidate template to a rule, the system can convert IOB or IOB2 tags in the template back to their corresponding syntactic tokens by cross-referencing the token-identified sentence output with the IOB or IOB2 encoded output to identify entities that must be masked in the rule. Replacing the IOB2 format with tokens can allow for simplified rules based on tokens, but keeping words or information that do not need to be masked in the original text of the template. For example, the formatted template ´´Electronically signed by:B-PER,I-PER I-PER on B-DATE at B-TIME PM CST´´ becomes ´´Electronically signed by:W,WW on N / N / N at N:N PM CST´´, which is a rule or pattern template for identifying named entities. The syntactic tokens in the pattern template are directly translated to standard syntactic pattern matching methods. For example, "W" can be mapped to the regular expression "[A-Za-z]+", "N" can be mapped to "\d+". Thus, in one implementation, the pattern template in the above example can be the regular expression "Electronically signed by:[A-Za-z]+,[A-Za-z]+[A-Za-z]+on \d+ / \d+ / \d+at \d:\d PM CST".
[0169] In an alternative embodiment, following separation of the corpus into individual sentences as described above, the system may first pass the individual sentences through a statistical NER model that generates an output for each sentence with entity terms extracted and replaced with IOB or IOB2 tags, similar to the description above. The system may then filter out templates that do not result in a specified threshold count of tagged entity types or tagged entity counts. For example, a system operator may specify that only templates with at least two entity types are eligible for the rule, regardless of entity type, or potentially templates with at least four tagged entities. Once the threshold count is met, the system may map the IOB or IOB2 syntactic tokens to the selected templates and create pattern templates using the same alphabetic, numeric, and alphanumeric tokens "W," "N," and "A" described above. After generating the pattern templates, the system may evaluate whether the pattern templates are from unique statistical NER classes and select those unique pattern templates to create rules for. Each unique pattern template may be based on the number of sentences that follow a particular patterning sequence or have a different number of entities or entity types. For example, if all instances of the pattern template ´´Electronically signed by:W,WW on N / N / N at N:N PM CST´´ are generated from an instance of the NER template ´´Electronically signed by:B-PER,I-PER I-PER on B-DATE at B-TIME PM CST´´, it will be selected for rule creation. Doing so allows the system operator to restrict the rule-based templates to those that are unlikely to result in inconsistent data masking by misidentifying entity types in the corpus.In some embodiments, such as masking sensitive information, it may be useful for an operator to treat multiple entities as the same. Different matching templates can be manually inspected after they potentially pass some threshold of a minimum number / percentage of matches. Although illustrated using exemplary IOB / IOB2 syntactic tokens, this rule generation method can use other forms of syntax or token systems to indicate entities and entity types in the corpus.
[0170] Training and rule development may also consist of an operator manually classifying documents or records in the corpus based on a set of categories before evaluating individual models based on entity type. Data records may be classified into categories such as segment descriptions, service descriptions, and service events such that certain types of PHI within a record are more likely to be similarly identifiable. For example, a segment description for a particular record may be based on the nature of the note such as progress note, consultation, discharge instructions, patient summary, or physician note, among others. A service description may identify a department or area of care including medical oncology, orthopedic surgery, dermatology, family medicine, or emergency department, as well as other facets of an organization or enterprise. A service event may identify the setting in which the document was created, such as clinical outpatient, inpatient, emergency, laboratory, endocrinology consultation, day surgery, or other document creation setting.
[0171] Once the corpus of training documents has been classified, the individual validation sets can be used within the individual classifications to identify repetitive data formats that commonly contain PHI in repeated positions of the data records. For example, the classification may result in the identification that dermatology service descriptions collected in an outpatient setting commonly contain PHI in the form of personal name information within the first sentence of the document. The classification may also be used to identify the distribution of the number of patient notes per record type, with each note capable of containing a particular form of PHI data. The classification may also enable the operator to identify the average number of PHI elements per record based on any one of the classification metrics. By identifying the prevalence of PHI based on the classification, the operator may prioritize note types (also referred to as PHI-rich note types) and model training to focus on records that contain a large amount of PHI data.
[0172] Once a particular pre-trained model is selected for an entity type, the model is fine-tuned on a bootstrap training set 1201. The bootstrap training set 1201 may be updated using an iterative process in which training samples are successively added to an initial set of training samples, as described further below in connection with FIG. 14. In some embodiments, the existing training samples may be supplemented by individual sentences selected from a corpus selected based on errors identified in previous models. After the models are fine-tuned, a sample evaluation / test set is drawn (1203) from the unknown distribution 1200b, and the effectiveness of each model is evaluated (1204) by evaluating the recall, precision, and F-score levels. This step is performed for each entity type, and recall / precision scores are calculated.
[0173] If the average recall, precision, and F-score levels are at least as good as the required level across n tests (n is some number), the entity training is considered complete. The required level may be a threshold success rate or ratio determined by the system operator depending on the risk tolerance the operator has for identifying information that is made available after the masking procedure. Once all entities reach the desired threshold 1207, a full mask run 1208 is performed on the data set 1200b. The masked set is sampled and inspected 209 for a final measure of recall / precision.
[0174] If the average recall score for an entity type is not above the required threshold (1205) for that entity type, then a sample is drawn from an unlabeled dataset of unknown distribution 1206 and evaluated again using the same method to assess the effectiveness of the model in step 1204. In step 1206, failed sentences that did not meet the threshold requirement are used to create template samples and added to the training set 1206, using the associated dictionary within the entity type to replace actual entity instances in the failed sentences with equivalent entity instances from the dictionary. By using a dictionary to replace entity types, this ensures that previously failed entity instances are properly accounted for in future iterations of training.
[0175] FIG. 13 is a simplified diagram of an entity tagging process according to some embodiments. The input text 1301 is minimally pre-processed before being fed to each entity tagger. In some embodiments, the input text 1301 can include a batch of patient notes that are processed simultaneously. As part of the pre-processing, the system breaks down the batch of notes and assigns sentence identifiers ("sentence IDs") to individual sentences so that the individual sentences from each note can be processed separately, keeping a record of the sentence IDs for later compilation, as described below. Additionally, as part of the pre-processing, the system can associate sentences in a tracked batch using sentence IDs if multiple sentences contain the same pattern or information. In this way, the system only needs to process one representative sentence of related sentences to accurately mask identifying information, and later perform the same masking on each of the related sentences. Pre-processing can be entity-dependent or entity-independent. For example, one path of input to a person tagger can be text with casing stored, and another path for input to another entity tagger of the same entity type can perform casing normalization (optionally using a POS tagger to start all noun forms with upper casing followed by lowercase text). In some embodiments, paragraph breaks and / or punctuation can be used to separate the text of a batch of patient notes into individual sentences. Additionally, unstructured text strings can be isolated from text files, databases, or any other commonly used data storage repository system.
[0176] In some embodiments, a whitelist tagger (not shown) can be used prior to introducing sentences into the tagger models 1302-1305 to identify common or repeated phrases that are commonly identified as not containing PHI and therefore do not require masking. For example, whitelisted entries can include computer-generated text (e.g., "let your doctor know if you have problems taking your medication"), repeated phrases in a doctor's cursive (e.g., "pain symptoms: none"), or shared elements of clinical notes such as section headers (e.g., "history of current illness"). These whitelist sentences can be removed from the data being processed and routed to the aggregator 1306 for later compilation, as they pose near zero percent risk of exposing PHI or other identifying information. To create the whitelist tagger, a prevalence count for each unique sentence can be calculated and identified based on the highest count after the manual review step. Using a whitelist tagger as part of the system saves computational resources by not requiring tagging and masking of data known not to contain PHI.
[0177] As shown in FIG. 13, multiple entity tagger models tag each entity type, and the number and type of tagger models depend on the recall, precision, and F-score levels required for that entity type. For example, tagger model 1302 is tuned for name entities of individuals or organizations, tagger model 1303 is tuned for date entities, tagger model 1304 is tuned for age entities, and tagger model 1305 is tuned for disease entities. Some of the tagger models can be trained using different training techniques, such as rule-based techniques, deep learning models, and pattern-based models. Doing so creates diverse tagging techniques for each entity type, further reducing the chances that the system misses identifying entity information.
[0178] In preferred embodiments, each entity type is tagged by one or more entity tagger models (the number of taggers for an entity type is variable), although other embodiments may have models that tag multiple entities. In some embodiments, one or more entity tagger models associated with a particular entity may be fine-tuned to identify different complementary features associated with the entity in the unstructured EHR data. For example, for a tagger model tuned for name entities, one model may focus on identifying names in text, another model may be tuned for names associated with addresses and locations, or in another case, an additional tagger model may focus on cased and uncase variants of names without the need for preprocessing.
[0179] The tagged output from models 1302, 1303, 1304, 1305 is fed to an aggregator 1306 which outputs sentences with all desired entities replaced with placeholder tags. The aggregator performs multiple functions such as correcting incorrectly formed entity sequences (e.g. I,I etc. converted to B,I sequence), resolving tagging conflicts (same term tagged to both disease and person - e.g. Parkinson's disease patient), handling spans of misaligned entity types, and finally replacing tagged terms with placeholder tags. The aggregator can prioritize entities to be filtered based on the required recall, precision and F-score for the entity type.
[0180] The output from the aggregator 1306 is then passed through a cascade of Dreg filters, of which Dreg filters 1307, 1308 are representative. The Dreg filters can act as a final processing filter for a particular entity type to ensure that individual entities missed in previous processing steps are not generated as output to users who should not have access to PHI. For example, the Dreg filter cascade 1307 is tailored for person entity types, and the Dreg filter cascade 1308 is tailored for date entity types. Additional Dreg filters can be included for entity types related to the taggers 1302-1305. The Dreg filters 1307, 1308 filter terms / phrases that were not tagged in the steps above. The Dreg filters 1307, 1308 can use rule-based templates based on PHI-enriched note types to filter out additional PHI that was not identified by the tagger models 1302-1305. The rule-based templates may be tailored to individual sentence structures within the data records to best identify PHI data. Each Dreg filter cascade 1307, 1308 may be directed to different entity types and include multiple rule-based templates. The Dreg filters 1307, 1308 may also use pattern matching filters or similar techniques to identify PHI data. The final output 1309 is the original sentence and an associated array of tags (e.g., IOB2 format) for each word in the individual sentence, resulting in the desired masked output. Prior to the final output 1309, the system may also compile each note from the batch dataset using the sentence ID stored prior to tagging performed by tagging models 1302-1305.
[0181] The filter reg takes in an input sentence and sends the input through a phrase tagger which uses IOB or IOB2 format to mark the beginning and end of phrases in the sentence. For those terms / phrases that were not tagged, it uses a dictionary of entities, if one exists, to find the similarity of the vector representation of the untagged phrase with the vector representation of the terms in the dictionary for each entity type. This is then used to further filter entities that may have been missed in the previous step.
[0182] For example, if the name 'jayendran balakrishnan' appears in a sentence and has not been tagged as a person (false negative) or any other entity type (false positive), then the phrase is picked up in the filter cascade stage 1307 / 1308 and matched with the vector representation of the dictionary term for each entity type. If the similarity measure exceeds some threshold, the phrase is replaced with a token or token representation from the sentence. The BERT model can be used to create the vector representation of the phrase because of its ability to build words from subwords. In some embodiments, both the training model and / or the dregs filter can use associations between input words ordered by the strength of the relationship to group the associations and identify developing words or phrases that may have been inappropriately tagged as PHI. For example, the input "ECOG" may be associated with a top disease based on publicly available literature, but the system may have tagged "ECOG" as the name of a person. By considering the relationship between "ECOG" and commonly associated disease terms, the system can properly identify "ECOG" and not treat it as PHI.
[0183] The output from the cascaded leg filter stage 1308 is then used to assess the model accuracy / precision, which can be completed by manual sampling of the final output 1309 by a system operator, or using an automated process described below.
[0184] In some embodiments, tagged entities identified in the output data may be masked in various ways. For example, tagged entities may be removed, replaced with whitespace, or replaced with a placeholder that identifies the type of entity. In some embodiments, the value of the tagged entity may be changed to random information of the same type. For example, if the tagged entity is a phone number, the entity may be changed to a random (or obfuscated) phone number. This approach may obfuscate private information that the entity tagging model cannot detect. For example, if the entity tagging model detects and randomizes 9 of 10 phone numbers in a given set of records but misses the 10th, the end user of the data will not know which phone numbers are real and which are obfuscated, thereby providing a form of protection for phone numbers that the tagger did not detect.
[0185] In some embodiments, certain patient ID fields can be retained to holistically link patient data records within the operator system even after de-identification is complete. For example, patient intake ID can be retained in the corpus of masked documents if the operator wishes to retroactively pull related patient files even though the information is publicly available after masking. Patient ID can also take other forms such as the patient's date of birth, address, hospital room number, phone number, or email address. Doing so allows the operator to retain useful medical and biological signals within the data to maximize the utility of the de-identified data even after each individual record instance has been masked independently. Patient and other identifiers can provide the link between these individual records to achieve such a goal.
[0186] If the patient ID is retained in the data record instance, some embodiments may include authorization for covered entities, such as individuals or designated members of an organization, to access encrypted versions of patient records with the patient ID. For example, covered entities may have specific authentication information, such as an encryption key, password, or multi-step authentication method, to access versions of patient data records with a common patient identifier. In other embodiments, the patient ID may be retained in all documents after the masking procedure, but a database correlating the patient ID to the complete set of medical records for that patient is stored in the encrypted data file (also referred to as "linking" the patient data). The encryption method may include AES-256 encryption. The data records may also be encrypted using a salt, or a random data sequence with an additional one-way function may be used to hash the data. Doing so prevents data from being compromised by brute force attacks using an efficient computing system to perform repeated estimation of the encryption hash. In some embodiments, the secure hash is a one-way trace where the system associates the hash with the patient ID, and the input ID and the output hash ID need to be stored separately in separate data repositories or storage locations to reconstruct the patient data record. This may include SHA-512 hashing, among others. In these embodiments, the covered entity may control access to the encryption key, the salt, and any output maps, if they are created.
[0187] In other embodiments, the system can be used to mask PHI contained in images such as x-ray or opto-homology images where the PHI is embedded as text in the image itself. In such embodiments, the system can use a convolutional neural network to automatically detect regions in the image based on the operator's preferred program or application for which the image is created. In some embodiments, the system can automatically detect and extract text from identified regions in the image and then map that text to replaceable anonymized text from a database similar to the description above for each sentence. In other embodiments, the system can use multi-instance learning (MIL), which consists of a convolutional neural network trained to take whole slide image level labels and make predictions at the patch level (e.g., sub-regions of the image identified as containing PHI). A representative patch size can be based on the two-dimensional pixel size of the image, and max pooling or recurrent neural networks (RNNs) can be used for patch level predictions to predict classes at a per-slide level rather than pixel level annotations. In another embodiment, the system can use image similarity methods to identify and mask PHI found in a particular image. To train such a model, a system operator can select a particular sub-region of a training image, set a resolution value, and then ask the system to find all similar patches from the database at the same resolution value. For example, a classifier network based on the triplet loss concept can first be built to efficiently learn fine-grained features (as vectors) from each image at all resolutions. A database of such image-derived feature vectors is then created. Treating the distinct magnification / resolution levels of an image as distinct images themselves, the system can then use modern high-performance high-dimensional similarity search methods (e.g., Siamese neural networks, among others) to find the most similar patches to the patch used by the user in the query.
[0188] FIG. 14 is a simplified diagram illustrating a testing suite diagnostic flow method for masking effectiveness, according to some embodiments. The testing suite method 1400, similar to that described in FIG. 12, allows an operator to both train new models in a test environment or continually honing the parameters of individual tagging models previously deployed in a live system to improve the precision, recall, and F-score levels of a particular entity model. For new models, the system operator can introduce a labeled dataset 1401 to the system in the training phase, which includes tags associated with particular entities in the dataset. This labeled dataset may be manually identified by the operator or may be a product of previously labeled datasets generated by the model taggers 1302-1305 described in FIG. 13. In step 1402, during the training phase of the testing suite, the labeled dataset is trained on an initial tagger model V. O Initial tagger model V to train 1403 O In step 1403, model V O 1403 analyzes a subset of the unlabeled dataset 1409 and models V O 1403 generates an output of a labeled dataset having the set of tokens it identified in the unlabeled dataset. The output is then evaluated in step 1405 to validate the tagger model type (e.g., which entity type / types it is tailored to) and to identify errors in the tokens tagged from the labeled dataset. The testing suite is O Determine the precision, recall, and F-score levels of the 1403 output and measure all three scores against thresholds determined by the system operator.
[0189] If the precision, recall, and F-score levels do not meet the required thresholds in step 1405, the testing suite system selects a different or updated labeled dataset in step 1406 and tests the updated labeled dataset on model V in step 1407. O Reintroduced in 1403, the model incorporates new characters, Model V i 1408. The updated labeled dataset can be based on the errors perceived in step 1404, such that the model iteratively improves its ability to recognize particular entity types. Following retraining, model V i 1408 shows the performance of model V in the updated labeled dataset. i 1408 tags the updated labeled dataset with the new set of tokens identified, and the output is used to generate model V in steps 1404 and 1405. O 1403. In some embodiments, Model V i 1408 can be validated against a portion of an unlabeled dataset 1409 taken from a corpus of reported data such as clinical notes. This process is repeated iteratively until the retrained model meets the required thresholds for precision, recall, and F-score in step 1405. Once complete, the validated model V N 1410 can finally be generated, where N represents the number of iterations in the training phase required to complete the model before reaching a suitable threshold accuracy in step 1405.
[0190] After confirmation, Model V N 1410 may be deployed in a live system and used to tag data received from a larger corpus of unlabeled datasets 1409 in step 1411. The processing of the data in step 1411 is the same as described above with respect to Figure 3, resulting in a final anonymized dataset in step 1412.
[0191] It should be understood that the foregoing embodiments are illustrative and that various alternatives are possible. In some embodiments, given a set of words (or multi-word terms) corresponding to a particular entity type, one or more consecutive phrases are extracted from a text document or corpus that contain the words in the set. For example, consider a set of words that correspond to a type of tissue. That is, the set may illustratively include words such as "lung," "liver," and "brain." The set may also include terms such as "left," "right," and "rear," which are often used as additional modifiers in the context of tissues. Conversely, the set of words may omit words and phrases that may represent PHI or other sensitive information. Given a particular text fragment (e.g., "Mr. Smith visited MGH today for surgery on his left lung"), phrases composed of words found in the set of words that correspond to the entity (e.g., "left lung") are extracted. Notably, in the foregoing example, the phrase "left lung" is extracted even though the set of words does not directly contain this phrase. Rather, the set includes the constituent terms "left" and "lung." In this way, useful information can be extracted from the text while patient-identifiable content (e.g., the name "Mr. Smith" in the example above) is not extracted. This approach can be easily extended to a wide variety of biomedical entities, such as diseases, drugs, etc.
[0192] In some embodiments, named entity recognition may be performed in an unsupervised manner without using labeled training sentences. For example, named entity recognition may be performed using a BERT model trained on a corpus using a masked language model objective. An illustrative example of this technique is described in more detail in the article ´´Unsupervised NER using BERT,´´ Towards Data Science, Feb. 28, 2020 (https: / / towardsdatascience.com / unsupervised-ner-using-bert-2d7af5f90b8a), which is incorporated herein by reference in its entirety.
[0193] In addition to the above challenges associated with securely processing and receiving information such as personal health care data, it can be difficult to retrieve information responsive to a search query from a repository of information. Information can be stored in a variety of ways, such as a collection of documents, a database (e.g., structured, semi-structured, or unstructured database), a knowledge graph, etc. Some information retrieval tools are designed to retrieve documents or other records from a repository based on a query term. For example, various publicly available search engines (e.g., Google or PubMed) are configured to identify web pages, journal articles, books, etc. that are relevant to user-provided query terms.
[0194] However, in some scenarios, identifying relevant records in a repository may not yield an appropriate response to a user's query. For example, when a user is attempting to make a decision or inference based on aggregated information (e.g., to determine whether a particular drug has been shown to be effective against a particular disease based on a collection of studies conducted on that drug), the search results including a list of relevant documents may not clearly and directly respond to the user's query. To illustrate, in the above example of a user seeking an answer whether a particular drug has been shown to be effective against a particular disease, the user may be tasked with the tedious task of browsing each relevant document (e.g., each document that mentions the drug and the disease) to determine which documents actually respond to the query. Subsequent manual analysis of the responsive documents may then be performed to obtain an answer to the initial question posed by the user. This process of manually going through the search results to piece together the desired information and make the appropriate decision or inference may be tedious and time-consuming.
[0195] It is therefore desirable to develop improved techniques for retrieving information responsive to a query, particularly techniques that can be applied to information stored in disparate formats.
[0196] 15 is a simplified diagram of a system 1500 for information retrieval according to some embodiments. The system 1500 includes a number of devices 1501-1509 communicatively coupled via a network 1510. The devices 1501-1509 generally include computer devices or systems, such as personal computers, mobile devices, servers, etc. The network 1510 may include one or more local area networks (LANs), wide area networks (WANs), wired networks, wireless networks, the Internet, etc. Illustratively, the devices 1501-1509 may communicate over the network 1510 using the TCP / IP protocol or other suitable network protocols.
[0197] One or more of the devices 1501-1509 may store digital documents 1521-1529 and / or access the digital documents 1521-1529 via the network 1510. For example, as shown in FIG. 15, the devices 1501, 1502, and 1509 store digital documents 1521, 1522, and 1529, respectively, and the device 1503 accesses the digital documents 1521-1529 via the network 1510. The digital documents 1521-1529 may include web pages, digital files, digital images (including one or more frames of a video or animation), and the like. Illustratively, the digital documents 1521-1529 may be formatted as HTML / CSS documents, PDF documents, word processing documents (e.g., Word documents), text documents, slideshow presentations (e.g., PowerPoint presentations), image files (e.g., JPEG, PNG, or TIFF images), and the like. The digital documents 1521-1529 may be heterogeneous (e.g., of different formats or file types) or homogenous (e.g., of the same format or file type) and may contain structured or unstructured data. Generally, the digital documents 1521-1529 contain textual data that may include alphanumeric characters, symbols, pictorial characters, pictorial representations of text, and the like. For efficient storage and / or transmission over the network 1510, the documents 1521-1529 may be compressed prior to or during transmission over the network 1510. Security measures such as encryption, authentication (including multi-factor authentication), SSL, HTTPS, and other security technologies may also be applied.
[0198] According to some embodiments, device 1503 can access one or more of digital documents 1521-1529 by downloading digital documents 1521-1529 from devices 1501, 1502, and 1509. Additionally, one or more of devices 1501, 1502, or 1509 can upload digital documents 1521-1529 to device 1503. Digital documents 1521-1529 may be updated at various times. Thus, device 1503 can access digital documents 1521-1529 multiple times at various intervals (e.g., periodically) to obtain the latest copies.
[0199] In some embodiments consistent with FIGS. 1-14, one or more of devices 1501-1509 may correspond to or include a secure data store, such as secure data stores 810, 901, and 1009. For example, one or more of digital documents 1521-1529 may include personal health care data and thus may include information that is masked, for example, to comply with privacy regulations. Masking may be performed by an information masking system, such as information masking system 1102, using techniques consistent with FIGS. 1-14. In some embodiments, the information masking system may be included as part of system 1500, may be a separate system, or may be distributed across multiple systems. Masking may be performed before, during, or after being accessed by device 1503.
[0200] As shown in FIG. 15, the device 1503 includes a processor 1530 (e.g., one or more hardware processors) coupled to a memory 1540 (e.g., one or more non-transitory memories). The memory 1540 stores instructions and / or data corresponding to an information retrieval program 1550. The information retrieval program 1550, when executed by the processor 1530, causes the processor 1530 to perform operations related to retrieving information in response to a query. In some embodiments, a query may be provided as input (e.g., a query string) by a user of the device 1504 and transmitted to the device 1503 via the network 1510. A response to the query determined using the information retrieval program 1550 may then be delivered to the device 1504 via the network 1510 and rendered to the user via a user interface. An exemplary embodiment of the data flow implemented by the information retrieval program 1550 is described in further detail below with reference to FIGS. 16-17.
[0201] During execution of the information acquisition program 1550, the processor 1530 may execute one or more neural network models 1560. The neural network models 1560 are trained to make predictions (e.g., inferences) based on input data. The neural network models 1560 include configurations 1562 that define multiple layers of the neural network model 1560 and relationships between the layers. Illustrative examples of layers include an input layer, an output layer, a convolutional layer, a densely connected layer, a merge layer, and the like. In some embodiments, the neural network model 1560 may be configured as a deep neural network with at least one hidden layer between the input layer and the output layer. The connections between the layers may include feedforward connections or recurrent connections.
[0202] One or more layers of the neural network model 1560 are associated with trained model parameters 1564. The trained model parameters 1564 include a set of parameters (e.g., weights and bias parameters of an artificial neuron) that have been learned according to a machine learning process. During the machine learning process, labeled training data is provided as input to the neural network model 1560, and the values of the trained model parameters 1564 are iteratively adjusted until predictions generated by the neural network 1560 match the corresponding labels with a desired level of accuracy.
[0203] To improve performance, the processor 1530 may execute the neural network model 1560 using a graphics processing unit, a tensor processing unit, an application specific integrated circuit, or the like.
[0204] The device 1503 can be communicatively coupled to a database 1570 or another suitable repository of digital information. For example, the database 1570 may be configured as a structured database having content organized according to a schema or other logical relationships (e.g., a relational database). In some embodiments, the database 1570 may be configured as a non-relational database, a semi-structured database, an unstructured database, a key-value store, or the like. While the database 1570 is shown as being directly coupled to the device 1503, it should be understood that a variety of other configurations are possible. For example, the database 1570 may be stored in the memory 1540 or accessed via the network 1510.
[0205] FIG. 16 is a simplified diagram of a data flow 1600 for information retrieval for some embodiments. In some embodiments consistent with FIG. 15, the data flow 1600 can be implemented using various components and / or features of the system 1500, as further described below. In some embodiments consistent with FIGS. 1-14, the data flow 1600 can be configured to retrieve information including or based on an individual's health care data. Thus, the data flow 1600 can be implemented using techniques consistent with FIGS. 1-14. For example, the data flow 1600 can be implemented in one or more containers, and the input information can be masked as described with reference to FIGS. 1-14.
[0206] As shown in FIG. 16, the application 1602 is communicatively coupled to the information retrieval system 1604. In some embodiments consistent with FIG. 15, the information retrieval system 1604 can correspond to the information retrieval program 1550. The application 1602 generally corresponds to a program configured to provide queries to the information retrieval system 1604 and process responses from the information retrieval program 1604. For example, the application 1602 can correspond to a web application or a mobile application that receives queries from a user, transmits the queries to the information retrieval system 1604 (e.g., via an API), and receives and renders corresponding responses. In some embodiments consistent with FIG. 15, the application 1602 can include a front-end component that operates on the device 1504, a back-end component that operates on the device 1503, and the like. In some embodiments, the information retrieval system 1604 can provide a standardized API or other interface that allows the information retrieval system 1604 to communicate with various types or versions of applications. In some embodiments, the information retrieval system 1604 can provide a user interface that allows a user to bypass the application 1602 and provide a query directly to the information retrieval system 1604 .
[0207] The information retrieval system 1604 includes multiple modules 1610-1650 that are used to satisfy user requests. In some embodiments, the modules 1610-1650 may each be components of an integrated program. In some embodiments, the modules 1610-1650 may be independent programs (e.g., microservices) that operate independently of each other and communicate with each other via a standard interface. The information retrieval system 1604 may be distributed. To increase performance and parallelism, the information retrieval system 1604 may include multiple instances of the modules 1610-1650.
[0208] A controller module 1610 of the information retrieval system 1604 receives and processes queries (and / or other types of requests) from the application 1602. The controller module 1610 is coupled to one or more other modules (e.g., modules 1620-1650) of the information retrieval system 1604 and coordinates among the other modules to fulfill the requests. In some embodiments, the process of fulfilling a request may vary depending on the type of request.
[0209] The knowledge base module 1620 of the information retrieval system 1604 provides access to a knowledge base that identifies various types of relationships between information. For example, the knowledge base module 1620 may store a collection of terms that are known to share a given relationship (e.g., these terms may be synonyms of one another). In some embodiments, the information and their associated relationships may be stored and searched using a knowledge graph or other suitable data storage technology.
[0210] In general, it is desirable for the knowledge base stored by the knowledge base module 1620 to be comprehensive with respect to the subject of interest. A comprehensive set of relationships may be identified and aggregated using various techniques. In some embodiments, the knowledge base may be built by starting with an existing knowledge base, such as the Unified Medical Language System (UMLS) in the case of the biomedical domain, and then aggregating other sources of domain-specific information into it. For example, data may be aggregated from external databases (e.g., publicly available databases and proprietary or customer-specific databases). Relationships between aggregated data may be identified using neural network models (e.g., neural network model 1560) or other information retrieval methods configured to search for relationships from the aggregated data.
[0211] The search module 1630 of the information retrieval system 1604 provides a search engine that can search a corpus of text (e.g., a collection of documents, database records, and / or the like) based on a query term. The corpus can include, for example, a public literature corpus, a clinical data corpus (e.g., physician notes and other types of patient health records), or both. The corpus can include structured or unstructured data. In some embodiments, the structured data can include one or more structured data fields of a patient health record, such as the name of a medication administered. Such information can be expected to be more reliable than unstructured entries in a patient health record, for example, because such information may be used for insurance purposes or various other formal or legal functions. Thus, using structured data fields in a patient health record can improve reliability and, in embodiments where at least a subset of the corpus is labeled to provide training (or test) data for a machine learning model, can reduce the amount of data that is manually tagged. This can facilitate rapid and accurate development and training of machine learning models based on the corpus, such as sentiment classifiers.
[0212] One challenge associated with the use of clinical data corpora, or other corpora that contain patient data, is the privacy concerns mentioned above. Thus, one or more of the techniques described in Figures 1-14 may be used to provide a secure processing environment to de-identify or mask sensitive patient data. For example, the entity tagging process of Figure 13 may be applied to the corpus (or a portion of the corpus that contains sensitive information) to mask the sensitive information. In some embodiments, searches of the corpus may be suppressed to exclude patients with rare conditions that make it easier to identify these patients based solely on the patient's condition. For example, if a patient is associated with a cohort that is less than a minimum threshold size (e.g., a number of patients with a similar or identical condition), the patient's record is suppressed in the corpus and the patient's record is not returned in the list of search results.
[0213] In some embodiments, the search module 1630 can identify and retrieve complete text documents or database records from the corpus determined to be relevant to the query terms. However, as previously discussed, this approach has various limitations. For example, when a user is attempting to make a decision or inference based on aggregated information (e.g., to determine whether a particular drug has been shown to be effective against a particular disease based on a collection of studies conducted on that drug), search results that simply include a list of relevant documents may not clearly and directly respond to the user's query. Thus, this approach may require tedious and time-consuming efforts on the part of the user to inspect each of the search results to piece together the desired information and make the appropriate decision or inference.
[0214] To address these limitations, the search module 1630 may be configured to return a list of text fragments that match the query terms, rather than (or in addition to) a list of matching documents or records. This fragment-based search approach results in localized portions of documents (e.g., a few words, sentences, or paragraphs) that contain information of interest, e.g., information that is directly relevant to the decision or inference the user is trying to make. In this way, if a document is not generally relevant to the user's query but contains a responsive fragment, the responsive text fragment is returned in the search results even if the entire document is not relevant enough to be included in the list of matching documents. Conversely, if a document strongly matches the query terms but does not contain any fragments that are directly responsive to the query, the document may not generate any fragments in the list of matching text fragments. Furthermore, if a given document or record contains more than one matching text fragment, a single document or record may result in multiple entries in the list of returned text fragments. As a result, the fragment-based search approach may improve the overall relevance and completeness of the search results. An exemplary embodiment of the fragment search module is described in further detail below with reference to FIG. 17.
[0215] The statistical analysis module 1640 of the information retrieval system 1604 provides tools for statistically analyzing information from other modules of the information retrieval system 1604, such as the list of search results provided by the search module 1630. A wide range of statistical analyses can be performed depending on factors such as the type of request received from a user. For example, the statistical analysis module 1640 can calculate the statistical significance of various entities and terms that appear in the list of search results from the search module 1630 (e.g., counting the number of occurrences of a given term in the search results, counting the number of co-occurrences of a term with other terms, a score or ranking to compare the significance of a term to other terms, etc.). In performing the statistical analysis, the statistical analysis module 1640 can communicate with and retrieve information from other modules of the information retrieval system 1604. Examples of statistical significance metrics that may be calculated using the statistical analysis module 1640 are described in more detail below with reference to FIG. 18.
[0216] The machine learning module 1650 of the information retrieval system 1604 provides tools for applying machine learning models (e.g., neural network model 1560) to information from other modules of the information retrieval system 1604, such as the list of search results provided by the search module 1630. In some embodiments, the machine learning module 1650 can include a natural language processing (NLP) pipeline for parsing the text of the search results. The NLP pipeline can include NLP primitives (e.g., tokenization, embeddings, named entity recognition, etc.). Additionally, the NLP pipeline can include pre-trained rule-based or machine learning models, including, but not limited to, negation expression finders, sentiment classifiers, entity extractors, etc. Further statistical analysis can be performed on the output of the NLP pipeline to identify relationships and associations between results.
[0217] 17 is a simplified diagram of a data flow 1700 for fragment searching, according to some embodiments. In some embodiments consistent with FIG. 16, the data flow 1700 can be implemented using the search module 1630.
[0218] Corpus 1710 corresponds to a collection of text, such as one or more text documents or a collection of database records. For example, corpus 1710 may correspond to documents 1521-1529 received from devices 1501-1509 and / or may include documents stored locally by device 1503. In some embodiments, corpus 1710 may be stored in memory 1540, database 1570, on-chip memory (e.g., cache), etc. The documents in corpus 1710 may be stored in their native format (e.g., the format received from devices 1501-1509), or various pre-processing operations may be performed on the received documents to modify the content or format of the documents. For example, non-text data (e.g., image data) and / or metadata may be removed from the documents, text data may be extracted from the documents (e.g., by optical character recognition), etc. The format of the documents may be converted to a unified format, or data from the documents may be used to populate a database (e.g., database 1570). In some embodiments, the corpus 1710 may be dynamically updated.
[0219] The content of corpus 1710 may relate to a general subject (e.g., a collection of news articles or Wikipedia entries covering a variety of topics) or a domain-specific subject. Illustratively, corpus 1710 may relate to a biomedical subject. For example, corpus 1710 may include text from journal articles, reference textbooks, patent applications, websites, etc. related to the biomedical field. Corpus 1710 may be drawn from a wide variety of sources, such as molecular databases, scientific literature, insurance documents, pharmaceutical company websites, news feeds, regulatory information (clinical trials, SEC filings, IP), etc. In some embodiments consistent with FIGS. 1-15, corpus 1710 may include private data (e.g., health care records) that has been processed and stored according to the techniques described above.
[0220] As shown in FIG. 17, corpus 1710 is divided into multiple subsets. Each subset may be provided to a respective one of shards 1721-1729. In some embodiments, dividing corpus 1710 among shards 1721-1729 may facilitate processing of corpus 1710 using distributed computing resources (e.g., using distributed processors and / or storage systems). For example, one or more of shards 1721-1729 may be located on different machines within a data center and / or in different data centers. In some embodiments, each of the subsets of corpus 1710 may be approximately equal in size, e.g., they may occupy a similar total disk space or they may contain a similar number of documents.
[0221] Each of the shards 1721-1729 includes a corresponding inverted list 1731-1739. Each of the inverted lists 1731-1739 identifies, for each token (e.g., word) in the corresponding subset of the corpus 1710, a list of occurrences of the token in the subset of the corpus 1710. For example, the inverted lists 1731-1739 may identify the location of each occurrence of the token in the subset of the corpus 1710 (e.g., a location in a contiguous sequence of text corresponding to the concatenation of each document in the subset of the corpus 1710). In some embodiments, the inverted lists 1731-1739 may identify a document identifier corresponding to the document in which the token occurs, an offset within the document for the occurrence of the token, etc. In some embodiments, each entry in the inverted lists 1731-1739 may include multiple location identifiers for each occurrence of each token. The multiple identifiers may be stored in a suitable data structure, such as a triplet identifying (1) an array index of the occurrence of the token within a contiguous array of concatenated documents, (2) a document identifier of the occurrence, and (3) an offset to the occurrence within the identified document.
[0222] In some embodiments, the inverted lists 1731-1739 may be ordered to facilitate efficient searching of tokens. For example, the inverted lists 1731-1739 may be ordered based on the ascending order of the position of each token within an array of text corresponding to a subset of the corpus 1710. The inverted lists 1731-1739 may be indexed using an integer value associated with each token such that, given an integer corresponding to a token, a data structure including the inverted lists 1731-1739 efficiently returns a corresponding list of occurrences of the token.
[0223] Each of the shards 1721-1729 further includes a corresponding fragment search module 1741-1749. Each of the fragment search modules 1741-1749 is configured to receive a fragment query 1752 and generate a response to the fragment query by accessing data from the inverted lists 1731-1739. The fragment query 1752 may be distributed to the fragment search modules 1741-1749 using a search aggregator 1754. The search aggregator 1754 may then receive and aggregate search results generated by the fragment search modules 1741-1749. The search results may then be used for subsequent analysis 1756. For example, in some embodiments consistent with FIG. 16 , the analysis 1756 may be performed using one or more of the knowledge base 1620, the statistical analysis module 1640, or the machine learning module 1650.
[0224] In some embodiments, the fragment query 1752 includes one or more query parameters indicating desired search criteria for the fragment search. For example, the fragment query 1752 may include query parameters (e.g., a combination of one or more tokens, words, or multi-word phrases to be searched for, optionally combined by Boolean operators such as AND, OR, and NOT). The fragment query 1752 may also include a size parameter indicating a desired size of the text fragments returned by the fragment search modules 1741-1749. The fragment query 1752 may further include a document parameter specifying one or more criteria that a document should satisfy as a prerequisite for a fragment within the document to be included in the search results. For example, the document parameter may include criteria by which a qualifying document includes a specified single or multiple words or phrases (or a logical combination thereof), or criteria by which a qualifying document is associated with document metadata (e.g., author name, publication year, document source, document type, etc.). Consistent with such an embodiment, the fragment query 352 may include:<FragQuery,FragmentSize,DocumentSpecifier> where FragQuery represents the query parameters, FragmentSize represents the size parameters, and DocumentSpecifier represents the eligibility criteria for documents to be included in the search results.
[0225] Figure 18 is a simplified diagram of a method 1800 for retrieving information in response to a query, according to some embodiments. According to some embodiments consistent with Figures 15-17, the method 1800 may be performed by the processor 1530 during execution of the information retrieval program 1550. For example, the method 1800 may be performed using the controller module 1610.
[0226] In process 1810, a query is received by a controller (e.g., controller module 1610). The query may include one or more tokens (e.g., words, sentences, etc.), Boolean operators, constraints, filters, and various other parameters. In some embodiments, the query may be included in a request sent by an application, such as application 1602. Consistent with such embodiments, the request may be received via an API. In response to receiving the request, the controller may process and respond to the request by collecting information responsive to the query according to one or more of the following processes 1820-1850. In a distributed computing environment, the information may be collected via communications sent between various modules located at different network nodes.
[0227] In process 1820, the query is expanded to include one or more related terms. The related terms may be searched from a knowledge base, such as the knowledge base of the knowledge base module 1620. In some embodiments, the related terms may share a predetermined relationship with the terms in the original query (e.g., the terms may be synonyms of each other). In this manner, searching for related terms may broaden the query to include terms that have a similar meaning to the terms provided by the user.
[0228] In process 1830, a list of search results is searched based on the expanded query. The list of search results includes documents or passages (or information identifying such documents or passages) that match the query. The list of search results can be searched via a search engine or search module, such as search module 1630. In some embodiments, the search results can be searched from a corpus of text (e.g., a collection of documents, database records, and / or the like) based on query terms provided by the controller. For example, the search results can correspond to the results of a fragment-based search. In this approach, the search results include fragments (e.g., several words, sentences, paragraphs, or other localized portions of a document) that contain the information of interest. An exemplary embodiment of fragment-based search is described in more detail below with reference to FIG. 19.
[0229] In some embodiments, the list of search results may be referred to as the "context" of the query and may be stored or indexed using a suitable data structure. The context includes a window of the corpus that includes the query term along with terms that appear near the matching query term in the corpus (e.g., terms that appear within a window size of n tokens of the matching query term in the corpus). The context may be binary or non-binary. In a binary context, terms in the corpus are either included in the context (e.g., if they are within n tokens of an occurrence of the query term) or omitted from the context. In a non-binary or "smooth" context, terms in the corpus may be weighted (e.g., assigned a value between 0 and 1) based on factors such as distance from the query term. For example, the weights assigned to terms in a non-binary context may decay exponentially based on the term's distance from the query term.
[0230] In process 1840, one or more entities are optionally identified within the list of search results. For example, in the context of biomedical applications, illustrative examples of entities may include names of drugs, diseases, genes, pharmaceutical companies, research institutes, etc. In some embodiments, the one or more entities may be identified by reference to a knowledge base, such as the knowledge base of knowledge base module 1620. For example, the knowledge base may store a set of entities such that the list of search results may be compared to the set of entities to identify entities within the list of search results. In some embodiments, natural language processing techniques such as named entity recognition may be used to accurately identify entities within the list of search results.
[0231] In process 1850, statistical analysis is provided for one or more terms or entities in the list of search results. The statistical analysis may be performed by a statistical analysis module, such as statistical analysis module 1640, a machine learning module, such as machine learning module 1650, or a combination of modules. In some embodiments, the statistical analysis may include calculating a relationship score, a significance score, or both, for each term or entity of interest. Such statistical analysis may be based on counting the number of occurrences of a given term in the search results, counting the number of co-occurrences of the term with other terms, a score or ranking comparing the significance of the term relative to other terms, etc.
[0232] In some embodiments, the significance score may be measured by calculating a statistical significance metric that captures the relevance of a given term (e.g., a token, an m-word phrase, an entity, etc.) to a user query. By way of illustration, the statistical significance metric may be calculated using the following formula when m is 1 (i.e., the phrase is a single word):
[0233]
number
[0234] where k is the number of occurrences of the phrase in the list of search results (e.g., a list of text fragments returned by the search module 1630 in response to a query), n is the total number of words in the list of search results, and p is the ratio N(w) / N, where N(w) is the number of occurrences of the phrase in the corpus and N is the total number of words in the corpus.
[0235] If m is greater than 1 (ie, the phrase is a multiple word phrase), the following formula can be used:
number
[0236] In some embodiments where the list of search results includes a non-binary context, the statistical significance metric may be adjusted based on a weight assigned to each appearance of an entity in the list of search results. For example, the value of k in the above formula may correspond to a weighted count of the number of occurrences of an entity in the search results.
[0237] It should be understood that the above statistical analysis provided in process 1850 is exemplary and various alternatives are possible. For example, the statistical analysis module 1640 may determine a relevance score EMS(Q,t) and a statistical significance metric pVal(Q,t). These values may capture the relevance of an m-word phrase t to a user query Q.
[0238] In process 1860, one or more enriched sets are generated, optionally based on a statistical analysis of one or more entities. In some embodiments, the enriched set may include the top entities identified in process 1850 (e.g., entities with the highest significance or relevance scores). For example, in a biomedical context, the one or more enriched sets may include a set of drugs, a set of diseases, and a set of genes. For example, the enriched set of drugs may identify the n drugs that are determined to be most important or relevant to a user's query.
[0239] In process 1870, a response to the query is provided that includes at least one of a list of search results or one or more enrichment sets. In some embodiments, the response may be sent to an application, such as application 1602, and displayed to the user. The response may provide interactive user interface elements to the user to allow the user to interact with the search results or enrichment set. For example, for items in the enrichment set, the user may hover over the item to see statistical analysis associated with the item (e.g., significance score, relevance score, etc.).
[0240] 19 is a simplified diagram of a method 1900 for performing a fragment search, according to some embodiments. In some embodiments consistent with FIGS. 15-18, method 1900 may be performed by a search module, such as search module 1630. Fragment search results generated using method 1900 may then be searched by a controller in process 1830 of method 1800.
[0241] In process 1910, a corpus, such as corpus 1710, is divided into multiple subsets. The corpus includes multiple text documents or database records. In some embodiments, each of the subsets of the corpus may be approximately equal in size, e.g., they may occupy a similar total disk space or they may contain a similar number of documents.
[0242] In process 1920, each of the multiple subsets is distributed into a corresponding multiple fragments, such as shards 1721-1729. Each shard is responsible for processing a portion of the corpus in a distributed manner. In some embodiments, dividing the corpus among the shards can facilitate processing of the corpus using distributed computing resources (e.g., using distributed processors and / or storage systems). For example, one or more of the shards may be located on different machines within a data center and / or in different data centers.
[0243] In process 1930, for each shard, one or more documents in a respective subset of the corpus are concatenated to form a text sequence. For example, the text sequence may be contiguous with respect to one or more documents.
[0244] In process 1940, for each shard, an inverted list is generated. The inverted list includes an entry for each token (e.g., vocabulary word) in the corpus. Each entry includes a list of occurrences of the token in the corpus. For example, the list of occurrences may identify the location of each occurrence of the token in the array formed in process 1930. In some embodiments, the inverted list may include a document identifier corresponding to the document in which the token occurs, an offset within the document to the occurrence of the token, etc. In some embodiments, each entry in the inverted list may include multiple location identifiers for each occurrence of each token. The multiple identifiers may be stored in a suitable data structure, such as a triplet that identifies (1) an array index of the occurrence of the token in a contiguous array of concatenated documents, (2) a document identifier of the occurrence, and (3) an offset to the occurrence in the identified document.
[0245] The inverted list may be ordered to facilitate efficient searching of tokens. For example, the inverted list may be ordered based on the ascending position of each token within the array of text. The inverted list may be indexed using an integer value associated with each token such that, given an integer corresponding to a token, a data structure containing the inverted list efficiently returns a corresponding list of occurrences of the token.
[0246] In process 1950, a fragment query, such as fragment query 1752, is received by a search aggregator, such as search aggregator 1754. The fragment query includes one or more query parameters indicating desired search criteria for the fragment search. For example, the fragment query may include query parameters (e.g., a combination of one or more tokens, words, or multi-word phrases to be searched for, optionally joined by Boolean operators such as AND, OR, and NOT). The fragment query may also include a size parameter indicating a desired size of the text fragment in the search results. The fragment query may further include a document parameter specifying one or more criteria that a document should satisfy as a prerequisite for a fragment within the document to be included in the search results. For example, the document parameter may include criteria by which a qualifying document includes a specified single or multiple words or phrases (or a logical combination thereof), or criteria by which a qualifying document is associated with document metadata (e.g., author name, publication year, document source, document type, etc.).
[0247] In process 1960, the fragment query is distributed to multiple shards. Upon receiving the fragment query, each of the multiple shards performs a lookup against its respective inverted list to identify matching fragments and generate a set of fragment search results. In some embodiments, search criteria included in the fragment query (e.g., restrictions on eligible documents to be included in the search) may be applied during the lookup.
[0248] In process 1970, the set of fragment search results from multiple shards are aggregated by a search aggregator. For example, the search results may be compiled, concatenated, sorted, ranked, etc. Once the search results are aggregated, they may be provided to a controller or another module for further analysis or returned to a user.
[0249] 20A and 20B are screenshots of a graphical interface 2000 of an information retrieval system, such as information retrieval system 1604, according to some embodiments. In some embodiments consistent with FIGS. 15-19, the graphical interface 2000 may be associated with an application 1602. For illustrative purposes, the application is shown as providing tools for a user to search for information in the biomedical domain.
[0250] As shown in Figure 20A, the graphical interface 2000 includes a search input field 2010 in which a user can enter or type a search term. In the illustrations of Figures 20A and 20B, the search term is a drug named "imatinib."
[0251] In response to a user entering a search term, the information retrieval system searches for information related to the search string and displays the information via a graphical user interface 2000. In embodiments consistent with FIGS. 15-19, the information can be searched for using various modules of the information retrieval system, such as the controller 1610, the knowledge base module 1620, the search module 1630, the statistical analysis module 1640, and the machine learning module 1650. For example, the graphical interface 2000 can display matching articles 2020 (or portions thereof) that match the search term. In this case, the matching articles 2020 correspond to the Wikipedia article about "imatinib."
[0252] The graphical interface 2000 may further display enriched sets 2031-2039 of entities or concepts related to the search terms. In some embodiments, the enriched sets 2031-2039 may include entities determined to be most significant for the search terms (e.g., entities with the highest statistical significance scores). As shown in FIG. 20A, the enriched sets 2031-2039 include a set of diseases related to imatinib 2031, a set of drugs and classes of drugs related to imatinib 2032, and a set of cells and tissues related to imatinib 2039.
[0253] In some embodiments, the graphical interface 2000 may display statistical and / or machine learning analyses related to one or more terms or concepts displayed in the graphical interface 2000. The analyses may be displayed by default or may be dynamically displayed when a user hovers over a particular term or concept. In some embodiments, the statistical analysis module 1640, the machine learning module 1650, or a combination thereof may be used to perform the statistical or machine learning analyses. The underlying data used in the analyses may be retrieved from the knowledge base 1620 and / or the search module 1630. For example, as shown in FIG. 20, when a user hovers over the term “imatinib mesylate” that includes various scoring metrics and occurrence / co-occurrence metrics (e.g., the number of times the term occurs in the corpus and the number of times the term co-occurs with the search term), a set of analyses 2040 is displayed.
[0254] In some embodiments, the graphical interface 2000 may provide a widget 2050 that displays additional information about the search terms in response to a user selection. As shown in FIG. 20B, the widget 2050 displays literature evidence related to the search terms (e.g., a compilation of published studies on the effectiveness of imatinib). For example, documents 2061-2069 are shown along with text fragments within documents 2061-2069 that contain the search terms or related terms. In this manner, a user of the application may efficiently determine whether imatinib is likely to be relevant or clinically effective for the purpose at hand.
[0255] FIG. 21 is a simplified diagram of a method 2100 for information retrieval according to some embodiments. According to some embodiments consistent with FIGS. 15-19, method 2100 can provide an illustrative example of how an information retrieval system, such as information retrieval system 1500, can be used to identify and analyze relationships in the biomedical domain. An illustrative objective of a user in method 2100 is to determine whether the scientific literature shows evidence of a particular relationship between a first entity (e.g., a drug, a chemical, etc.) and a second entity (e.g., a disease, a biomolecule, a gene, etc.). Examples of particular relationships include, but are not limited to, adverse event relationships, target relationships (e.g., a relationship in which a drug or chemical targets a biomolecule, gene, etc.), or modality relationships (e.g., a relationship in which a drug or chemical has a particular treatment modality). By way of illustration, in the embodiment of method 2100 described below, the first entity corresponds to a drug and the second entity corresponds to a disease. However, it should be understood that various embodiments of method 2100 can be used to analyze relationships between various other types of entities.
[0256] In process 2110, a query is received specifying each of the drugs, diseases, and relationships. In some embodiments, the drugs, diseases, and relationships can be collected from a user using a form of input in a graphical interface.
[0257] In process 2120, in response to a query, a list of text fragments that match the query (e.g., by mentioning both a drug and a disease) is obtained. In some embodiments, the list of text fragments may be searched from a corpus (e.g., corpus 1710) using a search system such as search module 1630. In some embodiments, the scope of the search may be expanded by identifying synonyms and other terms related to the query terms, for example, using knowledge base module 1620. Text fragments that match the synonyms may then be included in the search results. In some embodiments, the scope of the search may be limited by imposing constraints on the scope of the search, such as constraints on the type of documents searched (e.g., the search may be limited to documents from a particular journal published during a particular time frame).
[0258] In process 2130, each text fragment is divided into one or more sentences. In some embodiments, the text fragments may be divided using a first natural language processing or machine learning system, such as the machine learning module 1650.
[0259] In process 2140, for each text fragment, it is inferred whether a relationship holds (e.g., whether a drug and a disease have an adverse event relationship). In some embodiments, the inference may be made using a second machine learning system, such as the machine learning module 1650. For example, the second machine learning system may host a machine learning model trained to identify whether an adverse event relationship holds based on an input including a text fragment formatted as a list of sentences.
[0260] In process 2150, a metric is determined for each text fragment based on whether the inference indicates that a relationship holds. For example, the metric may include the percentage of text fragments that are inferred to indicate an adverse event relationship (or other specified relationship).
[0261] In process 2160, the results of the analysis, including the metric and one or more text fragments of the list of text fragments, are displayed. One or more text fragments may be labeled according to whether they were inferred to exhibit the specified relationship in process 2140. An exemplary embodiment of displaying the results of the analysis is described in further detail below with reference to Figures 22A and 22B.
[0262] It should be understood that Figure 21 is merely exemplary and that various other embodiments are possible. For example, the method 2100 can be used to identify relationships between other types of entities (e.g., entities other than drugs and diseases).
[0263] 22A and 22B are screenshots of a graphical interface 2200 of an information retrieval system according to some embodiments. According to some embodiments consistent with FIGS. 15-21, the graphical interface 2200 can display results generated during the method 2100. In FIG. 22A, a user seeks to determine whether the drug dasatinib causes pulmonary arterial hypertension as an adverse event. The displayed results indicate that there is overwhelming evidence that this adverse event relationship is true, since 314 of 316 text fragments in the search results were labeled as indicating an adverse effect. Meanwhile, in FIG. 22B, a user seeks to determine whether the drug imatinib may be related to leukemia as an adverse event. Here, the overwhelming evidence suggests that no such adverse relationship exists, since only 31 of 805 matching text fragments were labeled as indicating an adverse effect.
[0264] As the above disclosure suggests, health records, such as electronic health records (EHRs) and patient charts, capture a wide range of information regarding a patient's condition. Health records are often represented in an unstructured or semi-structured format, such as the text of notes written by a physician. Although humans can understand the meaning of information presented in the form of text (e.g., words, phrases, and other terms represented as sequences of alphanumeric characters, symbols, emojis, etc.), computer technology is generally unable to understand the semantic meaning of text in a human-readable format. Furthermore, a patient's condition as reflected in a patient's health record may change over time. It is therefore desirable to develop techniques for enhanced curation and temporal identification of health records.
[0265] Further background to this disclosure is provided in the article entitled “Augmented Curation of Unstructured Clinical Notes from a Massive EHR System Reveals Specific Phenotypic Signature of Impending COVID-19 Diagnosis” (hereinafter the “Augmented Curation Article”), which is attached to U.S. Provisional Patent Application No. 63 / 012,738, and is incorporated by reference herein in its entirety.
[0266] FIG. 23 is a simplified diagram of a method 2300 for enhanced management of health records, according to some embodiments. Enhanced curation of health records converts raw health records, such as electronic health records (EHRs), patient charts, etc., into a structured representation of patient phenotypes (e.g., a snapshot of the patient's symptoms, diagnoses, treatments, etc.). The structured representation can then be visualized and used as input for statistical or machine learning analysis, etc. In some embodiments, the raw health records may be de-identified to mask the patient's personal information or other information that may not be usable, for example, to comply with privacy regulations (e.g., HIPAA). Examples of such selective information masking techniques are described in more detail in U.S. Provisional Patent Application No. 62 / 865,030 and U.S. Provisional Patent Application No. 62 / 985,003 referenced above, as well as in FIGS. 1-14 of this disclosure. De-identification of health records may occur before, during, or after method 2300. In some embodiments consistent with FIGS. 1-22B, at least a portion of method 2300 may be performed using system 1500.
[0267] In process 2310, a curated set of health records is received. An exemplary embodiment of process 2310 is described, for example, in the "Methods" section of the Augmented Curation paper referenced above. For example, the curated set of health records can correspond to manually curated health records. Curating the raw (or de-identified) health records can include identifying and grouping related words and phrases, such as synonyms of specific symptoms, diseases, medications, etc., examples of which are described in the Augmented Curation paper referenced above. For example, terms such as "SOB," "shortness of breath," and "dyspnea," among others, can each be identified as corresponding to the symptom entity "shortness of breath" during curation. A given occurrence of an entity in the health record can be further associated with a sentiment, e.g., positive / negative sentiment that identifies the presence or absence of a symptom, the efficacy or ineffectiveness of a medication, etc. In this way, the curated health record can provide a structured representation of the patient's phenotype. Curation may be performed by a physician or other individual with expertise or training in interpreting raw health data. The size of the curated set of health records may be small compared to those typically used to train neural network models, thus achieving the desired accuracy with less labor-intensive and time-consuming curation. For example, a curated set of health records may correspond to data from 100 patients' charts (or another number of records sufficient to capture the various words and phrases used to communicate a given symptom, disease, or other entity), whereas a typical neural network model may be trained using thousands of curated records.
[0268] In process 2320, a neural network is trained using the supervised set of health records. An exemplary embodiment of process 2320 is described, for example, in the "Methods" section of the Augmented Curation paper referenced above. For example, the neural network may correspond to a BERT-based neural network. In some embodiments, the neural network may have been previously trained using a corpus of health data that may be larger than the supervised set of health records received in process 2310. The neural network may correspond to a neural network classifier that extracts entities (e.g., symptoms, diseases, medications, etc.) contained in a given token and classifies them according to positive / negative sentiment. The sentiment may be determined based on the surrounding idiom, for example, using natural language processing (NLP) techniques. For example, the neural network may detect that the phrases "patient presented with shortness of breath" and "negative for dyspnea" each contain the symptom entity "shortness of breath" but have different sentiments (the first phrase indicates the presence of the symptom and the latter indicates the absence of the symptom). In some embodiments, the supervised set of health records may include entities in addition to those in the corpus used to train the neural network. Thus, the supervised set of health data can extend the set of entities that the neural network can recognize while leveraging the accuracy in performing sentiment analysis provided by the pre-trained neural network.
[0269] In some embodiments, the neural network may achieve a particular performance metric as a result of training during process 2320. For example, the performance metric may correspond to the accuracy of the neural network and may be measured using testing data, such as a portion of a supervised set of health records that is reserved for testing purposes and not used for training. Due to the limited size of the supervised set of health records compared to a typical training set for a neural network, the performance metric that the neural network achieves may be limited accordingly.
[0270] In process 2330, an unmanaged set of health records is received. An exemplary embodiment of process 2330 is described, for example, in the "Methods" section of the Augmented Curation paper referenced above. For example, the unmanaged set of health records may include raw electronic health records or patient charts, which may be de-identified as described above. The unmanaged set of health records may be tokenized, e.g., divided into sentences, words, or other text fragments. In some embodiments, the size of the unmanaged set of health records may be larger than the managed set of health records (e.g., may include more records, a larger overall amount of patient data, or both).
[0271] In process 2340, the unsupervised set of health records is curated using the trained neural network of process 2320. An exemplary embodiment of process 2340 is described, for example, in the "Methods" section of the Augmented Curation paper referenced above. Process 2340 can generate an augmented curated set of health records that includes the curated set of health records from processes 2310 and 2340. Curating the unsupervised set of health records can include performing entity recognition and sentiment analysis on each token of each record and generating a structured representation of the patient phenotypes captured in each record. In some embodiments, the curated health records generated in process 140 can be validated, e.g., accepted or rejected, and reclassified. Validation can include providing the curated health records to a physician or other skilled or trained individual with sufficient expertise to identify errors in the curated health records. The individual can then verify the accuracy of the curated health records or provide a corrected version of the curated health records (e.g., a version in which the erroneous entries have been reclassified by the trained individual). In general, validating the curated health records automatically to detect and address occasional inaccuracies may be performed more efficiently than manually curating the underlying raw health records. The validated curated health records can be used to iteratively retrain the neural network model or to train new neural network models as the extended curation process progresses, leading to improved curation efficiency and model accuracy. Process 2340 can be performed in one or more stages that include successively less filtering of the curated results, reflecting increasing curation accuracy as the neural network is retrained.
[0272] Thus, method 2300 generates structured representations of patient phenotypes based on raw (and / or de-identified) health records. These structured representations may be more suitable for computational analysis than raw health records. For example, the structured representations may be used to generate a structured database of health records. The data may be visualized or used as input for statistical or machine learning analysis. Examples of computational analysis that may be performed using the structured representations are described in further detail in the above-referenced U.S. Provisional Patent Application Nos. 62 / 962,146 and 62 / 985,003, the augmented curation paper, and in Figures 1-22.
[0273] In some embodiments, the structured database of health records captured according to method 2300 can be used to perform enrichment analysis. For example, enrichment analysis can include identifying early predictors associated with a disease, such as a set of symptoms or other patient characteristics that indicate the likelihood that a patient has the disease. Enrichment analysis can include characterizing a patient cohort, such as by identifying attributes that are closely associated with a particular patient cohort. The structured database can also be used for retrospective analysis of patient information, such as, for example, identifying patient subgroups using clustering algorithms. The ability to differentiate or stratify patients can be particularly useful for conditions associated with a wide range of severity or outcomes (and that can be difficult to differentiate at an early stage), such as pulmonary hypertension. In some embodiments, different treatment plans may be selected for different patient subgroups. For example, a more aggressive treatment plan may be selected for a patient subgroup associated with a worse outcome than a patient subgroup identified as associated with a lower risk. Such tailored treatment plans can result in a more efficient use of resources and a better overall quality of care.
[0274] Additionally, method 2300 can be applied in real time as new health data becomes available. Additionally, method 2300 can be applied to new concepts of interest, such as new diseases, symptoms, and treatments (e.g., those that do not frequently appear in older literature), because a relatively small amount of curated data is used in process 2310 to add new entities to the analysis. Exemplary advantages of this approach are further described in the above-referenced U.S. Provisional Patent Applications 62 / 962,433, 62 / 962,146, and 62 / 985,003, as well as the Augmented Curation paper.
[0275] 24 is a simplified diagram of a method 2400 for temporal discrimination of health data, according to some embodiments. In some embodiments consistent with FIGS. 1-22B, at least a portion of the method 2400 may be performed using the system 1500.
[0276] In process 2410, the managed set of health records is aligned in time. An exemplary embodiment of process 2410 is described, for example, in the "Methods" section of the Augmented Curation paper referenced above. For example, the managed set of health records may correspond to a managed set of health records generated using method 2300. Temporally aligning the health records may include identifying the occurrence of a predefined event in a given patient's health history, such as the date a particular diagnostic test was performed, the date a particular symptom was first observed, etc. The patient's health records are then aligned relative to the date of occurrence of the predefined event. For example, if the date of occurrence of a predefined event is designated as day 0, a patient's phenotype recorded 3 days prior to the event may be designated as day -3, and a phenotype recorded 4 days after the event may be designated as day 4. The date of the patient's phenotype may be determined based on metadata associated with the patient record (e.g., a timestamp), information contained within the given record (e.g., a physician's note indicating the date), etc. In some embodiments, the date may be determined using natural language processing techniques. For example, if a recording contains the phrase "patient began coughing three days ago," natural language processing can be used to determine that the onset date of the cough symptoms was three days prior to the date of the recording.
[0277] In process 2420, a selection of a time window is received. Exemplary embodiments of process 2420 are described, for example, in the "Methods" section of the Augmented Curation paper referenced above. For example, the time window can correspond to a small time window (e.g., 10-30 days) around the seminal plasma test (e.g., testing for COVID-19). The time window can be based on the condition being studied. For example, to study a more slowly progressing condition such as pulmonary hypertension, a larger time window (e.g., 1 year or more) around diagnosis can be used.
[0278] In process 2430, a time-aligned set of health records is visualized. For example, the number or percentage of patients with a particular phenotype (e.g., presenting a particular system) within N days of a given event can be plotted as a function of time across a time window. Such visualization can be useful for downstream decision-making by physicians or scientists. For example, FIG. 25 is a simplified diagram of a visualization 2500 generated based on a time-aligned set of health records according to some embodiments.
[0279] In process 2440, the time-aligned set of health records is compared to one or more control sets of health records. An exemplary embodiment of process 2440 is described, for example, in the "Methods" section of the Augmented Curation paper referenced above. In some embodiments, comparing the time-aligned health records to one or more control sets can be used to identify phenotypes (e.g., prominent symptoms) that are predictive of a given condition (e.g., a positive COVID test). The control sets may be determined automatically and may illustratively correspond to (1) a random set of health records of "chronically ill patients," (2) a random set of health records of a population that visits the clinic for reasons other than chronic illness, and (3) health records of patients associated with the condition being tested. As an example, when studying COVID-19, a third control set may include "flu" patients to distinguish symptoms from COVID-19 patients.
[0280] In process 2450, temporal enrichment is identified based on a set of time-aligned health records. An exemplary embodiment of process 2450 is described, for example, in the "Methods" section of the Augmented Curation paper referenced above. For example, the ratio of the number of patients with a positive test result to the number of patients with a negative test result on a given day within the time window can be used to quantify temporal enrichment. Enrichment is described in further detail in U.S. Provisional Application Nos. 62 / 962,146 and 62 / 985,003 referenced above and in Figures 1-22. For example, COVID-19 patients may be more likely to exhibit certain symptoms (e.g., cough, diarrhea, change in taste, etc.) on the day leading up to a positive test compared to control patients (e.g., influenza patients). Such findings are likely to aid in clinical decision-making or resource optimization (e.g., by prioritizing patients exhibiting certain symptoms for testing). Temporal enrichment may further include co-enrichment, which identifies combinations of factors associated with risk of a particular outcome. Such combinations can be identified using a variety of known statistical analysis methods.
[0281] The subject matter described herein can be implemented in digital electronic circuitry, or computer software, firmware, or hardware, or combinations thereof, including the structural means disclosed herein and their structural equivalents. The subject matter described herein can be implemented as one or more computer program products, such as one or more computer programs tangibly embodied in an information carrier (e.g., in a machine-readable storage device) or embodied in a propagated signal for execution by or control of the operation of a data processing device (e.g., a programmable processor, a computer, or multiple computers). Computer programs (also known as programs, software, software applications, or code) can be written in any form of programming language, including compiled or interpreted languages, and can be deployed in any form, including as stand-alone programs or as modules, components, subroutines, or other units suitable for use in a computing environment. A computer program does not necessarily correspond to a file. A program can be stored as part of a file that holds other programs or data, in a single file dedicated to the program in question, or in multiple cooperating files (e.g., files that store one or more modules, subprograms, or portions of code). A computer program can be deployed to be executed on one computer, or on multiple computers at one site, or distributed across multiple sites and interconnected by a communication network.
[0282] The processes and logic flows described herein, including the method steps of the subject matter described herein, can be performed by one or more programmable processors executing one or more computer programs that perform the functions of the subject matter described herein by manipulating input data and generating output. The processes and logic flows can also be performed by, and apparatus of the subject matter described herein can be implemented as, special purpose logic circuitry, such as, for example, an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
[0283] Processors suitable for executing computer programs include, by way of example, both general-purpose and special-purpose microprocessors, and any one or more processors of any kind of digital computer. In general, a processor receives instructions and data from a read-only memory or a random-access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. In general, a computer also includes one or more mass storage devices for storing data, such as magnetic, magneto-optical, or optical disks, and is operatively coupled to receive data from them, transfer data to them, or both. Information carriers suitable for embodying computer program instructions and data include all forms of non-volatile memory, including, by way of example, semiconductor memory devices (e.g., EPROM, EEPROM, and flash memory devices), magnetic disks (e.g., internal hard disks or removable disks), magneto-optical disks, optical disks (e.g., CD and DVD disks). The processor and memory may be supplemented by, or incorporated in, special-purpose logic circuitry.
[0284] To provide for interaction with a user, the subject matter described herein can be implemented on a computer having a display device, such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user, and a keyboard and pointing device (e.g., a mouse or trackball) by which the user can provide input to the computer. Other types of devices can also be used to provide interaction with the user. For example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback), and input from the user can be received in any form, including acoustic, speech, or tactile input.
[0285] The subject matter described herein can be implemented in a computing system that includes back-end components (e.g., data servers), middleware components (e.g., application servers), or front-end components (e.g., client computers having a graphical user interface or web browser through which a user can interact with an embodiment of the subject matter described herein), or any combination of such back-end, middleware, and front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communications network. Examples of communications networks include local area networks ("LANs") and wide area networks ("WANs"), e.g., the Internet.
[0286] Techniques for computing with personal healthcare data are disclosed. In a particular embodiment, the techniques may be realized as a method including constructing an isolated memory partition forming a secure enclave and pre-provisioning software within the secure enclave. The secure enclave is available to one or more processors to execute one or more application computing processes in isolation from one or more unauthorized computing processes executing on the one or more processors. The pre-provisioned software is configured to execute instructions of one or more application computing processes on one or more processors by receiving at least one of input data or instructions for the one or more application computing processes in an encrypted form, decrypting at least one of the input data or instructions using one or more cryptographic keys, executing the one or more application computing processes based on at least one of the decrypted input data or instructions to generate output data, generating an execution proof indicating that the one or more application computing processes operated on the received input data, encrypting the output data using the one or more cryptographic keys, and providing external access to the encrypted output data and the execution proof.
[0287] According to other aspects of this particular embodiment, the method further includes receiving input data from a data provider; receiving one or more programs for parsing the input data from an instruction provider corresponding to an entity other than the data provider; loading the input data into a secure enclave; loading the one or more programs for parsing the input data into the secure enclave; and running the one or more programs for parsing the input data using the secure enclave.
[0288] According to other aspects of this particular embodiment, the method further includes de-identifying the input data prior to loading the set of clinical data records into the secure enclave, where de-identifying the input data includes removing information identifying one or more individuals or entities from the input data; providing a decryption key associated with data or instructions of one or more application computing processes within the secure enclave to a data provider or instruction provider, respectively; and associating an input de-identification probability with the input data prior to loading the input data into the secure enclave, where the secure enclave maintains the input de-identification probability in the output data.
[0289] According to other aspects of this particular embodiment, the input data includes clinical data that is de-identified by removing personally identifiable information (PII) from the clinical data, and the input data and one or more programs for analyzing the input data are loaded into the secure enclave in the same transaction.
[0290] According to other aspects of this particular embodiment, the method further includes connecting the secure enclave to a web server executing in a second secure enclave and causing output data of the secure enclave to be displayed as a web page on a web client or web browser.
[0291] According to other aspects of this particular embodiment, input data being processed by a web server in the secure enclave is not accessible to a web browser or web client, and output data displayed via the web server is associated with a cryptographic object associated with the secure enclave.
[0292] In accordance with another aspect of this particular embodiment, the method further includes receiving input data or instructions from an administrative service, where the administrative service determines that the input data or instructions are privacy-preserving.
[0293] According to other aspects of this particular embodiment, the secure enclave is communicatively coupled to one or more other secure enclaves to form a pipeline, output data from the secure enclave is provided as input data to a subsequent secure enclave in the pipeline, the proof of execution includes an encrypted object, the encrypted object being a representation of the contents of the secure enclave, the representation of the contents of the secure enclave proving that no malicious computer program is operating on the input data, the representation of the contents of the secure enclave proving that an input de-identification probability associated with the input data was maintained by the secure enclave, and the encrypted object is linked with one or more other encrypted objects representing the contents of the one or more other secure enclaves in the pipeline.
[0294] According to other aspects of this particular embodiment, executing the one or more computing processes within the secure enclave further includes generating a unique signature of the secure enclave based on at least one of the input data or instructions, wherein the received input data and the instructions of the one or more application computing processes are inaccessible to any other secure enclaves linked to the secure enclave in the pipeline, wherein the received input data and the instructions of the one or more application computing processes are inaccessible to an operator of the pipeline, wherein the one or more unauthorized computing processes include at least one privileged software, privileged firmware, or network interface process, and wherein the input data includes a set of clinical data records.
[0295] In a particular embodiment, the technique may be realized as a method for masking information that includes receiving a text sequence, providing the text sequence to a plurality of entity tagging models, aggregating tagged entities from the text sequence identified by the plurality of entity tagging models, and masking information in the text sequence based on the aggregated tagged entities. Each of the plurality of entity tagging models is trained to tag one or more portions of the text sequence with a corresponding entity type and achieve a performance metric that exceeds a predetermined threshold.
[0296] According to other aspects of this particular embodiment, the text sequence includes at least a portion of an electronic health record, at least one of the plurality of entity tagging models is trained to tag entities of an entity type, the entity type including at least one of a personal name, an organization name, an age, a date, a time, a phone number, a pager number, a clinical identification number, an email address, an IP address, a web URL, a vehicle number, a physical address, a zip code, a social security number, or a date of birth, at least one of the plurality of entity tagging models tags the entities based on a rule-based algorithm, and at least one of the plurality of entity tagging models includes a machine learning model based on learning from the sequence of text, and masking the information in the text sequence includes replacing one or more tagged entities with a placeholder marking a type of the one or more tagged entities, and masking the information in the text sequence includes changing values of the one or more tagged entities to randomized values.
[0297] According to another aspect of this particular embodiment, the information masking method further includes whitelisting one or more portions of the text sequence, where the one or more whitelisted portions are not provided to a plurality of entity tagging models that pass the aggregated tagged entities via one or more Dreg filters, each of the one or more Dreg filters configured to filter a corresponding entity type based on at least one of a rule-based template or a pattern matching filter. The rule-based template may be created by mapping each of the one or more portions of the text sequence to a corresponding syntactic template, identifying candidate syntactic templates based on a machine learning model that infers one or more candidate syntactic templates based on the one or more portions of the text sequence, and creating the rule-based template from the candidate syntactic template by replacing each of the one or more tagged entities in the portion of the text sequence that corresponds to the candidate template with a corresponding syntactic token.
[0298] In another particular embodiment, the technology may be realized as a method including the steps of receiving a query specifying a drug, a disease, and a relationship; and, in response to the query, obtaining a list of text fragments that mention each of the drug and the disease, where each text fragment in the list of text fragments includes tokens corresponding to the drug and the disease and a plurality of additional tokens between and around the drug and the disease; inferring, for each text fragment, whether a relationship holds using at least one trained neural network model; and determining a metric based on the frequency with which the inference indicates that a relationship holds between the list of text fragments, the metric, and one or more text fragments in the list of text fragments.
[0299] According to other aspects of this particular embodiment, obtaining the list of text fragments includes sending a second query based on the query to a search aggregator, causing the search aggregator to receive the second query, distributing the second query to a plurality of shards, causing each of the plurality of shards to perform a lookup against a respective inverted list, each of the plurality of shards processing a corresponding portion of the corpus to form the inverted list, the inverted list including a list of occurrences of each token in the corpus, generating a set of search results, and aggregating the search results from the plurality of shards to form the list of text fragments.
[0300] According to another aspect of this particular embodiment, the inverted list is generated by dividing the corpus into a plurality of subsets; distributing each of the plurality of subsets onto a corresponding plurality of shards; for each shard of the plurality of shards, concatenating one or more documents in the respective subset to form a text array; and determining a list of occurrences of each token in the respective subset, wherein the list of occurrences is stored as the inverted list.
[0301] According to other aspects of this particular embodiment, the method further includes expanding the query to include one or more related terms related to at least one of a drug, a disease, or a relationship, and a list of text fragments is obtained based on the expanded query, and the one or more related terms are retrieved from a knowledge base that identifies relationships between a plurality of terms.
[0302] According to other aspects of this particular embodiment, the method further includes identifying one or more entities in the list of text fragments and generating one or more enrichment sets based on a statistical analysis of the one or more entities, wherein a response to the query includes the one or more enrichment sets, the one or more enrichment sets including a subset of the one or more entities having the highest statistical significance scores among the one or more entities.
[0303] According to other aspects of this particular embodiment, the list of text fragments is obtained from a corpus including at least one of a public literature corpus or a clinical data corpus, the corpus including at least one text sequence including the masked information, the corpus including structured text data including at least one structured data field, and the corpus including at least one patient record that is omitted from the response based on at least one patient record associated with a cohort that is less than a minimum cohort size.
[0304] According to other aspects of this particular embodiment, the masked information is masked by receiving at least one text sequence; providing the text sequence to a plurality of entity tagging models, each of the plurality of entity tagging models being trained to achieve a performance metric that exceeds a predetermined threshold; aggregating tagged entities from the text sequence identified by the plurality of entity tagging models; and masking information in the text sequence based on the aggregated tagged entities.
[0305] In another particular embodiment, the technique may be realized as a method including the steps of receiving a first managed set of health records, each health record in the managed set of health records including a structured representation of patient information; training a first neural network model using the first managed set of health records; receiving a first unmanaged set of health records; managing the first unmanaged set of health records using the trained first neural network model to generate a second managed set of health records; and training a second neural network model using the second managed set of health records, wherein the second neural network model achieves a second performance metric based on the training, the second performance metric indicating improved performance compared to the first performance metric.
[0306] According to other aspects of this particular embodiment, the method further includes iteratively performing the steps of receiving an unsupervised set of health records for the current iteration, using the trained neural network model from the previous iteration to supervise the unsupervised set of health records for the current iteration to generate a supervised set of health records for the current iteration, and training the neural network model for the current iteration using the supervised set of health records for the current iteration.
[0307] According to other aspects of this particular embodiment, the method further includes receiving a second unsupervised set of health records and supervising the second unsupervised set of health records using the trained second neural network model to generate a third supervised set of health records; populating a structured database of health records based on a fourth supervised set of health records, the fourth supervised set of health records including at least one of the first supervised set of health records, the second supervised set of health records, the third supervised set of health records, or a supervised set of health records generated by iteratively training one or more neural network models, each of the one or more neural network models being trained using the supervised set of health records generated during a previous iteration; performing an enrichment analysis based on the structured database of health records; discriminating a plurality of patient subgroups based on the clustering analysis and selecting a different treatment plan for each of the plurality of patient subgroups; and temporally aligning the third supervised set of health records and identifying one or more temporal enrichments based on the temporally aligned set of health records.
[0308] According to other aspects of this particular embodiment, the trained second neural network model is adapted to supervise a third supervised set of health records based on an emergent concept of interest, and the enrichment analysis includes at least one of identifying disease predictors associated with the disease or characterizing a patient cohort, and the third supervised set of health records is temporally aligned based on at least one of a positive test date, a medical procedure date, or a date associated with medication use, and one or more temporal enrichments are identified within a plurality of time windows, and the one or more temporal enrichments include at least one co-enrichment based on a plurality of factors.
[0309] In another particular embodiment, the technology may be realized as a system including at least one computer processor communicatively coupled to the system and configured to operate within the system, the at least one computer processor further configured to perform one or more steps of the above-described method, wherein the second neural network model is trained using a set of health records combining the first supervised set of health records and the second supervised set of health records.
[0310] In another particular embodiment, the technology may be realized as an article of manufacture that includes a non-transitory processor-readable medium and instructions stored on the medium, the instructions configured to be readable from the medium by at least one computer processor communicatively coupled to an information masking system and configured to operate within the information masking system, thereby operating the at least one computer processor to perform one or more steps of the methods described above.
[0311] It is to be understood that the disclosed subject matter is not limited in its application to the details of construction and the arrangement of components set forth in the above description or illustrated in the drawings. The disclosed subject matter is capable of other embodiments and of being practiced and carried out in various ways. Also, it is to be understood that the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting.
[0312] As such, those skilled in the art will appreciate that the conception underlying the present disclosure may be readily utilized as a basis for the design of other structures, methods and systems for carrying out some of the purposes of the disclosed subject matter. It is important, therefore, that the claims be regarded as including such equivalent constructions insofar as they do not depart from the spirit and scope of the disclosed subject matter.
[0313] While the disclosed subject matter has been described and illustrated in the foregoing exemplary embodiments, it will be understood that the disclosure is by way of example only and that many changes in the details of the implementation of the disclosed subject matter may be made without departing from the spirit and scope of the disclosed subject matter, which is limited only by the following claims.
Claims
1. forming at least one secure enclave available to one or more processors for executing one or more application computing processes in isolation from one or more rogue computing processes executing on the one or more processors; pre-provisioning software within the at least one secure enclave; Including, The pre-provisioned software is configured to cause the one or more processors to execute instructions of the one or more application computing processes, the one or more processors comprising: - receiving input data in encrypted form; - loading said input data into said at least one secure enclave; - loading one or more programs into said at least one secure enclave for analyzing said input data; - executing the one or more programs for parsing the input data using the at least one secure enclave; - decrypting at least one of said input data using one or more cryptographic keys; - executing said one or more application computing processes based on the decoded at least one of said input data to generate output data; - generating a proof of execution, the proof of execution proving that one or more of the instructions of the one or more application computing processes operated on the received input data; - providing external access to said proof of execution; and method.
2. The method of claim 1 , wherein receiving the input data in encrypted form comprises receiving the input data from a data provider.
3. 3. The method of claim 2, further comprising de-identifying a set of the input data prior to loading the input data into the at least one secure enclave, wherein de-identifying the input data comprises removing information that identifies one or more individuals or entities from the input data.
4. encrypting the output data using one or more encryption keys; providing external access to said encrypted output data; The method of claim 1 further comprising:
5. The method of claim 1 , further comprising receiving, from an instruction provider, one or more programs for analyzing the input data.
6. The method of claim 1 , wherein the input data includes at least an electronic medical record.
7. 2. The method of claim 1, wherein forming the at least one secure enclave comprises constructing an isolated memory partition that forms the at least one secure enclave.
8. 2. The method of claim 1 , wherein decrypting at least one of the input data using the one or more cryptographic keys comprises decrypting the input data using one or more cryptographic keys contained within the at least one secure enclave.
9. 5. The method of claim 4, wherein providing external access to the encrypted output data comprises providing the encrypted output data as an input to a subsequent secure enclave.
10. A non-transient memory; and one or more hardware processors configured to read instructions from the non-transitory memory, the instructions, when executed, causing the one or more hardware processors to: forming at least one secure enclave available to one or more processors for executing one or more application computing processes in isolation from one or more rogue computing processes executing on the one or more processors; pre-provisioning software within the at least one secure enclave; Executing an operation including The pre-provisioned software is configured to cause the one or more processors to execute instructions of the one or more application computing processes, the one or more processors being configured to: - receiving input data or instructions of said one or more application computing processes in encrypted form; - loading said input data into said at least one secure enclave; - loading one or more programs into said at least one secure enclave for analyzing said input data; - executing the one or more programs for parsing the input data using the at least one secure enclave; - decrypting said input data using one or more encryption keys; - executing the one or more application computing processes based on the decoded input data to generate output data; generating a proof of execution that proves that one or more of the instructions of the one or more application computing processes operated on the received input data; - providing external access to said proof of execution; system.
11. The system of claim 10 , wherein receiving the input data in encrypted form comprises receiving the input data from a data provider.
12. 12. The system of claim 11, further comprising: de-identifying a set of the input data prior to loading the input data into the at least one secure enclave, wherein de-identifying the input data comprises removing information identifying one or more individuals or entities from the input data.
13. encrypting the output data using one or more encryption keys; providing external access to said encrypted output data; The system of claim 10 further comprising:
14. The system of claim 10 , further comprising receiving, from an instruction provider, one or more programs for analyzing the input data.
15. The system of claim 10 , wherein the input data includes at least an electronic medical record.
16. 11. The system of claim 10, wherein forming the at least one secure enclave comprises constructing an isolated memory partition that forms the at least one secure enclave.
17. 11. The system of claim 10, wherein decrypting at least one of the input data using the one or more cryptographic keys comprises decrypting the input data using one or more cryptographic keys contained within the at least one secure enclave.
18. 14. The system of claim 13, wherein providing external access to the encrypted output data comprises providing the encrypted output data as an input to a subsequent secure enclave.
Citation Information
Patent Citations
Method and apparatus for providing a secure virtual environment on a mobile device
JP2014525612A
Personal information anonymization program and personal information anonymization device
JP2015170169A
Healthcare transaction validation via blockchain proof-of-work, systems and methods
US20150332283A1
Policy-Based Trusted Inspection of Rights Managed Content
US20150347768A1
Homomorphic encryption in a healthcare network environment, system and methods
US20160105402A1