The present invention relates generally to systems for processing medical information and more particularly to computerized interactions with EMRs.
Conventionally, information is transferred between an HIE and EMR via messages exchanged between the two systems. For example, an EMR may know how to import lab results from an HIES. An EMR may provide a tab in its main application, sometimes known as the “community tab” which enables a user to view, but not manipulate or import, HIE-provided information about a patient. Varying medical technology between the HIE and EMR, combined with a lack of ability to semantically resolve the variation, may impose limitations to these modes of information transfer.
According to Wikipedia, an Enterprise Master Patient Index (EMPI) is “a form of customer data integration (CDI) specific to the healthcare industry. Healthcare organizations or groups of them will implement EMPI to identify, match, merge, de-duplicate, and cleanse patient records to create a master index that may be used to obtain a complete and single view of a patient. The EMPI will create a unique identifier for each patient and maintain a mapping to the identifiers used in each record's respective system.” It has been claimed that by using an EMPI for “correctly matching patient records from disparate systems and different organizations”, it is possible to obtain “a complete view of a patient”.
Known technologies relevant to the field of the invention include context management, single sign-on, CCOW or Screen capturing method for context interception.
Non-Patent Literature describing health information exchange through the use of semantic technology includes:
The disclosures of all publications and patent documents mentioned in the specification, and of the publications and patent documents cited therein directly or indirectly, are hereby incorporated by reference.
Certain embodiments of the present invention seek to provide a technical solution for the problem of allowing medical data to be effectively retrieved, stored, and presented to medical service providing users where the medical data exists in digital form within a plethora of non-compatible, partially overlapping software systems which are constantly being updated.
Certain embodiments of the present invention seek to provide an interoperability solution for medical databases, providing a health information exchange system typically storing complete, single and harmonized patient records, and easing access thereto by bringing relevant information to a user at points in time in which that information is useful and as part of her or his workflows.
Certain embodiments of the present invention seek to bring relevant context-based information from inside the health information exchange system to a user e.g. physician's working environment and workflows (typically EMR), rather having the physician leave his working environment and search for the information he needs in a Clinical Viewer as an external application.
Certain embodiments of the present invention seek to enhance effective software compatibility including reducing dependency on EMR vendors to customize their software products in order to integrate with the health information exchange system platform (Button, Smart Access, and other services).
Certain embodiments of the present invention seek to provide easy and efficient access to specific context-based patient information eliminating the need to navigate through many patient's views in an external application.
Generally, Health Information Exchange (HIE) is defined as the mobilization of healthcare information electronically across organizations within a region, community or hospital system. HIE provides the capability to electronically move clinical information among disparate health care information systems while maintaining the meaning of the information being exchanged. The goal of HIE is to facilitate access to and retrieval of clinical data to provide safer, more timely, efficient, effective, equitable, patient-centered care. To meet this goal, HIE providers develop computerized infrastructures and applications that enable the information exchange and viewing of exchanged information. As HIE solutions complement the EMR applications, the EMR and HIE vendors are looking for ways to integrate with each other in order to enable:
1. Data exchange from the EMR the HIE and vice versa
2. Integrate the information hold in hold in the HIE within the EMR application and user workflow
3. Enrich EMR capabilities with the HIE solutions and services.
When an HIE solution is integrated with the EMR, both accessibility and User Context may be taken into account.
Certain embodiments of the present invention seek to provide an SOA-based platform that enables healthcare organizations and health information exchanges (HIEs) to integrate their information assets, through the creation of a virtual patient record by logically connecting a group of care providers and organizations without requiring the replacement of existing information systems. By providing ubiquitous access to integrated patient information, the solution virtually bridges gaps that often exist between inpatient/acute care and community care.
Typically, a single, virtual patient record contains complete and harmonized patient data by logically connecting a group of care providers and organizations without requiring the replacement of existing information systems. Smooth and easy access to the care-critical information stored in the HIE should be facilitated, by providing a user with relevant patient information at the point in time it is needed, as part of the clinical workflow.
The system shown and described herein may perform any or all of the above functionalities:
The SmartAgent is a client application that is designed to meet the EMR users' need to get comprehensive and relevant clinical information on patients from sources of information which are not in their EMR, and in addition to serve as a gateway to HIE applications and solutions.
The client application, typically installed on the user's machine, is termed herein a SmartAgent client.
Examples of use scenarios include but are not limited to the following:
1. Smart Button within User, Patient and System Context: User opens a patient record in his EMR. SmartAgent, which is installed in his client machine, “captures” the patient identifier (MRN), the User Context (Username/Role) and the System context (SystemID) and calls a VPO Analyzer web service or Virtual Patient Object Clinical Data Web Service) that identifies the System, user and the patient. The user is authorized and the patient is found in the health information exchange system. The Client SmartAgent gets the response and presents a Floating Button. The Floating button includes Link to Launch Viewer with user and patient context. The User presses the button and seamlessly accesses the health information exchange system's Clinical Viewer.
2. VPO Analyzer attention rules: In order to bring more relevant information to the user, smart evaluations are typically provided on the VPO in the context of the user, patient and system. One of the Analyzer's attention rules may be “Exclude System Data” which excludes from the VPO Data that exists in the physician's own system. The response is “Clean” data excluding what a user can see in his EMR, which may be presented within the Results or Viewer Panes. The rule is typically constructed and operative to analyze the patient's clinical data and to alert the user in the SmartAgent client application that information that meets the rule exists and is available for viewing.
3. Semantic Search: A user may for example be looking for data on Diabetes in the health information exchange system. To do that he enables a search option in the floating toolbar and type the phrase “Dia”. Search suggestions are presented and user selects the “Diabetes” Suggestion. As a result a “Results and Navigation” pane opens and presents the results for Diabetes from the Patient's VPO organized by Clinical Aspects (Medications, Problems, Population Membership, etc.). User presses “Diabetes” population and the Diabetes View is opened in the View panel.
4. Data Presentation and Launch Viewer: Any information found may be presented in a Data and Navigation Panel. The information is organized according to the different clinical aspects (Laboratory, Medications, etc.) and evaluation aspects (Population membership, Metrics, Notifications, Alerts etc.). The clinical aspects and actual presented data may constitute a link to a relevant page in the health information exchange system's Clinical Viewer. The user can see under a Laboratory Results menu, a result for hbA1c from, say, a previous week. Aside from the result, 2 buttons may be provided, one to open the Laboratory Clinical View and another to open the Lab Result Page with the hbA1c history.
The present invention also typically includes at least the following embodiments:
a. A computerized system for supplying a human user with relevant, context-based patient information within the user's work environment and workflows.
b. A system according to embodiment a wherein the user's work environment includes at least one EMR.
c. A system according to embodiment b which does not require customization of the EMR.
d. A system according to embodiment ‘a’ which supplies information without requiring the user to navigate through multiple clinical views in an external application.
e. A system according to embodiment ‘a’ wherein the system includes a proactive apparatus which operates proactively, responsive to user context operations, to present relevant clinical information.
f. A system according to embodiment ‘a’ wherein the system includes a processor operative to select relevant information including performing a computerized analysis of a computerized patient record and deriving, from the analysis, relevant clinical information which is presented to the user, whereas other clinical information is not presented to the user.
g. A system according to embodiment ‘f’ wherein differentiation of relevant clinical information from other clinical information is based on at least one of the following: user context, profile, patient illness, ward context, EMR Workflow Context.
h. A system according to embodiment ‘a’ and wherein the system is operative to provide information, within the workflow, on overall patient events and evaluations for each individual physician or user.
i A system according to embodiment ‘a’ and also comprising at least some aspects of a skin application shown and described herein.
j. A computerized method for supplying a human user with relevant, context-based patient information within the user's work environment and workflows.
k. A method according to embodiment T wherein the user's work environment includes at least one EMR.
l. A method according to embodiment ‘k’ which does not require customization of the EMR.
m. A method according to embodiment T which supplies information without requiring the user to navigate through multiple clinical views in an external application.
n. A method according to embodiment T wherein the method includes a proactive apparatus which operates proactively, responsive to user context operations, to present relevant clinical information.
o. A method according to embodiment T wherein the method includes a processor operative to select relevant information including performing a computerized analysis of a computerized patient record and deriving, from the analysis, relevant clinical information which is presented to the user, whereas other clinical information is not presented to the user.
p. A method according to embodiment ‘o’ wherein differentiation of relevant clinical information from other clinical information is based on at least one of the following: user context, profile, patient illness, ward context, EMR Workflow Context.
q. A method according to embodiment ‘a’ and wherein the system is operative to provide information, within the workflow, on overall patient events and evaluations for each individual physician or user.
r. A method according to embodiment T and also comprising at least some aspects of a skin application shown and described herein.
s. A computer program product, comprising a computer usable medium having a computer readable program code embodied therein, the computer readable program code adapted to be executed to implement any of the methods shown and described herein.
Certain embodiments of the present invention seek to provide a decision making system including a system of logic including hierarchical semantic relationships, a plurality of systems of medical information which are provided in a plurality of local terminologies respectively, and a decision making apparatus for transforming the medical information in the local terminologies to transformed information usable by the system of logic and for using the system of logic to make at least one decision based on the transformed information, without translating the system of logic into the plurality of local terminologies. The term “terminology” is intended to include any scheme for representing medical information. The following terms and other terms defined herein may be construed either in accordance with any definition thereof appearing in the prior art literature or in accordance with the specification, or as follows:
Classification Type—A base set of classifications which all others derive from. The existing classifications are:
DEM—data event monitor e.g. as described herein
EMPI—Conventional Enterprise Master Patient Index service
Principal Index—aka (also termed herein) Leading Index
VIA—a commercial Virtual Identity Aggregation service provided by DBMotion Inc., Israel
ACEI—angiotensin-converting enzyme inhibitors
LVS—Left Ventricular Systolic
LVSD—Left Ventricular Systolic Dysfunction
DBMotion—refers to a functionality which is either commercially available from DBMotion Inc., Israel and/or is shown and described herein. Other definitions, acronyms, and abbreviations useful in understanding certain embodiments of the present invention, are provided in the table of
In accordance with an aspect of the invention, there is provided a health information exchange system comprising an apparatus for archiving health information using a health information encoding procedure only if the health information fulfills a criterion of frequent use; and an apparatus for using a first procedure to respond to queries pertaining to the health information which fulfills the criterion of frequent use and using a second procedure to respond to queries not pertaining to the health information which fulfills the criterion of frequent use.
In accordance with an aspect of the invention, there is further provided a health information exchange system comprising an ontological apparatus for defining and storing ontological link elements ontologically linking between individual health care information items within a first population of health care information items; an apparatus for receiving a second population of health care information items and for associating at least some individual items in the second population, with corresponding individual items within the first population of health care information items; and an apparatus for responding to queries regarding particular information items in the second population including translating the particular information items into items in the first population corresponding to the particular information items and using link elements linking the items in the first population corresponding to the particular information items to generate data pertaining to the particular information items in the second population.
In accordance with an embodiment of the invention, there is provided a system comprising an apparatus for making at least one health decision based on the queries.
In accordance with an embodiment of the invention, there is further provided a system also comprising apparatus for implementing the at least one health decision.
In accordance with an embodiment of the invention, there is further provided a system also comprising apparatus for making at least one health decision based on the queries.
In accordance with an embodiment of the invention, there is further provided a system also comprising apparatus for implementing the at least one health decision.
In accordance with an aspect of the invention, there is provided a health information exchange method comprising archiving health information using a health information encoding procedure only if the health information fulfills a criterion of frequent use; and using a first procedure to respond to queries pertaining to the health information which fulfills the criterion of frequent use and using a second procedure to respond to queries not pertaining to the health information which fulfills the criterion of frequent use. In accordance with an aspect of the invention, there is provided a health information exchange method comprising defining and storing link elements linking between individual health care information items within a first population of health care information items; receiving a second population of health care information items and associating at least some individual items in the second population, with corresponding individual items within the first population of health care information items; and responding to queries regarding particular information items in the second population including translating the particular information items into items in the first population corresponding to the particular information items and using link elements linking the items in the first population corresponding to the particular information items to generate data pertaining to the particular information items in the second population.
In accordance with an embodiment of the invention, there is further provided a method also comprising making at least one health decision based on the queries.
In accordance with an embodiment of the invention, there is still further provided a method also comprising implementing the at least one health decision.
In accordance with an embodiment of the invention, there is yet further provided a method also comprising making at least one health decision based on the queries.
In accordance with an embodiment of the invention, there is yet further provided a method also comprising implementing the at least one health decision.
In accordance with an aspect of the invention, there is provided a computer program product, comprising a computer usable medium having a computer readable program code embodied therein, the computer readable program code adapted to be executed to implement a health information exchange method comprising archiving health information using a health information encoding procedure only if the health information fulfills a criterion of frequent use; and using a first procedure to respond to queries pertaining to the health information which fulfills the criterion of frequent use and using a second procedure to respond to queries not pertaining to the health information which fulfills the criterion of frequent use.
In accordance with an aspect of the invention, there is yet further provided a computer program product, comprising a computer usable medium having a computer readable program code embodied therein, the computer readable program code adapted to be executed to implement a health information exchange method comprising defining and storing link elements linking between individual health care information items within a first population of health care information items; receiving a second population of health care information items and for associating at least some individual items in the second population, with corresponding individual items within the first population of health care information items; and responding to queries regarding particular information items in the second population including translating the particular information items into items in the first population corresponding to the particular information items and using link elements linking the items in the first population corresponding to the particular information items to generate data pertaining to the particular information items in the second population.
In accordance with an embodiment of the invention, there is yet further provided a computer program product wherein the method also comprises making at least one health decision based on the queries.
In accordance with an embodiment of the invention, there is yet further provided a computer program product wherein the method also comprises implementing the at least one health decision.
In accordance with an embodiment of the invention, there is yet further provided a computer program product wherein the method also comprises making at least one health decision based on the queries.
In accordance with an embodiment of the invention, there is yet further provided a computer program product wherein the method also comprises implementing the at least one health decision.
In accordance with an embodiment of the invention, there is yet further provided a method wherein the second population of health care information items are expressed in a local terminology and are mapped to a baseline terminology in which the first population of health care information items are expressed, to enable terminology interoperability at least when responding to queries.
In accordance with an embodiment of the invention, there is yet further provided a method wherein the baseline terminology is semantically enriched by associating semantic information therewith, the method also comprising generating conclusions about health information expressed in at least one local terminology by using the semantic information rather than by defining semantic relations for the local terminology.
In accordance with an embodiment of the invention, there is yet further provided a system in which only a subset of a universe of health information is archived.
In accordance with an embodiment of the invention, there is yet further provided a system wherein the apparatus for responding to queries uses a first procedure to respond to queries pertaining to the subset and uses a second procedure to respond to queries not pertaining to the universe of health information but not pertaining to the subset.
In accordance with an embodiment of the invention, there is yet further provided a system also including an end user interface allowing end users to define rules; and a decision support subsystem (DSS) interacting with the end user interface and using semantic capabilities of a baseline terminology in which the first population of health information items is encoded, to simplify definition of rules by the end users.
In accordance with an embodiment of the invention, there is yet further provided a system wherein the decision support subsystem comprises an Enterprise DSS which has a process cycle and which uses DSS rules to define all phases in the process cycle.
In accordance with an embodiment of the invention, there is yet further provided a method wherein the translating and the using is applied to a use case involving processing of Smart Guard Adapters, the processing including at least one of developing, defining and configuring.
In accordance with an embodiment of the invention, there is yet further provided a method wherein the translating and the using is applied to a use case involving a SmartWatch System, the use case including at least one of processing and monitoring health of the system.
In accordance with an embodiment of the invention, there is yet further provided a method wherein the translating and the using are applied to a use case involving Managing Guard runtime.
In accordance with an embodiment of the invention, there is yet further provided a method wherein the translating and the using are applied to a use case involving applying Guard changes.
In accordance with an embodiment of the invention, there is yet further provided a method wherein the translating and the using are applied to a use case involving task activation based upon a schedule.
In accordance with an embodiment of the invention, there is yet further provided a method wherein the translating and the using is applied to a use case involving identifying patients to be added to a defined population of patients.
In accordance with an embodiment of the invention, there is yet further provided a method wherein the translating and the using are applied to a use case involving monitoring a population of patients including determining if they need to be evaluated, evaluating them thereby to generate at least one evaluation result, and responding to the evaluation result.
In accordance with an embodiment of the invention, there is yet further provided a method wherein the health information encoding procedure includes mapping health information expressed in at least one local terminology to a baseline terminology to enable terminology interoperability and storing ontological information interrelating health information items expressed in the baseline terminology.
In accordance with an embodiment of the invention, there is yet further provided a system wherein the ontological apparatus includes interrelationships between clinical-level information items.
In accordance with an embodiment of the invention, there is yet further provided a system wherein the clinical-level information item comprises at least one health care information item specifying at least one of a disease, rather than only a class thereof, and a medication, rather than only a class thereof, such as “Left Ventricular Heart Failure”, rather than “Cardio-vascular disorder”, and “Amoxicillin 250 MG Oral Capsule [Amoxymed]”, rather than “Antibiotic”, respectively.
In accordance with an embodiment of the invention, there is yet further provided a system wherein the ontological apparatus maps at least one legacy concept expressed in local terminology to at least one ontology concept expressed in a baseline terminology thereby allowing queries on the level of a single legacy concept to be responded to, for example, the following legacy concept: (System: ICD9, Code: 428.9, Designation: HEART FAILURE NOS) may be mapped to the following Ontology concept: (System: SNOMED-CT; Code: 84114007; Designation: Heart failure (disorder). Very generic examples of classifications are “Disorder”, “Medicine”, “Procedure”; more specific classification examples are “Cardio-vascular disorder”, “Antibiotics” etc. Classifications do not identify a patient's clinical status; for example, it is not enough to say in a clinical record that the patient has “Cardio-vascular disorder” as there are many types of such disorders, and it is typically useful to know which disorder the patient suffers from, to decide how to treat it. Examples of clinical-level information items are “Left Ventricular Heart Failure”, “Amoxicillin 250 MG Oral Capsule [Amoxymed]”; these information items are sufficiently detailed to describe aspects of an individual patient's clinical status and/or treatment rather than mere classifications thereof.
Also provided is a computer program product, comprising a typically non-transitory computer usable medium or computer readable storage medium, typically tangible, having a computer readable program code embodied therein, said computer readable program code adapted to be executed to implement any or all of the methods shown and described herein. It is appreciated that any or all of the computational steps shown and described herein may be computer-implemented. The operations in accordance with the teachings herein may be performed by a computer specially constructed for the desired purposes or by a general purpose computer specially configured for the desired purpose by a computer program stored in a typically non-transitory computer readable storage medium.
Any suitable processor, display and input means may be used to process, display e.g. on a computer screen or other computer output device, store, and accept information such as information used by or generated by any of the methods and apparatus shown and described herein; the above processor, display and input means including computer programs, in accordance with some or all of the embodiments of the present invention. Any or all functionalities of the invention shown and described herein may be performed by a conventional personal computer processor, workstation or other programmable device or computer or electronic computing device, either general-purpose or specifically constructed, used for processing; a computer display screen and/or printer and/or speaker for displaying; machine-readable memory such as optical disks, CDROMs, magnetic-optical discs or other discs; RAMs, ROMs, EPROMs, EEPROMs, magnetic or optical or other cards, for storing, and keyboard or mouse for accepting. The term “process” as used above is intended to include any type of computation or manipulation or transformation of data represented as physical, e.g. electronic, phenomena which may occur or reside e.g. within registers and/or memories of a computer. The term processor includes a single processing unit or a plurality of distributed or remote such units.
The above devices may communicate via any conventional wired or wireless digital communication means, e.g. via a wired or cellular telephone network or a computer network such as the Internet.
The apparatus of the present invention may include, according to certain embodiments of the invention, machine readable memory containing or otherwise storing a program of instructions which, when executed by the machine, implements some or all of the apparatus, methods, features and functionalities of the invention shown and described herein. Alternatively or in addition, the apparatus of the present invention may include, according to certain embodiments of the invention, a program as above which may be written in any conventional programming language, and optionally a machine for executing the program such as but not limited to a general purpose computer which may optionally be configured or activated in accordance with the teachings of the present invention. Any of the teachings incorporated herein may wherever suitable operate on signals representative of physical objects or substances.
The embodiments referred to above, and other embodiments, are described in detail in the next section.
Any trademark occurring in the text or drawings is the property of its owner and occurs herein merely to explain or illustrate one example of how an embodiment of the invention may be implemented.
Unless specifically stated otherwise, as apparent from the following discussions, it is appreciated that throughout the specification discussions, utilizing terms such as, “processing”, “computing”, “estimating”, “selecting”, “ranking”, “grading”, “calculating”, “determining”, “generating”, “reassessing”, “classifying”, “generating”, “producing”, “stereo-matching”, “registering”, “detecting”, “associating”, “superimposing”, “obtaining” or the like, refer to the action and/or processes of a computer or computing system, or processor or similar electronic computing device, that manipulate and/or transform data represented as physical, such as electronic, quantities within the computing system's registers and/or memories, into other data similarly represented as physical quantities within the computing system's memories, registers or other such information storage, transmission or display devices. The term “computer” should be broadly construed to cover any kind of electronic device with data processing capabilities, including, by way of non-limiting example, personal computers, servers, computing system, communication devices, processors (e.g. digital signal processor (DSP), microcontrollers, field programmable gate array (FPGA), application specific integrated circuit (ASIC), etc.) and other electronic computing devices.
The present invention may be described, merely for clarity, in terms of terminology specific to particular programming languages, operating systems, browsers, system versions, individual products, and the like. It will be appreciated that this terminology is intended to convey general principles of operation clearly and briefly, by way of example, and is not intended to limit the scope of the invention to any particular programming language, operating system, browser, system version, or individual product.
Elements separately listed herein need not be distinct components and alternatively may be the same structure.
Any suitable input device, such as but not limited to a sensor, may be used to generate or otherwise provide information received by the apparatus and methods shown and described herein. Any suitable output device or display may be used to display or output information generated by the apparatus and methods shown and described herein. Any suitable processor may be employed to compute or generate information as described herein e.g. by providing one or more modules in the processor to perform functionalities described herein. Any suitable computerized data storage e.g. computer memory may be used to store information received by or generated by the systems shown and described herein. Functionalities shown and described herein may be divided between a server computer and a plurality of client computers. These or any other computerized components shown and described herein may communicate between themselves via a suitable computer network.
Certain embodiments of the present invention are illustrated in the following drawings:
a is a simplified functional block diagram of a high level architecture of a smart agent system constructed and operative in accordance with certain embodiments of the present invention.
b is a table summarizing an example set of functional requirements of a content/VPO analyzer included in the apparatus shown and described herein.
c is a table summarizing an example set of functional requirements of a content capturing and sharing functionality included in the apparatus shown and described herein.
d is a table summarizing an example set of functional requirements of a semantic search functionality included in the apparatus shown and described herein.
e is a table summarizing an example set of functional requirements of a floating application included in the apparatus shown and described herein.
a is a table summarizing an example set of non-functional auditing, security and localization requirements of apparatus shown and described herein.
b is a table summarizing an example set of non-functional topological and pre-requisite requirements of the apparatus shown and described herein.
c is a table summarizing an example set of non-functional performance requirements of apparatus shown and described herein.
d is a table summarizing an example set of non-functional reusability and integrability requirements of the apparatus shown and described herein.
a is an example user interface useful in entering a patient file and launching the SmartAgent system provided according to certain embodiments of the present invention, including an example of how a smart agent may position itself vis a vis an E.H.R. according to certain embodiments.
b is a simplified pictorial illustration of an example user interface for a FloatingClosed functionality
c is an example object table useful in understanding the functionality of the user interface of
d is a simplified pictorial illustration of an example user interface for a FloatingSearchOpen functionality.
a illustrates the SmartAgent application, according to certain embodiments of the present invention, hovering on top of an example EMR (Allscripts Sunrise—commercially available EMR) in an expanded mode, e.g. by presenting the smart agent's clinical data on top of the EMR e.g. as described herein with reference to
b is an enlarged view of the expanded SmartAgent panel, according to certain embodiments of the present invention.
c is an example object table useful in understanding the functionality of the user interface of
d is an example Object Table.
a is a simplified pictorial illustration of an example method for highlighting of the background of a patient's name field.
b is a table presenting an example set of basic rules.
c is a table presenting an example set of rule combinations.
a is a table of an example set of presentation use cases.
b is a table of an example set of context interception use cases.
c is a table of an example set of system health use cases.
d is a table of an example set of data preparation, configuration & deployment, and extension development use cases.
a is a table of example origins of Baseline Ontology Terminology Components in an example HIE according to certain embodiments.
b is a table of Terminology Maps that map between Local Terminologies according to certain embodiments.
Computational components described and illustrated herein can be implemented in various forms, for example, as hardware circuits such as but not limited to custom VLSI circuits or gate arrays or programmable hardware devices such as but not limited to FPGAs, or as software program code stored on at least one intangible computer readable medium and executable by at least one processor, or any suitable combination thereof. A specific functional component may be formed by one particular sequence of software code, or by a plurality of such, which collectively act or behave or act as described herein with reference to the functional component in question. For example, the component may be distributed over several code sequences such as but not limited to objects, procedures, functions, routines and programs and may originate from several computer files which typically operate synergistically.
Data can be stored on one or more intangible computer readable media stored at one or more different locations, different network nodes or different storage devices at a single node or location.
It is appreciated that any computer data storage technology, including any type of storage or memory and any type of computer components and recording media that retain digital data used for computing for an interval of time, and any time of information retention technology, may be used to store the various data provided and employed herein. Suitable computer data storage or information retention apparatus may include apparatus which is primary, secondary, tertiary or off-line; which is of any type or level or amount or category of volatility, differentiation, mutability, accessibility, addressability, capacity, performance and energy use; and which is based on any suitable technologies such as semiconductor, magnetic, optical, paper and others.
The following terms may be construed either in accordance with any definition thereof appearing in the prior art literature or in accordance with the specification, or as follows:
E.H.R, EMR: In the present specification and claims, these are used generally interchangeably in that any reference to one might also refer to the other, mutatis mutandis. A repository of computerized health/medical data including a multiplicity of patient records and an interface allowing a user e.g. physician to access such data and, typically, manipulate such data.
HIES, HIE: health information exchange (HIE) system such as DBMotion's HIES, typically including computerized apparatus accepting and storing information from, and providing information to, a plurality of EMRs.
Context: as in CCOW terminology, this term includes information which may be shared by or derived from a computerized system such as an EMR. This information may include who is operating the (e.g.) EMR (user context), who is the patient whose data is currently being processed/displayed by the EMR (patient context) and what operation (e.g. prescription, referral, other) the user is currently performing. “context interception”—obtaining, for a first computerized system such as a HIES, context from a second computerized system such as an EMR, e.g. by sharing or deriving, typically including a determination of how the information from the second computerized system is to be used or related to by the first computerized system. Example of context interception provided according to certain embodiments of the present invention: When an EMR enters a medical record, the smart agent may retrieve the patient identifier e.g. by first recognizing the EMR page through which the patient user accesses the medical records and then, e.g. using prior knowledge re the location of the patient identifier on that page, capturing the user identifier.
Business rule or business layer: As defined in Wikipedia, this term of the art simply refers to a computerized processing rule or layer of computerized processing respectively and does not have any financial connotation whatever.
Mrn: patient ID e.g. Medical record number.
EMR: electronic medical record.
There is thus provided, at least the following embodiments:
A method for using a health information exchange system which stores patient record data regarding a multiplicity of patients, to serve a first plurality of EMRs each interacting with an EMR community including a set of at least one EMR, the method comprising:
for each individual EMR within said first plurality of EMRs, performing a computerized context interception process using a processor to intercept context from the individual EMR and to identify therewithin an event whereby a health provider using said individual EMR calls up an individual patient's record from said individual EMR; and
responsive to identification of said event, using a computerized output device for providing patient record data, pertaining to said individual patient, to said health provider.
Context sharing used by Healthcare systems such as EMR and HIE solution's Context Interception processes are used commonly in the healthcare industry in order to insure synchronization for the clinical data presented for a given provider. In the healthcare industry, the context is commonly referred to a healthcare system (such as HIE or EMR), patient and user identifiers are intercepted by the HIE or EMR and are used to authenticate and authorize to user by given user context, to resolve the patient by the given patient identifiers, and to enable an automation of opening the patient file in the EMR. An example of this embodiment is described below with reference to
A method according to embodiment 1 wherein said patient record data includes at least one information item which is tagged to indicate a source EMR which provided said information item to said health information exchange system and wherein said patient record data provided to said health provider is filtered so as to filter out said at least one information item if said information item's source EMR equals said individual EMR.
An HIE system may be built to aggregate a patient's clinical information from various sources (such as EMRs, lab systems, radiology systems, etc.), in order to enable a provider to view a complete set of clinical information on a given patient at the point of care. The clinical data aggregated into the HIE may additionally include Metadata that enables unique identification of the source system of each specific clinical data element (e.g. specific lab test done for a given patient, or prescribed medication).
In order to enable filtering of clinical information based on the source of the data, it may be possible to enable the system to request information to define the relevant filter condition. For example, if a provider would like to view given patient clinical information that does not exist in the provider's EMR system, and under the assumption the given EMR Data is aggregated into the HIE as any other clinical data source, the HIE may enable the clinical data web services to get as an input the EMR identifier which can be retrieved by the computerized context interception process described above. The response of the web service then typically excludes the EMR data. Typically, as described above, the HIE has the metadata of the given EMR which includes the source system identifier, in which case the clinical data service is able to exclude this EMR information, e.g. as described below with reference to
A method according to embodiment 1 wherein said intercepting and identifying includes using a context management protocol.
A method according to embodiment 3 wherein said context management protocol comprises CCOW.
The Common Context Management protocol in the healthcare industry refers to HL7 CCOW. A SmartAgent CCOW Context interceptor is typically provided which is operative to register to a given CCOW Context Manager (e.g. Sentillion) and get synchronized with the context the Context Manager receives from other EMR or clinical systems register to the Context Manager. The methods for context interception from a context manager may include some or all of the following HL7 CCOW standard operations: Join context, Leave context, Follow context, Handle context termination and Handle “ping” request.
An example architecture of the SmartAgent CCOW context Interceptor is illustrated in
A method according to embodiment 1 wherein said health provider is served by a display screen when using said individual EMR and wherein said identifying includes capturing information from said display screen.
A method according to embodiment 1 wherein said identifying includes:
pre-storing a patient identifier location for each EMR within said first plurality of EMRs; and
capturing said individual patient's patient identifier from said patient identifier location.
Suitable methods for capturing information from said display screen are known e.g. in Windows operating systems which provide native API for elements displayed in the screen such as Windows, UI controls, and text within these controls. Additional available computerized solutions such as ScreenScraping Studio, described online at the following http location: screen-scraper.deskperience.com, capture elements from the screen in various different ways. Screen Scrapping tools such as Screen Scrapping studio, enable stating of a location within a screen or in correlation to an application's position on a given screen, and interception of the data within it.
The SmartAgent context interceptors infrastructure, e.g. as described in
A method according to embodiment 1 wherein said providing patient record data includes subscribing to events exchanged between the individual EMR and an operating system serving the EMR, ascertaining in real time at least one current EMR display operation and mimicking the EMR display operation when providing the patient record data.
The SmartAgent windows state interceptor of
a is an example of a smart agent positioning itself vis a vis an E.H.R. In the example of
Interception configuration may be loaded at runtime from InterceptionConfig.xml file. The file may contain a list of configurations for known EMR applications. Every configuration may specify some or all of: Launch interceptor class type, Window state interceptor class type, Context interceptor class type and Shell container class type. Custom configuration XML blocks may be specified for each interceptor.
When a SmartAgent runtime manager instantiates an interceptor, the manager typically gets the interceptor's configuration class type and then deserializes custom XML block into instance of this configuration class type.
The SmartAgent runtime manager may process the configuration by performing some or all of the following steps:
a. Read all configurations
b. For each configuration gets Launch interceptor block
c. Instantiate Launch interceptor and assign unique identifier thereto
d. Save mapping between Launch interceptor identifier and whole configuration block
e. When a particular Launch interceptor fires an EMR opened event, the event gets a configuration block corresponding to this Launch interceptor
f. Context Interceptor, Window state interceptor and Shell blocks specified in the configuration block are read
g. 3 classes are instantiated accordingly
h. Read and instantiate custom configuration block for each of the 3 items
i. Configure each item with an instantiated custom configuration object
A method according to embodiment 7 wherein said EMR display operation comprises at least one of a translation along a display screen, a minimization of size and a maximization of size.
The position of the SmartAgent on top of the EMR is typically determined relative to the EMR's position and/or state on the screen e.g. as shown herein in
a. If an Operation system event of minimizing the EMR occurred, the SmartAgent may be minimized as well.
b. If the user moved the window of the EMR 10 pixels to the left, Operation systems events occur and are intercepted, and the SmartAgent may move 10 pixels to the left as well.
A method according to embodiment 1 wherein said intercepting and identifying includes screen-capturing EMR context.
A method according to embodiment 5 wherein said patient record data includes at least one information item which is tagged to indicate a category of information to which said information item pertains,
and wherein said capturing includes capturing screen information indicative of a category of information currently being viewed by the health provider,
and wherein said patient record data presented to said health provider is filtered so as to filter out said at least one information item pertaining to a category of information other than the category of information currently being viewed by the health provider.
Context based viewing is typically based on information collected during the screen capturing. Presentation of information in a system based on context in a different system may be achieved by using screen capturing e.g. according to the following example workflow:
A method according to embodiment 10 wherein said category of information includes at least one of the following group of categories: laboratory information, medicines, allergies, procedures, vital signs, pathologies, imaging results, clinical documents, immunizations, problems, and diagnosis.
A method for using a health information exchange system, storing patient record data regarding a multiplicity of patients, to serve a first plurality of EMRs each interacting with an EMR community including a set of at least one EMR, the method comprising:
For each individual EMR within said first plurality of EMRs, using a processor to automatically identify an event whereby a health provider using said individual EMR calls up an individual patient's record from said individual EMR; and
using a processor to apply at least one predetermined rule involving intercepted EMR context and using a computerized output device to provide an alerting indication drawing the health provider's attention to at least some of said patient record data according to said predetermined rule.
HIE systems consolidate typically large amounts of information per patient, from a wide variety of information systems such as EMRs, lab systems, imaging systems, etc. SmartAgent rules are typically applied on patient information arriving from the HIE to filter out irrelevant clinical information or information that already exits in the system the health provider is working on, e.g. a given EMR. These rules may apply various combinations of filters on the Patient Clinical data. Filters may for example include:
a. Time filters filtering out information that is outdated in the sense of healthcare; for example, 5 year old lab results are almost always irrelevant hence typically have a display priority which is lower than 5 year old allergy records which are often relevant; and/or
b. Source filters filter out information whose source system is the EMR itself.
Rules may be applied by the VPO Analyzer component e.g. as shown and described herein with reference to
A method according to embodiment 12 wherein said generating an alerting indication comprises presenting patient record data, pertaining to said individual patient, to said health provider.
A method according to embodiment 12 wherein said predetermined rule comprises alerting said health provider's attention if said patient record data includes at least one item of information not included in said individual EMR.
Attention rules are components which may be provided, typically on the EMR Agent server side which typically runs rules on clinical acts in each VPO and marks clinical acts which meet the rule's conditions. The SmartAgent client application typically checks for pre-selected clinical acts and performs an action such as a basic “blink” action or “Expand the SmartAgent” or “Make Clinical acts Bold” if certain clinical acts meet certain rules. Example: the patient record includes 3 acts. An attention rule (“Rule 1”) states: “Mark (i.e. select) clinical acts NOT from my EMR”. Assume only Act 1 meets this rule. Act 1 is then marked in the VPO a Rule 1 annotation. The SmartAgent may then be configured to perform an action of flashing if it finds at least one clinical act that meet a certain rule e.g. rule 1 in the present example.
A method according to embodiment 12 wherein said rule involves health-provider specific context and wherein said applying includes identifying said health provider's identifier.
Such provider identification may be performed by the User Context interceptor of
A method according to embodiment 14 wherein items of information included in said patient record data are stored in computerized storage, in association with respective information source tags indicating an information source supplying each said item, and wherein a determination is made, based on said information source tags, of whether or not said patient record data includes at least one item of information not included in said individual EMR.
As described above, data stored in the HIE can be identified as having arrived from a specific EMR source. The VPO Analyzer which is part of the SmartAgent service may use Clinical Data provided by the Clinical Data Services as described above, and metadata of each clinical data element (e.g. Specific Allergy) in order to filter clinical information whose source of information is a given EMR e.g. as shown in
A method according to embodiment 16 wherein a list of information sources supplying an individual EMR is stored in computerized storage and wherein said determination includes determining whether all items in said patient record data are supplied by one of: said individual EMR; and an information source appearing in the list of information sources supplying the individual EMR.
In many cases, EMR Systems which serve as data providers or sources for an HIE, also receive clinical data from other systems. A common example is Lab Results clinical data that may be recorded in dedicated (non EMR) lab information systems.
The lab results are sent by the lab system and may be received by EMRs and also by the HIE. In this case, it is common to find information that already exists in the EMR, which was not sent by the EMR and also appears in the HIE. For such cases, a configuration may be provided which determines which EMR served as a source, which received information from other sources (e.g. a lab system). In order to apply a rule or filter such as “Exclude my EMR data”, this configuration may be used, so in addition to filtering clinical information from specific source, a filter is applied on sources that act as a source of the given EMR. In the present example, clinical information which arrives from the lab system which is acting as a source of the given EMR, may be filtered.
A method according to embodiment 15 wherein said predetermined rule comprises alerting said health provider's attention if said patient record data includes at least one item of information which was not seen by the health provider identified by said identifier when he was last served by said health information exchange system.
Additional Example of a rule is “show me only clinical data I (as provider) haven't seen on this patient”.
In order to filter out clinical information that a given provider has not seen for a particular patient, some or all of the following operations may be performed, suitably ordered e.g. as follows:
a. SmartAgent's user context interceptor intercepts user identifier e.g. as described herein with reference to
b. SmartAgent's patient context interceptor intercepts patient information and identifies the patient.
c. For the given user and patient, systems get the Timestamp on which the user last accessed this patient
d. SmartAgent service runs service clinical data service and gets patient's clinical data.
e. SmartAgent service runs the “new acts since last seen” VPO Analyzer rule. If at least 1 clinical act date is later than the timestamp, the rule is applied, the correlated clinical record is marked with the relevant annotation of the rule, and the SmartAgent identifies those acts which are later than the timestamp and enables the alert.
f. Provider views the patient's clinical data in SmartAgent. In order for the workflow to be applied the next time the provider enters the patient file, the SmartAgent saves the timestamp of the last time the provider saw the patient's data in the SmartAgent.
f. Save last viewed timestamp for the given user and given patient. The timestamp per user and per patient can for example be stored in the table of
A method according to embodiment 15 wherein said identifying said health provider's identifier employs single-sign-on authentication of said health provider.
CCOW and screen capturing are suitable methods to intercept user context as described above. User context intercepted thereby may include a user identifier which is used by information systems to automatically authenticate and authorize the user, including passing the user context to the information system security system for user resolution and authentication. User authentication may proceed as described herein with reference to
A method according to embodiment 15 wherein said identifying said health provider's user name includes capturing said health provider's identifier from a screen display employed by said health provider.
A method according to embodiment 1 wherein said intercepting and identifying includes providing an architecture which interacts with at least one context interception adaptor and, when operating in conjunction with a specific EMR having a specific context sharing capability, using an adaptor adapted to utilize said specific context sharing capability as said context interception adaptor. The Context interceptor architecture typically enables creation of a separate custom interceptor for each EMR, in the event that no out-of-the-box context interceptor meets the interception requirements of a given EMR.
A method according to embodiment 1 wherein said context intercepted includes an indication of at least one display characteristic characterizing a graphic user interface being generated by the EMR and wherein said providing patient record data includes generating a graphic user interface for displaying said patient record data which shares said display characteristic.
The ability, also termed herein “skins”, to modify the look and feel of GUI based applications is often part of Development frameworks such as .Net and Java. The term “skins” refers to different colors, fonts, or other appearance preferences in which the application can be configured to be presented. In order to enable health providers to use their EMR with the SmartAgent, and experience the SmartAgent appearance to be similar to the EMR's, the SmartAgent enables different appearance configurations to be applied for each EMR, e.g. as described in
A method according to embodiment 22 wherein said at least one display characteristic includes at least one of: a color characteristic, a texture characteristic, a text font, a text size, and a characteristic of an icon such as a button.
A system for using a health information exchange system, storing patient record data regarding a multiplicity of patients, to serve a first plurality of EMRs each interacting with an EMR community including a set of at least one EMR, the system comprising:
a record-call up identifying processor operative, for each individual EMR within said first plurality of EMRs, to automatically identify an event whereby a health provider using said individual EMR calls up an individual patient's record from said individual EMR; and
an intercepted context rule applying processor applying at least one predetermined rule involving intercepted EMR context and controlling a computerized output device to provide an alerting indication drawing the health provider's attention to at least some of said patient record data according to said predetermined rule.
A system for using a health information exchange system which stores patient record data regarding a multiplicity of patients, to serve a first plurality of EMRs each interacting with an EMR community including a set of at least one EMR, the method comprising:
a record-call up identifying processor operative, for each individual EMR within said first plurality of EMRs, for performing a computerized context interception process using a processor to intercept context from the individual EMR and to identify therewithin an event whereby a health provider using said individual EMR calls up an individual patient's record from said individual EMR; and
a record call-up identifying processor-driven output device controller operative, responsive to identification of said event, to control a computerized output device for providing patient record data, pertaining to said individual patient, to said health provider.
First, an embodiment of the CTS sub-system is now described generally with reference to
Possible considerations for designing the CTS subsystem of
The representation of medical information is a key issue in the use of computerized systems in healthcare. In everyday life, medical concepts are represented by words and phrases. This form of information representation allows a high degree of freedom but is difficult to use in computer systems. Phrases might be too long and are often inconsistent: ‘pain in lower abdomen’ could also be described as ‘complains of recurring pain in the lower part of the abdomen’. In order to avoid these problems, medical information saved in computer systems is codified. The process of codifying medical information involves the representation of medical concepts, such as observations or procedures, using a fixed code instead of free text.
A platform is described which addresses this by providing some or all of: robust information model, a repository of standard vocabularies, tools for searching for concepts, mapping tools to help map proprietary vocabularies to standard ones, tools for defining semantic neighborhoods and relation patterns between concepts, routine updates to vocabularies when released by the standards-development organization, and a set of semantic services such as some or all of: Managing local and Control Terminologies, Semantic Maps (mapping) between local and baseline (standard) concepts, Semantic Business Services, VPO Enrichment, Semantic Navigation (in Semantic Networks).
Semantic Interoperability includes ensuring that information exchanged between systems is understandable in the manner in which it was intended by the original creator of that information. It may enable systems to aggregate information from different sources and process it in a meaningful manner.
Semantic Interoperability between heterogeneous healthcare information systems is provided in accordance with certain embodiments. One of the primary obstacles to interoperability is the use of independent sets of terms and codes by the participating systems. When consumers of data (e.g. physicians, EMRs, workflows, Decision Support Systems, BI tools and more) refer to clinical concepts that originated from various sources, they cannot easily interpret, analyze, compare or rationalize this data for visualization. In other words, semantic information is lacking.
The problem of unified medical representation and clinical code mapping has become more and more crucial in the medical world. The effort of creating a global vocabulary and mapping local codes to baseline codes requires time, experience, and knowledge of clinical code standards and clinical terms. Therefore, it is desired to provide an ability to create such vocabulary artifacts easily, and to make the project of mapping flexible and controllable.
System goals may include some or all of:
A. Retrieve patient information: Typically, it is desired to bring together data from disparate clinical information systems in a uniform structure and semantics to support patient care, clinical decision support, and various secondary uses of clinical data such as research.
B. Semantic interoperability: Typically by creating solutions and services for a clinical decision support that makes use of the integrated, uniform data. The system described herein may comprise the integration point for data, and is privy to data that the various source systems are not. Thus, the system of the invention typically can provide enhanced decision support on top of the decision support that the source EMRs provide. This is done by creating solutions for the knowledge-representation and inference capabilities of existing commercial CDSSs.
An example of what may be achieved is the population of an electronic medical record or EMR A with an allergy—documented in EMR B—that patient Y has to medication X, the result of which is the ability of the decision-support component of EMR A to fire a drug-allergy alert when the physician writes a prescription for patient Y for a medication in the same allergy class as medication X. Unless EMR A understands the code used for medication X and has knowledge about the relationships between drugs and their allergy class, it cannot fire such an alert.
In order to accomplish the sharing of patient information and clinical decision support solutions, a semantic interoperability paradigm may be based on some or all of the following harmonized elements:
a. Unified Medical Schema—Ontology of medical knowledge that describes the information and semantics of a medical domain and maintains relations between different domains.
b. Vocabulary Ontology—A natural continuation of the UMS, which describes the medical terminology ontology. This ontology utilizes and adheres to well-adopted and advanced standards and methodologies (such as SNOMED, LOINC, HL7 v3, UMLS etc.).
c. Common Terminology services (CTS)—Services that maintain cross-terminology mappings enabling interpretation and translation of information encoded in different terminology systems (such as but not limited to industry known systems e.g. SNOMED, LOINC, ICD and proprietary coding systems). CTS typically includes and incorporates Semantic Network Services (SeNS): services based on medical terminology ontology, providing semantic navigation capabilities that allow interpretation of medical information. Therefore, CTS and SeNS are used herein generally interchangeably.
The platform described herein typically enables clinicians to draw conclusions based on a meaningful and unambiguous presentation of information, and serves as the foundation for clinical rules and alerts based on the aggregated information. The system is typically vocabulary agnostic, working with a broad range of standards, coding methods, and vocabularies.
The first step in accomplishing the sharing of patient information and clinical decision support solutions may include Unified Medical Schema such as the UMS of DBMotion as a uniform structure for data. The UMS is, in the terminology of data modeling, a logical data model. The UMS may be created by using the HL7 version 3 Reference Information Model as a starting point.
As part of the implementation process of the above solution, human designers together study the structure of the data from the client's EMRs (and other systems to be integrated) and map or translate those structures to the unique structure of the UMS. For example, this process might involve looking at various HL7 v 2.x messages, finding various data elements such as drug code and medical record number and mapping the fields in the messages that contain these data elements to the appropriate data elements in the UMS. In this way, all the information in the network has one unique representation and thus can be shared among different users within different systems and organizations.
The Vocabulary Ontology describes the medical terminology network. The vocabulary ontology is based on a data model that represents concepts, concept relations, coding systems and contexts. The content of the ontology typically includes some or all of:
a. UMS, such as dbMotion UMS's, domains and related concepts together with coding systems and other attributes associated with them
b. relations between concepts to represent all logic employed by a particular medical application
c. Grouping of concepts for creating contexts.
This ontology may serve as a foundation for the CTS subsystem.
Accomplishing a uniform structure and semantics for data also typically relies upon a solution to the “vocabulary” problem, where different systems use different codes (or “words”) to refer to the same entities. For example, when two different EMRs (Cerner and EpicCare) use different codes for the class of medications known as atorvastatin 80 mg oral tablet: Cerner—7247, EpicCare—045772. Typically, the CTS subsystem includes some or all of the following functionalities:
a. Managing of local Terminologies for each operational system within all nodes defined.
b. Maintaining cross-terminology mappings
c. Enabling interpretation and translation of information encoded in different terminology systems (like industry known SNOMED, LOINC, ICD etc and proprietary coding systems)
d. Enabling definitions of categories and contexts for groups of concept codes.
This enables the system to store mappings of code systems in the CDR. For example, the following mappings may be created to the RxNorm code for atorvastatin 80 mg oral tablet (259255) to translate data between EMRs at UPMC: 7427 to 259255 and 045772 to 259255.
The CTS subsystem typically provides some or all of the following functionalities pertaining to relations between concepts and searching capabilities:
a. Providing semantic navigation capabilities that allow interpretation of medical information.
b. Providing relation patterns between different concepts.
c. Enabling search capabilities on the concepts tree.
Definitions, acronyms and abbreviations useful in understanding certain embodiments of the present invention e.g. as described in
According to certain embodiments, when retrieving medical information there is a significant role to retrieving and interpreting the vocabulary codes bounded to the retrieved information most times in the context of a UMS domain. The business layer may decide what is the codes' information to be listed in the business output schema e.g. local code, baseline code, both, calculated typically according to different business rules, code's neighborhood, and hierarchy. In order to do so, the business typically online queries the CTS requesting the relevant information.
Another CTS use of the business layer may be for advanced filtering—when there is a need to retrieve information according to one concept code (e.g. “give me all WBC lab results”) or according to a context (e.g. “give me all beta blocker medications”). Another possible use is to retrieve all information that is related according to relation patterns (e.g. “give me all relevant information for the contra indication pattern”—which would result in all medications, conditions, procedures, etc. that have contra indication to a certain drug).
A Data Integration layer may operate to recognize concept codes during loading and to load new concept code. When a code arrives through a message to the DIL, a query to the CTS typically results in information regarding this code if such exists or indication that this code is new. When a new code arrives through a message to the DIL, the new code is sent to the Vocabulary Ontology for further processing such as but not limited to being mapped to the right concept or adding new contexts.
When building a knowledge module, the knowledge expert may query the CTS™ and SeNS™ for various terminology operations (e.g., translation of a code between vocabularies, identification of semantic relationships between codes).
KM decision logic—If the patient is treated with Coumadin Medication AND has a Diagnosis of Bioprosthetic Mitral valve AND the duration of the treatment is more than 3 months, then send message to stop Coumadin.
CTS interaction: Search medication—the knowledge engineer provides CTS with the name “Coumadin” and requests all relevant codes. The CTS may retrieve 34 different codes from which the user chooses the appropriate one, say Coumadin Tab 5 mg—RxNorm code—209081.
Relations—the knowledge engineer retrieves from the CTS all relations associated with the selected medication and selects the appropriate one: “May Prevent by” relation.
Diagnosis—the knowledge engineer navigates from Coumadin on the “May Prevent by” relation and may retrieve a list of Diagnosis. The user chooses, say, the Bioprosthetic Mitral valve diagnosis.
The knowledge engineer enters a suitable duration for the selected diagnosis (Bioprosthetic Mitral valve): 3 months. Then Action—the knowledge engineer writes the “Then” clause: send message to stop Coumadin.
Consumers of CTS services in SmartWatch, other than KFW, typically include the Event Monitor described herein. The Event Monitor typically receives triggering rules for which it needs to look for matching records for some reason. These triggering events come from clinical knowledge. Triggering rules are envisioned to be predicated over the data. Every such rule can be thought of as composed of two elements: a pattern rule such as “lab result whose code is x from code system y and whose value is greater than z” and subscription parameters—actual values to be filled into the pattern rule. In the above case the values may include x=SNOMED, y=11111 and z=15. Event Monitor may support a limited number of such pattern rules, and may monitor a large number of specific triggering rules using parameterized subscriptions to these pattern rules. Event Monitor typically does not make final decisions, but rather triggers the evaluation of the patient using KFW. For that reason, when at risk of ambiguity—it is usually better to have false positives (false alarms) over false negatives (missing a relevant record).
The action manager component is typically operative to communicate SmartWatch findings to the external world, to care providers and external systems. Thus, the Event Monitor gets the message across to the receiving end in a way that is as easy as possible, the Action Manager typically expects the CTS to convert in runtime from baseline terminology in which information was provided, into the terminology the external system uses, probably a local code system.
A third SmartWatch consumer for CTS may be a SmartGuard manager tool described herein, in which SmartGuards are defined. Within this tool rules are defined on which SmartWatch makes decisions and captures relevant pieces of information. Application-specific needs here may be similar to the application-specific KFW needs.
Vocabulary administrators may use the vocabulary management tool in order to manage all vocabulary aspects. A user, by using the mapping tool, may perform the actual mapping of the local concept codes to the dbMotion Vocabulary Ontology.
Vocabulary human experts typically include a specialist e.g. MD familiar in a clinical area serving as an authority for clinical terms and deciding whether mapping is correct. The Vocabulary experts use the vocabulary management tool to approve the mappers' suggested mapping using the vocabulary management tool and also may provide suggestions for improvement of the dbMotion Vocabulary Ontology.
The following processes I-IV, some of which may be provided in dbMotion core, and solutions that employ vocabulary services, are now described.
I. Loading Local vocabulary information
In order to represent the local data of each system and in order to be able to translate it to a common terminology, the local vocabulary information is typically located into commercially available dbMotion (e.g.) Vocabulary Ontology. The following steps may be followed, completely or in part:
a. Initial stage: In the initial stage of pre-deployment, each organization provides dbMotion a list of all local coding systems with all their concept codes (manual process). All the local code systems' concept codes from the predefined file/s are imported to the dbMotion Vocabulary Ontology and each code is assigned to a vocabulary domain.
b. Production stage including an offline process and an online process, typically including loading of vocabulary codes on a fluent basis. The vocabulary elements can be loaded to the system both in offline process e.g. using a vocabulary management tool and\or in online process (automatic during messages loading using the Data Integration Layer).
Offline process: By using a vocabulary management tool typically with appropriate permissions, updates can be made to the vocabulary content both by using an import service or by manually influencing the vocabulary elements on the management tool.
As in the initial stage of pre-deployment, when there is an update in any local coding system, the updates or the whole list of codes can be transformed to a predefined file/s format in a manual process and may be imported to the Vocabulary Ontology using a vocabulary manager tool. Alternatively, when only a few changes occur, changes may be effected manually in the vocabulary management tool.
Deleted vocabulary elements: Obsolete local vocabulary elements that are not acting in any record in the CDR can be removed manually from the Vocabulary Ontology using a vocabulary manager tool.
Online process: When a new Local code enters a CDR through a message, it is loaded to the CDR and assigned to a pre-defined concept domain according to the message type and related field. The CDR contains only the Local Codes as received from the legacy systems. No mapping process may take place in the Data Integration process. The new local code is marked as new in the Vocabulary Ontology and an event is sent to the Event log for the Vocabulary administrator to monitor it on a regular basis. The administrator can relate the concept to a UMS sub domain and map the code to the Vocabulary Ontology.
A code arriving in a message is always associated with a codeSystem and may also be associated with an effectiveDate for the cases when codes in the coding system are editable i.e. can change their meaning over time, such as ICD9 and CPT4 codes. The Vocabulary Ontology takes this into account.
II. Mapping local codes to the ontology
Mapping allows a user to map between Local Concept codes and the Vocabulary Ontology (e.g. baseline concept code) in the context of UMS Domains. The process of mapping is executed using the vocabulary manager tool. For each UMS concept domain, the local code can be mapped to one entry point in the dbMotion Vocabulary Ontology. The mapper chooses local code or bulk of local codes for mapping. The mapper can apply different filters/parameters for the mapping. A mapping process that occurs in the Mapping Tool provides mapping suggestions to each of the selected codes with scoring. These suggestions can be approved/rejected by the Mapper. The mapping approval includes also the decision of what vocabulary domain to assign. Mapping to a post-coordinated baseline concept typically refers to mapping in which a combination of more than one baseline codes together give the exact mapping—and relation between a collection of baseline codes when mapped to a local code.
III. vocabulary management.
Suitable vocabulary management functionalities a-h, some or all of which may be provided, are now described.
a. Manage versions: When there is new version of a coding system, the version's validation start date is updated for any vocabulary object that was updated according to the new version updates. Until the new version is activated, the Vocabulary Ontology maintains both old and new information. When retrieving changed code information, the system may check if the retrieved code's information is up-to-date. Typically, only if it is, the information is retrieved.
b. Maintaining of concept codes: Concept codes are maintained on a regular basis. If changes occur in a coding system, this change may be analyzed and imported to the Vocabulary Ontology in a predefined format. The vocabulary manager tool may manage the different versions. When the change is of a baseline code, it is the responsibility of the commercially available dbMotion product to provide those updates when they occur. If it is a change in a local coding system, then it is the responsibility of each node separately.
c. Maintain concept relations to other concepts: The vocabulary manager tool may allow the change of relations between concepts—creating new relations and deleting relations no longer existing. This change is effected in the level of the Vocabulary Ontology and is typically approved before being activated.
d. Maintain mapping of a local code to Ontology: The vocabulary manager tool may allow the changing of mapping of local codes to the Vocabulary Ontology. This change typically must be approved before being activated and versioned.
e. Maintain contexts/value sets: The vocabulary manager tool may allow the creation and update of contexts and value sets. Each change typically must be approved before being activated and versioned.
f. Maintaining UMS domain information: The vocabulary manager tool may allow the change of UMS domain information, when sub-domains are being updated. When updating a sub-domain, its related concept codes may no longer be relevant and other concept codes may now be relevant. When deleting sub-domain, the vocabulary administrator typically first decides what to do with all its related concept codes. All changes typically must be approved and versioned before being activated.
g. Publish changes to subscribers: Any change in a subscribed concept may be published to the subscribers in a predefined format.
h. Approval process: Each change in the Vocabulary Ontology is typically approved by authorized users. The vocabulary manager tool may allow and implement the approval process for each changed element.
IV. Semantic navigation: Querying procedures A-F, some or all of which may be employed by dbMotion core product and/or by the CTS subsystem, are now described:
A. Retrieve codes according to a given context: In each node, if the given context exists in its CDR, a process that generates the list of all valid concept codes that are assigned to this domain or to one of its sub-domains, is executed. For each of the generated codes, a process that retrieves the relevant data from a Vocabulary Ontology is executed.
B. Retrieve Codes according to a specific code within a specific context: In the initiator node, if the given code exists in the CDR's vocabulary domain, and is also assigned to the given domain or to one of its sub-domains, a process that retrieves the valid code's baselines is executed. This baseline code is then passed to all the network's nodes. In each node, a process that generates the list of the baseline's mapped local codes is executed. The mapped codes are all the local codes that are mapped to the baseline code. For each of the generated codes, typically including the baseline, a process that retrieves the relevant data from the CDR is executed. A relevant data is the information in the CDR that has the generated code in one of its predefined attributes.
C. Search for a concept: Locate and retrieve a certain vocabulary concept using a search service. This can be a string. Input Parameters may include some or all of the following:
1. Search string: a string (not case sensitive) that is the motivation of the search. Search typically finds items related to it.
2. Domains/sub domains context: limit the search to pre-defined domains and sub-domains. If null, search the entire database. Use the internal mapping/created list of domains.
3. Context string: limit the search to the provided context string.
4. Related codes relationship types: The output result may include the related codes/concepts as well. In the output, indicate those as “related” and provide the relation type. If null, no related concepts are retrieved, “All” may retrieve all related concepts.
5. Relation pattern: the searching is done according to the given relation pattern which defines the semantic navigation pattern.
6. Input language: the language in which the search string is provided.
7. Output language(s): The code/concept designation language(s).
8. Coding system(s) or abstract concept for result
9. Scoring cut off
10. Max results per search
D. Dynamic querying: A user might build a specific query. dbMotion SeNS™ may allow building of such a query, save it and enable to reuse it when appropriate.
E. Query control tool: In order to be able to build a query according to changing needs, dbMotion SeNS™ may include a query control tool. This tool may address all application-specific requirements for searching and querying using a dedicated GUI for this purpose. In this tool, the user may be able to effect some or all of the following functionalities: Build a dynamic query, and save it for later use; Use existing queries; Use a template for creating a query; Update existing queries; Navigate graphically in the dbMotion Vocabulary Ontology, in order to find, and select concepts; and Define Value set of concepts from a query result.
F. Mapping Tool: The CTS subsystem typically includes a mapping tool which allows a user to match between string, codes and phrases to the right place within the Vocabulary Ontology by using a dedicated GUI. In this tool, the user may be able to perform some or all of the following functionalities: Mapping local codes to standards (dbMotion Vocabulary Ontology) with high performance and quality; match the best suggested mapping according to a map ranking for each suggested mapping; and apply different search methods or algorithms as appropriate.
The term “Concept” as used hereinabove refers to or points to a terminology element that describes one item of classification knowledge such as a specific drug or disease, like congestive heart failure. A “classification concept” points to a higher level, typically more general, knowledge element, such as a cardio-vascular disorder.
A “Node” as used hereinabove refers to a software deployment component that provides some or all of the system functionality described herein for an individual medical organization. A Node may contain one or more physical servers and is usually but not necessarily installed in each hospital within a medical enterprise. Each Node typically has its own Clinical Data Repository (CDR) that stores information collected from this specific facility.
An embodiment of the knowledge framework sub-system is now described generally with reference to
The system of the present invention, even without the knowledge framework, typically enables healthcare organizations to securely share and exchange medical information, creating a Virtual Patient Object (VPO) by logically connecting a group of care providers and organizations without enforcing data centralization or replacement of existing information systems. By sharing real-time medical information, medical staff can make clear critical decisions, thereby providing safer and more efficient healthcare.
The information flowing from the network shown and described herein can leverage development of services that go beyond sharing and exchange of information for purposes such as presentation. Moreover, to avoid overloading care providers with increasing amounts of raw data, it is desired to have services that can interpret raw data, e.g. hemoglobin lab test measurements, into more meaningful concepts at different levels of abstraction, e.g. anemia state, which is derived from consequent hemoglobin lab test results.
SmartWatch (SMW) enables continuous monitoring of a population, e.g. patients, within a defined medical information space. The SMW framework is utilized by application-specific and/or customer-specific Enterprise Clinical Decision Support Systems (ECDSS). These SMW-based ECDS systems, also known as SmartGuards, are outside the scope of certain embodiments of the present invention and suitably employ core platformabilities of certain embodiments of the present invention and services as well as consuming new services which may be provided by the KFW. For example, the core platform of certain embodiments of the present invention provides a unified holistic view of the patient clinical state manifested by the Virtual Patient Object (VPO) while the KFW provides the ability to interpret the data contained within the VPO to generate healthcare delivery recommendations.
An example of an Enterprise Clinical Decision Support System which may utilize the SmartWatch subunit shown and described herein is described herein in detail with reference to
Thus, the KFW may utilize the holistic view of a patient as captured in the VPO provided by certain embodiments of the present invention to enable knowledgeable abstraction of data to meaningful concepts. This data abstraction ability serves as a key vehicle to support the creation of clinical decision support services. For example, improve the quality of medical care by creating Enterprise Clinical Decision Support Systems (ECDSS) that consume data interpretation results to generate recommendations to care providers and administrators. Another example might be to generate a VPO schema recommendation that takes into consideration preferences such as clinician specialty, e.g. cardiologist, and patient clinical state, e.g. congestive heart failure (CHF), to address specific requests for information.
Another goal of the KFW according to some embodiments is to facilitate the dissemination and utilization of clinical expertise to improve the quality of care. Clinical expertise is accumulated by clinical experts at different medical domains over years of experience. The KFW may enable clinical experts to play an active role during the knowledge acquisition process while collaborating with other actors, e.g. knowledge engineers.
The KFW is typically operative to provide computerized support e.g. to one or more medical domain experts, researchers, clinicians, nurses, social workers, administrators, knowledge engineers and other, non-human consumers, such as EMR, workflow, CPOE process, another DSS, to interpret raw data in order to reach meaningful conclusions at different levels of abstractions otherwise hidden in the data. The KFW typically facilitates application of knowledge to data to reach meaningful concepts at different levels of abstractions which are useful in computerized clinical decision support.
Applications for this system extend throughout the healthcare community at large. It may be domain experts playing the role of knowledge editors to disseminate their valuable knowledge accumulated over years of practicing medicine, care providers benefiting from knowledge-based interpretation of data to improve the medical care they deliver, or healthcare applications developers using KFW services to create ECDSS applications. The common denominator for these diverse scenarios is an objective of acquisition and application of knowledge to data to reach meaningful concepts at different levels of abstraction, thereby improving the quality and safety of medical care, while potentially reducing overall clinical costs.
The ability to achieve this task capitalizes on the unique offering of the platform provided in accordance with certain embodiments of the present invention in the healthcare IT market as described hereinabove.
An example list of users is provided in the table of
A high level description of the Knowledge Framework (KFW) capabilities, interfaces to consumers and the system configuration, now follows. Part of the KFW may rely on 3rd party components. For example, one may incorporate an existing commercial rule engine instead of developing one ‘from scratch’.
The KFW typically utilizes services provided by the core platform shown and described herein. The KFW is responsible to provide services to acquire, maintain, store, and apply knowledge to data to reach meaningful conclusions at different levels of abstraction. The KFW may provide its services according to the Service Oriented Architecture (SOA) principles. These services may be available to systems shown and described herein and applications internally, e.g. business domains developed using Business Layer infrastructure shown and described herein, as well as to other healthcare IT applications externally, such as 3rd party Electronic Medical Records (EMR).
SMW is a framework that enables continuous monitoring of a population, e.g. patients, within a defined medical information space. The SMW framework allows the development of Enterprise Clinical Decision Support Systems (ECDSS). These SMW-based ECDSS, also known as SmartGuards, capitalize on core platform abilities shown and described herein as well as consuming new services which may be provided by the KFW. For example, the core platform shown and described herein provides a holistic view of the patient clinical state manifested by the Virtual Patient Object (VPO) while the KFW provides the ability to interpret the data contained within the VPO to generate healthcare delivery recommendation.
The KFW may serve other components shown and described herein as well. For example, the business layer may consume its services as part of a business process modeled in a business domain and accessible through a business method. The business method outputs including the knowledge evaluation results generated by the KFW can be displayed using a Clinical View created using the Presentation Layer shown and described herein. In addition, a 3rd party EMR or other healthcare application can consume these same services of the KFW similarly.
The new system may interface with the existing platform core shown and described herein to utilize several of its existing services. These services may include but are not limited to:
The KFW may provide SOA-based public interfaces to consume the services it provides, such as creating of a new Knowledge Module (KM) or evaluating a Knowledge Module giving specific patient data, to internal and external applications and authorized users of the system shown and described herein as shown in
Typically, a KM or Knowledge Module comprises a knowledge evaluation rule, an input data model, an output data mode and terminology/ontology elements that are used by the KM. The server component resides on a variety of servers including an application server that hosts the KFW Access Service, an application server that hosts one or more Inference Engines, such as but not limited to RatHat's JBoss Drools engine, and a data server that hosts the Knowledge-Base repository. The server component may interface with existing components shown and described herein e.g. as detailed previously. This interface is supported by the existing SDK shown and described herein, although it may be extended or even enriched with new functionality if application-specific requirements arise.
The management tools suit is an optional functionality. KFW's knowledge base repository may be derived from a suitable Knowledge-Module Entities Model such as, for example, that of
The table presented in
Some or all of the following assumptions and dependencies typically characterize capabilities of certain embodiments of the KFW System:
Features of the KFW System, according to certain embodiments, some or all of which may be provided, are now described:
FEAT8 Data interpretation and inference capability: The KFW may receive as input (1) an identifier of a Knowledge Module to evaluate, e.g. definition of chronic hypertension, and relevant patient data, e.g. blood pressure measurements. The KFW may process the data and knowledge using an inference engine of some kind, e.g. a temporal reasoning engine. As output, the KFW may generate a conclusion e.g. patient had chronic hypertension during last year.
FEAT8.1 Iterative Knowledge Module Evaluation Interaction: The KFW enables its consumers to provide it with the data it uses to perform a Knowledge Module evaluation in an iterative manner. Thus, a possible intermediate evaluation result is the fact that additional data is to be provided to complete the current evaluation request processing. Then, after the consumer collected the missing data, it sends another evaluation request to the KFW. The intermediate result may be marked as not final.
FEAT8.2 Inference Evaluation Explorer: Each conclusion result may optionally contain an explanation of the knowledge and facts that lead to it. This explanation may be in a human-readable and machine-interpretable format. One of the evaluation request arguments may explicitly direct the KFW whether to generate such an explanation or not, as part of its output. For example, the hematocrit and haptoglobin serum levels of a patient, leading to the conclusion of having ongoing hemolysis, may be presented together with the definition of what an ongoing hemolysis is.
FEAT8.3 Temporal Reasoning Capability: A special type of inference capability that the KFW may support is temporal reasoning. A common feature of many healthcare information types is having a time stamp. The valid time of a WBC lab test result, the request time to perform a MRI imaging study and gestation condition start time are only some examples. The temporal reasoning method enables to interpret large sets of time-stamped raw data into meaningful concepts at different levels of abstraction. This may include abstraction of individual time points to longitudinal time intervals, computation of trends and gradients from series of consequent measurements, and detection of different types of patterns, which may be otherwise hidden in the raw data.
FEAT8.4 Probabilistic Reasoning Capability: Another type of inference is undeterministic or probabilistic reasoning. Optionally, insufficient, incomplete, or less reliable data is input to an inference process. Or, non-deterministic data abstraction methods such as fuzzy logic may optionally be applied including reflecting the data quality implications on the final output in terms of confidence level. For these purposes exactly probabilistic algorithms, such as Bayesian Networks or Belief Networks, exist which reflect the data quality implications on the final output in terms of confidence level. This optional capability typically utilizes a specialized knowledge representation model that captures the probabilistic nature of the knowledge and corresponding inference mechanisms.
FEAT8.5 Context-Based VPO Schema Generator: A special type of evaluation result is a recommendation to an information schema of a Virtual Patient Object (VPO). A VPO schema can be generated when given as inputs the clinical state of a patient, e.g. current problem list, and possibly the preferences of a care provider, e.g. clinical specialty. This custom-tailored VPO may benefit the care provider by decreasing the amount of information to review during a care delivery session. FEAT8.6 Knowledge Evaluation Simulator: A helpful feature to a knowledge editor is to simulate the evaluation process of a Knowledge Module. The simulator typically supports debug-like mode enabling to find problems in the Knowledge Module definition or inference engine. In addition, the simulator may have a capability to generate a representative data set that covers possible inference execution branches.
FEAT9.1 Descriptive Information Traits: A section common to all types of Knowledge Modules is the one that contains descriptive information about the Knowledge Module. The Knowledge Module metadata describes its scope, goal, function, etc. This may include its creation date, modification dates, authors, version details, and classification keywords, whether codified or not. This information serves as the basis to search and retrieve Knowledge Modules by submitting search queries that comprise the descriptive information traits.
FEAT9.2 Standard Boolean Expressions: Simple rule-based clinical knowledge is often expressed using straightforward Boolean expressions, i.e. and/or clauses. Thus, the KFW may support the representations of such expressions.
FEAT9.3 Declarative and Procedural Knowledge: Clinical knowledge can be divided into two main types, declarative and procedural knowledge. The declarative knowledge type defines meaningful clinical concepts related to the patient's clinical state. For example, blood pressure state Knowledge Module definition (i.e., low, medium, or high) comprises declaring possible quantitative ranges of diastolic and systolic blood pressure to each qualitative value. The procedural knowledge type usually defines clinical workflows and procedures. This may be for instance a recommendation of treatment for patients suffering from high blood pressure (e.g., routine blood pressure monitoring). It usually involves the explicit specification of control structure such as do-in-parallel, decision steps, or mandatory actions. The KFW may provide specific knowledge representation (KR) models to capture these two distinct types of knowledge to support a broad range of Clinical Decision Support Systems (CDSS). Moreover, the KR models used to capture these knowledge definitions may be based, or at least adhere, to existing healthcare standards such as HL7 GLIF for declarative and procedural knowledge respectively.
FEAT9.4 Terminologies and Vocabularies: A Knowledge Module definition often comprises terms and concepts originating from controlled medical vocabularies. These concepts are typically found both in the metadata section of a Knowledge Module, e.g. an applicable clinical state such as diabetes mellitus using coded keywords from SNOMED, and in its knowledge definition section, e.g. referring to a certain type of blood lab test such as WBC count using LOINC codes. Thus, the KR model of a Knowledge Module provides special placeholders enabling to embed terms and concepts during the knowledge acquisition process. Moreover, embedding terms and concepts originating from well-accepted and commonly-used terminologies facilitates sharing and reuse of Knowledge Modules at different clinical settings.
FEAT9.5 Interrelation between Knowledge Modules: A Knowledge Module definition often relates to knowledge definitions of other Knowledge Modules. To ease and simplify the knowledge acquisition process an ability to interrelate Knowledge Modules may be provided. Common Knowledge Module interrelations include inheritance and composition. For example, the Proteinuria state Knowledge Module (i.e., protein levels in urine) can be derived to capture gestational proteinuria without repeating the common knowledge parts. As another example, the HELLP syndrome Knowledge Module comprises hemolysis state, liver enzymes state, and platelet state Knowledge Modules, each being valuable on its own too. Thus, the KR may cater for this by enabling to base the definition of one Knowledge Module on other Knowledge Modules via common interrelations such as specialization (i.e., is-a) and composition (i.e., part-of).
FEAT9.6 Automatic Triggering Events Extraction: The evaluation process of a Knowledge Module may impose on the requesting consumer to perform preliminary operations, for example gathering data according to application-specific Knowledge Module data requirements, which are costly in terms of time and computational resources (e.g., network traffic). In addition, in some cases it is critical to evaluate a Knowledge Module as soon as one of its comprising data elements changes in the CDR. Therefore, from a Knowledge Module definition, a consumer may be able to automatically extract events, in terms of data changes in a CDR (e.g., arrival of a new WBC lab test message), which trigger the necessity to evaluate the Knowledge Module.
FEAT10 Knowledge Base Repository
FEAT10.1 Knowledge Module Search Engine: There may be a mechanism that enables to search and retrieve Knowledge Modules. During runtime, before requesting to evaluate a Knowledge Module, it first may be retrieved and explored to provide application-specific data requirements as input. During design-time, to maintain the Knowledge Module definition, a knowledge editor may be able to locate it before editing. The Knowledge Module search engine allows searching and retrieving of Knowledge Modules by submitting search queries. These search queries capitalize on the descriptive information section of a Knowledge Module. Two possible search queries are free-text search query or a context-based search query. The free text search query contains a single search string to be matched against any text-based section of a Knowledge Module. The context-based search query comprises a structured query, for example XML, which defines for each searchable attribute or trait of a Knowledge Module its expected value. For example, a search for Knowledge Modules of John Foster may use the Author descriptive information trait. Another example is a search for Knowledge Modules that expect to receive a certain LOINC-coded lab test typically using the data requirements' Knowledge Module attribute.
FEAT10.2 Knowledge Module Definition Import and Export Mechanism: A mechanism that enables to import and export Knowledge Module definitions in or out of a KB repository. An XML schema defines the Knowledge Module file format and allows a Knowledge Module to be imported from one KB and exported into another KB.
FEAT11 Knowledge Acquisition Tool: One of the KFW client components is the Knowledge Acquisition Tool (KAT) that facilitates domain experts and knowledge engineers, acting as knowledge editors, to collaboratively acquire, edit, and maintain the knowledge definitions and descriptive information of Knowledge Modules stored in the KFW knowledge-base repository. Besides knowledge editing capabilities, the KAT may contain several other features, as described hereinbelow. FEAT11.2 UMS Explorer: The underlying clinical information model of the KFW is the UMS shown and described herein. Hence, the definition of any Knowledge Module typically comprises UMS entities such as LabResult, Diagnosis (type of Condition entity), and Medication. The UMS information model is relatively large in scope and contains diverse attributes, complex data types, and various relations between its entities. Thus, the KAT may contain a specialized module, named UMS Explorer, to explore the UMS information model and assist the knowledge editor to navigate and find UMS entities and attributes that comprise a Knowledge Module definition. The functionality expected of the UMS explorer includes: free-text search and context-based search of UMS entity and attribute (e.g., entities that use a certain vocabulary domain), descriptive information, and navigation according to relations (e.g., related-act).
FEAT11.3 Knowledge Module Explorer: A Knowledge Module definition may relate to another Knowledge Module. Different types of relations can exist between Knowledge Modules, including specialization (i.e., is-a) and aggregation (i.e., part-of). For example, the Hypertension Knowledge Module, which defines the clinical state of having elevated blood pressure, can be derived by another Knowledge Module to define gestational hypertension. Thus, the KAT may contain a specialized module, named Knowledge Module Explorer, to explore the KB repository and assist the knowledge editor to navigate and find Knowledge Modules during the knowledge acquisition process. The functionality expected of the Knowledge Module explorer includes: free-text search and context-based search of Knowledge Modules (e.g., all Knowledge Modules that use a certain SNOMED code), descriptive information, and navigation according to relations (e.g., is-a).
FEAT11.4 Concept Explorer: A Knowledge Module definition may contain terms and concepts originating from controlled medical vocabularies (e.g., LOINC code for WBC count). Different types of terminology relations exist serving different coding habits. For example, the SNOMED terminology is usually used to code diagnosis terms, signs and symptoms. Thus, the KAT may contain a specialized module, named Concept Explorer, to explore the variety of terminologies and assist the knowledge editor to navigate and find concepts to embed in a Knowledge Module definition. The functionality expected of the Concept explorer includes: free-text search and context-based search of concepts (e.g., diabetes code in SNOMED), descriptive information, and navigation according to relations (e.g., is-a), if such exist, between concepts.
FEAT12 Role and Rule Access Control: By capitalizing on the Security Layer shown and described herein, the KFW provides a secured and controlled environment at design-time and runtime. Users and consumers may be authenticated and receive authorization before accessing KFW services and knowledge. Special roles and rules may be defined for the KFW to cater for its unique services and protect its special resources. For example, a knowledge editor role may be defined as well as a rule determining who can edit a certain Knowledge Module.
FEAT13 Auditing and Logging: By capitalizing on the STL Layer shown and described herein, the KFW provides a robust and flexible audit and log capability. The level of auditing and logging can be changed according to different scenarios, for example testing vs. production. Special auditing and logging policies can be applied to different services and resources of the KFW, for instance applying a meticulous auditing and logging policy to knowledge creation and maintenance operations.
Applicable Standards The KFW functionality is largely based on the functionality specified in the HSSP DSS SFM as described hereinabove to facilitate interoperation with KFW services.
An embodiment of the smart-watch sub-system is now described generally with reference to
An embodiment of the Smartwatch subunit of
There are substantial market opportunities created as a result of the above challenge in the context of increasing pressures from government, payers, employers and patients to improve and substantiate patient safety and treatment outcome while reducing costs. Focused efforts to improve care of patients with chronic diseases (e.g., CMS targets, pay for performance) seek to provide orchestration of care and related information across venues of care both within IDN's and across facilities not within the same organization. Realization of the promised benefits of electronic medical record (EMR) systems, ensuring completeness of the data used by the EMR's in assisting with clinical decision support and bridging the gap between care locations and facilities across the continuum of care with different EMR's employ interoperability solutions, including enterprise clinical decision support capabilities and services.
To enable automated decision support services at the enterprise level the dbMotion Platform product may be employed, thereby achieving interoperability, and presenting medical information from disparate sources as if it originated from one normalized source, using common representation, terminology and semantics. This enables the creation of an advanced infrastructure for an enterprise-wide clinical decision support framework termed herein the SmartWatch Subsystem.
The Enterprise Clinical Decision Support System (ECDSS), also termed herein the SmartWatch subsystem, may work in conjunction with the commercially available dbMotion platform. The SmartWatch subsystem addresses the challenge in such a way that no centralized database is mandatory, thus enabling enterprise decision support services both in a fully distributed as well as centralized model (and any hybrid in between). The SmartWatch subsystem is not intended to replace existing clinical decision support systems currently running within any of the existing EMRs, or any other systems in the organization. Instead, it aims to address problems that cannot be tackled by any operational/legacy system (e.g. EMR) that often has access only to a partial subset of the patient's clinical information.
The SmartWatch subsystem may facilitate both the design time and runtime activities involved in the creation and use of ECDSS. These activities may include some or all of: knowledge elicitation, eligibility determination, continuous patient monitoring providing timely alerts, notifications and more. Care providers are then able to carry out the appropriate actions, in a timely manner, thereby increasing the quality of healthcare and lowering costs that might arise from possible deterioration in a patient's condition.
SmartWatch does not aim to replace the physicians' role in complex decision making Instead it is targeted at giving help and support with decision making—performing time-consuming, data-driven or time-driven tasks, and bringing the human factor into the picture only when human involvement is inevitable.
The SmartWatch subsystem may rely on a built-in knowledge base, maintained by medical professionals. This knowledge base allows The SmartWatch subsystem definitions (matching rules, etc) to be set in an abstract, high level language, rather than having to code rules in computer language.
Definitions, Acronyms and Abbreviations used herein include:
The SmartWatch subsystem is a platform for developing services that facilitate an enterprise-wide clinical decision support system (ECDSS) that utilizes the Service Oriented Architecture (SOA) environment provided by the dbMotion platform. The subsystem is geared to identify a target population according to eligibility rules, and monitor the state of the target population members over time, according to another set of monitoring rules, and eventually trigger proper actions such as alerts or reminders when a rule is matched.
The subsystem may facilitate both the design time and runtime activities involved in the creation and use of ECDSS. These activities include knowledge elicitation, eligibility determination, monitoring patient state continuously, providing timely alerts, notifications and more. Consequently, care providers can carry out suitable actions when appropriate, thereby increasing the quality of healthcare and lowering costs arising from deterioration in the patients' condition.
The SmartWatch subsystem is intended to rely on a built-in knowledge base, maintained by medical professionals. This knowledge base allows the SmartWatch subsystem definitions (matching rules, etc) to be set in an abstract, high level language, rather than having to code rules in computer language.
The SmartWatch subsystem can serve as a complementary framework that may benefit other systems. Currently, cutting edge EMR systems provide CDSS capabilities usually during data entry (i.e. in real time) although they are dependent on the data available to the EMR itself. In contrast, SmartWatch's design enables retrospective CDSS capabilities offering a near real-time response. Thus, a preferred model for The SmartWatch subsystem is one of synergy in which the SmartWatch subsystem provides a continual monitoring of clinical information and notification services to other applications.
SmartWatch does not aim to replace the physicians' role in complex decision making, but to provide help and support in decision making by performing time-consuming, data-driven or time-driven tasks, and bringing the human factor into the picture only when needed.
The SmartWatch model may include 4 logical layers as follows:
A high level conceptual view of SmartWatch, based on the 4 layers mentioned above is illustrated in
SmartWatch may employ several storage elements that include SmartWatch Metadata, in which the SmartGuard (the SmartWatch Solution) properties are retained, population and possibly VPO storage, in which the population and information are stored. The Knowledge Framework may add storage—a knowledge base—of its own. The VPO storage system is used to store ePHI, and for that reason careful thought may be taken on how to store them without compromising patient and business security and privacy. SmartWatch provides services to external parties, allowing complementary applications to fit in and form a solution.
The knowledge-framework role is to allow SmartGuards to be defined in terms of clinical concepts and abstractions, rather than referring directly to raw UMS data. The knowledge framework may be able to connect a concept, or a knowledge module, to data and to a suitable computation mechanism.
The SmartGuard can be thought of as a single SmartWatch subsystem solution, monitoring a specific population. The SmartWatch subsystem may host several SmartGuards running simultaneously. Each such SmartGuard may contain all the details it uses in order to operate: the population criteria, information to be employed, the rules to be matched, and the actions to take when rules fire.
SmartGuards are tools for retrieving information between hospitals. To make sure that no unauthorized query is performed in a hospital repository, SmartGuards may require hospital approval to operate.
SmartWatch is a framework, which provides services, and therefore employs additional components to form a comprehensive solution.
A clinical application as shown in
Some or all of the following functionalities, and associated supporting features, may be provided:
According to certain embodiments of the invention SmartWatch relies on the dbMotion infrastructure as its main data source and relies on some or all of the following dbMotion Services: Security, Auditing and Logging (STL, CEB).
This may enhance re-use of any needed functionality which already exists in a dbMotion product. SmartWatch relies on its decision logic in the Knowledge Framework component for modeling clinical knowledge, and in applying that knowledge to patient data. SmartWatch is a service-based product, that assumes the existence of complementary applications (not necessarily part of the basic SmartWatch) from which users can actually subscribe to SmartGuards, view the artifacts—resulting messages, and let SmartWatch know when the issue is addressed (close the loop). SmartWatch analysis assumes the existence of an EMPI service, with a one-to-one relationship between the EMPI cluster and the virtual patient SmartWatch refers to. Even if there are more than one (several) clusters returned from the EMPI, SmartWatch may use only one of them. If the EMPI clustering quality is poor, SmartWatch's decision quality may be affected, as it may miss patient records or be confused by records actually related to another patient.
According to certain embodiments of the invention, SmartWatch assumes each EMPI vendor supplies the “member-of” functionality, whose input is an index and its output is the cluster the input belongs to, along with all cluster indexes. This converts an operational system patient index into a virtual patient which contains all indexes in the cluster. SmartWatch assumes that EMPI vendors do not supply a change log service, detailing clusters whose state has changed. However, if such a service is available, keeping up with patient EMPI state may be made much easier and may simplify the process.
The system need not provide an application (GUI) for managing the actions and states related to population members. Instead it may only provide SOA based infrastructure that may enable developing such capabilities.
Possible Consumers for the SmartWatch subunit are described in the table of
User environment: In general, the expert, Super User category is envisioned using networked, personal computers. This is a small, predefined set of users:
As far as the Consumer category is concerned, the situation is far less clear. This is envisioned as an area that includes many professional services with customization & configuration, aimed at getting to end-users, in the most effective way, to meet their needs with working modes in the specific project rather than the “one suit fits all” product approach. This statement implies that users may be working in any kind of electronic environment, from mobile phones, thru PDAs, networked personal computers, mainframe terminals to fax machines. The following is a classification of delivery methods that may be useful:
In addition, the following factors (among others) may be considered in deciding which channels are best in a given situation:
Medical records may be gathered for specified groups of patients (population), providing proactive messages based on the records collected. SmartWatch may provide an enterprise-wide view of patients and an ability to analyze the information, apply rules to them, and as a result perform actions in which messages are sent to external actors to respond to SmartWatch findings. The response time (measured starting from an event happening in real life, and ending as user views the resulting message) expectation is at most near real-time.
SmartWatch may be supplied with an existing content that covers common medical cases.
This content is to be supplied in the form of existing definitions of populations, related knowledge and actions, packaged as a set of SmartGuards. This means that each SmartGuard may be a deployable unit, packed and deployed together.
Some or all of the following functionalities I-VI may be provided to facilitate identification and management of populations:
SmartWatch may depend on the knowledge framework in formulating & executing its clinical rules and decisions. Functionalities of the knowledge framework which may interact with SmartWatch or otherwise be used thereby, may include some or all of the following functionalities A-G:
Users are authenticated prior to accessing the system. Users are authorized for the operation they perform. Access to any storage system is secured. Secured Communication may be established for ePHI. In any case where patient data is used for research purposes, all patient identifying properties may be removed from it (de-identification). Every significant action in the system that relates to a covered entity (patient) may be recorded.
2. Actions may protect patient privacy. Since SmartWatch has the potential to distribute patients' data outside the dbMotion world and to non-authorized users, it may provide means to protect patient confidentiality with regard to information that is included in notifications and the actors who receive them. SmartWatch should have authorizing tools that verify who receives patient-related notifications, and a security methodology for SmartGuard development, configuration and deployment. A methodology is useful to prevent overlooking patient privacy. The authorizing tools are employed to facilitate verification that outgoing messages are authorized. The SmartGuard may always send the minimal data set that is relevant to the context of the specific SmartGuard.
3. Subscription security authorization: SmartWatch enforces authorization for subscribing to SmartWatch actions to get messages, to avoid unauthorized access to confidential patient information as a result of notification
4. SmartWatch management tools security and auditing: SmartWatch controls access to its management tools and audit user activities for several reasons: a) sensitive information may be accessible to users of these tools, for example through auditing messages sent b) changing security-related settings can cause HIPAA violation (for example if patient consent policy setting is altered) and c) changing SmartWatch settings definitions may jeopardize the proper functioning of the system. As to the question of who may stop and start SmartGuards, this is typically done only by an authorized administrator and is audited. Deactivating a SmartGuard can have severe implications if clinicians rely on its actions. SmartWatch may therefore provide and manage secure access (authentication and authorization) to Smart Watch management tools.
5. Access data across the enterprise (using dbMotion) in a secure manner: SmartWatch is typically operative to access data across the enterprise (using dbMotion) in a secure manner, utilizing a secure channel, authentication and authorization—for example, a need to prevent SmartWatch from accessing unauthorized data domains.
6. Enterprise business security: SmartWatch introduces an amplification of all the barriers found in the dbMotion core with regard to ownership. While the ‘per-patient and only for-patient-at-the-point-of-care’ argument usually works in the patient centric viewer model of dbMotion core, this will not always be the case with SmartWatch. The customers concerned (hospitals) may have doubt about querying their CDRs/operational systems in a ‘batch-mode’ (in contrast to treatment-based context implied when a clinician views patient ePHI) which may be mitigated by a federated model and a mechanism that guarantees to some degree that the data is used for the purposes agreed upon only. This concern is greater in a RHIO setting where SmartWatch has the potential of revealing too much business-sensitive information between hospitals/organizations that may be business competitors. SmartWatch may therefore enable the customer to manage and control access to his data repositories.
7. Securing SmartWatch storage: The SmartWatch process may involve short-term or long-term storage of ePHI. The storage devices are secured. Furthermore, customers may require enforcing regulations that prevent duplication or centralized storage of identifiable ePHIs.
8. STRQ43.9 Auditing: SmartWatch may enable auditing of all operations that relate in any way to accessing patient information (ePHI). An audit entry may include details of the user, the time the operation took place, and the ability to generate audit reports—with the option to audit any changes in SmartGuard settings, any operation in SmartGuard or SW management, and any message that was sent. In addition, audit of SmartWatch Actions may include ALL the information about a recommendation/notification/alert, including its content and narrative explanation (mainly for medico-legal reasons).
9. STRQ43.10 Notifications over unsecured delivery channels: SmartWatch may be designed to deliver messages to both secured systems and to people over potentially unsecured channels such as Email, Fax or SMS. Provisions are typically made both for protecting patient privacy in the message content and for technologically securing the channel. For example, Email could be signed and encrypted, an SMS message may include partial, non-confidential information, directing the user to view the full notification in a secured system, to which the message was sent in parallel. The recommended practice is using secure channels only.
10. Patient consent to be incorporated into the SmartWatch process: SmartWatch may find a way to take into account patient consent considerations when deciding on including a patient in a SmartGuard. Policies can be established at enterprise or SmartGuard level that may include (but are not limited to) opt-in, opt-out, no consent required. SmartWatch may utilize the dbMotion core PAS.
11. SmartGuards from using ePHI retrieved under a different role/contract, or ePHI retrieved under different authorization settings (i.e. role/contract): SmartGuard may use information it was not authorized to view. In other words, data sharing between SmartGuards can put patients' privacy at risk unless they share the same authorization level (for example, the same role/contract which means they have exactly the same permission).
12. Use existing dbMotion Core Security System and Auditing System: SmartWatch may use dbMotion Product Security and Auditing, as much as possible, for meeting security and privacy needs. This may reduce costs in the SmartWatch Product Development, and simplify the work of the customer security admin—using the same tools and settings both for dbMotion and SmartWatch. This means that SmartWatch may not have its own Security Layer, but rather utilize dbMotion core security. Since there are many cases where there is no cross-enterprise unique patient identifier, patient identity is not deterministic. This may impose some or all of the following constraints 1-3 on SmartWatch:
1. SmartWatch cannot assume patient clustering is stable.
When using records collected at different points in time, SmartWatch cannot assume that patient identity has not changed, i.e. that the patient's cluster as determined by the EMPI system is the same as before. Special note is taken for the join/add operation (when a person's identity is added to the EMPI cluster), which is hard to spot. Therefore, SmartWatch typically employs cluster consistency procedures to verify that the patient cluster has not changed along the way.
2. Patient enrollment scenario.
When a physician selects a patient cluster/index retrieved from the EMPI system—the selection may be stored in SmartWatch. Proposal: save a leading index whose cluster may be used as the virtual patient.
3. SmartWatch may be able to work in an environment that has a unique patient identifier for all systems, without EMPI. This applies to some European countries and Israel.
An example of health information exchange and integration system constructed and operative in accordance with certain embodiments of the present invention is now described with reference to
Unified Modeling Language (UML) is a standardized general-purpose modeling language in the field of software engineering used in generating the above drawings. The standard is managed, and was created by, the Object Management Group. UML includes a set of graphic notation techniques to create visual models of systems with software components.
The CTS sub-unit of the example health information exchange and integration system is first described with reference to
In
In
In
In
In
In analysis of results, it may cache objects in the cache by bulk hash-code and endpointname. In
In
In
Internal structures provide a detailed view of possible internal workings and dependencies of a component. Using a Composite Structure diagram, they illustrate how the component fulfils its behavioral contracts and provides interface behavior to other components within the system. The Connections package models the dependencies and connectivity between the various components, and how each is used as part of a co-operative system to accomplish required tasks. Typically, Components expose interfaces and API's which are used by other Components.
The knowledge framework sub-unit of the example health information exchange and integration system is now described, referring back to
Specifically, the implementation's CTS Runtime Interfaces are described with reference to
Generally, in the example implementation, Knowledge-Framework (KFW) is a decision-support service. KFW manages and evaluates Knowledge-Module (KM) entities. A KM contains a piece of clinical business-logic. A KM has a well defined contract: a set of specified input data and a set of results. KMs are modular and can be re-used, i.e., the output of one KM, can be used as input for another one. The body of a KM is its decision-logic. The decision-logic is based on input data and set the KM evaluation-results. The decision-logic is created and managed by knowledge-experts (e.g., clinicians). The decision-logic may use CTS ontology concepts. These concepts are defined implicitly as queries (commands) over dbMotion's CTS ontology only.
At runtime, KFW consumers send requests to evaluate actual patient data. The raw patient data is stored in dbMotion database using its local terminology. Before the data (e.g., a lab result) reach KFW service, the data is pre-processed and enriched with a mapping to dbMotion's CTS ontology. As a computation of the requested KM starts, KFW asks CTS to evaluate the pre-defined CTS queries. CTS returns a list of CTS ontology concepts. During the KM's decision-logic evaluation, KFW may check whether the patient actual data corresponds to one of the concepts in the result of the expected query.
Example CTS Runtime Interfaces are now described with reference to
A Knowledge-Framework and Knowledge-Module Static Model is now described. Business Identifiers: FW identifies its entities using identifiers, e.g. two types of identifiers, (a) and (b), as shown in
a. EntityIdentitifer: identifies main entities and may include:
Artifact, e.g. as shown in
An example Knowledge-Module Entities Model is illustrated in the class KM diagram formed by
A CTS command is the main object to query CTS, e.g. as illustrated in
CTSExtensionalListItem typically comprises a hard-coded list of CTS ontology concepts and implements the contains( ) operation. CTSIntensionalSingleItem typically comprises a hard-coded single CTS ontology concept and implements the sameConcept( ) operation.
A suitable KFW Business-Object-Model (BOM) is now described. As described above, at runtime KFW evaluates patient data. The data reaches KFW service as xml documents (in dbMotion's format) and is transformed internally into (Java) objects. The model of this data is called the ‘Business-Object-Model’, or BOM in short. For example, Condition is a class in the BOM. The BOM may refer to CTS concepts. For example, Condition.Code is coded using CS class. CS class represents a CTS concept. At its root level it contains code and codeSystem attributes to identify a concept in a local terminology. The CDTranslations composition contains translations of this concept to other terminologies. In particular, this collection contains the translation to dbMotion's CTS ontology.
CS class also implements the CTSConceptRT interface. Hence, operations sameConcept( ) and contains( ) that were defined on KM CTSItems can be applied on BOM attribute values. The sameConcept(other) method in CS class is implemented by comparing the other.code+codeSystem attributes to CS root level attributes, or by finding an element in CDTranslations that satisfies sameConcept(other).
An example KFW Evaluation Interface is now described. Typically, KFW exposes several interfaces. The evaluation interface of
An example EvaluationResponse is now described with reference to
An example of a KFW-Evaluation Process is now described. As described above, one runtime use-case of the KFW service is ‘evaluate’. The evaluate method receives an EvaluationRequest and returns an EvaluationResponse (both were described above).
An Evaluation Plug-in Mechanism is now described which is useful in the process of evaluating a single KM. As described herein with reference to the KM static model, KM decision-logic is stored in artifacts. The KFW supports a mechanism to plug-in new decision-logic types. For example, the decision-logic can be declared in rules, or using a decision-table. The plug-in mechanism that evaluates a particular KM is determined by its KM.DecisionLogicType attribute value. Hence, KFW holds a map where the keys are decisionLogicTypes and the values are DecisionLogicPluginProvider objects. For performance reasons, the KM decision-logic artifacts are compiled into a plug-in proprietary form. This compiled form is also stored in the KM static model in a special artifact.
A typical KFW-plug-in evaluation process is illustrated in
When the plan is executed, the plan asks the provider to provide an Evaluator object. The Evaluator object is constructed from KM entity (expecting a not null compiledArtifact). The Evaluator.evaluate( ) method is called passing the driData (extracted from the request). The evaluator is state-less and the same evaluator can be used several times to evaluate different requests of the same KM.
The SmartWatch sub-unit of the example health information exchange and integration system of
As shown in
The architecture of the SmartWatch service unit is typically designed to be a focal point of lifetime management/storage of all Guard instances and to concurrently process multiple Guard evaluation tasks for an assortment of member/task combinations, all as described in detail below.
Use-Case View: Certain SmartWatchService use cases illustrating functions of the service based upon its population processing activities, some or all of which functions may be provided in any given embodiment, are now described. These use cases, referred to herein as use cases (i)-(x), and their associated actors are shown in the SmartWatch-wide high level use case diagram of
Architectural Design Elements are now described (logical view), e.g. as shown in overview in
The business logic layer (BLL) of the SmartWatchService contains a group of managers that perform at least certain functionalities of SmartWatchService. The MonitorBrokerManager orchestrates requests from the other managers within the business logic layer to the external monitors for triggering rule matching and subscribing services. The ServiceBrokerManager orchestrates requests to other external services. The CallbackManager serves as a point for external services to send information to the SmartWatchService. Services for the business logic layer may include some or all of:
MemberProcessingManager—The processing manager receives items which contain both a member and a list of tasks that are to be processed for them. Each task contains a list of rules which are to be evaluated. The MemberProcessingManager communicates with a Rule Evaluator to complete this, and returns a set of activities to execute for each member. An example of an activity could be to change a member's classification, or the send an action to the ActionManager. The Data Access Layer typically handles storage for various entities. Entities stored here may include some or all of:
Processing of a known population element may comprise some or all of the following steps, suitably ordered e.g. as follows:
Processing of a general population element may comprise some or all of the following steps, suitably ordered e.g. as follows:
The data event monitor is now described with reference to
The following use cases may be provided:
Example implementations or realizations of the above data event monitor use-cases (i)-(ix), other than where self-explanatory, are now described.
i. Manage triggering rules subscriptions (add/remove subsections to pattern rules)
When monitoring data for new subscriptions, historical events may or may not be looked at, going as far back as is predetermined to be appropriate, according to the application. Subscriber accesses the subscription service. Subscriber may provide:
a. Pattern rule
b. Patient Indices, including the instructions for inclusion (population monitoring) or exclusion (population discovery).
c. Subscription Information (parameters for the pattern rules).
d. Ping Interval—What is the minimum time allowed between pings from the event monitor when triggering rules fire. This may be the anti-flood mechanism.
Processing may include the following operations:
Updates may be performed, e.g. as illustrated herein the diagrams of
Deprecate triggering rules from patients (cease using these, without actually deleting them), e.g.:
a. Receive subscriber id, member id, triggering rule, task, classification code, pattern rule parameters.
b. Get subscription handler for that rule.
c. Deprecate the rules in the database.
ii. Maintain Subscription's patients and indices e.g. as illustrated in the diagram of
a. Consumer notifies Subscription Service that there are EMPI (Enterprise Master Patient Index) changes for a member. Update the patient indices in the patient subscription tables.
b. Consumer notifies Subscription Service that a member may be added-to, or removed-from a subscription. Add/Remove the member association to the subscription.
Historical events may or may not be looked at for these scenarios, going as far back as is predetermined depending on the application. Reference is made in this connection to
iii. Collect new events e.g. as per the diagrams of
At a desired frequency such as once per half hour, new events are collected from the source using a suitable conventional event collecting functionality such as the TableLookupEventProvider or OnlineCommandEventLoader Functionalities mentioned in
iv. Collect old events (also termed herein “bootstrap scenario”), e.g. as per the diagram of
a. Use the DataEventCriteria object to define the event set.
b. Insert these into a suitably constructed event working table(s) tagged so as to indicate that the operation is for BootstrapSubscription ID X. Subscription ID links back to the Subscriber.
c. Get Batch ID from batch manager.
d. Harmonization and Matching proceed as normal, and when the “bootstrap” exclusion phase later runs within the matching processor, it may strip out any results for events that were triggered by any other subscription ID.
v. Deliver results per consumer request (consumer pulls results), e.g. as shown herein in the diagram of
a. Consumer provides “bookmark.”
b. In the SmartWatch system, the bookmark is the batch number of the last batch that was closed during the last results retrieval. When the Data Event Monitor is called for more results with this batch number, it increments the number, and provides results from batch+1 onward, to the new most-recently-closed batch.
c. Query Results table for tasks that fit the consumer's timeframe.
d. Only results in “Closed” batches are eligible.
e. Provide the requested results.
vi. Notify Consumer of new results, typically including:
a. Continuously monitor the results database for undelivered, closed events.
Ping subscriber if the minimum interval has passed since the last ping.
b. When the batch manager closes a batch, raise event that Batch X is closed.
c. Event Handler looks at every result, and identifies the subscription id's for subscriptions and the ping time, if any. Attempt to add subscriber to “ping list” along with when the ping may happen. Set a timer at the subscriber level so that the ping will sound when it is supposed to. If the subscriber is already on the “ping list”, then if the pinging interval for this subscription is supposed to happen sooner than the “time left” on the ping list for that subscriber, overwrite the entry on the ping list. Otherwise, do nothing.
d. When a timer pops up from the pinging list, ping the subscriber.
vii. Process Events e.g. as shown herein in
This Use Case is realized by the processor chain. As new data events enter the queue, a Harmonizer picks them up and harmonizes events, including some or all of:
a. Terminology Mapping
b. Unit of Measure (convert to baseline)
c. Split pertinent events into multiple events as appropriate.
d. Notify batch manager
e. Drop events from processing chain as appropriate.
f. Notify batch manager
g. Mark event as “harmonized” in the working event table(s).
A Matcher then performs some or all of the following operations:
a. Monitors its “working tables”, namely various tables where events are stored to be later “matched” against subscriptions in subscription tables.
b. Waits until any table fills up with X records (configurable), or until Y seconds (configurable) pass, whichever comes first.
c. Runs all pattern rule processors against the events in a table, and the subscriptions that work with those events. An example of a pattern rule processor might be a stored procedure in the working table.
d. Rule Processors are “keyed” in such a way as to say what working tables they support, and what subscription tables they support.
e. For discovery triggering rules, the matcher may compare the results against the members that the subscribers already have in the populations, and may remove these results from the final result set.
f. Another removal step is the “bootstrap removal phase,” where the matching processor removes results that were generated by subscriptions other than the subscription for which the event is keyed.
g. Another removal step is performed for deactivated subscriptions. This is typically performed as a separate step because patient monitoring rules abstract the individual patient when doing the matching, and only join them after the rule fires.
h. Results are delivered to the results table.
viii. Maintain pattern rules e.g. as shown herein in the diagram of
a. A New Pattern Rule is designed, typically by a human operator and translated into a Rules Processor (for example, a stored procedure).
b. Determine what Event Working tables and Subscription tables the new pattern rule “works” with.
c. Create new Event Working tables and Subscription tables if appropriate.
d. Define the compatible data types for the operands in the triggering rules within any Rules Processor.
e. Map the results of this process to some tables used to expose the pattern rules and parameters they accept. Also map a handler for the subscription service to push subscriptions into the working tables, all e.g. as shown in the diagram of
ix. Control rule execution (stop/start at the subscriber level)
a. Subscriber orders a “stop” for its subscriptions. This may affect all subscriptions that the subscriber has. Persist the “IsActive” field for each subscription object to false.
b. Consumer orders a “start” for a subscription. Persist the “IsActive” field for each subscription object to true. Operation may be similar to the bootstrap scenario described above.
The SmartWatch Person Identity Service of
The Person Identity Service is typically different to VIA, which is a commercial Virtual Identity Aggregation service provided by DBMotion, Israel. While VIA is an abstraction layer from concrete EMPI vendor implementation allowing dbMotion components to make an EMPI call using a unified API, Person Identity Service (PERIS), on the other hand, implements at least one additional functionality that is not part of the services proposed by EMPI vendors, namely a subscription capability to effect changes in person identity.
The Person Identity Service is typically operative to:
a. receive EMPI (Enterprise Master Patient Index) clustering information about specific sets of people (patients) e.g. up to date cluster state information (on demand) and clustering changes information (publish subscriber pattern).
b. Mediate the above capabilities of an EMPI provider such as Initiate.
c. Minimize calls to EMPI provider. Since a central consumer of the service is SmartWatch—an automated system—the load may be significantly more difficult than human users making requests.
EMPI (Enterprise Master Patient Index) clustering changes over time is a constraint stemming from the nature of the distributed healthcare environment without a unique patient identifier. Since EMPI cluster changes, the service is operative to help its consumer(s) such as SmartWatch manage the information it keeps for the long run on patients, in various points in time, as such changes may change decisions being made. A Use-Case View of the Person Identity Service is shown in
i. Retrieve Person Identity (Cluster): When the system is requested by its consumer to retrieve a person current cluster—the set of indexes that are currently clustered together according to the EMPI (Enterprise Master Patient Index) provider. The entry point is an index, related to as the principal index, and the outcome is the set of indexes currently associated with it by the EMPI provider. Unlike search operations in VIA (a commercial Virtual Identity Aggregation service provided by DBMotion, Israel)—there is no human user making decisions—the EMPI provider is the sole authority according to which later decisions are made.
ii. Manage identity change rules subscriptions (ARM): Accept subscription changes from consumers, and reflect them in the subscription database. This may include new subscriptions and modifications to existing subscriptions. The subscriptions are meant to allow service consumers to be aware of changes to identity changes of persons (patients) that the consumer is interested in. For example, the consumer (SmartWatch Service) would like to be notified whenever EMPI (Enterprise Master Patient Index) system has made any change to a given patient of his (a member) such as join or split. The subscription includes a person index that identifies the person for the consumer and is also termed herein the “principal index”.
Use cases iii and iv are Deliver results use cases (ARM).
iii. Deliver results per consumer request (consumer pulls results): When a consumer requests for results from the service, this use case may provide those results. It is typically the consumer's responsibility to ask for the start and end points of the results.
iv. Notify Consumer of new results: “Pings” the consumer when there are results waiting. This may be configured to only ping any given consumer at a certain interval (no more than once every 30 minutes, for example).
v. Maintain Patient Identities: synchronizes system's knowledge of person cluster state with the EMPI (Enterprise Master Patient Index) provider. Several workflows may be employed here, depending on the capabilities of the EMPI provider, on performance requirements and allowed latency. Workflows may include: receiving regular updates on all person identity changes from EMPI provider (push updates); receive a snapshot of the cluster database from EMPI provider (push snapshot); proactively request cluster state for selected person(s)—whose state was not checked for a relatively long period of time (pull proactively); or some hybrid of the above.
The diagram of
a. Business Logic Layer: implements the business logic and provides the services described above.
b. ClusterResolvingService: allows consumers to retrieve a person cluster which comprises a set of indexes that currently represent the same person according to an EMPI (Enterprise Master Patient Index) provider. This call may yield a call to EMPI provider (EMPI-Get), but may also be resolved within the service itself, in case the cluster is already known and reasonably up-to-date. Consumers may specify a time interval, which defines what ‘reasonably up-to-date’ means from their perspective.
c. ClusterResolvingService: a service which allows EMPI (Enterprise Master Patient Index) providers, or some mediator process on their behalf, to communicate clustering changes to the system.
d. SubscriptionService: implements publish subscriber pattern, allowing consumers to subscribe to identity change rules for selected people that they are interested in. The subscription includes a principal person index as the identifier of the person of interest.
e. Data Layer: A layer which handles the storage of the various entities in order for the system to function. Entities to be stored may include Subscriptions & subscribers (people of interest to subscribers); Indexes and their current clusters; and Results (i.e. indexes which changed and the subscriber relations.)
f. EMPI (Enterprise Master Patient Index) Adaptors: A package (typically a shared dll), overviewed in
Example implementations or realizations of the above use-cases are now described, except where self-explanatory.
i. Retrieve Person Identity (Cluster): a call is made to ClusterResolvingService. Within such a call the service may first check whether the cluster can be found at the DAL, and whether it is “fresh” enough for consumer requirements if any. If not, the cluster is retrieved from EMPI (Enterprise Master Patient Index) provider, stored and returned to consumer. In parallel, this starts an analysis process of cluster changes by the changes manager, one embodiment of which is illustrated in
An alternative flow, as shown in
ii. Manage identity change rules subscriptions (ARM): An UpdateSubscriptions call is made to Person Identity Service's Subscription service. The service “persists” the subscriber, with its person interest in its subscription storage; typically this involves the service saving the subscription, comprising a subscriber or patient to be monitored, in storage.
v. Maintain Patient Identities: An example proactive flow is illustrated in
The passive flows (pushes from EMPI (Enterprise Master Patient Index) provider or a mediator on their behalf) are realized by calls to the ClusterUpdatesService, as illustrated in
According to one centralized embodiment of the present invention, PersonIdentityService is deployed in one node and SmartWatchService(s) calls it remotely. According to another distributed embodiment of the present invention, wherever an individual SmartWatchService is deployed, PatientIdentityService is deployed as well, serving only that individual “local” SmartWatch system. The two embodiments may be suitably combined. The SmartWatch Temporal Monitor is now described, with reference to
A Use-Case View of the SmartWatch temporal monitor is provided in
i. Manage triggering rules subscriptions: The use case starts as a result of the “Process Population Element” use case, usually when the monitoring criteria is fired for a population member. According to SmartGuard definitions and business logic, SmartGuard Service requests the Temporal Monitor system to subscribe for one or more triggering rules.
ii. Schedule Tasks: The use case starts with the “Manage Guard runtime” use case, when a guard is activated. At that time, typically, the system ensures guard tasks are being run according to schedule defined within the guard. The system would subscribe these requests similar to i. Manage triggering rules subscriptions use case.
iii. Calculate Rules: This use case is triggered by a timer when the time calculated based on a subscription triggering rule elapses. The elapse time event triggers a workflow typically including some or all of the following steps:
iv. Deliver results per consumer request: This use case starts as a result of receiving a consumer request for getting results delivered after the execution of prospective tasks scheduled based on the submitted by the consumer triggering rules. The system searches the results repository using the criteria specified by the consumer. The use case ends as the system delivers the results.
v. Notify consumers of new results: The use case starts when the calculated subscription triggering rule fires and the subscription delivery preference is to use a push method. The results are pushed to the URI specified by the consumer. The use case ends as the system delivers the results.
a. SubscriptionService: service which provides functionality for managing the subscriptions and delivering the results to SmartWatch as a consumer.
b. SchedulingService: façade that allows consumers (SmartWatch service) to store and remove subscriptions. Receives a scheduling request, validates it, and stores it into the subscription repository.
c. PatternRuleManagementService: A service providing functionality for managing the Temporal Monitor triggering rules used by the system to create the subscription's prospective tasks executed by business layer at runtime.
A Business Layer encapsulates the Temporal Monitor business logic exposed as subsystems. The subsystems include internal service providing functionality for managing subscriptions, monitoring execution of prospective tasks based on the subscription's triggering rules, and delivering the results to the consumer. Functionalities which may be provided may include one, some or all of the following:
a. SubscriptionManager: responsible for managing the subscription's lifecycle. Also the subsystem notifies the Runtime Manager subsystem of new subscriptions that need an initial prospective task to be stored in the prospective tasks repository and are ready for execution.
b. ResultManager (not shown): delivers results per user request or pushes the results to a consumer defined location (URI).
c. RuntimeManager: Subscribes for notification events coming from the Subscription Manager subsystem or a prospective task elapsed time event. A business logic is applied to each event and a set of actions is executed. The next RR occurrence is computed and results are pushed to consumers.
A Data Access Layer (DAL) manages database access for the business layer.
Example Implementations or realizations for the temporal monitor's use cases are now described, except where self-explanatory:
i. Develop SmartWatch Triggering Rules Subscription Workflow: This may be a non-automated process effort e.g. as shown.
ii.
This core use case typically employs the service, business, and data access layers. The steps involved in this use case are outlined in the sequence diagram of
iii. Calculate Rules: This use case is triggered by a timer when the time calculated based on a subscription triggering rule elapses or when a triggered subscription change event is fired by the Subscription Manager. Steps which may be included in this use case are illustrated in the sequence diagrams of
a. The Runtime Manager gets the prospective task associated with the triggering rule.
b. Based on the subscriber's delivery preferences, the system stores the results into the Results database ready to be retrieved by the subscriber, or pushes the results to the subscriber ResultAwaitCallback service.
c. The Calculate Rule workflow calculates the next occurrence and saves it in the Prospective Tasks database.
d. After rule computation, in case of no future occurrence, the task is removed.
e. Runtime Manager retrieves the earliest task from a prospective tasks database and sets the next time on the timer.
iv. Deliver results per consumer request: In this use case the service would retrieve results from its result data base, based on the parameters supplied to it in the request (ARM compliant). The bookmark in this case is a timestamp.
v. Notify consumers of new results: This use case is based on a callback to the subscriber, to a URI specified at subscription time. Based on subscription time preference, the results may be stored in the DB for the subscriber to pull them (ping mode) or just sent directly (push). The push mode is expected only for scheduling service subscription (in which the subscriber wants a “wake up call” but would not need to pull any information past that).
vi. Maintain pattern rules: This may be a manual process, performed by a developer who defines new triggering rule parameters, writes a handler that would know how to construct the proper subscription object from the input parameters, and registers the new rule.
Referring now to
a. BusinessLogic Layer: exposes services to its consumer—SmartWatch. Typically includes:
a-1: ActionMetadataService: Provides consumer with metadata about the action manager. Used mostly by design time components such as SmartWatch management tool during SmartGuard editing.
a-2: ActionInvocationService: A façade that allows consumers (SmartWatch service) to invoke actions supported by Action Manager, including receiving an invocation request, validating it and submitting the action for execution.
a-3: ActionDirectory: An internal service which holds mapping between action definitions and concrete action implementations (usually a workflow but maybe a simple class). Used by ActionMetadataService in order to list actions and describe them. Used by ActionInvocationService in order to map action request parameters implementing workflow and validation rules.
a-4: ActionRuntimeManager: An internal service which manages the running action workflow's lifetime. Starts off with action being submitted by ActionInvocationService and is operative to monitor, report, manage (e.g. lookup hanged workflows and stop them). Also includes set of tools & services to facilitate rapid development of workflows, to meet developer productivity goals.
a-5: Workflows & Formatters: A package of customization in which concrete workflows and formatters (for content formatting) reside.
b. Communication Layers: responsible for handling any communication the workflow employs. It may include some or all of the following types of communications:
Input—which provide data to be included in notifications and to be used in workflow decision making; Output—delivering notification to recipients in the outside world (humans or systems); and Response—receiving messages from recipients (humans or systems) that include either acknowledgments or answers (from recipients) to specific questions included in notification.
The communication layer typically includes:
b-1: dbMotionServices & AdditionalServices are packages which supply workflow developer with a set of input communication to services it consumes. The package contains service client proxies. dbMotionServices are product-based (supplying access to services such as security, KNEO, dbMotion Business layer, PCP and so on), and AdditionalServices supplies customer-specific information sources.
b-2: NotificationDeliveryService: delivers messages through delivery channels. It starts off with a notification request from a workflow, maps it to one of its delivery channels and assures reliable delivery, properly logged and so on. A commercially available product, such as a communication enabled business process (CEBP), may be used.
b-3: ActionResponseService: allows recipients to influence the workflow by responding to it. Responses may trigger events in the corresponding workflow. Based on pluggable listeners that know to communicate responses back to the workflow. This subsystem typically includes a Response Listeners package in which customized listeners reside.
A Data Access Layer (DAL) manages database access for business and communication layers.
Example implementations or realizations of the above-described use cases for the action manager are now described:
i. Develop SmartWatch Action Workflow: Typically non-automated. The workflow may be in accordance with the diagram of
ii. Execute action: This use case employs several services from the business and communication layers and also typically employs the DAL in recording any operation being executed and artifact being produced (notifications, recipients, . . . ).
The following functionalities, action validation and notification delivery, typically form part of the execute action process above and typically comprise implementations of the execute action use case:
Validate Action: The diagram of
Deliver Notification:
iii. Get Action Workflow Metadata: This use case is realized by a call from SmartWatch Management tool to ActionMetadataService. Management tool which is a GUI component in which SmartGuard is edited. The metadata service would call ActionDirectory to locate the metadata such as list of actions, parameters, workflow associated with an action and so on.
iv. Get Action Response: This use case starts when one of the Action Response Listeners receives an Action Response Message. The message is forwarded to ActionResponseService for processing the response. This in turn would trigger the action workflow (assuming the workflow is waiting for that response) or the ActionResponseService would trigger a new workflow to process the Action Response e.g. as shown in
The system shown and described herein typically but not necessarily uses conventional cache implementations such as Cache Application Block from Microsoft Enterprise library to provide client side caching functionalities in the CTS client subunit, which may be used by various of the SMW subsystems described herein.
An example HF (heart failure) patients classification is described below with reference to
Example admitted HF patient sub-classifications are described below with reference to
An example HF PATIENTS CLASSIFICATION is now described with reference to
An example Entry Task is now described.
Triggering Rules may include one or both of:
Identify new HF problems—an example list of codes is provided below under CTS triggering rules; and
Inputs/Query Parameters are described in the table of
Example Decision logic is now described in words and in pseudo-code.
In pseudo code
Attribute names, values and other characteristics of outputs are set out in the table of
SmartWatch KM is now described.
Inputs may include:
“Is HF Patient” KM evaluation result (Boolean Conclusion ER)
Decision logic, in words and in pseudo-code, may be as follows:
Remove member from population “Candidates”, Step out classification
In pseudo code:
Outputs may include EntryHFPatientsClassification, whose type is Classification Decision Activity.
CTS: Retrieve HF Condition codes
An Exit Task for the HF patients classification may be as follows:
Triggering Rules, each of which may be implemented in XML, may include some or all of:
Identify cancelled HF Problems for specific patient—list of codes may be as above (CTS list for triggering rule). (No use of Condition.negationInd in UPMC); and
Identify expiration of specific patient
Is HF Patient KM: may be same as for the entry task.
Inputs may include:
“Is HF Patient” KM evaluation result (Boolean Conclusion ER)
Decision logic, in words and in pseudocode, may be as follows:
The result stored in the EDR is the “Is HF Patient” (clinical) KM evaluation result as-is.
In pseudo code:
Outputs are described in the table of
An example sub-classification for admitted HF patients is now described with reference to
Entry Task may be as follows:
Triggering Rules may be implemented in XML and may include some or all of the following:
a. Identify Active (status=active AND discharge date=null) Inpatient Encounters in specific Facility for specific Patient
b. Identify (status=null AND discharge date=null) Inpatient Encounters in specific Facility for specific Patient
c. Identify Completed (status=completed AND discharge date < > null) Inpatient Encounters in specific Facility for specific Patient
d. Identify Completed (status=null AND discharge date < > null) Inpatient Encounters in specific Facility for specific Patient
Is Eligible HF Encounter KM may be as follows:
Inputs/Query Parameters are described in the table of
Decision logic, in words and in pseudocode, may be as follows:
The SW KM (smart watch knowledge module) e.g. as described below may save the encounter id (CPQP) in the classification. The encounter id may be extracted from the IsEligibleHFEncounterER.Reasons. In general, only one encounter may be retrieved, but in exceptional cases more than one may be retrieved. In order to guarantee that the SW KM may only find one encounter id, enforce also a latest operation (on top of all other conditions).
In pseudo code:
The SW KM e.g. as described below may save the encounter id (CPQP) in the classification. The encounter id may be extracted from the IsEligibleHFEncounterER.Reasons. In general, only one encounter may be retrieved, but in exceptional cases more than one may be retrieved. In order to guarantee that the SW KM may only find one encounter id, enforce also a latest operation (in addition to all other conditions).
Outputs may include IsEligibleHFEncounter, whose type is Boolean Conclusion ER.
Attribute names and values of outputs are described in the table of
An example SmartWatch KM is now described.
Inputs may include:
“Is Eligible HF Encounter” KM evaluation result (Boolean Conclusion ER)
Decision logic, in words and in pseudocode, may be as follows:
The result stored in the EDR is the “Is Eligible HF Encounter” (clinical) KM evaluation result as-is.
In pseudo code:
Outputs are described in the table of
An example Exit Task for the sub-classification of the admitted HF patients is now described.
Triggering Rules may include:
Identify if specific encounter was not active OR encounter type was changed OR discharge date not empty; and
Temporal Trigger: Admission Date+120 days
Is Eligible HF Encounter KM may be as described above with reference to the corresponding characteristic of the entry task.
An example SmartWatch KM is now described.
Inputs may include:
“Is Eligible HF Encounter” KM evaluation result (Boolean Conclusion ER)
Decision logic, in words and in pseudocode, may be as follows:
The result stored in the EDR is the “Is Eligible HF Encounter” (clinical) KM evaluation result as-is.
In pseudo code:
An example, also termed herein HF-2, of an LVS function evaluation method, including triggering rules and other characteristics for a monitoring task, is now described with reference to
An example Monitoring Task for the above LVS function evaluation method is now described.
Triggering Rules may include:
Identify changes in the existence of LVS Function Evaluation Document for specific patient—list of codes, e.g. as for the triggering rule for the CTS described below, e.g. using a suitable XML implementation.
An example Evaluation of LVS Function KM may be as follows:
Inputs/Query Parameters are described in the table of
Decision logic, in words and in pseudocode, may be as follows:
Code translations may be e.g. as shown in
In pseudo code:
Outputs are described in the table of
Attribute names and values are described in the table of
An example SmartWatch KM for the LVS function evaluation method's monitoring task may be as follows:
Inputs may include:
“Evaluation of LVS Function” KM evaluation result
Decision logic, in words and in pseudocode, may be as follows:
In words:
When always
The result stored in the EDR is the “Evaluation of LVS Function” (clinical) KM evaluation result as-is.
In pseudo code:
Outputs may include EvaluationOfLVSFunctionAction, which may be of the Action Invocation Activity type.
CTS: Retrieve list of document types (“LVS Function Evaluation”)
Triggering Rule may include:
KFW may include:
An example, also termed herein HF-3, of ACEI or ARB for LVSD is now described with reference to
A Monitoring Task for ACEI or ARB for LVSD, may for example be as follows:
Triggering Rules, each of which may be implemented in XML, may include some or all of:
Identify changes in ACEI or ARB Medications for specific Encounter—list of codes e.g. as described below with reference to the triggering rule for these medications.
Identify changes in ACEI or ARB Allergies for specific Patient—list of codes e.g. as described below with reference to the triggering rule for these allergies.
Identify negated OR cancelled HF Problem events for specific patient—e.g. as per exit task triggering rules for HF patient classification as described above.
Identify changes in ACEI or ARB Contraindication Conditions—list of codes e.g. as described below with reference to the triggering rule for these contraindication conditions.
Inputs/Query Parameters are described in the table of
Decision logic, in words and in pseudocode, may be as follows:
In words:
An example of a suitable decision table (in words) is provided in
Codes translations may be as shown in
In pseudo code:
Set Evaluation Result (IsPerformed) to True/False according to the table of
Set Evaluation Result (IsRequired) to True/False according to the table of
Outputs are described in the table of
The Quality Conclusion contains a vocabulary code. The code designation may be retrieved from dbMotion vocabulary by the consumer (EDR). The vocabulary may also hold the mapping between the code and the relevant category e.g. as shown in
Attribute names, values and other characteristics are set out in the table of
Inputs may include:
“ACEI or ARB for LVSD” KM evaluation result
Decision logic, in words and in pseudocode, may be as follows:
The result stored in the EDR is the “ACEI or ARB for LVSD” (clinical) KM evaluation result as-is.
In pseudo code:
Outputs may include ACEIorARBforLVSDAction, of the Action Invocation Activity type.
An example CTS for the monitoring task of the ACEI or ARB for LVSD is now described.
ACEI and ARB medications:
Retrieve list of ARB medications (ACEI and ARB)—2 separate lists
Triggering Rule may be as follows:
KNEO may be as follows:
KFW may be as follows:
ACEI and ARB Allergies for the CTS of the monitoring task of the ACEI or ARB for LVSD is now described.
Retrieve list of allergies (ACEI and ARB)—2 separate lists.
Triggering Rule may comprise:
KNEO may comprise:
KFW may comprise:
Contraindication conditions: list of contraindication conditions (ACEI and ARB) may be retrieved.
Diastolic dysfunction conditions: list of diastolic dysfunction conditions (subset of HF conditions) may be retrieved.
An example sub-classification for temp discharged HF patients is now described with reference to
An example Entry Task for the sub-classification for temp discharged HF patients is now described.
Triggering Rules: Identify Completed Inpatient Encounters in specific Facility for specific Patient e.g. as per third and fourth triggering rules for entry task of admitted HF patients sub-classification, described above.
Inputs/Query Parameters may be as per row 1 in the table of
Decision logic, in words and in pseudocode, may be as follows:
In pseudo code:
This rule may be exactly as the first part of the Is Eligible HF Encounter KM e.g. as described above with reference to “is eligible HF encounter KM” pertaining to the entry task of the sub-classification for admitted heart failure patients. Therefore it may be useful to reuse this logic i.e. the Is Eligible HF Encounter KM may be divided into 2 KMs/rules that one of them is this one.
Outputs may include is DischargedHFEncounter, whose type is Boolean Conclusion ER.
Attribute names, values, and other characteristics are set out in the table of
Inputs may include:
“Is Discharged HF Patient” KM evaluation result (Boolean Conclusion ER)
Decision logic, in words and in pseudocode, may be as follows:
In pseudo code:
Outputs are set out in the table of
An example Exit Task for the sub-classification for temp discharged HF patients is now described.
Triggering Rules may include at least the following:
Is Discharged HF Patient KM: as for the entry task.
An example SmartWatch KM for the exit task may be as follows:
“Is Discharged HF Patient” KM evaluation result (Boolean Conclusion ER)
Decision logic, in words and in pseudocode, may be as follows:
In pseudo code
Outputs are set out in the table of
Example vocabulary Codes for the embodiment of
a is a simplified functional block diagram of a high level architecture of a smart agent system constructed and operative in accordance with certain embodiments of the present invention. In
The term “PPOL” refers to a Patient-Provider-Organization Link such as but not limited to that provided in DBMotion's commercially available HIE. Generally, a medical domain typically comprises interconnected network of entities (e.g. as shown in
The smart agent system of
The term “smart agent” is used herein to include an HIES-EMR bridging system according to any of the embodiments shown and described herein, which facilitates cooperation between HIES and a population of one or more EMRs with which the HIES interacts. For example, the smart agent may perform any or all of the following operations:
a. identify an application which has opened on a work station on which the HIES client is installed, as a medical service provider application e.g. EMR. This may occur because the EMR is compatible with a context sharing standard that the smart agent also supports or may be screen captured. Alternatively, APIs in the operating system may be available which define (assign an operating system name to) the relevant screen and/or fields within the screen, enabling the smart agent to identify the application.
b. identify health care providing user e.g. because user logins in with password, or by capturing user's name from the screen, or e.g. authenticating the user using single-sign on functionality.
c. assuming that the EMR is currently working on the medical record of a particular patient, the smart agent may find the patient identifier, e.g. by screen capture or by context sharing. Typically, when an EMR enters a medical record, the smart agent retrieves the patient identifier by first recognizing the EMR page through which the patient user accesses the medical records and then, e.g. using prior knowledge re the location of the patient identifier on that page, capturing the user identifier.
d. optionally, filter available HIES information, e.g. using suitable “attention rules”, to select suitable information to provide to the user identified in (b), pertaining to the patient identified in (c). Typically, attention rules filter out either irrelevant information or superfluous (repetitive) information, or both.
e. display all, or some (as filtered in (d)) information pertaining to the patient identified in (c.). Typically, all information available from all EMRs with which the HIES interacts, is available to be displayed, unless filtered. Typically, this information is displayed to the health care providing user via an HIE data importer such as a tab or button that takes the user to an HIE portal.
Examples of the operation of steps (d) and (e):
(i) if the user presses on the lab page in her or his EMR, the lab page may be identified by the hovering smart agent. The smart agent may then display to the user only lab results which are not present in her EMR, optionally blinking to indicate that such exist and are available for viewing.
(ii) if the user presses on a medicine page in her or his EMR, the hovering smart agent may intercept that the user is prescribing penicillin to a patient called Susan Smith and may then display only relevant information such as all allergies known for Susan Smith, or the subset of Susan Smith allergies pertinent to penicillin.
(iii) The user presses on a lab result page and sends Susan Smith to do a lab test. The smart agent may intercept this and blink or otherwise indicate that Susan has already done this lab test.
The SmartAgent user interface and behavior is designed to be floated on top of an instance of an EMR and not to interrupt the regular user workflow.
A Floating application within User, Patient and System Context, e.g. as shown in
1. The User opens a patient record in the EMR.
2. A HIES client agent (SmartAgent) installed on the client machine “captures” the patient identifier (MRN), the User Context (Username/Role), and the System Context (SystemID) and calls the HIE's VPO Analyzer web service, which identifies the System, the User and the Patient.
3. The User is authorized and the Patient is found in the HIE.
4. The client SmartAgent gets the response and presents a Floating Application. The Floating button includes a link to launch the HIE's Viewer with the user and patient context.
5. The User clicks the button and seamlessly accesses the HIE's Clinical Viewer.
The VPO (Virtual Patient Object) Analyzer of
A Semantic Search method is now described:
1. The user looks for data on Diabetes (say) in the HIES. To do so, the User enables the Search option in the floating toolbar and types the phrase “Dia”.
2. Search suggestions are presented and user selects the “Diabetes” Suggestion.
3. As a result, the Results and Navigation pane opens and presents the results for Diabetes from the Patient's VPO, organized according to Clinical Aspects (Medications, Problems, Population Membership, etc).
4. The User clicks the “Diabetes” population.
5. The Diabetes View is opened in the View panel.
A process operative to Launch an HIES Viewer and CareBoard is now described. Any information found is presented in the Data and Navigation panel. The information is organized according to the different clinical aspects (Laboratory, Medications, etc.) and evaluation aspects (Population membership, Metrics, Notifications, Alerts etc.). The clinical aspects and actual presented data are links to the relevant page in the HIES's Clinical Viewer or Collaborate. Example: Under the Lab Results menu, the user sees a result for hbA1c from last week. Beside the result there are two buttons: one opens the Labs Clinical View and the other opens the Lab Results Page with the hbA1c history.
b is a table summarizing an example set of functional requirements of a content/VPO analyzer included in the apparatus shown and described herein.
c is a table summarizing an example set of functional requirements of a content capturing and sharing functionality included in the apparatus shown and described herein.
d is a table summarizing an example set of functional requirements of a semantic search functionality included in the apparatus shown and described herein.
e is a table summarizing an example set of functional requirements of a floating application included in the apparatus shown and described herein.
a is a table summarizing an example set of non-functional auditing, security and localization requirements of apparatus shown and described herein.
b is a table summarizing an example set of non-functional topological and pre-requisite requirements of apparatus shown and described herein.
c is a table summarizing an example set of non-functional performance requirements of apparatus shown and described herein.
d is a table summarizing an example set of non-functional reusability and integrability requirements of apparatus shown and described herein.
In an OnPageLoad mode of operation,
Floating Application Small Panel: An example user interface for a FloatingClosed functionality is illustrated in
An example user interface for a FloatingSearchOpen functionality is illustrated in
a illustrates the SmartAgent application hovering on top of an example EMR (Allscripts Sunrise—commercially available EMR) in an expanded mode.
b is an enlarged view of the expanded SmartAgent panel.
An example object table useful in understanding the functionality of the user interface of
d is an Object Table.
Example Attention Rule Definitions for a Clinical Content Specification are now described. The smart agent typically uses attention rules to determine whether or not to provide a user with an indication that aims to direct her or his attention to the fact that information relevant to her or him is available in the HIES. The indication may include a highlight color in the background of the Name e.g. as shown in
Example rules are as follows:
Rule 1: Exclude my E.H.R. data:
User is alerted if there is information in the HIES which does not exist in the user's EMR. Typically, the HIES stores an indication, for each information item, of the EMR which provided that information item, allowing information items provided by a user's EMR to be filtered out and not displayed to the user.
Rule 2: Exclude data irrelevant to workflow.
A health care providing user opens his EMR at a page pertaining to laboratory, medicine, Procedures, Allergies, Vital signs, Pathologies, Imaging results, Clinical documents, immunizations, Problems, Diagnosis, or any other EMR functionality. The Agent hovers over the EMR application, intercepts the type of page opened, and selects from among the HIE information items available, only the ones which are relevant, using predetermined criteria, to the current EMR functionality.
Rule 3: new since last seen.
Smart agent generates an alert if information which is new, relative to the point in time at which a particular health care providing user last looked at the HIES.
a is a table of an example set of presentation use cases.
b is a table of an example set of context interception use cases.
c is a table of an example set of system health use cases.
d is a table of an example set of data preparation, configuration & deployment, and extension development use cases.
The high level architecture of a smart agent system constructed and operative in accordance with certain embodiments of the present invention is illustrated in the simplified functional block diagram of
1. VPO analyzer—an addition to the VPO Web Services. is typically operative to filter and highlight pieces in the VPO which are considered important to be presented. It is typically based on GetVPO functionality and rules on those.
2. SmartAgent application. A client-installed application. Typically comprises some or all of:
a. SmartAgentHost—a windows try application that connects all the dots on the client machine
b. SmartAgentPresentation—SmartAgent presentation Module (WPF) application
c. Context interception library—Library Screen capturing interfaces. Its job is to capture events from EMR application such as patient context, and pass it on to the SmartAgentHost.
Certain user context interception sequences, some or all of which may be included in the model, are illustrated in the diagram of
An example use case model is now described with reference to
A Use Case Model Overview (Use Case diagram) is illustrated in
Regarding the configuration and deployment functionality of
Configure & Personalize presentation options may include, inter alia: Presentations Skins Vs EH.R., Presentation rules and Base query, each of which is now described in detail according to respective embodiments of the present invention:
Presentation skins refers to an ability to customize the SmartAgent application appearance to have a plurality of different “look and feel”s. Typically, end users want the EMR agent to appear on top of a given EMR with a look and feel which is similar to that of the EMR.
Presentation Rules—refers to how the SmartAgent behaves to a given attention rule result—such as blinking frequency of alerts, or whether to blink and/or to expand the SmartAgent to view Clinical Data.
Base Query refers to filtering to obtain a VPO. Filtering can be by Time, or which clinical Aspects to obtain (e.g. filter to obtain only labs, or All Clinical Aspects).
For the “deploy updates to agent” use case, the system may update to the smart agent applications scattered all over the network (and out of network for community clinics). The smart agent may be installed on any suitable platform, such as a Citrix box. For the “install agent on Citrix box” use case, setting up the agent may be controlled by configuring Citrix sessions, or by network login script.
A Context Interception (Use Case diagram) is illustrated in
Re “Identify Application” use case shown in
Re “Identify Patient” use case shown in
Re additional “Identify Patient” use case shown in
Re the “Identify User” use case shown in
Re the “Identify Workflow Context” use case shown in
Turning now to the Data Preparation functionality in
Re the “Apply Rules” use case: Typically, acting on patient data, the system decides which records are to be presented using attention rules e.g. as described herein. The system is typically able to add more rules and adjust existing rules. Example rules include: —“exclude my EMR data” and —“exclude what I saw”, also termed herein the “new since last seen” rule.
Re the “Prepare Patient Data for presentation” use case: typically, the system prepares data to be presented to the user. This includes fetching the data as well as filtering out irrelevant records, based on rules. This typically works in conjunction with the VPO analyzer of
Re the Extension Developments functionality in
The “Develop & Configure EMR support” UC typically describes a possible need of the system to grow and support new EMRs, new versions of known EMRs as well as customized versions of known EMRs. The support is focused on the interception of elements from the EMR screen.
Re the Presentation functionality in
The “Control floating application state” may for example include Minimize, expand, size, position, dock, close etc. In the launch health information exchange system (HIES) Viewer UC the system acts merely as an entry point to the existing viewer (Clinical Viewer, Collaborate). The launch may or may not include context (user, patient, app). For example—navigation menu for medications (even though no medication record is currently shown). In the “Perform Search” UC the user searches for records within the patient record. The search can either be on the codified data, or free search over text (notes within acts and the content of clinical documents). In the “Present Clinician Data” UC the system presents data from the HIES that is not related to the patient viewed in the EMR. For example—“my recent events” from a Collaborate functionality in the HIES, “my admitted patients” and so on.
In the Present Patient Data UC the system presents patient data to the user. In the “Send To My EMR” UC the user selects act to be sent to his EMR and the system delivers them to the EMR to be presented there.
The GetVPO service of
An example Design Model is shown in
The screen capturing functionality of
The ScreenCapturingEHRContextInterceptor of
The ScreenCapturingEHRContextInterceptor of
The SmartAgentHost functionality of
A logical diagram of controllers is shown in
Regarding the EHRContextManager of
a. Pass on events to the presentation about patient, user, application and workflow context switches
b. Receive events from presentation such as user requests to hide\close\float the window and make sure to respond correctly to those events, for example by stopping the interceptors.
c. Make sure the window moves together with the EMR window.
The multiplicity of this class may be expected to be one per EMR window instance. (e.g. two Cerner windows would be assigned with two different context managers.
Operations, some or all of which may be performed by the InterceptorsFactory functionality of
The RuntimeManager of
1. Manage (start\stop\monitor) the different managers.
2. Orchestrate the process of discovering new EMR window, creating a ContextManager and context interceptor for it.
A logical diagram of ContextInterception is illustrated in
a. Connection to server
To allow an EMR Agent work with a database such as a dbMotion database an address of the server, e.g. dbMotion server, is typically set up. The Server address is typically a URL which may for example have an http: prefix followed by, say: //ApplicationServer:9150/dbMotion/SmartAgent
b. View shell window position:
These parameters may be specified globally.
The IEHRContextInterceptor of
The IEHREventInterceptor of
The IMpl package of
Regarding the IEHRLaunchIncerceptor functionality of
The runtime manager may be subscribed to the OnApplicationOpened event.
The IEHRWindowStateInterceptor of
Referring again to
Example Framework and Contracts pertaining to the VPOAnalyzer may be appreciated with reference to
Service & business layers may include the apparatus shown in the logical diagram of
An example Use Case (UC) Realization process is illustrated in the Identify Patient UC realization sequence diagram of
A particular advantage of certain embodiments of the present invention is that the EMR's code need not be changed because the apparatus of the present invention is able to intercept whatever context it employs from the EMR. Any suitable method may be employed for intercepting EMR context, such as but not limited to:
a. use of a context management protocol such as CCOW.
b. screen capturing (also termed herein “screen scrapping”)
c. providing a specialized context interception adaptor, also termed herein “interceptor” for a particular EMR taking advantage of a specific context sharing capability which that particular EMR has. Typically, the architecture of the system shown and described herein includes one or more adaptors for context interception also termed herein “interceptors”, e.g. as shown in
“Manual Intervention” typically includes a set of features in the Smart Agent which enable the system to locate, within a patient record, an item of information that may be relevant for the end user in the context of the workflow. As an example, a health provider-user may be prescribing a new medication to the patient. According to certain embodiments, capturing the prescribed medication enables to search for a drug interaction or an allergy within the HIE patient record. It is appreciated that finding the relation between the prescribed medication in a given EMR and the ability to identify kind of relations to other clinical artifacts within the patient record, are not trivial, e.g. because the clinical concepts terminology is unknown to the HIE. Also, since the terminology used for the medication is unknown, there may be no ability to manage the relations to other clinical concepts.
The CTS subsystem of dbMotion's commercially available health information exchange system typically provides capabilities that make intervention in the EMR based on local terminology possible, including one or more of the following, all e.g. as described herein with reference to any or all of
If some or all of features 1-3 above are provided, the SmartAgent is typically operative to present the user with an alert on an allergy to a prescribed medication by intercepting the medication name, locating its concepts in the CTS terminology as a local concept, locating the baseline ontology concept it relates to, locating the related ontology concepts of allergy and, using a given VPO, resolving if an individual patient meets this intervention rule. This is an example of use of the semantics framework provided in the commercially available dbMotion health information exchange system, in order to perform workflow context interception.
Embodiments of CTS functionality are now described:
While there is value in bringing together data from multiple source systems into a unified virtual patient record with each source-system providing data using its own “local terminology” codes, there are many limitations in viewing the resulting hodge-podge of terminologies. By converting all the data into a common set of standards-based codes, using CTS functionality, the results are much more meaningful.
The term Semantic Interoperability refers to the ability to translate data from multiple and varied Healthcare IT systems and then to organize such data in a meaningful way for display and analysis. This facilitates creation of a meaningful “virtual patient record” comprised of data from multiple source systems that can still be coherently organized and understood. Semantic Interoperability facilitates assimilation of data that originated in one system, into a different system.
Terminology of Semantic Interoperability used herein includes:
Baseline Ontology and Local Terminologies: An HIE e.g. that commercially available from DBMotion, may be pre-configured with a Baseline Semantic Ontology (also termed herein a Baseline Ontology). The pre-configured or “out of the box” (OOB) Baseline Ontology can be customized and configured by a user. The Baseline Ontology typically represents a common language into which all data aggregated from source systems by dbMotion is translated (“Local to Baseline Translations”) and from which it is again translated (“Baseline to Local Translation”), if required, in the course of semantically meaningful data export (termed herein “semantic export”) to a destination system in a way that is consistent with the terminology used by that destination system. The terminologies used by the source systems and the destination systems are termed herein Local Terminologies.
Typically, the Baseline Ontology is also used to group data and optionally to enable at least one of decision support, alerting, and population management.
When doing Local to Baseline Translation, a record of the original Local Terminology encoding is typically maintained for reference. It may then be a configurable option whether data is displayed in Local Terminology, Baseline Ontology, or both.
According to some embodiments, the HIE does not import/export information about the relationships between codes: The Local to Baseline Translations and the Baseline to Local Translations are concerned only with mapping terminology (codes). The broader Semantic Ontology is exclusively in the Baseline Ontology—it can be customized if desired, but it is not impacted by the source or destination systems that are interconnected by the HIE system.
HIE's Semantic Interoperability may be provided by a Vocabulary Manager (VM) sub-system. Terminology translation support may be limited to one-way translation (Local to Baseline Translation) and Semantic Ontology may be limited to basic grouping capabilities.
A Common Terminology Service (CTS) may alternatively or in addition provide Semantic Interoperability by providing a Semantic Ontology functionality that provides both translation services and semantic relationship knowledge services throughout the HIE.
In commercially available dbMotion HIE's Release 4.2, CTS services are used by components associated with the dbMotion Collaborate application, as well as by Semantic Export capabilities introduced in the context of the Allscripts Community Record features powered by dbMotion Release 4.x. Some modules may utilize an earlier dbMotion Vocabulary sub-system. A CTS Synchronization Service enables the CTS to co-exist side by side with a Vocabulary Manager system. The CTS Synchronization Service may synchronize a newer CTS Baseline Ontology with the Vocabulary Manager system (CTS to VM) and also synchronize Local Terminology mappings managed within the VM with the CTS (VM to CTS).
If there are Baseline codes that are not part of the Baseline Ontology (referred to as Proprietary Baseline Terminologies), these are typically mapped to the CTS Baseline Ontology concepts using a structured Baseline Mapping file provided by the HIE.
A CTS may support inter alia any or all of the following use-case scenarios:
Semantically harmonize aggregated medical/administrative data from multiple source systems e.g. by translating the source system local terminology to the Baseline Ontology (Local to Baseline Translation), as well as by using the Baseline Ontology to hierarchically organize certain data areas to facilitate grouping, filtering and sorting features.
Semantically export data from the virtual patient record and its Baseline Ontology to the Local Terminology used by a destination system (e.g. a particular EMR) (Baseline to Local Translation).
The Baseline Ontology Terminology may for example be assembled by combining selected sub-sets of different well-known standard terminology systems (SMONED, RxNorm, LOINC, etc). The specific subset of codes in the Baseline Ontology from within a given standard may be selected based on suitable criteria such as but not limited to some or all of the following:
The Table of
The Baseline Ontology Relationships or concept-relationship aspect of the Baseline Ontology may be maintained using a suitable toolset for ontology management such as OWL (Web Ontology Language), endorsed by the Worldwide Web Consortium (W3C).
Relationships supported in the CTS may for example include some or all of the following:
Classification (Hierarchy):
Mapping:
Cross domain relations:
Inner domain relations:
In order for the CTS to provide its translation services, it may be supplied with Terminology Maps for translating bi-directionally between the Local Terminologies used by various source and destination healthcare IT systems and the Baseline Ontology. The CTS may for example be pre-configured with a set of OOB (out-of-the-box) Terminology Maps that map between Local Terminologies used by Allscripts EMRs and the Baseline Ontology. Examples of such maps, e.g. for the DBMotion HIE, are set out in the table of
Any or all of the following methods may be supported for building Terminology Maps:
Semantic Interoperability typically provides a “central hub” type system as opposed to “myriad point-to-point” systems. Rather than creating mappings between every potential pair of relevant terminology code sets, a standards-based baseline may be provided from which and to which everything is translated. This means that far fewer mappings are used to translate “anything to anything”. Analogous is the difference between using a dictionary to translate every language to and from every other language and using just one dictionary (per each of n languages) from each language into a “universal common language” and back, which effectively translates between any 2 languages.
A difference between Terminology Services and Ontology Services is that Terminology typically is limited to translating codes from one set to another, whereas Ontology also refers to relationships between those codes e.g. the hierarchy/grouping relationship that enables grouping together clinically related medications, allergies, etc. “Ontology relationships” may also be defined to enable a CTS to respond to a query such as “give me all the medications, conditions, and lab tests associated with Diabetes”. When an HIE operates exclusively through a central Baseline Ontology, the HIE can define these relationships only once in the terminology of the Baseline Ontology and can then use the relationships for any Local Terminology used by any other source system.
According to some embodiments, Semantic Interoperability is not “point-to-point”. Thus, instead of mapping from and to every possible combination of source and destination code sets, only one mapping is performed, from any source/destination code set to/from the Baseline Ontology.
According to some embodiments, Semantic Interoperability is not limited to “terminology services” and instead provides an “ontology” of relationships between concepts within a given clinical domain (e.g. a hierarchy of medications), as well as across clinical domains (e.g. all medications, conditions, and labs associated with Diabetes).
According to some embodiments, Semantic Interoperability focuses on most frequently used codes and most important, as pre-defined relationships among codes. This allows efficient investment in maintaining mappings and reducing the almost infinite potential task of “mapping everything” to a manageable mapping agenda.
One implementation of the CTS (Common Terminology Services) functionality described herein is the dbMotion HIE's software module that powers its Semantic Interoperability capabilities.
The smart agent of
It is appreciated that terminology such as “mandatory”, “required”, “need” and “must” refer to implementation choices made within the context of a particular implementation or application described herewithin for clarity and are not intended to be limiting since in an alternative implantation, the same elements might be defined as not mandatory and not required or might even be eliminated altogether.
It is appreciated that software components of the present invention including programs and data may, if desired, be implemented in ROM (read only memory) form including CD-ROMs, EPROMs and EEPROMs, or may be stored in any other suitable typically non-transitory computer-readable medium such as but not limited to disks of various kinds, cards of various kinds and RAMs. Components described herein as software may, alternatively, be implemented wholly or partly in hardware, if desired, using conventional techniques. Conversely, components described herein as hardware may, alternatively, be implemented wholly or partly in software, if desired, using conventional techniques.
Included in the scope of the present invention, inter alia, are electromagnetic signals carrying computer-readable instructions for performing any or all of the steps of any of the methods shown and described herein, in any suitable order; machine-readable instructions for performing any or all of the steps of any of the methods shown and described herein, in any suitable order; program storage devices readable by machine, tangibly embodying a program of instructions executable by the machine to perform any or all of the steps of any of the methods shown and described herein, in any suitable order; a computer program product comprising a computer useable medium having computer readable program code, such as executable code, having embodied therein, and/or including computer readable program code for performing, any or all of the steps of any of the methods shown and described herein, in any suitable order; any technical effects brought about by any or all of the steps of any of the methods shown and described herein, when performed in any suitable order; any suitable apparatus or device or combination of such, programmed to perform, alone or in combination, any or all of the steps of any of the methods shown and described herein, in any suitable order; electronic devices each including a processor and a cooperating input device and/or output device and operative to perform in software any steps shown and described herein; information storage devices or physical records, such as disks or hard drives, causing a computer or other device to be configured so as to carry out any or all of the steps of any of the methods shown and described herein, in any suitable order; a program pre-stored e.g. in memory or on an information network such as the Internet, before or after being downloaded, which embodies any or all of the steps of any of the methods shown and described herein, in any suitable order, and the method of uploading or downloading such, and a system including server/s and/or client/s for using such; and hardware which performs any or all of the steps of any of the methods shown and described herein, in any suitable order, either alone or in conjunction with software. Any computer-readable or machine-readable media described herein is intended to include non-transitory computer- or machine-readable media.
Any computations or other forms of analysis described herein may be performed by a suitable computerized method. Any step described herein may be computer-implemented. The invention shown and described herein may include (a) using a computerized method to identify a solution to any of the problems or for any of the objectives described herein, the solution optionally include at least one of a decision, an action, a product, a service or any other information described herein that impacts, in a positive manner, a problem or objectives described herein; and (b) outputting the solution.
Features of the present invention which are described in the context of separate embodiments may also be provided in combination in a single embodiment. Conversely, features of the invention, including method steps, which are described for brevity in the context of a single embodiment or in a certain order may be provided separately or in any suitable subcombination or in a different order. “e.g.” is used herein in the sense of a specific example which is not intended to be limiting. Devices, apparatus or systems shown coupled in any of the drawings may in fact be integrated into a single platform in certain embodiments or may be coupled via any appropriate wired or wireless coupling such as but not limited to optical fiber, Ethernet, Wireless LAN, HomePNA, power line communication, cell phone, PDA, Blackberry GPRS, Satellite including GPS, or other mobile delivery. It is appreciated that in the description and drawings shown and described herein, functionalities described or illustrated as systems and sub-units thereof can also be provided as methods and steps therewithin, and functionalities described or illustrated as methods and steps therewithin can also be provided as systems and sub-units thereof. The scale used to illustrate various elements in the drawings is merely exemplary and/or appropriate for clarity of presentation and is not intended to be limiting.
Priority is claimed from: U.S. Provisional Patent Application No. 61/438,762 filed on Feb. 2, 2011, entitled: “Smart agent for EMR processing and methods useful in conjunction therewith”. This application is a Continuation in Part of: U.S. patent application Ser. No. 12/840,806, entitled “Health information exchange and integration system and methods useful in conjunction therewith” and filed 21 Jul. 2010.
| Number | Date | Country | |
|---|---|---|---|
| 61438762 | Feb 2011 | US |
| Number | Date | Country | |
|---|---|---|---|
| Parent | 12840806 | Jul 2010 | US |
| Child | 13208417 | US |