protected virtual void FillDosageControl(EXP_ExpertiseStageDosage model)
        {
            var externalRepository = new ExternalRepository();
            var repository         = new ReadOnlyDictionaryRepository();
            var measures           = externalRepository.GetMeasures();

            var wrappingTypes = repository.GetWrappingTypes().ToArray();
            var boxes         = externalRepository.GetBoxes().ToArray();
            //            var remarkTypes = repository.GetRemarkTypes().ToArray();
            var sales = repository.GetSaleType().ToList();
            var drugDeclarationRepository = new DrugDeclarationRepository();

            model.EXP_DrugDosage.ExpDrugWrappings  = new List <EXP_DrugWrapping>();
            model.EXP_DrugDosage.ExpDrugPrices     = new List <EXP_DrugPrice>();
            model.EXP_DrugDosage.ExpDrugSubstances = new List <EXP_DrugSubstance>();
            //            model.EXP_DrugDosage.ExpDrugAppDosageRemarks = new List<EXP_DrugAppDosageRemark>();
            //            model.EXP_DrugDosage.ExpDrugAppDosageResults = new List<EXP_DrugAppDosageResult>();

            /*  foreach (var expDrugAppDosageRemark in model.EXP_DrugDosage.EXP_DrugAppDosageRemark)
             * {
             *  model.EXP_DrugDosage.ExpDrugAppDosageRemarks.Add(expDrugAppDosageRemark);
             * }
             * if (model.EXP_DrugDosage.ExpDrugAppDosageRemarks.Count == 0)
             * {
             *  model.EXP_DrugDosage.ExpDrugAppDosageRemarks.Add(new EXP_DrugAppDosageRemark());
             * }
             *
             * foreach (var expDrugAppDosageRemark in model.EXP_DrugDosage.EXP_DrugAppDosageResult)
             * {
             *  model.EXP_DrugDosage.ExpDrugAppDosageResults.Add(expDrugAppDosageRemark);
             * }
             * if (model.EXP_DrugDosage.ExpDrugAppDosageResults.Count == 0)
             * {
             *  model.EXP_DrugDosage.ExpDrugAppDosageResults.Add(new EXP_DrugAppDosageResult());
             * }
             */
            /*  ViewData["RemarkTypes" + model.EXP_DrugDosage.DrugDeclarationId] = new SelectList(remarkTypes, "Id", "NameRu",
             *   null);
             * foreach (var wrap in model.EXP_DrugDosage.ExpDrugAppDosageResults)
             * {
             *  ViewData["ResultTypes" + model.EXP_DrugDosage.DrugDeclarationId + "_" + wrap.Id] = new SelectList(remarkTypes, "Id", "NameRu",
             *      wrap.RemarkTypeId);
             * }
             * foreach (var wrap in model.EXP_DrugDosage.ExpDrugAppDosageRemarks)
             * {
             *  ViewData["RemarkTypes" + model.EXP_DrugDosage.DrugDeclarationId + "_" + wrap.Id] = new SelectList(remarkTypes, "Id", "NameRu",
             *      wrap.RemarkTypeId);
             * }*/

            foreach (var expDrugWrapping in model.EXP_DrugDosage.EXP_DrugWrapping)
            {
                model.EXP_DrugDosage.ExpDrugWrappings.Add(expDrugWrapping);
            }

            foreach (var expDrugWrapping in model.EXP_DrugDosage.EXP_DrugPrice)
            {
                model.EXP_DrugDosage.ExpDrugPrices.Add(expDrugWrapping);
            }
            for (var d = 0; d < model.EXP_DrugDosage.EXP_DrugSubstance.Count; d++)
            {
                model.EXP_DrugDosage.ExpDrugSubstances.Add(model.EXP_DrugDosage.EXP_DrugSubstance.ToList()[d]);
                if (model.EXP_DrugDosage.EXP_DrugSubstance.ToList()[d].ExpDrugSubstanceManufactures == null)
                {
                    model.EXP_DrugDosage.EXP_DrugSubstance.ToList()[d].ExpDrugSubstanceManufactures = new List <EXP_DrugSubstanceManufacture>();
                }

                foreach (var expDrugSubstanceManufacture in model.EXP_DrugDosage.EXP_DrugSubstance.ToList()[d].EXP_DrugSubstanceManufacture)
                {
                    model.EXP_DrugDosage.EXP_DrugSubstance.ToList()[d].ExpDrugSubstanceManufactures.Add(expDrugSubstanceManufacture);
                }
            }

            /* foreach (var expDrugWrapping in model.EXP_DrugDosage.EXP_DrugSubstance)
             * {
             *   model.EXP_DrugDosage.ExpDrugSubstances.Add(expDrugWrapping);
             *   foreach (var expDrugSubstanceManufacture in expDrugWrapping.EXP_DrugSubstanceManufacture)
             *   {
             *       model.EXP_DrugDosage.ExpDrugSubstances.Add(expDrugWrapping);
             *   }
             * }*/
            if (model.EXP_DrugDosage.ExpDrugWrappings == null || model.EXP_DrugDosage.ExpDrugWrappings.Count == 0)
            {
                model.EXP_DrugDosage.ExpDrugWrappings = new List <EXP_DrugWrapping>();
            }
            if (model.EXP_DrugDosage.ExpDrugSubstances == null || model.EXP_DrugDosage.ExpDrugSubstances.Count == 0)
            {
                model.EXP_DrugDosage.ExpDrugSubstances = new List <EXP_DrugSubstance> ();
            }
            if (model.EXP_DrugDosage.ExpDrugPrices == null)
            {
                model.EXP_DrugDosage.ExpDrugPrices = new List <EXP_DrugPrice>();
            }
            ViewData["MeasureList" + model.EXP_DrugDosage.Id] = new SelectList(measures, "Id", "name",
                                                                               model.EXP_DrugDosage.DosageMeasureTypeId);
            ViewData["SaleTypeList" + model.EXP_DrugDosage.Id] = new SelectList(sales, "Id", "NameRu", model.EXP_DrugDosage.SaleTypeId);
            ViewData["BestBeforeMeasureTypeList" + model.EXP_DrugDosage.Id] = new SelectList(measures, "id", "short_name",
                                                                                             model.EXP_DrugDosage.BestBeforeMeasureTypeDicId);
            ViewData["AppPeriodMixMeasureList" + model.EXP_DrugDosage.Id] = new SelectList(measures, "id", "short_name",
                                                                                           model.EXP_DrugDosage.AppPeriodMixMeasureDicId);
            ViewData["AppPeriodOpenMeasureList" + model.EXP_DrugDosage.Id] = new SelectList(measures, "id", "short_name",
                                                                                            model.EXP_DrugDosage.AppPeriodOpenMeasureDicId);
            for (var j = 0; j < model.EXP_DrugDosage.ExpDrugWrappings.Count; j++)
            {
                var wrap = model.EXP_DrugDosage.ExpDrugWrappings[j];
                ViewData["WrappingTypes" + wrap.Id] = new SelectList(wrappingTypes, "Id", "NameRu",
                                                                     wrap.WrappingTypeId);
                ViewData["Boxes" + wrap.Id]           = new SelectList(boxes, "Id", "name", wrap.WrappingKindId);
                ViewData["SizeMeasureList" + wrap.Id] = new SelectList(measures, "Id", "short_name",
                                                                       wrap.SizeMeasureId);
                ViewData["VolumeMeasureList" + wrap.Id] = new SelectList(measures, "Id", "short_name",
                                                                         wrap.VolumeMeasureId);
            }
            var origins        = repository.GetOrigins().ToArray();
            var plantKinds     = repository.GetPlantKinds().ToArray();
            var substanceTypes = externalRepository.GetSubstanceTypes().ToArray();
            var countries      = externalRepository.GetCounties().ToArray();
            var booleans       = repository.GetBooleanList();

            for (var j = 0; j < model.EXP_DrugDosage.ExpDrugSubstances.Count; j++)
            {
                var ids = model.EXP_DrugDosage.ExpDrugSubstances[j].Id.ToString();
                model.EXP_DrugDosage.ExpDrugSubstances[j].CategoryName =
                    GetCategoryName(model.EXP_DrugDosage.ExpDrugSubstances[j].sr_substances);
                model.EXP_DrugDosage.ExpDrugSubstances[j].CategoryPos =
                    model.EXP_DrugDosage.ExpDrugSubstances[j].sr_substances?.category_pos;
                ViewData["SubstanceTypes" + ids] = new SelectList(substanceTypes, "Id", "name",
                                                                  model.EXP_DrugDosage.ExpDrugSubstances[j].SubstanceTypeId);
                ViewData["Origins" + ids] = new SelectList(origins, "Id", "NameRu",
                                                           model.EXP_DrugDosage.ExpDrugSubstances[j].OriginId);
                ViewData["PlantKinds" + ids] = new SelectList(plantKinds, "Id", "NameRu",
                                                              model.EXP_DrugDosage.ExpDrugSubstances[j].PlantKindId);
                ViewData["SubstanceMeasureList" + ids] = new SelectList(measures, "Id", "short_name",
                                                                        model.EXP_DrugDosage.ExpDrugSubstances[j].MeasureId);
                ViewData["SubstanceCounties" + ids] = new SelectList(countries, "Id", "name",
                                                                     model.EXP_DrugDosage.ExpDrugSubstances[j].CountryId);
                ViewData["IsControlList" + ids] = new SelectList(booleans, "IsSign", "NameRu",
                                                                 model.EXP_DrugDosage.ExpDrugSubstances[j].IsControl);
                ViewData["NormDocs" + ids] = new SelectList(repository.GetExpDicNormDocFarms().ToArray(), "Id", "NameRu",
                                                            model.EXP_DrugDosage.ExpDrugSubstances[j].NormDocFarmId);
                ViewData["IsPoisonList" + ids] = new SelectList(booleans, "IsSign", "NameRu",
                                                                model.EXP_DrugDosage.ExpDrugSubstances[j].IsPoison);

                /*      ViewData["SubstanceCounties" + ids] = new SelectList(countries, "Id", "name",
                 *        model.EXP_DrugDosage.ExpDrugSubstances[j].CountryId);*/
                if (model.EXP_DrugDosage.ExpDrugSubstances[j].ExpDrugSubstanceManufactures != null)
                {
                    for (var k = 0;
                         k < model.EXP_DrugDosage.ExpDrugSubstances[j].ExpDrugSubstanceManufactures.Count;
                         k++)
                    {
                        ViewData["SubstanceCounties" + model.EXP_DrugDosage.ExpDrugSubstances[j].ExpDrugSubstanceManufactures[k].Id.ToString()] = new SelectList(countries, "Id", "name",
                                                                                                                                                                 model.EXP_DrugDosage.ExpDrugSubstances[j].ExpDrugSubstanceManufactures[k].CountryId);
                    }
                }
            }

            for (var j = 0; j < model.EXP_DrugDosage.ExpDrugPrices.Count; j++)
            {
                var price = model.EXP_DrugDosage.ExpDrugPrices[j];
                model.EXP_DrugDosage.ExpDrugPrices[j].PrimaryText =
                    drugDeclarationRepository.GetNameByWrappingNames(price.PrimaryValue);
                model.EXP_DrugDosage.ExpDrugPrices[j].SecondaryText =
                    drugDeclarationRepository.GetNameByWrappingNames(price.SecondaryValue);
                model.EXP_DrugDosage.ExpDrugPrices[j].IntermediateText =
                    drugDeclarationRepository.GetNameByWrappingNames(price.IntermediateValue);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Возвращать на предыдущий этап
        /// </summary>
        /// <param name="declarationId"></param>
        /// <param name="fromStageId"></param>
        /// <param name="nextStageIds"></param>
        /// <param name="resultDescription"></param>
        /// <returns></returns>
        public bool ToBackStage(Guid declarationId, Guid?fromStageId, int[] nextStageIds, out string resultDescription)
        {
            resultDescription = null;
            var stageStatusInRework = GetStageStatusByCode(EXP_DIC_StageStatus.InReWork);

            string[] activeStageCodes = { EXP_DIC_StageStatus.InWork, EXP_DIC_StageStatus.InReWork };
            var      currentStage     = fromStageId != null?AppContext.EXP_ExpertiseStage.FirstOrDefault(e => e.Id == fromStageId)
                                            : AppContext.EXP_ExpertiseStage.FirstOrDefault(e => e.DeclarationId == declarationId && activeStageCodes.Contains(e.EXP_DIC_StageStatus.Code));

            if (currentStage != null)
            {
                currentStage.StatusId    = GetStageStatusByCode(EXP_DIC_StageStatus.Completed).Id;
                currentStage.FactEndDate = DateTime.Now;
            }

            foreach (var nextStageId in nextStageIds)
            {
                if (!CanSendToStep(declarationId, fromStageId, nextStageId, out resultDescription))
                {
                    return(false);
                }

                var oldStage = AppContext.EXP_ExpertiseStage.FirstOrDefault(es => es.IsHistory == false &&
                                                                            es.DeclarationId == declarationId && es.StageId == nextStageId);
                var dosageIds = AppContext.EXP_DrugDosage.Where(e => e.DrugDeclarationId == declarationId)
                                .Select(e => e.Id)
                                .ToList();

                if (oldStage != null)
                {
                    var newStage = new EXP_ExpertiseStage()
                    {
                        Id            = Guid.NewGuid(),
                        DeclarationId = declarationId,
                        StageId       = nextStageId,
                        ParentStageId = oldStage?.Id,
                        StatusId      = stageStatusInRework.Id,
                        OtdIds        = oldStage.OtdIds
                    };
                    newStage.Executors = oldStage.Executors;
                    AppContext.EXP_ExpertiseStage.Add(newStage);

                    oldStage.IsHistory = true;

                    foreach (var dosageId in dosageIds)
                    {
                        var newDosageStage = new EXP_ExpertiseStageDosage()
                        {
                            Id                 = Guid.NewGuid(),
                            DosageId           = dosageId,
                            EXP_ExpertiseStage = newStage
                        };
                        newStage.EXP_ExpertiseStageDosage.Add(newDosageStage);

                        switch (oldStage.EXP_DIC_Stage.Code)
                        {
                        case EXP_DIC_Stage.PharmacologicalExp:
                            var oldpcolFinalDoc = AppContext.EXP_ExpertisePharmacologicalFinalDoc.FirstOrDefault(
                                pc =>
                                pc.EXP_ExpertiseStageDosage.DosageId == dosageId &&
                                pc.EXP_ExpertiseStageDosage.StageId == oldStage.Id);
                            if (oldpcolFinalDoc != null)
                            {
                                var newpcolFinalDoc = new EXP_ExpertisePharmacologicalFinalDoc(oldpcolFinalDoc);
                                newpcolFinalDoc.DosageStageId            = newDosageStage.Id;
                                newpcolFinalDoc.EXP_ExpertiseStageDosage = newDosageStage;
                                newDosageStage.EXP_ExpertisePharmacologicalFinalDoc.Add(newpcolFinalDoc);
                            }
                            break;

                        case EXP_DIC_Stage.PharmaceuticalExp:
                            var oldpceuFinalDoc = AppContext.EXP_ExpertisePharmaceuticalFinalDoc.FirstOrDefault(
                                pc =>
                                pc.EXP_ExpertiseStageDosage.DosageId == dosageId &&
                                pc.EXP_ExpertiseStageDosage.StageId == oldStage.Id);
                            if (oldpceuFinalDoc != null)
                            {
                                var newpceulFinalDoc = new EXP_ExpertisePharmaceuticalFinalDoc(oldpceuFinalDoc);
                                newpceulFinalDoc.DosageStageId            = newDosageStage.Id;
                                newpceulFinalDoc.EXP_ExpertiseStageDosage = newDosageStage;
                                newDosageStage.EXP_ExpertisePharmaceuticalFinalDoc.Add(newpceulFinalDoc);
                            }
                            break;
                        }
                    }
                    AppContext.EXP_ExpertiseStage.Add(newStage);
                }
            }
            AppContext.SaveChanges();
            return(true);
        }
Exemplo n.º 3
0
        private EXP_ExpertiseSafetyreportFinalDoc CreateExpertiseSafetyreportFinalDoc(EXP_ExpertiseStageDosage model)
        {
            EXP_DIC_Type type     = null;
            bool         termless = false;
            IEnumerable <EXP_ExpertiseStage> stages = new List <EXP_ExpertiseStage>();

            if (model.EXP_DrugDosage?.EXP_DrugDeclaration != null)
            {
                type = model.EXP_DrugDosage?.EXP_DrugDeclaration.EXP_DIC_Type;
                // EXP_DIC_PrimaryKind
                termless = model.EXP_DrugDosage?.EXP_DrugDeclaration.EXP_DrugPrimaryKind.FirstOrDefault(dpk => dpk.PrimaryKindId == 7) == null;
                stages   = model.EXP_DrugDosage?.EXP_DrugDeclaration.EXP_ExpertiseStage
                           .Where(es => !es.IsHistory).ToList();
                // && (es.EXP_DIC_StageStatus.Code == EXP_DIC_StageStatus.Completed|| es.EXP_DIC_StageStatus.Code == EXP_DIC_StageStatus.InWork)
            }
            // Первичная
            var    expExpertiseStage = stages.FirstOrDefault(s => s.EXP_DIC_Stage.Code == CodeConstManager.STAGE_PRIMARY.ToString());
            string primaryResult     = string.Empty;

            if (expExpertiseStage?.EXP_DIC_StageResult != null)
            {
                primaryResult = GetStageText(expExpertiseStage, type);
            }

            // Фармацевтика
            expExpertiseStage = stages.FirstOrDefault(s => s.EXP_DIC_Stage.Code == CodeConstManager.STAGE_PHARMACEUTICAL.ToString());
            string pharmaceuticalResult = string.Empty;

            if (expExpertiseStage?.EXP_DIC_StageResult != null)
            {
                pharmaceuticalResult = GetStageText(expExpertiseStage, type);
            }

            // Фармакология
            expExpertiseStage = stages.FirstOrDefault(s => s.EXP_DIC_Stage.Code == CodeConstManager.STAGE_PHARMACOLOGICAL.ToString());
            string pharmacologicalResult = string.Empty;

            if (expExpertiseStage?.EXP_DIC_StageResult != null)
            {
                pharmacologicalResult = GetStageText(expExpertiseStage, type);
            }

            // Иследовательский центр
            expExpertiseStage = stages.FirstOrDefault(s => s.EXP_DIC_Stage.Code == CodeConstManager.STAGE_ANALITIC.ToString());
            string analiticResult = string.Empty;

            if (expExpertiseStage?.EXP_DIC_StageResult != null)
            {
                analiticResult = GetStageText(expExpertiseStage, type);
            }

            // ЗОБ
            expExpertiseStage = stages.FirstOrDefault(s => s.EXP_DIC_Stage.Code == CodeConstManager.STAGE_SAFETYREPORT.ToString());
            string conclusion   = string.Empty;
            string conclusionKz = string.Empty;

            //if (expExpertiseStage?.EXP_DIC_StageResult != null)
            if (model?.EXP_DIC_StageResult != null && expExpertiseStage != null)
            {
                // этап
                expExpertiseStage.EXP_DIC_StageResult = model?.EXP_DIC_StageResult;
                conclusion   = GetStageText(expExpertiseStage, type);
                conclusionKz = GetStageText(expExpertiseStage, type, termless, true);
            }

            return(new EXP_ExpertiseSafetyreportFinalDoc()
            {
                Id = Guid.NewGuid(),
                PrimaryConclusion = primaryResult,
                PrimaryConclusionKz = primaryResult,
                PharmaceuticalConclusion = pharmaceuticalResult,
                PharmaceuticalConclusionKz = pharmaceuticalResult,
                PharmacologicalConclusion = pharmacologicalResult,
                PharmacologicalConclusionKz = pharmacologicalResult,
                AnalyticalConclusion = analiticResult,
                AnalyticalConclusionKz = analiticResult,
                Conclusion = conclusion,
                ConclusionKz = conclusionKz,
                DosageStageId = model.Id
            });
        }
Exemplo n.º 4
0
        private bool ToNextStage(EXP_DrugDeclaration declaration, Guid?fromStageId, int[] nextStageIds, out string resultDescription)
        {
            resultDescription = null;
            string[] activeStageCodes = { EXP_DIC_StageStatus.New, EXP_DIC_StageStatus.InWork, EXP_DIC_StageStatus.InReWork };
            var      currentStage     = fromStageId != null?AppContext.EXP_ExpertiseStage.FirstOrDefault(e => e.Id == fromStageId)
                                            : AppContext.EXP_ExpertiseStage.FirstOrDefault(e => e.DeclarationId == declaration.Id && activeStageCodes.Contains(e.EXP_DIC_StageStatus.Code));

            var dosageIds = AppContext.EXP_DrugDosage.Where(e => e.DrugDeclarationId == declaration.Id)
                            .Select(e => e.Id)
                            .ToList();
            var stageStatusNew    = GetStageStatusByCode(EXP_DIC_StageStatus.New);
            var stageStatusRework = GetStageStatusByCode(EXP_DIC_StageStatus.InReWork);

            //закрываем предыдущий этап
            if (currentStage != null)
            {
                currentStage.StatusId    = GetStageStatusByCode(EXP_DIC_StageStatus.Completed).Id;
                currentStage.FactEndDate = DateTime.Now;
            }
            foreach (var nextStageId in nextStageIds)
            {
                if (!CanSendToStep(declaration.Id, fromStageId, nextStageId, out resultDescription))
                {
                    return(false);
                }
                //если имеется уже выполняющийся этап то продолжаем его дальше
                if (AppContext.EXP_ExpertiseStage.Any(e => e.DeclarationId == declaration.Id &&
                                                      e.StageId == nextStageId && e.EXP_DIC_StageStatus.Code != EXP_DIC_StageStatus.Completed && !e.IsHistory))
                {
                    continue;
                }
                var oldStage = AppContext.EXP_ExpertiseStage.FirstOrDefault(es => es.IsHistory == false &&
                                                                            es.DeclarationId == declaration.Id && es.StageId == nextStageId);
                if (oldStage == null)
                {
                    var daysOnStage = GetExpStageDaysOnExecution(declaration.TypeId, nextStageId);
                    var startDate   = DateTime.Now;
                    var newStage    = new EXP_ExpertiseStage()
                    {
                        Id            = Guid.NewGuid(),
                        DeclarationId = declaration.Id,
                        StageId       = nextStageId,
                        ParentStageId = currentStage != null ? (Guid?)currentStage.Id : null,
                        StatusId      = stageStatusNew.Id,
                        StartDate     = startDate,
                        EndDate       = daysOnStage != null ? (DateTime?)startDate.AddDays(daysOnStage.Value) : null
                    };
                    //todo брать руководителя цоз из настроек
                    newStage.Executors.Add(GetExecutorByDicStageId(nextStageId));
                    foreach (var dosageId in dosageIds)
                    {
                        newStage.EXP_ExpertiseStageDosage.Add(new EXP_ExpertiseStageDosage()
                        {
                            Id                 = Guid.NewGuid(),
                            DosageId           = dosageId,
                            EXP_ExpertiseStage = newStage
                        });
                    }
                    AppContext.EXP_ExpertiseStage.Add(newStage);
                }
                else
                {
                    var reworkStage = new EXP_ExpertiseStage()
                    {
                        Id            = Guid.NewGuid(),
                        DeclarationId = declaration.Id,
                        StageId       = nextStageId,
                        ParentStageId = currentStage != null ? (Guid?)currentStage.Id : null,
                        StatusId      = stageStatusRework.Id,
                        StartDate     = oldStage.StartDate,
                        EndDate       = oldStage.EndDate,
                        OtdIds        = oldStage.OtdIds,
                        OtdRemarks    = oldStage.OtdRemarks
                    };
                    reworkStage.Executors.AddRange(oldStage.Executors);
                    foreach (var dossageStage in oldStage.EXP_ExpertiseStageDosage)
                    {
                        var reworkDosage = new EXP_ExpertiseStageDosage()
                        {
                            Id                 = Guid.NewGuid(),
                            DosageId           = dossageStage.DosageId,
                            EXP_ExpertiseStage = reworkStage
                        };
                        foreach (var primaryFinalDoc in dossageStage.PrimaryFinalDocs)
                        {
                            var docClone = new EXP_ExpertisePrimaryFinalDoc(primaryFinalDoc);
                            docClone.Id = Guid.NewGuid();
                            docClone.EXP_ExpertiseStageDosage = reworkDosage;
                            docClone.DosageStageId            = reworkStage.Id;
                            reworkDosage.PrimaryFinalDocs.Add(docClone);
                        }
                        foreach (var pharmaceuticalFinalDoc in dossageStage.EXP_ExpertisePharmaceuticalFinalDoc)
                        {
                            var docClone = new EXP_ExpertisePharmaceuticalFinalDoc(pharmaceuticalFinalDoc);
                            docClone.Id = Guid.NewGuid();
                            docClone.EXP_ExpertiseStageDosage = reworkDosage;
                            docClone.DosageStageId            = reworkStage.Id;
                            reworkDosage.EXP_ExpertisePharmaceuticalFinalDoc.Add(docClone);
                        }
                        foreach (var pharmacologicalFinalDoc in dossageStage.EXP_ExpertisePharmacologicalFinalDoc)
                        {
                            var docClone = new EXP_ExpertisePharmacologicalFinalDoc(pharmacologicalFinalDoc);
                            docClone.Id = Guid.NewGuid();
                            docClone.EXP_ExpertiseStageDosage = reworkDosage;
                            docClone.DosageStageId            = reworkStage.Id;
                            reworkDosage.EXP_ExpertisePharmacologicalFinalDoc.Add(docClone);
                        }
                        foreach (var safetyreportFinalDoc in dossageStage.EXP_ExpertiseSafetyreportFinalDoc)
                        {
                            var docClone = new EXP_ExpertiseSafetyreportFinalDoc(safetyreportFinalDoc);
                            docClone.Id = Guid.NewGuid();
                            docClone.EXP_ExpertiseStageDosage = reworkDosage;
                            docClone.DosageStageId            = reworkStage.Id;
                            reworkDosage.EXP_ExpertiseSafetyreportFinalDoc.Add(docClone);
                        }
                        foreach (var analiseIndicator in dossageStage.EXP_DrugAnaliseIndicator)
                        {
                            var docClone = new EXP_DrugAnaliseIndicator(analiseIndicator);
                            docClone.Id = Guid.NewGuid();
                            docClone.EXP_ExpertiseStageDosage = reworkDosage;
                            docClone.DosageStageId            = reworkStage.Id;
                            reworkDosage.EXP_DrugAnaliseIndicator.Add(docClone);
                        }
                        reworkStage.EXP_ExpertiseStageDosage.Add(reworkDosage);
                    }
                    AppContext.EXP_ExpertiseStage.Add(reworkStage);
                    oldStage.IsHistory = true;
                }
            }
            AppContext.SaveChanges();
            return(true);
        }