Esempio n. 1
0
        /// <summary>
        /// Save hi-tech aid case to XML
        /// </summary>
        /// <param name="xml">XML exporter to save into</param>
        /// <param name="pool">Datapool</param>
        /// <param name="irec">Invoice record to which this event belongs</param>
        public void WriteD2(Lib.XmlExporter xml, Data.IInvoice pool, InvoiceRecord irec, Recourse rec)
        {
            xml.Writer.WriteStartElement("SL");
            xml.Writer.WriteElementString("SL_ID", Identity);
            xml.Writer.WriteElementString("VID_HMP", HiTechKind);
            xml.Writer.WriteElementString("METOD_HMP", HiTechMethod);
            xml.WriteIfValid("LPU_1", Unit);
            xml.WriteIfValid("PODR", rec.Department);
            xml.Writer.WriteElementString("PROFIL", rec.Profile);
            xml.WriteIfValid("PROFIL_K", BedProfile);
            xml.WriteBool("DET", Child);

#if FOMS
            xml.Writer.WriteElementString("CEL", LocalReason);
#endif

            xml.Writer.WriteElementString("TAL_D", HiTechCheckDate.AsXml());
            xml.Writer.WriteElementString("TAL_NUM", HiTechCheckNumber);
            xml.Writer.WriteElementString("TAL_P", HiTechPlannedHospitalizationDate.AsXml());

            xml.Writer.WriteElementString("NHISTORY", CardNumber);
            xml.Writer.WriteElementString("DATE_1", DateFrom.AsXml());
            xml.Writer.WriteElementString("DATE_2", DateTill.AsXml());
            xml.WriteIfValid("DS0", PrimaryDiagnosis);
            xml.Writer.WriteElementString("DS1", MainDiagnosis);

            if (ConcurrentDiagnoses != null)
            {
                foreach (string ds in ConcurrentDiagnoses)
                {
                    xml.Writer.WriteElementString("DS2", ds);
                }
            }

            if (ComplicationDiagnoses != null)
            {
                foreach (string ds in ComplicationDiagnoses)
                {
                    xml.Writer.WriteElementString("DS3", ds);
                }
            }

            if (rec.SuspectOncology)
            {
                xml.Writer.WriteElementString("DS_ONK", "1");
            }

            foreach (string mes in pool.LoadMesCodes(irec, rec, this))
            {
                xml.Writer.WriteElementString("CODE_MES1", mes);
            }

            xml.WriteIfValid("CODE_MES2", ConcurrentMesCode);

            isOncology = OnkologyTreat.IsOnkologyTreat(rec, this, pool);
            if (isOncology)
            {
                OnkologyTreat treat = pool.GetOnkologyTreat(rec, this);
                if (treat != null)
                {
                    if (string.IsNullOrEmpty(treat.Stage))
                    {
                        Console.WriteLine("Пустая стадия для онкологии. Случай " + this.Identity);
                    }
                    treat.Write(xml, pool);
                }
            }

            xml.Writer.WriteElementString("PRVS", SpecialityCode);
            xml.Writer.WriteElementString("VERS_SPEC", Options.SpecialityClassifier);
            xml.Writer.WriteElementString("IDDOKT", DoctorCode);

            if (Quantity > 0)
            {
                xml.Writer.WriteElementString("ED_COL", Quantity.ToString("F2", Options.NumberFormat));
            }

            if (Tariff > 0)
            {
                xml.Writer.WriteElementString("TARIF", Tariff.ToString("F2", Options.NumberFormat));
            }

            xml.Writer.WriteElementString("SUM_M", Total.ToString("F2", Options.NumberFormat));

            // Сведения об услуге
            // Описывает услуги, оказанные в рамках данного случая.
            // Допускается указание услуг с нулевой стоимостью.
            // Указание услуг с нулевой стоимостью обязательно, если условие их оказания является тарифообразующим (например, при оплате по КСГ).
            foreach (Service s in Services)
            {
                s.WriteD2(xml, pool, irec, rec, this);
            }

            xml.WriteIfValid("COMENTSL", Comment);
            xml.Writer.WriteEndElement();
        }
Esempio n. 2
0
        /// <summary>
        /// Save treatment case to XML
        /// </summary>
        /// <param name="xml">XML exporter to save into</param>
        /// <param name="pool">Datapool</param>
        /// <param name="irec">Invoice record to which this event belongs</param>
        public void WriteD1(Lib.XmlExporter xml, Data.IInvoice pool, InvoiceRecord irec, Recourse rec)
        {
            xml.Writer.WriteStartElement("SL");

            xml.Writer.WriteElementString("SL_ID", Identity);
            xml.WriteIfValid("LPU_1", Unit);
            xml.WriteIfValid("PODR", rec.Department);
            xml.Writer.WriteElementString("PROFIL", rec.Profile);
            xml.WriteIfValid("PROFIL_K", BedProfile);
            xml.WriteBool("DET", Child);
            xml.WriteIfValid("P_CEL", Reason);

#if FOMS
            xml.Writer.WriteElementString("CEL", LocalReason);
#endif
            xml.Writer.WriteElementString("NHISTORY", CardNumber);

            if (Transfer != Model.Transfer.None)
            {
                xml.Writer.WriteElementString("P_PER", ((int)Transfer).ToString());
            }

            xml.Writer.WriteElementString("DATE_1", DateFrom.AsXml());
            xml.Writer.WriteElementString("DATE_2", DateTill.AsXml());
            if (BedDays > 0)
            {
                xml.Writer.WriteElementString("KD", BedDays.ToString());
            }

            xml.WriteIfValid("DS0", PrimaryDiagnosis);
            xml.Writer.WriteElementString("DS1", MainDiagnosis);

            // Диагноз сопутствующего заболевания
            // Код из справочника МКБ-10 до уровня подрубрики, если она предусмотрена МКБ-10 (неуказание подрубрики допускается для случаев оказания скорой медицинской помощи).
            // Указывается в случае установления в соответствии с медицинской документацией.
            if (ConcurrentDiagnoses != null)
            {
                foreach (string ds in ConcurrentDiagnoses)
                {
                    xml.Writer.WriteElementString("DS2", ds);
                }
            }

            // Диагноз осложнения заболевания
            // Код из справочника МКБ-10 до уровня подрубрики, если она предусмотрена МКБ-10 (неуказание подрубрики допускается для случаев оказания скорой медицинской помощи).
            // Указывается в случае установления в соответствии с медицинской документацией.
            if (ComplicationDiagnoses != null)
            {
                foreach (string ds in ComplicationDiagnoses)
                {
                    xml.Writer.WriteElementString("DS3", ds);
                }
            }

            xml.WriteIfValid("C_ZAB", StatisticsCode);

            if (DispensarySupervision != Model.DispensarySupervision.None)
            {
                xml.Writer.WriteElementString("DN", ((int)DispensarySupervision).ToString());
            }

            // Код МЭС
            // Классификатор МЭС. Указывается при наличии утвержденного стандарта.
            foreach (string mes in pool.LoadMesCodes(irec, rec, this))
            {
                xml.Writer.WriteElementString("CODE_MES1", mes);
            }

            xml.WriteIfValid("CODE_MES2", ConcurrentMesCode);

            if (ClinicalGroup != null)
            {
                ClinicalGroup.Write(xml, pool, this);
            }

            if (Rehabilitation)
            {
                xml.Writer.WriteElementString("REAB", "1");
            }

            xml.Writer.WriteElementString("PRVS", SpecialityCode);

            // Код классификатора медицинских специальностей
            // Указывается имя используемого классификатора медицинских специальностей
            xml.Writer.WriteElementString("VERS_SPEC", Options.SpecialityClassifier);

            xml.Writer.WriteElementString("IDDOKT", DoctorCode);

            if (Quantity > 0)
            {
                xml.Writer.WriteElementString("ED_COL", Quantity.ToString("F2", Options.NumberFormat));
            }

            if (Tariff > 0)
            {
                xml.Writer.WriteElementString("TARIF", Tariff.ToString("F2", Options.NumberFormat));
            }

            xml.Writer.WriteElementString("SUM_M", Total.ToString("F2", Options.NumberFormat));

            // Сведения об услуге
            // Описывает услуги, оказанные в рамках данного случая.
            // Допускается указание услуг с нулевой стоимостью.
            // Указание услуг с нулевой стоимостью обязательно, если условие их оказания является тарифообразующим (например, при оплате по КСГ).
            foreach (Service s in Services)
            {
                s.WriteD1(xml, pool, irec, rec, this);
            }

            xml.WriteIfValid("COMENTSL", Comment);
            xml.Writer.WriteEndElement();
        }
Esempio n. 3
0
        public void WriteD3(Lib.XmlExporter xml, Data.IInvoice pool, InvoiceRecord irec)
        {
            xml.Writer.WriteStartElement("Z_SL");

            xml.Writer.WriteElementString("IDCASE", Identity);

#if FOMS
            xml.Writer.WriteElementString("USL_OK", Conditions);
#endif

            xml.Writer.WriteElementString("VIDPOM", AidKind.ToString());

#if FOMS
            xml.Writer.WriteElementString("FOR_POM", AidForm.ToString());
#endif

            xml.Writer.WriteElementString("LPU", Options.LpuCode);

            // Dinamically?
            xml.WriteBool("VBR", MobileBrigade);

            xml.Writer.WriteElementString("DATE_Z_1", DateFrom.AsXml());
            xml.Writer.WriteElementString("DATE_Z_2", DateTill.AsXml());

            // Dynamically
            xml.WriteBool("P_OTK", DispanserisationRefusal);
            xml.Writer.WriteElementString("RSLT_D", DispanserisationResult);

#if FOMS
            xml.Writer.WriteElementString("ISHOD", Outcome);
#endif

            if (specialCase != null)
            {
                foreach (SpecialCase c in specialCase)
                {
                    xml.Writer.WriteElementString("OS_SLUCH", ((int)c).ToString());
                }
            }

            foreach (Event e in Events)
            {
                e.WriteD3(xml, pool, irec, this);
            }

            xml.Writer.WriteElementString("IDSP", PayKind.ToString());
            xml.Writer.WriteElementString("SUMV", Total.ToString("F2", Options.NumberFormat));

            if (PayType != Model.PayType.None)
            {
                xml.Writer.WriteElementString("OPLATA", ((int)PayType).ToString());
            }

            if (AcceptedSum > 0)
            {
                xml.Writer.WriteElementString("SUMP", AcceptedSum.ToString("F2", Options.NumberFormat));
            }

            // Сведения о санкциях
            // Описывает санкции, примененные в рамках данного случая.
            foreach (Sanction s in pool.LoadSanctions(irec, this))
            {
                s.Write(xml, pool);
            }

            if (DeniedSum > 0)
            {
                xml.Writer.WriteElementString("SANKIT", DeniedSum.ToString("F2", Options.NumberFormat));
            }

            xml.Writer.WriteEndElement();
        }
Esempio n. 4
0
        public void WriteD4(Lib.XmlExporter xml, Data.IInvoice pool, InvoiceRecord irec)
        {
            xml.Writer.WriteStartElement("Z_SL");

            xml.Writer.WriteElementString("IDCASE", Identity);
            xml.Writer.WriteElementString("USL_OK", Conditions);
            xml.Writer.WriteElementString("VIDPOM", AidKind.ToString());

            xml.Writer.WriteElementString("FOR_POM", AidForm.ToString());

            if (!string.IsNullOrEmpty(DirectedFrom))
            {
                xml.Writer.WriteElementString("NPR_MO", DirectedFrom);
                xml.Writer.WriteElementString("NPR_DATE", DirectionDate.AsXml());
            }

            xml.Writer.WriteElementString("LPU", Options.LpuCode);

            xml.Writer.WriteElementString("DATE_Z_1", DateFrom.AsXml());
            xml.Writer.WriteElementString("DATE_Z_2", DateTill.AsXml());

            if (BedDays > 0)
            {
                xml.Writer.WriteElementString("KD_Z", BedDays.ToString());
            }

            if (BirthWeight > 0)
            {
                xml.Writer.WriteElementString("VNOV_M", BirthWeight.ToString());
            }

            xml.Writer.WriteElementString("RSLT", Result);
            xml.Writer.WriteElementString("ISHOD", Outcome);

            if (specialCase != null)
            {
                foreach (SpecialCase c in specialCase)
                {
                    xml.Writer.WriteElementString("OS_SLUCH", ((int)c).ToString());
                }
            }

            if (UnitShift)
            {
                xml.Writer.WriteElementString("VB_P", "1");
            }

            foreach (Event e in Events)
            {
                e.WriteD4(xml, pool, irec, this);
            }

            xml.Writer.WriteElementString("IDSP", PayKind);
            xml.Writer.WriteElementString("SUMV", Total.ToString("F2", Options.NumberFormat));

            if (PayType != Model.PayType.None)
            {
                xml.Writer.WriteElementString("OPLATA", ((int)PayType).ToString());
            }

            if (AcceptedSum > 0)
            {
                xml.Writer.WriteElementString("SUMP", AcceptedSum.ToString("F2", Options.NumberFormat));
            }

            foreach (Sanction s in pool.LoadSanctions(irec, this))
            {
                s.Write(xml, pool);
            }

            if (DeniedSum > 0)
            {
                xml.Writer.WriteElementString("SANKIT", DeniedSum.ToString("F2", Options.NumberFormat));
            }

            xml.Writer.WriteEndElement();
        }
Esempio n. 5
0
        bool ExportInvoice(Lib.XmlExporter xml, Data.IInvoice pool)
        {
            if (!xml.OK)
            {
                return(false);
            }
            xml.Writer.WriteStartElement("ZL_LIST");

            xml.Writer.WriteStartElement("ZGLV");
            xml.Writer.WriteElementString("VERSION", VERSION_INVOICES);
            xml.Writer.WriteElementString("DATA", DateTime.Today.AsXml());
            xml.Writer.WriteElementString("FILENAME", invoiceFilename.InvoiceFile);

            // TODO: Invoices count, not people
            int count = pool.GetInvoiceRecordsCount(invoiceFilename.Section, invoiceFilename.Subsection);

#if DEBUG
            count = Math.Min(Properties.Settings.Default.DebugSelectionLimit, count);
#endif
            xml.Writer.WriteElementString("SD_Z", count.ToString());
            xml.Writer.WriteEndElement();


            xml.Writer.WriteStartElement("SCHET");
            xml.Writer.WriteElementString("CODE", invoiceFilename.Code.ToString());
            xml.Writer.WriteElementString("CODE_MO", invoiceFilename.ClinicCode);
            xml.Writer.WriteElementString("YEAR", invoiceFilename.Year.ToString());
            xml.Writer.WriteElementString("MONTH", invoiceFilename.Month.ToString());
            xml.Writer.WriteElementString("NSCHET", invox.Options.InvoiceNumber);
            xml.Writer.WriteElementString("DSCHET", invox.Options.InvoiceDate.AsXml());
            xml.WriteIfValid("PLAT", invoiceFilename.CompanyCode);
            xml.Writer.WriteElementString("SUMMAV", pool.Total(invoiceFilename.Section, invoiceFilename.Subsection).ToString("F2", Options.NumberFormat));

            // 20191028
            if (invoiceFilename.Section == OrderSection.D3)
            {
                xml.Writer.WriteElementString("DISP", ProphSubsectionHelper.GetCodeV016(invoiceFilename.Subsection));
            }

            xml.Writer.WriteEndElement();

            Lib.Progress progress = new Progress("Случаи обращения", count);
            int          number   = 0;
            foreach (InvoiceRecord irec in pool.LoadInvoiceRecords(invoiceFilename.Section, invoiceFilename.Subsection))
            {
                irec.Identity = number;
                irec.Write(xml, () => progress.Step(), pool, invoiceFilename.Section, invoiceFilename.Subsection);
                number = irec.Identity;
#if DEBUG
                if (--count <= 0)
                {
                    break;
                }
#endif
            }

            progress.Close();

            xml.Writer.WriteEndElement();
            return(true);
        }