Exemplo n.º 1
0
        /// <summary>
        /// Добавляет в базу классификаторы из файла XML
        /// </summary>
        /// <param name="updater">Пространство объектов ObjectSpace</param>
        /// <param name="xmlPath">Путь до файла классификатора</param>
        public static void UpdateDbFromXml(DevExpress.ExpressApp.IObjectSpace objSpace, string xmlPath)
        {
            XDocument doc = XDocument.Load(xmlPath);

            foreach (XElement el in doc.Root.Element("ROWDATA").Elements("ROW"))
            {
                // int id = Convert.ToInt32(el.Attribute("mkb").Value);
                // MKB10 obj = ObjectSpace.FindObject<MKB10>(CriteriaOperator.Parse("mkb=?", id));
                // if (obj == null)

                MKB10 obj = objSpace.CreateObject <MKB10>();
                obj.CODE   = el.Attribute("code").Value;
                obj.NAME   = el.Attribute("name").Value;
                obj.KEY    = el.Attribute("key").Value;
                obj.High   = el.Attribute("high").Value;
                obj.NXT    = el.Attribute("nxt").Value;
                obj.MKB    = el.Attribute("mkb").Value;
                obj.SEX    = el.Attribute("sex").Value;
                obj.SP     = Convert.ToInt32(el.Attribute("sp").Value);
                obj.AUTOP  = el.Attribute("autop").Value;
                obj.OMS    = Convert.ToInt32(el.Attribute("oms").Value);
                obj.OMSD   = Convert.ToInt32(el.Attribute("omsd").Value);
                obj.REG    = Convert.ToInt32(el.Attribute("reg").Value);
                obj.KD     = Convert.ToSingle(el.Attribute("kd").Value);
                obj.MIN_KD = Convert.ToSingle(el.Attribute("min_kd").Value);
                obj.KP     = Convert.ToInt32(el.Attribute("kp").Value);
                obj.DOKD   = Convert.ToSingle(el.Attribute("dokd").Value);
                obj.DOKP   = Convert.ToInt32(el.Attribute("dokp").Value);
            }
        }
Exemplo n.º 2
0
        // пример записи из XML
        // <ROWDATA>
        //  <ROW id="100000" lpu_id="03001" date_vnes_inf="2015-02-11&#160;09:44:05.098924+08" operator_id="2469" pocket_id="null" code="136" sort="null" diagn="O12.0" ksg="1" name_ksg="Отеки,&#160;протеинурия,&#160;гипертензивные&#160;расстройства&#160;в&#160;период&#160;беременности,&#160;в&#160;родах&#160;и&#160;после&#160;родов" kz="0,82" name_profile="Акушерство&#160;и&#160;гинекология"/>
        //  <ROW id="203001" lpu_id="03001" date_vnes_inf="2015-02-11&#160;09:43:56.323753+08" operator_id="2469" pocket_id="null" code="136" sort="null" diagn="O12.2" ksg="1" name_ksg="Отеки,&#160;протеинурия,&#160;гипертензивные&#160;расстройства&#160;в&#160;период&#160;беременности,&#160;в&#160;родах&#160;и&#160;после&#160;родов" kz="0,82" name_profile="Акушерство&#160;и&#160;гинекология"/>

        public static void UpdateDbFromXml(DevExpress.ExpressApp.IObjectSpace objSpace, string xmlPath)
        {
            XDocument    doc = XDocument.Load(xmlPath);
            const string elementsContainer     = "ROWDATA";
            const string elementNameStartsWith = "ROW";

            // диагноз в КСГ является уникальным, сверяем по нему.
            const string code_attr = "diagn";

            StringBuilder log = new StringBuilder();

            foreach (var element in doc.Root.Element(elementsContainer).Elements())
            {
                if (element.Name.ToString().StartsWith(elementNameStartsWith) == false)
                {
                    continue;
                }

                var diagnoseCode = element.Attribute(code_attr).Value;

                // ищем в справочнике диагнозов диагноз по коду.
                MKB10 diagnose = objSpace.FindObject <MKB10>(DevExpress.Data.Filtering.CriteriaOperator.Parse("MKB=?", diagnoseCode));

                // если диагноз не найден
                if (diagnose == null)
                {
                    log.AppendLine(string.Format("id: {1}. Не найден диагноз: {0}", diagnoseCode, element.Attribute("id").Value));
                    log.AppendLine("\tУдаляем точку в конце и ищем заново");
                    if (diagnoseCode[diagnoseCode.Length - 1].Equals('.'))
                    {
                        diagnose = objSpace.FindObject <MKB10>(DevExpress.Data.Filtering.CriteriaOperator.Parse("MKB=?", diagnoseCode.Substring(0, diagnoseCode.Length - 1)));
                        if (diagnose == null)
                        {
                            log.AppendLine("\tНе найдено");
                        }
                        else
                        {
                            log.AppendLine("\tНайдено");
                        }
                    }
                    continue;
                }

                ClinicStatGroups obj = objSpace.FindObject <ClinicStatGroups>(DevExpress.Data.Filtering.CriteriaOperator.Parse("MainDiagnose=?", diagnose));

                if (obj == null)
                {
                    obj = objSpace.CreateObject <ClinicStatGroups>();

                    obj.Name        = element.Attribute("name_ksg").Value;
                    obj.Number      = int.Parse(element.Attribute("ksg").Value);
                    obj.KoeffZatrat = double.Parse(element.Attribute("kz").Value);

                    obj.Diagnose = diagnose;

                    var codeProfil = element.Attribute("code").Value;
                    obj.Profil = objSpace.FindObject <MedProfil>(DevExpress.Data.Filtering.CriteriaOperator.Parse("Code=?", codeProfil));
                }
            }

            if (log.Length > 0)
            {
                System.IO.File.AppendAllText(xmlPath + ".log", log.ToString(), Encoding.UTF8);
            }
        }