public EhrExtract Convert(PathProcedureViewModel model, string name, string systemId) { if (model == default) { throw new ArgumentNullException(nameof(model)); } if (_pathProcedureToEHRConverter == default) { _locker.EnterWriteLock(); if (_pathProcedureToEHRConverter == default) { _pathProcedureToEHRConverter = new PathProcedureToEHRConverter(EhrManager); } _locker.ExitWriteLock(); } return(_pathProcedureToEHRConverter.Convert(model, name, systemId)); }
public async Task <IActionResult> Json(int id) { try { if (id < 1) { return(RedirectToAction(nameof(HomeController.Index), this.GetControllerName(nameof(HomeController)))); } else { PathProcedureViewModel model = await GetModelById(id); if (model == default) { return(BadRequest()); } EhrExtract ehrExtractModel = ToEHRConverter.Convert(model, nameof(PathProcedureViewModel), MedicConstants.ItupMedic); return(await base.FormatModel(ehrExtractModel, FormattableFactory.CreateFormatter(FormatterEnum.Json))); } } catch (Exception ex) { Task <int> _ = MedicLoggerService.SaveAsync(new Log() { Message = ex.Message, InnerExceptionMessage = ex?.InnerException?.Message ?? null, Source = ex.Source, StackTrace = ex.StackTrace, Date = DateTime.Now }); throw; } }
internal EhrExtract Convert(PathProcedureViewModel model, string name, string systemId) { if (model == default) { throw new ArgumentNullException(nameof(model)); } IEntryBuilder entryPathProcedureBuilder = EhrManager.EntryBuilder; entryPathProcedureBuilder.AddItems( EhrManager.ElementBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.PatientBranch)).Build()) .AddValue(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(model.PatientBranch).Build()).Build(), EhrManager.ElementBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.PatientHRegion)).Build()) .AddValue(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(model.PatientHRegion).Build()).Build(), EhrManager.ElementBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.TypeProcSend)).Build()) .AddValue(EhrManager.INTBuilder.Clear().AddValue(model.TypeProcSend).Build()).Build(), EhrManager.ElementBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.DateSend)).Build()) .AddValue(EhrManager.DATEBuilder.Clear().AddDate(model.DateSend).Build()).Build(), EhrManager.ElementBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.MedicalWard)).Build()) .AddValue(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(model.MedicalWard).Build()).Build(), EhrManager.ElementBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.TypeProcPriem)).Build()) .AddValue(EhrManager.INTBuilder.Clear().AddValue(model.TypeProcPriem).Build()).Build(), EhrManager.ElementBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.ProcRefuse)).Build()) .AddValue(EhrManager.INTBuilder.Clear().AddValue(model.ProcRefuse).Build()).Build(), EhrManager.ElementBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.IZNumChild)).Build()) .AddValue(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(model.IZNumChild).Build()).Build(), EhrManager.ElementBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.IZYearChild)).Build()) .AddValue(EhrManager.INTBuilder.Clear().AddValue(model.IZYearChild).Build()).Build(), EhrManager.ElementBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.VisitDoctorUniqueIdentifier)).Build()) .AddValue(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(model.VisitDoctorUniqueIdentifier).Build()).Build(), EhrManager.ElementBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.VisitDoctorName)).Build()) .AddValue(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(model.VisitDoctorName).Build()).Build(), EhrManager.ElementBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.PatientStatus)).Build()) .AddValue(EhrManager.INTBuilder.Clear().AddValue(model.PatientStatus).Build()).Build(), EhrManager.ElementBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.VisitDoctorUniqueIdentifier)).Build()) .AddValue(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(model.VisitDoctorUniqueIdentifier).Build()).Build(), EhrManager.ElementBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.OutUniqueIdentifier)).Build()) .AddValue(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(model.OutUniqueIdentifier).Build()).Build(), EhrManager.ElementBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.Sign)).Build()) .AddValue(EhrManager.INTBuilder.Clear().AddValue(model.Sign).Build()).Build(), EhrManager.ElementBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.NZOKPay)).Build()) .AddValue(EhrManager.INTBuilder.Clear().AddValue(model.NZOKPay).Build()).Build() ); if (model.AllDoneProcedures != default) { entryPathProcedureBuilder.AddItems( EhrManager.ElementBuilder .Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.AllDoneProcedures)).Build()) .AddValue(EhrManager.INTBuilder.Clear().AddValue((int)model.AllDoneProcedures).Build()) .Build()); } if (model.AllDrugCost != default) { entryPathProcedureBuilder.AddItems( EhrManager.ElementBuilder .Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.AllDrugCost)).Build()) .AddValue(EhrManager.REALBuilder.Clear().AddValue((double)model.AllDrugCost).Build()) .Build()); } if (model.CPrSend != default) { entryPathProcedureBuilder.AddItems( EhrManager.ElementBuilder .Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.CPrSend)).Build()) .AddValue(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(model.CPrSend).Build()) .Build()); } if (model.APrSend != default) { entryPathProcedureBuilder.AddItems( EhrManager.ElementBuilder .Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.APrSend)).Build()) .AddValue(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(model.APrSend).Build()) .Build()); } if (model.CPrPriem != default) { entryPathProcedureBuilder.AddItems( EhrManager.ElementBuilder .Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.CPrPriem)).Build()) .AddValue(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(model.CPrPriem).Build()) .Build()); } if (model.APrPriem != default) { entryPathProcedureBuilder.AddItems( EhrManager.ElementBuilder .Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.APrPriem)).Build()) .AddValue(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(model.APrPriem).Build()) .Build()); } if (model.FirstVisitDate != default) { entryPathProcedureBuilder.AddItems( EhrManager.ElementBuilder .Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.FirstVisitDate)).Build()) .AddValue(EhrManager.DATEBuilder.Clear().AddDate((DateTime)model.FirstVisitDate).Build()) .Build()); } if (model.DatePlanPriem != default) { entryPathProcedureBuilder.AddItems( EhrManager.ElementBuilder .Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.DatePlanPriem)).Build()) .AddValue(EhrManager.DATEBuilder.Clear().AddDate((DateTime)model.DatePlanPriem).Build()) .Build()); } if (model.DateProcedureBegins != default) { entryPathProcedureBuilder.AddItems( EhrManager.ElementBuilder .Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.DateProcedureBegins)).Build()) .AddValue(EhrManager.DATEBuilder.Clear().AddDate((DateTime)model.DateProcedureBegins).Build()) .Build()); } if (model.DateProcedureEnd != default) { entryPathProcedureBuilder.AddItems( EhrManager.ElementBuilder .Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.DateProcedureEnd)).Build()) .AddValue(EhrManager.DATEBuilder.Clear().AddDate((DateTime)model.DateProcedureEnd).Build()) .Build()); } Content pathProcedureContent = entryPathProcedureBuilder.Build(); ICompositionBuilder compositionBuilder = EhrManager.CompositionBuilder .Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(name).Build()); if (model.Patient != default) { compositionBuilder.AddContent( EhrManager.SectionBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.Patient)).Build()) .AddMembers(base.CreatePatientEntry(model.Patient)) .Build()); } if (model.Sender != default) { compositionBuilder.AddContent( EhrManager.SectionBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.Sender)).Build()) .AddMembers(base.CreatePractitionerEntry(model.Sender)) .Build()); } if (model.FirstMainDiag != default) { compositionBuilder.AddContent( EhrManager.SectionBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.FirstMainDiag)).Build()) .AddMembers(base.CreateDiagEntry(model.FirstMainDiag)) .Build()); } if (model.SecondMainDiag != default) { compositionBuilder.AddContent( EhrManager.SectionBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.SecondMainDiag)).Build()) .AddMembers(base.CreateDiagEntry(model.SecondMainDiag)) .Build()); } if (model.DoneNewProcedures != default && model.DoneNewProcedures.Count > 0) { compositionBuilder.AddContent( EhrManager.SectionBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.DoneNewProcedures)).Build()) .AddMembers(model.DoneNewProcedures.Where(dnp => dnp != default).Select(dnp => CreateProcedureSummaryEntry(dnp)).ToArray()) .Build()); } if (model.UsedDrugs != default && model.UsedDrugs.Count > 0) { compositionBuilder.AddContent( EhrManager.SectionBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.UsedDrugs)).Build()) .AddMembers(model.UsedDrugs.Where(ud => ud != default).Select(ud => CreateClinicUsedDrugEntry(ud)).ToArray()) .Build()); } if (model.ClinicProcedures != default && model.ClinicProcedures.Count > 0) { compositionBuilder.AddContent( EhrManager.SectionBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.ClinicProcedures)).Build()) .AddMembers(model.ClinicProcedures.Where(cp => cp != default).Select(cp => CreateClinicProcedureEntry(cp)).ToArray()) .Build()); } if (model.DoneProcedures != default && model.DoneProcedures.Count > 0) { compositionBuilder.AddContent( EhrManager.SectionBuilder.Clear() .AddName(EhrManager.SimpleTextBuilder.Clear().AddOriginalText(nameof(model.DoneProcedures)).Build()) .AddMembers(model.DoneProcedures.Where(dp => dp != default).Select(dp => CreateDoneProcedureEntry(dp)).ToArray()) .Build()); } compositionBuilder.AddContent(EhrManager.SectionBuilder.Clear().AddMembers(pathProcedureContent).Build()); EhrExtract ehrExtractModel = EhrManager .EhrExtractModelBuilder .AddEhrSystem(EhrManager.IIBuilder.Clear().AddRoot(EhrManager.OIDBuilder.Build(systemId)).Build()) .AddSubjectOfCare(EhrManager.IIBuilder.Clear().AddRoot(EhrManager.OIDBuilder.Build(model.Patient.IdentityNumber)).Build()) .AddTimeCreated(EhrManager.TSBuilder.Clear().AddTime(DateTime.Now).Build()) .AddComposition(compositionBuilder.Build()) .Build(); return(ehrExtractModel); }