Beispiel #1
0
        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));
        }
Beispiel #2
0
        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;
            }
        }
Beispiel #3
0
        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);
        }