Пример #1
0
        public static void FormatResult(vMRClsDef.InputDataModel oIEInputDataModel, vMRClsDef.OutputInfo oOutputInfo)
        {
            switch (oOutputInfo.oTriggeringEvent.m_emInferenceResultType)
            {
            case vMRClsDef.EnumInferenceResultType.DIAGNOSIS:
                FormatDiagnosiResult(oIEInputDataModel, oOutputInfo);
                //FormatExplanation(oIEInputDataModel, oOutputInfo);
                break;

            //case vMRClsDef.EnumInferenceResultType.MSEVALUATION:
            //    FormatMSEvaluationResult(oOutputInfo);
            //    break;
            //case vMRClsDef.EnumInferenceResultType.THERAPY:
            //    FormatTherpayResult(oIEInputDataModel, oOutputInfo);
            //    break;
            //case vMRClsDef.EnumInferenceResultType.SELFMONITOR:
            //    FormatSelfMonitorResult(oIEInputDataModel, oOutputInfo);
            //    break;
            //case vMRClsDef.EnumInferenceResultType.RISKEVALUATION:
            //    FormatMSRiskEvaluationResult(oOutputInfo);
            //    break;
            //case vMRClsDef.EnumInferenceResultType.DIETARY:
            //    FormatDietary(oIEInputDataModel, oOutputInfo);
            //    break;
            //case vMRClsDef.EnumInferenceResultType.PHYSICALACTIVITY:
            //    FormatPhysicalActivity(oIEInputDataModel, oOutputInfo);
            //    break;
            default:
                break;
            }
        }
Пример #2
0
        private static void ObtainDataModel(string strFilePath, string strFileName, ref vMRClsDef.InputDataModel oInputDataModel)
        {
            //string strFilePath = ClipsConfig.ReadConfig("Filepath");
            OpenXmlDoc(strFilePath + strFileName);
            string strEvent = oInputDataModel.oTriggeringEvent.oEvent.strEventName;

            XmlNodeList nl_DataModel = null;
            XmlNodeList nl_Event     = FindMulInstance("EventModel");//查找出xml文件中所有的触发事件节点

            foreach (XmlNode n_Event in nl_Event)
            {
                //得到事件名字
                string strEventENName = n_Event.SelectSingleNode("x:ENName", m_xmlManager).InnerText;
                if (strEventENName == strEvent)
                {
                    //得到事件包含的数据模型
                    nl_DataModel = n_Event.SelectNodes("x:DataModel", m_xmlManager);//查找该事件包含的所有数据模型
                    //循环,依次取出datamodel中data的变量名和它的类型
                    foreach (XmlNode n_DataModel in nl_DataModel)
                    {
                        vMRClsDef.DataModel oDataModel = new vMRClsDef.DataModel();
                        oDataModel.strDataName   = n_DataModel.SelectSingleNode("x:Data/x:DataName", m_xmlManager).InnerText;//数据名字
                        oDataModel.strDataCNName = n_DataModel.SelectSingleNode("x:Data/x:DisplayName", m_xmlManager).InnerText;
                        oDataModel.strDataCode   = n_DataModel.SelectSingleNode("x:Code", m_xmlManager).InnerText;
                        oDataModel.m_emDataType  = vMRClsDef.EnumDataType.STRING;
                        oDataModel.strDataValue  = "NULL";
                        oInputDataModel.lstDataModel.Add(oDataModel);
                    }
                    break;
                }
            }
        }
Пример #3
0
        public static bool ObtainDataModelWithEventFromCLIPSDataModel(ref vMRClsDef.InputDataModel oInputDataModel)
        {
            string strFilePath                   = AppDomain.CurrentDomain.BaseDirectory + ClipsConfig.ReadConfig("Filepath");
            string strDataModelFileName          = ClipsConfig.ReadConfig("DataModelFileName");
            string strManualAddDataModelFileName = ClipsConfig.ReadConfig("ManualAddDataModelFileName");

            ObtainDataModel(strFilePath, strDataModelFileName, ref oInputDataModel);
            //ObtainDataModel(strFilePath, strManualAddDataModelFileName, ref oInputDataModel);

            return(true);
        }
Пример #4
0
        public static void FormFactInDataModel(vMRClsDef.InputDataModel oInputDataModel, ref List <vMRClsDef.DataModel> lstDataModelForIE)
        {
            //Add Diesease into DataModels
            vMRClsDef.DataModel oDataModel = new vMRClsDef.DataModel();
            oDataModel.strDataName  = oInputDataModel.oTriggeringEvent.oEvent.strEventName;
            oDataModel.m_emDataType = vMRClsDef.EnumDataType.STRING;
            oDataModel.strDataValue = "on";
            lstDataModelForIE.Add(oDataModel);

            //Add Symptoms into DataModels
            lstDataModelForIE.AddRange(oInputDataModel.oTriggeringEvent.oSymptoms.lstSymptoms);

            //Add DataModels into DataModels
            lstDataModelForIE.AddRange(oInputDataModel.lstDataModel);
        }
Пример #5
0
 /// <summary>
 /// 从知识库获取数据模型
 /// </summary>
 /// <param name="oIEvMRInputDataModel"></param>
 /// <returns></returns>
 public static bool vMRDataModelFromIEtoUI(ref vMRClsDef.IEvMRInput oIEvMRInputDataModel)
 {
     for (int i = 0; i < oIEvMRInputDataModel.lstInputDataModel.Count; i++)
     {
         vMRClsDef.InputDataModel oInputDataModel = new vMRClsDef.InputDataModel();
         oInputDataModel.oTriggeringEvent
             = oIEvMRInputDataModel.lstInputDataModel[i].oTriggeringEvent;
         //首先根据事件获取DataModel
         FactObtain.ObtainFactWithDisease(ref oInputDataModel);
         oIEvMRInputDataModel.lstInputDataModel[i].lstDataModel.AddRange(oInputDataModel.lstDataModel);
         //将来需求,根据Symptom获取DataModel;
         oInputDataModel.lstDataModel.Clear();
         FactObtain.ObtainFactWithSymptoms(ref oInputDataModel);
         oIEvMRInputDataModel.lstInputDataModel[i].lstDataModel.AddRange(oInputDataModel.lstDataModel);
     }
     return(true);
 }
Пример #6
0
 public static void FormatShortDataInfo(vMRClsDef.InputDataModel oIEInputDataModel, vMRClsDef.OutputInfo oOutputInfo, ref string strExistShortData)
 {
     //string strShortData = string.Empty;
     for (int i = 0; i < oOutputInfo.lstShortDataModel.Count; i++)
     {
         string strDataName = oOutputInfo.lstShortDataModel[i].strDataName;
         foreach (vMRClsDef.DataModel oDataModel in oIEInputDataModel.lstDataModel)
         {
             //BugDB00005686 revised by wbf 2009-03-26
             if (oDataModel.strDataName == strDataName)
             {
                 if (!strExistShortData.Contains(oDataModel.strDataCNName))
                 {
                     strExistShortData += oDataModel.strDataCNName + " ";
                 }
             }
         }
     }
 }
Пример #7
0
        public static void FormatDiagnosiResult(vMRClsDef.InputDataModel oIEInputDataModel, vMRClsDef.OutputInfo oOutputInfo)
        {
            int iResultIndex = DiseaseInfoExisted(oOutputInfo);

            string result    = string.Empty;
            string tmpresult = string.Empty;

            for (int i = 0; i < oOutputInfo.oInference.lstStructedInferMessage.Count; i++)
            {
                tmpresult = oOutputInfo.oInference.lstStructedInferMessage[i].strDataValue;

                if (tmpresult != "")
                {
                    result = result + MapStructedInfoToCN(tmpresult) + " ";
                }
            }
            GlobalData.DiagnosedResult.DiseaseDiagnosedResultList[iResultIndex].Result = result;
            FormatShortDataInfo(oIEInputDataModel, oOutputInfo, ref GlobalData.DiagnosedResult.DiseaseDiagnosedResultList[iResultIndex].DataNeeded);
        }
Пример #8
0
        /// <summary>
        /// 设置需要推理的事件
        /// </summary>
        /// <param name="lstCDSSEvent"></param>
        /// <returns></returns>
        public static bool SetInferenceNeededEvents(List <FunctionTypeDef.EventModels> lstCDSSEvents)
        {
            ClearIEInAndOut();

            vMRClsDef.Role oRole = new vMRClsDef.Role();
            oRole.oClinician.strClinicianLevel = GlobalData.UserInfo.UserID;
            oRole.oPatient.strPatName          = GlobalData.PatBasicInfo.Name;
            oRole.oPatient.strPatID            = GlobalData.PatBasicInfo.Identity;
            oRole.oPatient.dtPatBirthday       = GlobalData.PatBasicInfo.Birthday;
            oRole.oPatient.strPatSex           = GlobalData.PatBasicInfo.Sex;

            for (int i = 0; i < lstCDSSEvents.Count; i++)
            {
                vMRClsDef.InputDataModel oInputDataModel = new vMRClsDef.InputDataModel();
                oInputDataModel.oTriggeringEvent.oEvent.strEventName
                    = lstCDSSEvents[i].strEventENName;
                oInputDataModel.oTriggeringEvent.oDisease.strDiseaseCNName = lstCDSSEvents[i].oDisease.strDiseaseCNName;
                oInputDataModel.oTriggeringEvent.m_emInferenceType
                    = DataMapper.MapInferTypeFuntionDeftovMR(lstCDSSEvents[i].em_InferneceType);
                oInputDataModel.oTriggeringEvent.m_emInferenceResultType
                    = DataMapper.MapInferResultTypeFuntiontovMR(lstCDSSEvents[i].em_InferenceResultType);
                if (lstCDSSEvents[i].em_InferenceResultType == FunctionTypeDef.EnumInferenceResultType.DIAGNOSIS)
                {
                    oDiagnoseIEvMRInput.oRoles = oRole;
                    oDiagnoseIEvMRInput.lstInputDataModel.Add(oInputDataModel);
                }
                else if (lstCDSSEvents[i].em_InferenceResultType == FunctionTypeDef.EnumInferenceResultType.THERAPY)
                {
                    oTherpayIEvMRInput.oRoles = oRole;
                    oTherpayIEvMRInput.lstInputDataModel.Add(oInputDataModel);
                }

                else if (lstCDSSEvents[i].em_InferenceResultType == FunctionTypeDef.EnumInferenceResultType.SELFMONITOR)
                {
                    oSelfMonitorIEvMRInput.oRoles = oRole;
                    oSelfMonitorIEvMRInput.lstInputDataModel.Add(oInputDataModel);
                }

                else if (lstCDSSEvents[i].em_InferenceResultType == FunctionTypeDef.EnumInferenceResultType.MSEVALUATION)
                {
                    oMSEvaluationIEvMRInput.oRoles = oRole;
                    oMSEvaluationIEvMRInput.lstInputDataModel.Add(oInputDataModel);
                }

                else if (lstCDSSEvents[i].em_InferenceResultType == FunctionTypeDef.EnumInferenceResultType.RISKEVALUATION)
                {
                    oRiskEvaluationIEvMRInput.oRoles = oRole;
                    oRiskEvaluationIEvMRInput.lstInputDataModel.Add(oInputDataModel);
                }

                else if (lstCDSSEvents[i].em_InferenceResultType == FunctionTypeDef.EnumInferenceResultType.DIETARY)
                {
                    oDietaryIEvMRInput.oRoles = oRole;
                    oDietaryIEvMRInput.lstInputDataModel.Add(oInputDataModel);
                }

                else if (lstCDSSEvents[i].em_InferenceResultType == FunctionTypeDef.EnumInferenceResultType.PHYSICALACTIVITY)
                {
                    oPhysicalActivityIEvMRInput.oRoles = oRole;
                    oPhysicalActivityIEvMRInput.lstInputDataModel.Add(oInputDataModel);
                }
            }
            return(true);
        }
Пример #9
0
 /// <summary>
 /// 根据Symptoms获取数据模型
 /// </summary>
 /// <param name="oInputDataModel"></param>
 /// <returns></returns>
 public static bool ObtainFactWithSymptoms(ref vMRClsDef.InputDataModel oInputDataModel)
 {
     return(ClipsFactObtain.ObtainDataModelWithSymptomsFromCLIPSDataModel(ref oInputDataModel));
 }
Пример #10
0
 /// <summary>
 /// 根据疾病获取数据模型
 /// </summary>
 /// <param name="oInputDataModel"></param>
 /// <returns></returns>
 public static bool ObtainFactWithDisease(ref vMRClsDef.InputDataModel oInputDataModel)
 {
     return(ClipsFactObtain.ObtainDataModelWithEventFromCLIPSDataModel(ref oInputDataModel));
 }
Пример #11
0
 public static bool ObtainDataModelWithSymptomsFromCLIPSDataModel(ref vMRClsDef.InputDataModel oInputDataModel)
 {
     //具体暂不实现
     return(true);
 }