Search

US-12626789-B2 - Lazy copy for database systems

US12626789B2US 12626789 B2US12626789 B2US 12626789B2US-12626789-B2

Abstract

A computing device comprising a processor is configured to perform the techniques of this disclosure. The processor may duplicate a first node of a tree data structure to create a duplicate node, and create an inbound edge of the duplicate node to a parent node of the first node and an outbound edge to at least one child node of the first node. The processor may receive an update to the at least one child node of the first node. In response to determining that the at least one child node has multiple parent nodes, the processor may duplicate the at least one child node to create a duplicate child node, create an outbound edge of the duplicate node to the duplicate child node, delete the outbound edge of the duplicate node to the at least one child node, and perform the update to the at least one child node.

Inventors

  • Mark Watson
  • Robert Ross

Assignees

  • Nurocor, Inc.

Dates

Publication Date
20260512
Application Date
20210706

Claims (15)

  1. 1 . A method for copying a first node of a tree data structure, the method comprising: storing, by processing circuitry and to a graph database that stores a template for a generic clinical research study as the tree data structure, the tree data structure representative of at least a portion of a clinical research study to be performed in support of a specific test for confirming a hypothesis concerning one or more of a utility, an impact, a pharmacological, a physiological, or a psychological effects of a particular treatment, procedure, drug, device, biological, food product, cosmetic, care plan, or subject characteristic, the tree data structure representing a form of a graph data structure that stores the template for objectives and endpoints, wherein when the tree data structure is modified, the tree data structure is used to generate a parameterized template specific to the clinical research study; duplicating, by the processing circuitry according to a shallow copy, the first node to create a duplicate node within the tree data structure, wherein the first node comprises an inbound edge from a parent node of the first node and at least one outbound edge to at least one child node of the first node defined by reference pointers in the graph database, and wherein the first node comprises data for one of the clinical research study, a clinical research study protocol, a clinical research study protocol version, a clinical research study design, a clinical research study schedule, a clinical research study arm, a study, a study protocol, a study protocol version, a study design, or a study schedule; creating, by the processing circuitry, an inbound edge of the duplicate node from the parent node of the first node and an outbound edge to the at least one child node of the first node by generating reference pointers linking the duplicate node to the parent node and the at least one child node; receiving, by the processing circuitry, an update to the at least one child node of the first node that modifies the template to form the parameterized template specific to the clinical research study; and in response to determining that the at least one child node has multiple parent nodes: duplicating, by the processing circuitry according to a deep copy different from the shallow copy, the at least one child node to create a duplicate child node; creating, by the processing circuitry, an outbound edge of the duplicate node to the duplicate child node; deleting, by the processing circuitry, the outbound edge of the duplicate node to the at least one child node; and performing, by the processing circuitry, the update to the at least one child node to generate, based on the tree data structure and after updating the at least one child node, the parameterized template specific to the clinical research study.
  2. 2 . The method of claim 1 , further comprising: duplicating, by the processing circuitry, one or more child nodes of the at least one child node to create one or more duplicate child nodes of the child node; and creating, by the processing circuitry, an outbound edge of the duplicate child node to each of the one or more duplicate child nodes of the child nodes.
  3. 3 . The method of claim 1 , further comprising: determining, by the processing circuitry, that a second node of the tree data structure has multiple parent nodes, wherein the second node comprises multiple inbound edges from the multiple parent nodes of the second node and at least one outbound edge to at least one child node of the second node; in response to determining that the second node has multiple parent nodes: determining, by the processing circuitry, a closest superior ancestor node of the second node that has only a single parent node: duplicating, by the processing circuitry, the superior ancestor node of the second node to create a duplicate superior ancestor node; duplicating, by the processing circuitry, a branch descending from the superior ancestor node of the second node to create a duplicate branch descending from the duplicate superior ancestor node, wherein the duplicate branch descending from the duplicate superior ancestor node duplicates nodes and edges of the branch descending from the superior ancestor node of the second node; and deleting, by the processing circuitry, the second node and any inferior descendent nodes of the first node.
  4. 4 . The method of claim 1 , further comprising: determining, by processing circuitry, that the second node comprises at least one outbound edge to at least one child node of the second node, wherein the second node comprises an inbound edge to a parent node of the second node; determining, by the processing circuitry and based on inbound edges of the at least one child node to the second node and to a third node, that the at least one child node has multiple parent nodes; and deleting, by the processing circuitry, the second node, an outbound edge of the parent node to the second node, and the inbound edges of the at least one child node to the second node.
  5. 5 . The method of claim 1 , further comprising: retrieving, by the processing circuitry, the tree data structure from a storage medium; updating, by the processing circuitry, the tree data structure with data for the first node; and storing, by the processing circuitry, the updated tree data structure.
  6. 6 . A computing device comprising: a graph database that stores a template for a generic clinical research study as a tree data structure, the tree data structure representative of at least a portion of a clinical research study to be performed in support of a specific test for confirming a hypothesis concerning one or more of utility, impact, pharmacological, physiological, or psychological effects of a particular treatment, procedure, drug, device, biological, food product, cosmetic, care plan, or subject characteristic, the tree data structure representing a form of a graph data structure that stores the template for objectives and endpoints, wherein when the tree data structure is modified, the tree data structure is used to generate a parameterized template specific to the clinical research study; and one or more processors configured to: duplicate, according to a shallow copy, the first node to create a duplicate node within the tree data structure, wherein the first node comprises an inbound edge from a parent node of the first node and at least one outbound edge to at least one child node of the first node defined by reference pointers in the graph database, and wherein the first node comprises data for one of the clinical research study, a clinical research study protocol, a clinical research study protocol version, a clinical research study design, a clinical research study schedule, a clinical research study arm, a study, a study protocol, a study protocol version, a study design, or a study schedule; create an inbound edge of the duplicate node from the parent node of the first node and an outbound edge to the at least one child node of the first node by generating reference pointers linking the duplicate node to the parent node and the at least one child node; receive an update to the at least one child node of the first node that modifies the template to form the parameterized template specific to the clinical research study; and in response to determining that the at least one child node has multiple parent nodes: duplicate, according to a deep copy different from the shallow copy, the at least one child node to create a duplicate child node; create an outbound edge of the duplicate node to the duplicate child node; delete the outbound edge of the duplicate node to the at least one child node; and perform the update to the at least one child node to generate, based on the tree data structure and after updating the at least one child node, the parameterized template specific to the clinical research study.
  7. 7 . The computing device of claim 6 , wherein the one or more processors are further configured to: duplicate one or more child nodes of the at least one child node to create one or more duplicate child nodes of the child node; and create an outbound edge of the duplicate child node to each of the one or more duplicate child nodes of the child nodes.
  8. 8 . The computing device of claim 6 , wherein the one or more processors are further configured to: determine that a second node of the tree data structure has multiple parent nodes, wherein the second node comprises multiple inbound edges from the multiple parent nodes of the second node and at least one outbound edge to at least one child node of the second node; in response to determining that the second node has multiple parent nodes: determine a closest superior ancestor node of the second node that has only a single parent node: duplicate the superior ancestor node of the second node to create a duplicate superior ancestor node; duplicate a branch descending from the superior ancestor node of the second node to create a duplicate branch descending from the duplicate superior ancestor node, wherein the duplicate branch descending from the duplicate superior ancestor node duplicates nodes and edges of the branch descending from the superior ancestor node of the second node; and delete the second node and any inferior descendent nodes of the first node.
  9. 9 . The computing device of claim 6 , wherein the one or more processors are further configured to: determine that the second node comprises at least one outbound edge to at least one child node of the second node, wherein the second node comprises an inbound edge to a parent node of the second node; determine, based on inbound edges of the at least one child node to the second node and to a third node, that the at least one child node has multiple parent nodes; and delete the second node, an outbound edge of the parent node to the second node, and the inbound edges of the at least one child node to the second node.
  10. 10 . The computing device of claim 6 , wherein the one or more processors are further configured to: retrieve the tree data structure from a storage medium; update the tree data structure with data for the first node; and store the updated tree data structure.
  11. 11 . A non-transitory computer-readable storage medium having instructions stored thereon that, when executed, cause one or more processors to: store, to a graph database a template for a generic clinical research study as the tree data structure, the tree data structure representative of at least a portion of a clinical research study to be performed in support of a specific test for confirming a hypothesis concerning one or more of utility, impact, pharmacological, physiological, or psychological effects of a particular treatment, procedure, drug, device, biological, food product, cosmetic, care plan, or subject characteristic, the tree data structure representing a form of a graph data structure that stores the template for objectives and endpoints, wherein when the tree data structure is modified, the tree data structure is used to generate a parameterized template specific to the clinical research study; duplicate, according to a shallow copy, the first node to create a duplicate node, wherein the first node comprises an inbound edge from a parent node of the first node and at least one outbound edge to at least one child node of the first node defined by reference pointers in the graph database, and wherein the first node comprises data for one of the clinical research study, a clinical research study protocol, a clinical research study protocol version, a clinical research study design, a clinical research study schedule, a clinical research study arm, a study, a study protocol, a study protocol version, a study design, or a study schedule; create an inbound edge of the duplicate node from the parent node of the first node and an outbound edge to the at least one child node of the first node by generating reference pointers linking the duplicate node to the parent node and the at least one child node; receive an update to the at least one child node of the first node that modifies the generic parameterized template to form the parameterized template specific to the clinical research study; and in response to determining that the at least one child node has multiple parent nodes: duplicate, according to a deep copy different from the shallow copy, the at least one child node to create a duplicate child node; create an outbound edge of the duplicate node to the duplicate child node; delete the outbound edge of the duplicate node to the at least one child node; and perform the update to the at least one child node to generate, based on the tree data structure and after updating the at least one child node, the parameterized template specific to the clinical research study.
  12. 12 . The non-transitory computer-readable storage medium of claim 11 , further comprising instructions that, when executed, cause the one or more processors to: duplicate one or more child nodes of the at least one child node to create one or more duplicate child nodes of the child node; and create an outbound edge of the duplicate child node to each of the one or more duplicate child nodes of the child nodes.
  13. 13 . The non-transitory computer-readable storage medium of claim 11 , further comprising instructions that, when executed, cause the one or more processors to: determine that a second node of the tree data structure has multiple parent nodes, wherein the second node comprises multiple inbound edges from the multiple parent nodes of the second node and at least one outbound edge to at least one child node of the second node; in response to determining that the second node has multiple parent nodes: determine a closest superior ancestor node of the second node that has only a single parent node; duplicate the superior ancestor node of the second node to create a duplicate superior ancestor node; duplicate a branch descending from the superior ancestor node of the second node to create a duplicate branch descending from the duplicate superior ancestor node, wherein the duplicate branch descending from the duplicate superior ancestor node duplicates nodes and edges of the branch descending from the superior ancestor node of the second node; and delete the second node and any inferior descendent nodes of the first node.
  14. 14 . The non-transitory computer-readable storage medium of claim 11 , further comprising instructions that, when executed, cause the one or more processors to: determine that the second node comprises at least one outbound edge to at least one child node of the second node, wherein the second node comprises an inbound edge to a parent node of the second node; determine, based on inbound edges of the at least one child node to the second node and to a third node, that the at least one child node has multiple parent nodes; and delete the second node, an outbound edge of the parent node to the second node, and the inbound edges of the at least one child node to the second node.
  15. 15 . The non-transitory computer-readable storage medium of claim 11 , further comprising instructions that, when executed, cause the one or more processors to: retrieve the tree data structure from a storage medium; update the tree data structure with data for the first node; and store the updated tree data structure.

Description

This application claims the benefit of U.S. Provisional Application No. 63/048,375, entitled “DIGITIZED FRAMEWORK FOR CLINICAL DEVELOPMENT,” and filed Jul. 6, 2020, and U.S. Provisional Application No. 63/198,657, entitled “DIGITIZED FRAMEWORK FOR CLINICAL DEVELOPMENT,” and filed Nov. 2, 2020, the contents of both of which are hereby incorporated by reference as if set forth fully herein. TECHNICAL FIELD This disclosure generally relates to systems for managing clinical studies. BACKGROUND Data standards are often developed and used as a uniform communicative structure for the transfer of data from one entity to another entity. These data structures may be used by a receiving entity so that data can be processed in a known format for efficiency and validation during processing. Regulatory agencies are becoming advocates of data standards for submission, analysis, and approval of consumable products. However, implementation of data standards is often burdensome and expensive for industry. Moreover, as a data standard is changed or updated, the implementation of the standard may need to be changed or updated, which may require significant programming efforts and further expense. SUMMARY In general, the disclosure describes techniques for digitizing a framework for clinical development. In some examples, a system as described herein defines a data model that specifies a data standard representative of requirements for regulatory-compliant exchange of data between entities and stores metadata for the data model in a metadata repository (MDR). As described herein, the data model includes one or more client business objects representing aspects of a well-structured pharmaceutical clinical research study. As described herein, a clinical research study (also referred to herein as a “study”) is, for example, a clinical research project whose objectives are to test or confirm hypotheses concerning the utility, impact, pharmacological, physiological, and/or psychological effects of a particular treatment, procedure, drug, device, biologic, food product, cosmetic, care plan, or subject characteristic. Each study as a whole specifies one or more study events, (referred to herein as “study events” or “events”) and each study event of the one or more study events specifying one or more study activities (also referred to herein as “study activities” or “activities”) to be planned for the study event. In addition to the events and activities mentioned above, the data model further includes additional study data elements (referred to herein as “study elements”, “protocol elements” or “elements”) each of which is represented as a dynamically configured property within the MDR. These properties are collected into one or more dynamically configured property groups, also specified within the MDR, with each property group representing a section of the study (referred to herein as “study section” or “section”) whose elements are cohesively related. Section examples include Planned Intervention, Inclusion Criteria and Study Model Elements among others. These properties may be aggregated into standardized data sets for purposes of regulatory submission, or used to inform other aspects of study design (e.g., the authoring of a study protocol document that specifies the study in narrative form, submission of which is also a regulatory requirement). The system uses the metadata stored in the MDR to generate a study template for planning a clinical research study. A user interface obtains input from a user to parameterize the study template and store the parameterized template in a database. The system further generates, based on the template, a sequence of one or more study events specifying one or more study activities to be executed for the study event. In some examples, the system may further generate, based on the template, one or more study sections each of which is composed of one or more study elements. In some examples, the system may further generate, based on the template, at least one study objective and at least one study estimand or endpoint (referred to herein as “endpoint”) that may be used to facilitate generation of key activities and events within a schedule of study activities. In some instances, objectives may specify precise endpoint descriptions, defined by ways to estimate (which may be referred to as an estimator) and a numerical result (which may be referred to as an estimate), where, for example, in a diabetes study an endpoint may be described by an estimator HbA1c (glycated hemoglobin) as a measure for blood glucose levels, and an estimate that compares the change from study baseline of HbA1c at a prespecified study timepoint. An estimand may refer to a precise description of the treatment effect reflecting a clinical question posed by a trial objective and may have different components depending on a phase and purpose of a given trial. Estimands may be mandatory for confirmatory studies. An estimand descrip