public void WriteD4(Lib.XmlExporter xml, Data.IInvoice pool, InvoiceRecord irec, Recourse rec, Event evt) { xml.Writer.WriteStartElement("USL"); xml.Writer.WriteElementString("IDSERV", Identity); xml.Writer.WriteElementString("LPU", Options.LpuCode); xml.WriteIfValid("LPU_1", Unit); xml.WriteIfValid("PODR", rec.Department); xml.Writer.WriteElementString("PROFIL", rec.Profile); xml.WriteIfValid("VID_VME", InterventionKind); xml.WriteBool("DET", Child); xml.Writer.WriteElementString("DATE_IN", DateFrom.AsXml()); xml.Writer.WriteElementString("DATE_OUT", DateTill.AsXml()); xml.Writer.WriteElementString("DS", Diagnosis); xml.Writer.WriteElementString("CODE_USL", ServiceCode.ToString("D6")); xml.Writer.WriteElementString("KOL_USL", Quantity.ToString("F2", Options.NumberFormat)); if (Tariff > 0) { xml.Writer.WriteElementString("TARIF", Tariff.ToString("F2", Options.NumberFormat)); } xml.Writer.WriteElementString("SUMV_USL", Total.ToString("F2", Options.NumberFormat)); xml.Writer.WriteElementString("PRVS", SpecialityCode); xml.Writer.WriteElementString("CODE_MD", DoctorCode); if (Incomplete != IncompleteServiceReason.None) { xml.Writer.WriteElementString("NPL", ((int)Incomplete).ToString()); } xml.WriteIfValid("COMENTU", Comment); xml.Writer.WriteEndElement(); }
public void Write(Lib.XmlExporter xml) { xml.Writer.WriteStartElement("NAZ"); #if FOMS xml.Writer.WriteElementString("NAZ_N", Index.ToString()); #else // Здесь опечатка? В приказе тут есть пробел: NAZ N xml.Writer.WriteElementString("NAZN", Index.ToString()); #endif xml.Writer.WriteElementString("NAZ_R", RouteCode.ToString()); xml.WriteIfValid("NAZ_IDDOKT", DoctorSpeciality); xml.WriteIfValid("NAZ_V", StudyKind); xml.WriteIfValid("NAZ_USL", ServiceCode); if (!string.IsNullOrEmpty(TargetClinic)) { xml.Writer.WriteElementString("NAPR_DATE", DirectionDate.AsXml()); xml.Writer.WriteElementString("NAPR_MO", TargetClinic); } xml.WriteIfValid("NAZ_PMP", AidProfile); xml.WriteIfValid("NAZ_PK", BedProfile); xml.Writer.WriteEndElement(); }
public void Write(Lib.XmlExporter xml, Data.IInvoice pool) { xml.Writer.WriteStartElement("SANK"); xml.Writer.WriteElementString("S_CODE", id); xml.Writer.WriteElementString("S_SUM", total.ToString("C2", Options.NumberFormat)); xml.Writer.WriteElementString("S_TIP", controlCode); foreach (string sl in events) { xml.Writer.WriteElementString("SL_ID", sl); } xml.Writer.WriteElementString("S_OSN", reasonCode); xml.Writer.WriteElementString("DATE_ACT", actDate.AsXml()); xml.Writer.WriteElementString("NUM_ACT", actNumber); xml.Writer.WriteElementString("CODE_EXP", expertCode); xml.Writer.WriteElementString("S_COM", comment); // Источник: 1 - СМО/ТФОМС к МО. xml.Writer.WriteElementString("S_IST", "1"); xml.Writer.WriteEndElement(); }
/// <summary> /// Save person data to dispanserisation invoice /// </summary> /// <param name="xml">XML exporter to use</param> public void WriteD3(Lib.XmlExporter xml) { xml.Writer.WriteStartElement("PACIENT"); xml.Writer.WriteElementString("ID_PAC", Identity); xml.Writer.WriteElementString("VPOLIS", PolicyType.ToString()); xml.WriteIfValid("SPOLIS", PolicySerial); if (PolicyType == 3) { xml.WriteIfValid("ENP", PolicyNumber); } else { xml.WriteIfValid("NPOLIS", PolicyNumber); } xml.WriteIfValid("ST_OKATO", AssuranceOkato); xml.WriteIfValid("SMO", SmoCode); xml.WriteIfValid("SMO_OGRN", SmoOgrn); xml.WriteIfValid("SMO_OK", SmoOkato); xml.WriteIfValid("SMO_NAM", SmoName); xml.Writer.WriteElementString("NOVOR", NewbornCode); xml.Writer.WriteEndElement(); }
/// <summary> /// Save person for onkology bill /// </summary> /// <param name="xml">XML exporter</param> public void WriteD4(Lib.XmlExporter xml) { xml.Writer.WriteStartElement("PACIENT"); xml.Writer.WriteElementString("ID_PAC", Identity); xml.Writer.WriteElementString("VPOLIS", PolicyType.ToString()); xml.WriteIfValid("SPOLIS", PolicySerial); xml.WriteIfValid("NPOLIS", PolicyNumber); xml.WriteIfValid("ST_OKATO", AssuranceOkato); xml.WriteIfValid("SMO", SmoCode); xml.WriteIfValid("SMO_OGRN", SmoOgrn); xml.WriteIfValid("SMO_OK", SmoOkato); xml.WriteIfValid("SMO_NAM", SmoName); if (Disability != Disability.NA) { xml.Writer.WriteElementString("INV", ((int)Disability).ToString()); } if (DirectedToSE) { xml.Writer.WriteElementString("MSE", "1"); } xml.Writer.WriteElementString("NOVOR", NewbornCode); if (NewbornCode != "0") { xml.Writer.WriteElementString("VNOV_D", NewbornWeight.ToString("D4")); } xml.Writer.WriteEndElement(); }
bool ExportPeople(Lib.XmlExporter xml, Data.IInvoice pool, int count) { if (!xml.OK) { return(false); } xml.Writer.WriteStartElement("PERS_LIST"); xml.Writer.WriteStartElement("ZGLV"); xml.Writer.WriteElementString("VERSION", VERSION_PEOPLE); xml.Writer.WriteElementString("DATA", DateTime.Today.AsXml()); xml.Writer.WriteElementString("FILENAME", invoiceFilename.PersonFile); xml.Writer.WriteElementString("FILENAME1", invoiceFilename.InvoiceFile); xml.Writer.WriteEndElement(); Lib.Progress progress = new Progress("Пациенты", count); foreach (Person p in pool.LoadPeople(invoiceFilename.Section, invoiceFilename.Subsection)) { p.Write(xml, pool, invoiceFilename.Section); progress.Step(); #if DEBUG if (--count <= 0) { break; } #endif } progress.Close(); xml.Writer.WriteEndElement(); return(true); }
void WritePersonIdentityError(Lib.XmlExporter xml) { if (string.IsNullOrEmpty(Family)) { xml.Writer.WriteElementString("DOST_P", "2"); } if (string.IsNullOrEmpty(Name)) { xml.Writer.WriteElementString("DOST_P", "3"); } if (string.IsNullOrEmpty(Patronymic)) { xml.Writer.WriteElementString("DOST_P", "1"); } if (WrongDate) { xml.Writer.WriteElementString("DOST_P", "6"); xml.Writer.WriteElementString("DOST_P", "4"); } else if (WrongMonth) { xml.Writer.WriteElementString("DOST_P", "6"); xml.Writer.WriteElementString("DOST_P", "5"); } }
public void Write(Lib.XmlExporter xml, Data.IInvoice pool, OrderSection section) { xml.Writer.WriteStartElement("PERS"); xml.WriteIfValid("ID_PAC", ID); xml.WriteIfValid("FAM", Family); xml.WriteIfValid("IM", Name); xml.WriteIfValid("OT", Patronymic); xml.Writer.WriteElementString("W", Sex.ToString()); xml.Writer.WriteElementString("DR", BirthDate.AsXml()); WritePersonIdentityError(xml); if (section == OrderSection.D3) { xml.WriteIfValid("TEL", Phone); } if (Representative != null) { Representative.Write(xml, pool); } // FOMS //xml.WriteIfValid("MR", Address); xml.WriteIfValid("MR", BirthPlace); xml.WriteIfValid("DOCTYPE", DocumentType); #if FOMS xml.WriteIfValid("SOC", SocialPosition); #endif xml.WriteIfValid("DOCSER", DocumentSerial); xml.WriteIfValid("DOCNUM", DocumentNumber); #if FOMS if (DocumentDate.HasValue) { xml.Writer.WriteElementString("DOCDATE", DocumentDate.Value.AsXml()); } xml.WriteIfValid("DOCORG", DocumentOrganization); #endif xml.WriteIfValid("SNILS", Snils); #if FOMS xml.Writer.WriteElementString("OKATOG", ResidenceOkato); #else xml.WriteIfValid("OKATOG", ResidenceOkato); #endif xml.WriteIfValid("OKATOP", PresenceOkato); #if FOMS xml.WriteIfValid("KT", SocialFavour); #endif xml.WriteIfValid("COMENTP", Comment); xml.Writer.WriteEndElement(); }
public void Write(Lib.XmlExporter xml) { xml.Writer.WriteStartElement("B_PROT"); xml.Writer.WriteElementString("PROT", ((int)code).ToString()); xml.Writer.WriteElementString("D_PROT", date.AsXml()); xml.Writer.WriteEndElement(); }
public void Write(Lib.XmlExporter xml, Data.IInvoice pool) { xml.Writer.WriteStartElement("SL_KOEF"); xml.Writer.WriteElementString("IDSL", code); xml.Writer.WriteElementString("Z_SL", quotient.ToString("F5", Options.NumberFormat)); xml.Writer.WriteEndElement(); }
public void Write(Lib.XmlExporter xml) { xml.Writer.WriteStartElement("CONS"); xml.Writer.WriteElementString("PR_CONS", ((int)Reason).ToString()); if (Reason >= OncologyConsiliumReason.Study && Reason <= OncologyConsiliumReason.TreatmentCorrection) { xml.Writer.WriteElementString("DT_CONS", Date.AsXml()); } xml.Writer.WriteEndElement(); }
/// <summary> /// Выгрузить счет /// </summary> /// <param name="pool">Datapool</param> /// <param name="outputDirectory">Каталог для экспорта</param> /// <param name="leaveFiles">Не удалять файлы после упаковки</param> public bool Export(Data.IInvoice pool, string outputDirectory, bool leaveFiles) { Console.WriteLine(); Console.WriteLine(); WriteSectionTitle(invoiceFilename.Section); Lib.XmlExporter xml = new Lib.XmlExporter(); int count = pool.GetPeopleCount(invoiceFilename.Section, invoiceFilename.Subsection); #if DEBUG count = Math.Min(Properties.Settings.Default.DebugSelectionLimit, count); #endif if (count > 0) { string fname = outputDirectory + invoiceFilename.PersonFile + XML; if (!xml.Init(fname) || !ExportPeople(xml, pool, count)) { Console.WriteLine("Ошибка при выгрузке пациентов"); return(false); } fname = outputDirectory + invoiceFilename.InvoiceFile + XML; if (!xml.Init(fname) || !ExportInvoice(xml, pool)) { Console.WriteLine("Ошибка при выгрузке счетов"); return(false); } xml.Close(); if (Lib.Zip.Compress(invoiceFilename)) { if (!leaveFiles) { Lib.Unlinker.RemoveFiles(invoiceFilename, outputDirectory); } Console.WriteLine(string.Format("Файл выгрузки: {0}{1}.zip", outputDirectory, invoiceFilename.InvoiceFile)); return(true); } else { Console.WriteLine("Ошибка при создании архива"); return(false); } } else { Console.WriteLine("Нет данных для выгрузки"); return(true); } }
public void Write(Lib.XmlExporter xml) { xml.Writer.WriteStartElement("DS2_N"); xml.Writer.WriteElementString("DS2", Code); if (FirstIdentified) { xml.Writer.WriteElementString("DS2_PR", "1"); } xml.Writer.WriteElementString("PR_DS2_N", ((int)DispensarySupervision).ToString()); xml.Writer.WriteEndElement(); }
/// <summary> /// Save invoice record to XML /// </summary> /// <param name="xml">XML exporter to use</param> /// <param name="onRecourse">Callback to call on each recourse</param> /// <param name="pool">Datapool</param> /// <param name="section">Order #59 section</param> public void Write(Lib.XmlExporter xml, Action onRecourse, Data.IInvoice pool, OrderSection section, Model.ProphSubsection subsection) { foreach (Recourse recourse in pool.LoadRecourses(this, section, subsection)) { ++Identity; xml.Writer.WriteStartElement("ZAP"); xml.Writer.WriteElementString("N_ZAP", Identity.ToString()); xml.WriteBool("PR_NOV", Revised); Person.Write(xml, section); recourse.Write(xml, pool, section, this); xml.Writer.WriteEndElement(); onRecourse(); } }
public void Write(Lib.XmlExporter xml) { xml.Writer.WriteStartElement("B_DIAG"); xml.Writer.WriteElementString("DIAG_DATE", date.AsXml()); xml.Writer.WriteElementString("DIAG_TIP", ((int)type).ToString()); xml.Writer.WriteElementString("DIAG_CODE", code); if (!string.IsNullOrEmpty(result)) { xml.Writer.WriteElementString("DIAG_RSLT", result); xml.Writer.WriteElementString("REC_RSLT", "1"); } xml.Writer.WriteEndElement(); }
/// <summary> /// Save service instance to a XML /// </summary> /// <param name="xml">XML exporter to use</param> /// <param name="pool">Datapool</param> /// <param name="section">Section of the order #59</param> /// <param name="irec">Invoice record parental to the event</param> /// <param name="evt">Event to which this service belongs</param> public void Write(Lib.XmlExporter xml, Data.IInvoice pool, OrderSection section, InvoiceRecord irec, Recourse rec, Event evt) { switch (section) { case OrderSection.D1: WriteD1(xml, pool, irec, rec, evt); break; case OrderSection.D2: WriteD2(xml, pool, irec, rec, evt); break; case OrderSection.D3: WriteD3(xml, pool, irec, rec, evt); break; } }
public void Write(Lib.XmlExporter xml) { if (kind == OncologyDirectionKind.None || method == OncologyDirectionMethod.None) { return; } xml.Writer.WriteStartElement("NAPR"); xml.Writer.WriteElementString("NAPR_DATE", date.AsXml()); xml.WriteIfValid("NAPR_MO", TargetClinic); xml.Writer.WriteElementString("NAPR_V", ((int)kind).ToString()); if (method != OncologyDirectionMethod.None) { xml.Writer.WriteElementString("MET_ISSL", ((int)method).ToString()); xml.Writer.WriteElementString("NAPR_USL", serviceCode); } xml.Writer.WriteEndElement(); }
public void Write(Lib.XmlExporter xml, Data.IInvoice pool) { xml.Writer.WriteStartElement("ONK_SL"); xml.Writer.WriteElementString("DS1_T", ((int)reason).ToString()); xml.WriteIfValid("STAD", stage); xml.WriteIfValid("ONK_T", tumor); xml.WriteIfValid("ONK_N", nodus); xml.WriteIfValid("ONK_M", mts); if (reason == OnkologyReason.Relapse || reason == OnkologyReason.Progression) { xml.WriteBool("MTSTZ", remoteMts); } if (beamLoad > 0) { xml.Writer.WriteElementString("SOD", beamLoad.ToString("F2", Options.NumberFormat)); } foreach (OnkologyDiagnosticType dt in pool.LoadOnkologicalDiagnosticTypes()) { dt.Write(xml); } foreach (OnkologyRefusal r in pool.LoadOnkologicalRefusal()) { r.Write(xml); } if (Services != null) { foreach (OncologyService s in Services) { s.Write(xml, pool); } } xml.Writer.WriteEndElement(); }
public void Write(Lib.XmlExporter xml, Data.IInvoice pool) { xml.Writer.WriteStartElement("ONK_USL"); xml.Writer.WriteElementString("USL_TIP", ((int)ServiceType).ToString()); if (SurgicalCure != N014.None) { xml.Writer.WriteElementString("HIR_TIP", ((int)SurgicalCure).ToString()); } if (Line != N015.None) { xml.Writer.WriteElementString("LEK_TIP_L", ((int)Line).ToString()); } if (Cycle != N016.None) { xml.Writer.WriteElementString("LEK_TIP_V", ((int)Cycle).ToString()); } if (Drugs != null) { foreach (OncologyDrug d in Drugs) { d.Write(xml); } } if (CounterVomitCure) { xml.Writer.WriteElementString("PPTR", "1"); } if (RayKind != N017.None) { xml.Writer.WriteElementString("LUCH_TIP", ((int)RayKind).ToString()); } xml.Writer.WriteEndElement(); }
public void Write(Lib.XmlExporter xml, Data.IInvoice pool, Event evt) { xml.Writer.WriteStartElement("KSG_KPG"); xml.WriteIfValid("N_KSG", KsgNumber); xml.Writer.WriteElementString("VER_KSG", Version.ToString()); xml.WriteBool("KSG_PG", SubgroupUsed); xml.WriteIfValid("N_KPG", KpgNumber); xml.Writer.WriteElementString("KOEF_Z", QuotExpense.ToString("F5", Options.NumberFormat)); xml.Writer.WriteElementString("KOEF_UP", QuotManagement.ToString("F5", Options.NumberFormat)); xml.Writer.WriteElementString("BZTSZ", BaseRate.ToString("F2", Options.NumberFormat)); xml.Writer.WriteElementString("KOEF_D", QuotDifference.ToString("F5", Options.NumberFormat)); xml.Writer.WriteElementString("KOEF_U", QuotGroupLevel.ToString("F5", Options.NumberFormat)); // TODO: D4 Multiple xml.WriteIfValid("CRIT", AuxCriterion); // TODO: // D4: SL_K xml.WriteBool("SL_K", KslpUsed); List <ComplexityQuotient> qs = pool.LoadComplexityQuotients().ToList(); if (qs.Count() > 0) { double acc = qs.Select(q => q.Quotient).Aggregate(1.0, (a, b) => { return(a * b); }); if (acc > 0) { xml.Writer.WriteElementString("IT_SL", acc.ToString("F5", Options.NumberFormat)); foreach (ComplexityQuotient q in qs) { q.Write(xml, pool); } } } // TODO: D4 SL_KOEF УМ xml.Writer.WriteEndElement(); }
/// <summary> /// Save person data to invoice XML /// </summary> /// <param name="xml">XML exporter to write to</param> /// <param name="section">Order #59 section</param> public void Write(Lib.XmlExporter xml, OrderSection section) { switch (section) { case OrderSection.D1: WriteD1(xml); break; case OrderSection.D2: WriteD2(xml); break; case OrderSection.D3: WriteD3(xml); break; case OrderSection.D4: WriteD4(xml); break; } }
/// <summary> /// Save service for a hi-tech case /// </summary> /// <param name="xml">XML exporter to use</param> /// <param name="pool">Datapool</param> /// <param name="irec">Invoice record parental to the event</param> /// <param name="evt">Event to which this service belongs</param> public void WriteD2(Lib.XmlExporter xml, Data.IInvoice pool, InvoiceRecord irec, Recourse rec, Event evt) { xml.Writer.WriteStartElement("USL"); xml.Writer.WriteElementString("IDSERV", Identity); xml.Writer.WriteElementString("LPU", Options.LpuCode); xml.WriteIfValid("LPU_1", Unit); xml.WriteIfValid("PODR", rec.Department); xml.Writer.WriteElementString("PROFIL", rec.Profile); xml.WriteIfValid("VID_VME", InterventionKind); xml.WriteBool("DET", Child); xml.Writer.WriteElementString("DATE_IN", DateFrom.AsXml()); xml.Writer.WriteElementString("DATE_OUT", DateTill.AsXml()); xml.Writer.WriteElementString("DS", Diagnosis); xml.Writer.WriteElementString("CODE_USL", ServiceCode.ToString("D6")); xml.Writer.WriteElementString("KOL_USL", Quantity.ToString("D2", Options.NumberFormat)); if (Tariff > 0) { xml.Writer.WriteElementString("TARIF", Tariff.ToString("F2", Options.NumberFormat)); } xml.Writer.WriteElementString("SUMV_USL", Total.ToString("F2", Options.NumberFormat)); xml.Writer.WriteElementString("PRVS", SpecialityCode); xml.Writer.WriteElementString("CODE_MD", DoctorCode); if (rec.SuspectOncology) { // Направления // Заполняется только в случае оформления направления при подозрении на злокачественное новообразование (DS_ONK=1) foreach (OncologyDirection d in pool.LoadOncologyDirections(rec, evt)) { d.Write(xml); } } xml.WriteIfValid("COMENTU", Comment); xml.Writer.WriteEndElement(); }
/// <summary> /// Save service for a dispanserisation case /// </summary> /// <param name="xml">XML exporter to use</param> /// <param name="pool">Datapool</param> /// <param name="irec">Invoice record parental to the event</param> /// <param name="evt">Event to which this service belongs</param> public void WriteD3(Lib.XmlExporter xml, Data.IInvoice pool, InvoiceRecord irec, Recourse rec, Event evt) { xml.Writer.WriteStartElement("USL"); xml.Writer.WriteElementString("IDSERV", Identity); xml.Writer.WriteElementString("LPU", Options.LpuCode); xml.WriteIfValid("LPU_1", Unit); #if FOMS xml.WriteIfValid("PODR", rec.Department); // TODO: "20190611 Приказ 124н Диспансеризация и Профосмотры" - профиль каждой услуги отдельно??? xml.Writer.WriteElementString("PROFIL", rec.Profile); xml.WriteBool("DET", Child); #endif xml.Writer.WriteElementString("DATE_IN", DateFrom.AsXml()); xml.Writer.WriteElementString("DATE_OUT", DateTill.AsXml()); xml.WriteBool("P_OTK", Refusal); xml.Writer.WriteElementString("CODE_USL", ServiceCode.ToString("D6")); #if FOMS xml.Writer.WriteElementString("KOL_USL", Quantity.ToString("F2", Options.NumberFormat)); #endif if (Tariff > 0) { xml.Writer.WriteElementString("TARIF", Tariff.ToString("F2", Options.NumberFormat)); } xml.Writer.WriteElementString("SUMV_USL", Total.ToString("F2", Options.NumberFormat)); xml.Writer.WriteStartElement("MR_USL_N"); xml.Writer.WriteElementString("MR_N", "1"); xml.Writer.WriteElementString("PRVS", SpecialityCode); xml.Writer.WriteElementString("CODE_MD", DoctorCode); xml.Writer.WriteEndElement(); xml.WriteIfValid("COMENTU", Comment); xml.Writer.WriteEndElement(); }
public void WriteD4(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); xml.WriteBool("DS_ONK", rec.SuspectOncology); 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); foreach (OncologyDirection dir in pool.LoadOncologyDirections(rec, this)) { dir.Write(xml); } foreach (OncologyConsilium c in pool.LoadOncologyConsilium(rec, this)) { c.Write(xml); } // Не на дому, не реабилитация и не подозрение if (!Rehabilitation && !rec.SuspectOncology && rec.Conditions != "4") { OnkologyTreat treat = pool.GetOnkologyTreat(rec, this); if (treat != null) { if (string.IsNullOrEmpty(treat.Stage)) { Console.WriteLine("Пустая стадия для онкологии. Случай " + this.Identity); } treat.Write(xml, pool); } } 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.WriteD4(xml, pool, irec, rec, this); } xml.WriteIfValid("COMENTSL", Comment); xml.Writer.WriteEndElement(); }
/// <summary> /// Save dispanserisation 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 WriteD3(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); #if FOMS xml.WriteIfValid("PODR", rec.Department); xml.Writer.WriteElementString("PROFIL", rec.Profile); xml.WriteBool("DET", Child); xml.Writer.WriteElementString("CEL", LocalReason); #endif xml.Writer.WriteElementString("NHISTORY", CardNumber); xml.Writer.WriteElementString("DATE_1", DateFrom.AsXml()); xml.Writer.WriteElementString("DATE_2", DateTill.AsXml()); xml.Writer.WriteElementString("DS1", MainDiagnosis); if (FirstIdentified) { xml.Writer.WriteElementString("DS1_PR", "1"); } #if FOMS // 20190930 C_ZAB не фигурирует в разделе D3, но ФОМС ставит ошибку // Исправлено в Барс 20190930 //xml.WriteIfValid("C_ZAB", StatisticsCode); xml.WriteBool("DS_ONK", rec.SuspectOncology); if (DispensarySupervision >= DispensarySupervision.Observed && DispensarySupervision <= DispensarySupervision.NotSubject) { xml.Writer.WriteElementString("PR_D_N", ((int)DispensarySupervision).ToString()); } #else if (rec.SuspectOncology) { xml.Writer.WriteElementString("DS_ONK", "1"); } xml.Writer.WriteElementString("PR_D_N", ((int)DispensarySupervision).ToString()); #endif foreach (ConcomitantDisease d in pool.GetConcomitantDiseases(irec, this)) { d.Write(xml); } #if FOMS xml.Writer.WriteElementString("PRVS", SpecialityCode); #endif foreach (DispAssignment d in pool.GetDispanserisationAssignments(rec, this)) { d.Write(xml); } 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.WriteD3(xml, pool, irec, rec, this); } xml.WriteIfValid("COMENTSL", Comment); xml.Writer.WriteEndElement(); }
/// <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(); }
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(); }
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(); }
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); }