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; } }
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; } } }
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); }
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); }
/// <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); }
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 + " "; } } } } }
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); }
/// <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); }
/// <summary> /// 根据Symptoms获取数据模型 /// </summary> /// <param name="oInputDataModel"></param> /// <returns></returns> public static bool ObtainFactWithSymptoms(ref vMRClsDef.InputDataModel oInputDataModel) { return(ClipsFactObtain.ObtainDataModelWithSymptomsFromCLIPSDataModel(ref oInputDataModel)); }
/// <summary> /// 根据疾病获取数据模型 /// </summary> /// <param name="oInputDataModel"></param> /// <returns></returns> public static bool ObtainFactWithDisease(ref vMRClsDef.InputDataModel oInputDataModel) { return(ClipsFactObtain.ObtainDataModelWithEventFromCLIPSDataModel(ref oInputDataModel)); }
public static bool ObtainDataModelWithSymptomsFromCLIPSDataModel(ref vMRClsDef.InputDataModel oInputDataModel) { //具体暂不实现 return(true); }