System and method for using a relational database to enable the dynamic configuration of an application program6266675Abstract A computer-based system for using a relational database to dynamically configure an application program easily comprises a relational database including first table means containing first data, second table means containing configuration data, and an engine coupled to the relational database for using the configuration data to configure manipulation of the first data. The engine uses the configuration data to configure the appearance of the user interface, to configure the fields being displayed, to configure the expected type of information to be received, to configure the privileges of the user, to configure the column headers, etc. Claims What is claimed is: Description BACKGROUND OF THE INVENTION
Tables for Activities Engine
Activity
activityId templateName templateVersion whenEntered
author
ActivityTemplate
templateName templateVersion description category
calendarFlag
ActivityTempltFld
templateName templateVersion tabOrder fieldName
controlType
FieldDescription
fieldName abbrLabel shortLabel longLabel
locationType
DialogFields
dialogId fieldId fieldName labelType
fieldType
Tables for Questionairre Engine
Questionnaire
qstnnId qstnnType qstnnHdrFntName
qstnnftdrFntSzQty qstnnHdrFntClrId
QuestionnaireType
qstnnTypeId qstnnTypeName qstnnTypeInsertTs
QinQ
qstnnId qstnTd qInOrderQty
qinqAnsSQLColName qInQInsertTS
Question
qstnId qstnType qstnLeftId qstnRightId
qstnText
QuestionType
qstnTypeId qstnTypeName qstnTypeInsertTS
ControlType
controlTypeId controlTypeName
DataType
dataTypeId dataTypeName dataTypeInsertTS
SkipAction
qstnId domExtId skipSectionInd
skipToQuestionId skipInsertTS
Domain
domainId domainName domainDataType
domainScaleQty domainWidthQty
DomainExtension
domExtId domainId domExtOrderQty
domExtInsertTS domExtCaptionText
Tables for Security Services
CaseManager
cmId nameLast nameFirst loginId
cmDeactivatedFlag
GroupMembership
cmld secGroupId grpMemAssignedById
grpMemInsertTS
GroupRole
secGrpRoleId secRoleId secGroupId
grpRoleInsertTS
GrpRolePriv
secGrpRoleId privCtxtId grpRolPrivInsertTS
PrivilegeForContext
privCtxtId privCtxtDbId secContextId
secContextDbId secPrivilegeId
ValidPrivilege
secRoleId privCtxtId valPrivInsertTS
SecurityContext
secContextId secContextDbId secContextName
secContextTxt secSubContextName
SecurityGroup
secGroupId secGroupDbId secGroupName
secGroupInsertTS secGroupUndeleteFlag
SecurityPrivilege
secPrivilegeId secPrivilegeDbId secPrivilegeName
secPrivilegeTxt secPrivilegeInsertTS
SecurityRole
secRoleId secRoleDbId secRoleName
secRoleDisplayTxt secRoleInsertTS
Tables for List View Engine
ListViewColumns
name colOrder colName header
showit
ListViewQuery
name description category selFrom
selWhere
MenuConfiguration
mcId mcText mcTypeName
mcContextName mcApplicCtxtName
Tables for Case Assignment Engine
TriageRule
Sequence cmId status
trulReqApproveFlag
TriageRuleItem
Sequence ColName RuleItem
TriageRuleModel
Sequence Hard RuleColumnName TableName
FieldName
Tables for Search Engine
ProviderMaster
ConfigTables.doc
pvdrMstrId providerId panelId whenAltered
whenModified
ExtendedInfo
providerId panelId infoName infoValue
ValidValues
validName validValue vvalSeqQty
code_table
proc_code code_description
Tables for Clinical Support Data Reader (Care Plan Wizard)
CarePlanTemplate
name description comments guideline
CarePlanActivities
name sequence templateName quantity startDateIx startDelta repeatDateIx
repeatDelta calendarFlag checkOffFlag cost descriptio
Tables for Import/Export Engine
ImportDataMap
Idx Msg Evt Segment FieldNum Rep Type SubTypeID TranTbIID Entity Container
Width Offset CrtFlag
ImportRules
Idx RuleID Entity Container Literal Operator
ExportDataMap
Idx Msg Evt Segment FieldNum Rep Type SubTypeID TranTbIID Entity Container
Width Offset CrtFlag RuleID
ExportRules
Idx RuleID Entity Container Literal Operator
TranslationMap
Idx TableID KeyTxt LiteralTxt OperatorTxt
FIG. 5 is a block diagram illustrating details of the CM database creator 140. The CM database creator 140 includes a TConfig tool 505, a SecFix tool 510, a TcAll tool 515 and a CheckConfig tool 520. Although each of these tools are illustrated as coupled together via a bus-type structure 525, one skilled in the art will recognize that the connections are software based. The Tconfig tool 505 may read and translate a text file into an SQL file that may be used to build activities and list views. A compatible tool provided by the CM database vendor can be used to execute the SQL file on the CM database 155. For example, the Sybase SQL Central Program, can be used to apply these files to a Sybase SQL Anywhere database. The TcAll tool 515 may be used to automate the execution of the Tconfig tool 505 on a series of source files. The SecFix tool 510 reads security-related portions of the configuration data 310 in the CM database 155 to identify errors for the user and to correct privileged configuration data 310. The CheckConfig tool 520 reads the activities-related portions of the configuration data 310 in the CM database 155 to identify errors for the user. FIG. 6A illustrates an activity template table 600. The activity template table 600 includes columns for a template name 605, a template version 610, a description 615, a category 620, a calendar flag 625, a CheckOff flag 630 and cost 635. Each activity template preferably describes how to enter, store, and present one record of one type of data. The activity template table 600 illustrated contains two activities, namely, "Medication" in row one and "Disposition" in row two. The Medication activity corresponds to template version "1," description "Medication Profile," category "CarePlan," calendar flag "N," CheckOff flag "N" and cost "0." The Disposition activity corresponds to template version "1," description "Case Disposition," category "System," Calendar flag "N," CheckOff flag ".phi." and cost "0." More particularly, the Medication activity parameters of the activity template table 600 define the configuration data 310 that the activities engine 415 uses to configure. That is, from these parameters, the activities engine 415 determines that the medication activity exists. The activities engine 415 further determines that the specified Medication activity template is a first version ("1") of the template. The version number enables the activities engine 415 to manage changes to the template at run-time by matching the version of the fields with the version of the template. The activities engine 415 displays the description "Medication profile" to describe the particular activity to the user, and knows to place this activity in the category "CarePlan" so that the user can find the activity. Further, because the Calendar flag is off, the activities engine 415 does not display activity dates, such as medication start date medication stop date, on the electronic calendar. Because the CheckOff flag is currently on, the activities engine 415 enables the medication activity to be "Checked-Off" using the check-off toolbar button or edit activity status. Further, the activities engine 415 determines that the cost for this activity is "0." It will be appreciated that the activities engine 415 applies the Disposition activity parameters in a manner similar to that of the Medication activity. FIG. 6B is a table illustrating activity template fields table 640 for the Medication and Disposition activity template table 600. More particularly, rows 1-13 pertain to the Medication activity of template table 600, and rows 14-19 pertain to the Disposition activity of template table 600. Activity template fields table 640 includes columns for a template name 642, a template version 644, a tab order 646, a field name 648, a control type 650, static text 652, control text 654, the number of lines 656 and an action profile 658. The template name identifies the activity as specified in the activity template table 600. The template version 644 corresponds to the version of activity being requested. Thus, the template version 644 will indicate the if an activity has been added or updated. Tab order 646 specifies the display order of each of the fields within each activity. Namely, for the Medication activity, the first field to be displayed is "Activity Description" in row 11. The display order continues with rows 12, row 13 and then rows 1-10 sequentially. The field name 648 identifies each of the fields by a unique identifier. For example, row 13 is identified as "MedUnits." The control type 650 identifies the type of user interaction, such as edit, pick list, button, static text, etc. to be used when accepting data from a user upon request. That is, when the case manager system 125 prompts the case manager 115 for data specifying the patient's name, the activities engine 415 will present an edit control that will accept a free-form text string (which may be identified as control type "3.") The static text 652 identifies the string of text that will be presented to the case manager 115 to label the control 650 on the output device 270 when viewing or requesting input of data. Should the control type be a control requiring text, for example, a button, control text 654 is the text presented to the user at run-time. For example, if a search on a set of codes is configured on a button, the control text might be "search code." The number of lines 656 describes the number of lines to display for data entry. For example, for a large field of 2000 bytes, the number of lines 656 may be set to "5" or "6" to enable the user to view more text without scrolling. Lastly, the action profile 658 references a segment of the program initialization file that may contain additional configuration information, for example, ranges for numeric values. FIG. 6C illustrates a field description table 660, related to the activity template fields table 640 using the field name 648 as the key field. Field description table 660 includes columns for the field name 662, an abbreviated label 664, a short label 666, a long label 668, a location type 670, a location name 670 and a real name 674. Thus, when the activity engine 415 provides the case manager 115 with a display screen for, for example, the field medical dose (FIG. 6B, row 12), the activities engine 415 will locate related field description table 660 (FIG. 6C), will identify row 1 as having the same field name 662, and will provide a user interface as specified by the columns. That is, if the activities engine 415 requests a long label to fully describe the data being viewed, requested, etc., the activities engine 415 will locate column 668, and will retrieve the label "Medication Dosage." Alternatively, should the activities engine 415 request only a short label, then the activities engine 415 will locate column 666, and will retrieve the label "Dosage." The location type "SQL" defines the type of location where the referenced field is located. For example, "SQL" implies that the field is stored in a relational-type CM database 155. The real name 674 identifies the database field where the referenced data is stored. The location name 672 identifies the database table where the referenced data is stored. For example, the medication dose (row 1) will be stored in the dose field of the medication table. FIG. 7 illustrates activity records 700 contained in the case manager database 155. As illustrated, an activity record 700 can be contained in multiple tables. For example, a first medication record is contained in medication portion 705 having activity identification "342" (row 1, column 720) and in common portion 710 also having activity identification "342" (row 1, column 732). Similarly, the first disposition record is contained in the disposition portion 715 having activity identification "371" (row 1, column 760) and in common portion 710 also having activity portion "371" (row 1, column 732). Using a common portion 710 avoids creating additional tables, which can be shared among different records. Using a common portion 710 thus saves memory and facilitates customization. It will be appreciated that the medication portion 705 and the disposition portion 715 are each referred to as an "extension portion." The medication portion 705 includes columns for activity identification 720, dose 722, frequency 724, medprec 726, medprecDec 728, and medprecmd 730. As stated above, the activity identification 720 identifies the record and acts as the key field to link it with the common data in the common portion 710. The dose 722 indicates the medication dosage prescribed by the doctor 105. The frequency 724 indicates how often the prescribed medication should be ingested. The medprec 726 is a flag indicating whether the medication required precertification. The medprecDec 728 is a flag indicating whether the prescribed medication has been approved or denied by the case manager 115. The medprecmd 730 identifies the doctor 105 prescribing the medication. The disposition portion 715 includes columns for activity identification 760, actual disposition 762, closure date 764, expected disposition 766 and referral source 768. The activity identification 760 identifies the disposition record. The actual disposition 762 identifies the date of patient discharge. The close date indicates the date of the case closure. The expected disposition 766 indicates the date of expected patient discharge. The referral source 768 indicates the source that referred the patient to the case manager 115. The common portion 710 includes columns for activity identification 732, template name 734, template version 736, when entered 738, author 740, calendar flag 742, checkOff flag 744, dateDone 746, cost 748, description 750, note 752 and when modified 758. The activity identification 732 identifies the activity record. The template name 734 identifies the activity template 600 used to manipulate the record. The template version 736 indicates the version of the activity template 600 that created it. When entered 738 indicates the date the record was created. The author 740 identifies the case manager 115 that opened the record. The calendar flag 742 indicates whether the dates of the record should be presented by the activities engine 415 on a calendar. The checkoff flag 744 indicates whether the activity is to be checked-off using the check-off toolbar button. The dateDone 746 indicates the date the activity was checked-off or completed. The cost 748 indicates billing information for the activity. The description 750 specifies the summary description of the activity. The note 752 is a long description associated with the activity. When modified 758 indicates the date when the record was last modified. Accordingly, the case manager 115 can recognize inactive records. Each of these columns are shared among the medication records and the disposition records. Upon selection of a record, the activities engine 415 will extract the data from the common portion 710 and from the extension portions 705 and 715. For example, when selecting a medication activity, data is extracted from the common portion 710 and from the medication extension 705. FIG. 8A is a display screen view of an example patient menu 800. The menu 800 lists records for "Baker," "Brewster," "Kelley," and "Pentaudi," and includes each patient's last name, first name, activation date, case identification number, group number, program, next review date, primary case manager 115 and status. The columns illustrated in the menu are determined by the configuration information in the tables. That is, the configuration data in the tables indicate that the menu 800 should display the columns illustrated. FIG. 8B is a display screen view of a patient record 820. The record 820 lists available fields for patient information, case information, assessment information, care plan information, available activities, calendar information and contact information. The record currently illustrates patient information, namely, social security number, birthdate, age, subscriber number, gender, ethnicity, etc. Again, the information displayed is controlled by configuration information in the tables. FIG. 8C is a display screen view of a patient record edit window 840. The edit window 840 includes a title bar with "Enter Patient Info--Baker, Allison." The edit window 840 also includes a description of the information needed, such as "Last:," and a field with the last name of the patient "Baker." Further, in some instances, the edit window 840 includes a description of the information needed, such as gender, and includes a pick list ("male" or "female") with the selected pick "female" illustrated. FIG. 8D is a display screen view of an activity list 860, which includes a list of available activities, namely, assessment results, care plan variance summary, etc. The list of activities is again indicated by the tables. An example activity table is shown in FIG. 6A. Selection of one of the activities provides activity list fields 880 shown in FIG. 8E. FIG. 8E is a display screen view of the activity list fields 880 for the medication summary activity. The columns illustrated include medication name, dose, units, route, frequency, start date, stop date, medication type, provider name, adverse reactions, and description. The columns displayed are controlled by a list view table, which is similar to the activity fields table 640 illustrated in FIG. 6B. FIG. 9 is a flowchart illustrating a method 900 for generating, for example, configuration data 310 for the activities. Method 900 begins with a user via the case manager database creator 140 in step 905 selecting activities and in step 910 selecting the activity fields for each activity to include in the CM database 155. The user in step 915 identifies the field types and control types 650 (see FIG. 6B), and in step 920 identifies the field sizes and numLines 656(see FIG. 6B). The user in step 925 indicates whether data for each the activity fields are required when the case manager 115 is entering a patient record 820. The user in step 930 then selects, for example, the window where the case manager 115 can select the activity. For example, a particular activity may be selectable from an activities window and from a calendar window. The user in step 935 labels the fields with proper descriptions and may include a short label such as "Med", a medium label such as "Medication" and a long label such as "Medication Summary." Short, medium and long labels are described in greater detail above with reference to elements 664, 666 and 668 of FIG. 6C. The user in step 940 indicates the order in which the activities engine 425 will list the fields. The order field is described in greater detail with reference to tabOrder 646 of FIG. 6B. The user in step 945 selects the tables in which to store the data. Table location is described in greater detail with reference to location name 672 of FIG. 6C. The user in step 950 uses the information above to create the tables for storage in CM database 155. Step 950 may include using Tconfig 505 to generate an SQL file from input text to create the tables. Step 950 may further include using TcAll 515 to automate the use of Tconfig 505. Step 950 may still further include using CheckConfig 520 to check for errors in the configuration data 310. The user in step 955 then installs the clinical support data 315 so that the case manager 115 has a guideline to compare against the doctor's care plan. Method 900 then ends. FIG. 10 is a flowchart illustrating a method 1000 for configuring an application program in accordance with the present invention. Method 1000 begins with the case manager 115 in step 1005 launching the case manager client engine 293 (FIG. 2C). The security services in step 1010 performs user identification and authentication, for example, using a case manager identification number and a password. The activities engine 415 in step 1015 examine the activities template table 600 to determine which activities exist. For example, FIG. 6A illustrates that only two activities exist, namely, medication and disposition. The activities engine 415 in step 1020 reads the activity fields corresponding to each of the activities. To determine which activity fields relate to the activities, the activities engine 415 examines each of the column headers as a key field to determine whether another tables lists the activity fields. The security services 410 in step 1025 determine the security level of the authenticated case manager 115. The activities engine 415 in step 1030 determines whether the user has the appropriate privileges to view the activities and activity fields. To make an effective determination, the activities table and the activity fields table may include a column specifying the security level needed for the case manager 115 to view the activity or activity field. The search engine 430 in step 1040 retrieves any configuration data 310, such as the parameter variables available for the search engine 420 to apply. For example, the search engine 430 may be enabled to search the database 155 according to parameters entered into a query screen (see FIG. 8F1, FIG. 8F2 or FIG. 8F3). The list view engine 405 in step 1045 configures itself, i.e., the user interface portion, to display the proper client data 305, the proper columns of the patient menu 800, the proper columns of the patient record 820, etc. The activity engine 415 in step 1045 configures itself, e.g., the user interface, to display the appropriate fields and functions, e.g., the check-off button. The case assignment engine 440 in step 1055 retrieves configuration data 310 to determine the preferred method for assigning cases to the case managers 115. Method 1000 then ends. FIG. 11 is a flowchart illustrating a method 1100 for viewing the patient data 305 in accordance with the present invention. Method 1100 begins with the search engine 430 in step 1105 receiving a search query. The search query may be obtained from an edit window, where the case manager 115 enters various search parameters. The search engine 430 may translate the text of the edit window to generate an SQL query for searching the case manager database 155. The search engine 430, in cooperation with the database server engine 250, in step 1110 searches the case manager database 155 including all common portions 710 and all extensions 705 and 715, according to the SQL query and generates search results. The list view engine 405 in step 1115 displays the search results of the search engine 430 according to the configuration data located in search results. For example, if the search parameters included "providers" with names starting with "br", then the list view engine 405 would present providers' names starting with "br" and including the columns defined in the list view columns of configuration data 310. Method 1100 then ends. FIG. 12 is a flowchart illustrating a method 1200 for entering patient data 305 in accordance with the present invention. Method 1200 begins with the list view engine 405 in step 1205 enabling the selection of an activity. The list view engine 405 in step 1210 determines whether an activity is selected. If not, then method 1200 returns to step 1205. Otherwise, the activities engine 415 in step 1215 prompts the user for patient data 305 in the activity fields of a medications record edit window 882 (FIG. 8G). The activities engine 415 in step 1220 determine whether the proper type of patient data 305 has been entered. If improper, then the activities engine 415 in step 1225 displays an error message and method 1200 returns to step 1215. Otherwise, method 1200 proceeds to step 1230. In step 1230, the activities engine 415 determines whether the proper size of patient data 305 has been entered. If improper, then the method 1200 returns to step 1225. Otherwise, method 1200 proceeds to step 1235. In step 1235, the activities engine 415 determines whether the user has indicated that the user intends to add no more data, such as by selecting an "OK" button 842. If the user has not indicated that no more data is to be entered, then method 1200 returns to step 1215. Otherwise, the activities engine 415 determines whether the data 305 has been entered into all the required fields. If not, then method 1200 returns to step 1225. Otherwise, method 1200 proceeds to step 1245. In step 1245, the activities engine 415 add the patient data 305 to the client data tables. Adding the data 305 to the tables may include dividing the data 305 into common and extension portions 705, 710 and 715 of the relational database 155. Method 1200 then ends. The foregoing description of the preferred embodiments of the invention is by way of example only, and other variations of the above-described embodiments and methods are provided by the present invention. For example, the tables herein have been shown as separate tables; however, one skilled in the art will recognize that a single table can be used without departing from the spirit and scope of the present invention. Components of this invention may be implemented using a programmed general-purpose digital computer, using application specific integrated circuits, or using a network of interconnected conventional components and circuits. The embodiments described herein have been presented for purposes of illustration and are not intended to be exhaustive or limiting. The system is limited only by the following claims and equivalents thereof.
|
Same subclass Same class Consider this |
||||||||||
