Internal Data Model for Inferencing
The OpenCDS Internal Data Model has several components:
- Imported classes and data types, including
- vMR (both cdsInput and cdsOutput),
- OpenCDS Concepts,
- OpenCDS Globals, and
- some useful Java data types.
Each class and datatype are listed under the "Edit" menu of each Drools Package/OpenCDS Knowledge Module here:
The actual specification of those datatypes (other than the Java ones) are as follows:
- A flattened version of the HL7 vMR version 1.0, which is designed to supported reasoning over fact lists of medical data. This is the primary model for clinical data. The internal vMR is found in the OpenCDS source code here:
- OpenCDS Concepts, which are based on the vMR 1.0 data model, and are logically attached to the id of the encompassing vMR class (i.e., ProcedureEvent, Person, etc.) of every vMR element of HL7 type CD. These datatypes are not part of the vMR itself, but they are added to the fact lists submitted to Drools by OpenCDS, based on the matching that OpenCDS does between the input vMR and its lists of concept maps. The list of the supported OpenCDS Concepts is found in the OpenCDS source code here:
- Globals, specifically "namedObjects" and "assertions" which are created by OpenCDS at run-time, and submitted to Drools each time Drools is invoked to evaluate a Knowledge Module and patient data. These are created in the OpenCDS DroolsAdapter source code.
- Assorted common Java data types, which are used in some of the functions and DSLs written in Guvnor
- A flattened version of the HL7 vMR version 1.0, which is designed to supported reasoning over fact lists of medical data. This is the primary model for clinical data. The internal vMR is found in the OpenCDS source code here:
- Declarative Data Types, which are created in Guvnor specifically for Drools
- These are typically declared in each Knowledge Module, and the most common ones we use are:
- NamedInteger
- NamedDate
- NamedList
- NamedEncounter
- These are typically declared in each Knowledge Module, and the most common ones we use are: