예제 #1
0
 public static bool IEExecute(ref vMRClsDef.IEvMRInput oIEvMRInput, ref vMRClsDef.IEvMROutput oIEvMROutput)
 {
     if (ObtainDataModel(ref oIEvMRInput))
     {
         if (DataMapper.MapDataToFact(ref oIEvMRInput))
         {
             if (vMRFunDef.vMRDataValueFromUItoIE(oIEvMRInput, ref oIEvMROutput))
             {
                 //获取推理解释结果成功
                 //结果转换为UI可用形式
                 StructedIEResult.AddIEStructedInfo(oIEvMROutput);
                 DataMapper.MapIEOutputToUI(oIEvMRInput, oIEvMROutput);
                 return(true);
             }
             else
             {
                 //获取推理解释结果失败
                 return(false);
             }
         }
         else
         {
             //获取Fact失败
             return(false);
         }
     }
     else
     {
         //获取DataModel失败
         return(false);
     }
 }
예제 #2
0
 /// <summary>
 /// 获取推理所需的DataModels
 /// </summary>
 /// <returns></returns>
 private static bool ObtainDataModel(ref vMRClsDef.IEvMRInput oIEvMRInput)
 {
     if (!ObtainDataModelFromBuffer(ref oIEvMRInput))
     {
         return(vMRFunDef.vMRDataModelFromIEtoUI(ref oIEvMRInput));
     }
     else
     {
         return(false);
     }
 }
예제 #3
0
 /// <summary>
 /// 推理引擎端决策代理服务具体实现,UI端调用
 /// </summary>
 /// <param name="oIEvMRInputDataValue"></param>
 /// <param name="oIEvMROutput"></param>
 /// <returns></returns>
 public static bool vMRDataValueFromUItoIE(vMRClsDef.IEvMRInput oIEvMRInputDataValue, ref vMRClsDef.IEvMROutput oIEvMROutput)
 {
     oIEvMROutput.oRoles = oIEvMRInputDataValue.oRoles;
     foreach (vMRClsDef.InputDataModel oInputDataModel in oIEvMRInputDataValue.lstInputDataModel)
     {
         List <vMRClsDef.DataModel> lstDataModelForIE = new List <vMRClsDef.DataModel>();
         vMRClsDef.OutputInfo       oIEOutputInfo     = new vMRClsDef.OutputInfo();
         FactConstruct.FormFactInDataModel(oInputDataModel, ref lstDataModelForIE);
         oIEOutputInfo.oTriggeringEvent = oInputDataModel.oTriggeringEvent;
         InferenceService.BeginInference(oIEvMROutput.oRoles, lstDataModelForIE, ref oIEOutputInfo);
         ExplanationService.BeginExplanation();
         oIEvMROutput.lstOutputInfo.Add(oIEOutputInfo);
     }
     return(true);
 }
예제 #4
0
 public static void MapIEOutputToUI(vMRClsDef.IEvMRInput oIEvMRInput, vMRClsDef.IEvMROutput oIEvMROutput)
 {
     //TODO IE输出结果映射,供界面显示
     foreach (vMRClsDef.OutputInfo oOutputInfo in oIEvMROutput.lstOutputInfo)
     {
         int i;
         for (i = 0; i < oIEvMRInput.lstInputDataModel.Count; i++)
         {
             if (oOutputInfo.oTriggeringEvent.oEvent.strEventCNName
                 == oIEvMRInput.lstInputDataModel[i].oTriggeringEvent.oEvent.strEventCNName)
             {
                 break;
             }
         }
         FormatResult(oIEvMRInput.lstInputDataModel[i], oOutputInfo);
     }
 }
예제 #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
        /// <summary>
        /// DataModel code与SystemData映射,并对oIEvMRInput进行赋值
        /// </summary>
        /// <param name="oIEvMRInput"></param>
        /// <returns></returns>
        public static bool MapDataToFact(ref vMRClsDef.IEvMRInput oIEvMRInput)
        {
            //TODO 数据映射具体实现
            for (int i = 0; i < oIEvMRInput.lstInputDataModel.Count; i++)
            {
                for (int j = 0; j < oIEvMRInput.lstInputDataModel[i].lstDataModel.Count; j++)
                {
                    string strStandDataCode
                        = oIEvMRInput.lstInputDataModel[i].lstDataModel[j].strDataCode;

                    //string strClassName
                    //    = MappingToClassFromXml.ObtainClassNameWithDataCode(strStandDataCode);
                    //if (strClassName != string.Empty)
                    //{
                    //    object objClassDataValue = DynamicMapperToSystemData.GetMapperValue(strClassName);
                    //    if (objClassDataValue != null)
                    //    {
                    //        oIEvMRInput.lstInputDataModel[i].lstDataModel[j].strDataValue
                    //            = objClassDataValue.ToString();
                    //    }
                    //    else
                    //    {
                    //        oIEvMRInput.lstInputDataModel[i].lstDataModel[j].strDataValue
                    //        = "NULL";
                    //    }

                    //}
                    //else
                    //{
                    //    oIEvMRInput.lstInputDataModel[i].lstDataModel[j].strDataValue = "NULL";
                    //}

                    oIEvMRInput.lstInputDataModel[i].lstDataModel[j].strDataValue
                        = TempDataMap.ObtainDataValueWithDataCode(strStandDataCode);
                }
            }

            return(true);
        }
예제 #7
0
        public static void ClearIEInAndOut()
        {
            oDiagnoseIEvMRInput  = new vMRClsDef.IEvMRInput();
            oDiagnoseIEvMROutput = new vMRClsDef.IEvMROutput();

            oTherpayIEvMRInput  = new vMRClsDef.IEvMRInput();
            oTherpayIEvMROutput = new vMRClsDef.IEvMROutput();

            oSelfMonitorIEvMRInput  = new vMRClsDef.IEvMRInput();
            oSelfMonitorIEvMROutput = new vMRClsDef.IEvMROutput();

            oMSEvaluationIEvMRInput  = new vMRClsDef.IEvMRInput();
            oMSEvaluationIEvMROutput = new vMRClsDef.IEvMROutput();

            oRiskEvaluationIEvMRInput  = new vMRClsDef.IEvMRInput();
            oRiskEvaluationIEvMROutput = new vMRClsDef.IEvMROutput();

            oDietaryIEvMRInput  = new vMRClsDef.IEvMRInput();
            oDietaryIEvMROutput = new vMRClsDef.IEvMROutput();

            oPhysicalActivityIEvMRInput  = new vMRClsDef.IEvMRInput();
            oPhysicalActivityIEvMROutput = new vMRClsDef.IEvMROutput();
        }
예제 #8
0
 /// <summary>
 /// 从缓冲区获取DataModels
 /// </summary>
 /// <returns></returns>
 private static bool ObtainDataModelFromBuffer(ref vMRClsDef.IEvMRInput oIEvMRInput)
 {
     //TODO:从缓冲区获取datamodel
     return(false);
 }