示例#1
0
        public IPatientData ReconcilePatientInformation(IPatientData patientInfo)
        {
            Platform.CheckMemberIsSet(StudyTree, "StudyTree");

            var testPatientInformation = new PatientInformation {
                PatientId = patientInfo.PatientId
            };

            testPatientInformation = Reconcile(testPatientInformation, DefaultPatientReconciliationSettings.Default.PatientReconciliationRulesXml, "patient-reconciliation-rules");

            foreach (var patient in StudyTree.Patients)
            {
                var reconciledPatientInfo = new PatientInformation {
                    PatientId = patient.PatientId
                };
                reconciledPatientInfo = Reconcile(reconciledPatientInfo, DefaultPatientReconciliationSettings.Default.PatientReconciliationRulesXml, "patient-reconciliation-rules");

                if (reconciledPatientInfo.PatientId == testPatientInformation.PatientId)
                {
                    return new PatientInformation(patient)
                           {
                               PatientId = reconciledPatientInfo.PatientId
                           }
                }
                ;
            }

            return(null);
        }
示例#2
0
        private PatientInformation Reconcile(PatientInformation patient, XmlDocument rulesDocument, string rulesElementName)
        {
            PatientInformation returnPatient = patient.Clone();

            if (String.IsNullOrEmpty(patient.PatientId))
            {
                return(returnPatient);
            }

            returnPatient.PatientId = returnPatient.PatientId.Trim();

            XmlElement rulesNode = rulesDocument.SelectSingleNode("//" + rulesElementName) as XmlElement;

            if (rulesNode != null)
            {
                foreach (XmlNode ruleNode in rulesNode.SelectNodes("rule"))
                {
                    XmlElement ruleElement = ruleNode as XmlElement;

                    if (ruleElement != null)
                    {
                        if (_applicator.Apply(ruleElement, returnPatient))
                        {
                            break;
                        }
                    }
                }
            }

            return(returnPatient);
        }
示例#3
0
        public IPatientData ReconcileSearchCriteria(IPatientData patientInfo)
        {
            var patientInformation = new PatientInformation {
                PatientId = patientInfo.PatientId
            };

            return(Reconcile(patientInformation, DefaultPatientReconciliationSettings.Default.SearchReconciliationRulesXml, "search-reconciliation-rules"));
        }