Example #1
0
        /// <summary>
        /// This method will check if the field is dirty after edit and will consider only those dirty fields for update - rest are ignored
        /// </summary>
        /// <param name="editedData"></param>
        /// <param name="orginalObj"></param>
        private async Task MergeOnlyModified(BulkFormularyEditModel editedData, BulkFormularyEditModel orginalObj, string currentFormularyVersionId)
        {
            string token = HttpContext.Session.GetString("access_token");

            var response = await TerminologyAPIService.GetFormularyDetailRuleBound(currentFormularyVersionId, token);

            var formulariesfromAPI = response.Data;

            await FillLookupsToViewBag(formulariesfromAPI.RecStatusCode);

            var modelFromDb = GetFormularyEditModel(formulariesfromAPI);

            IBulkEditMergeHandler mergeHandler = null;

            if (string.Compare(editedData.ProductType, "vtm", true) == 0)
            {
                mergeHandler = new VTMBulkEditMergeHandler();
            }
            else if (string.Compare(editedData.ProductType, "vmp", true) == 0)
            {
                mergeHandler = new VMPBulkEditMergeHandler();
            }
            else if (string.Compare(editedData.ProductType, "amp", true) == 0)
            {
                mergeHandler = new AMPBulkEditMergeHandler();
            }

            mergeHandler.Merge(editedData, orginalObj, modelFromDb);
        }
        public void Merge(BulkFormularyEditModel editedData, BulkFormularyEditModel orginalObj, FormularyEditModel modelFromDB)
        {
            editedData.FormularyIdentificationCodes = modelFromDB.FormularyIdentificationCodes;

            editedData.Prescribable = editedData.NullablePrescribable ?? modelFromDB.Prescribable;

            editedData.WitnessingRequired = editedData.NullableWitnessingRequired ?? modelFromDB.WitnessingRequired;

            editedData.Status = editedData.Status ?? modelFromDB.Status;

            editedData.RecStatuschangeMsg = editedData.RecStatuschangeMsg ?? modelFromDB.RecStatuschangeMsg;
        }
Example #3
0
        public async Task <IActionResult> GetProductTypeBulkEditPartial(string formularyVersionIds, string productType, string status)
        {
            var formularyVersionIdList = JsonConvert.DeserializeObject <List <string> >(formularyVersionIds);

            var editPartial = GetFormularyEditViewForBulkEdit(productType);

            var vm = new BulkFormularyEditModel
            {
                FormularyVersionIds = formularyVersionIdList,
                ProductType         = productType,
                ControlIdentifier   = "Edit_Formulary",
                IsBulkEdit          = true
            };

            vm.SerializedOriginalObj = JsonConvert.SerializeObject(vm);

            string statusCode = "";

            switch (status.ToLower())
            {
            case "draft":
                statusCode = "001";
                break;

            case "active":
                statusCode = "003";
                break;

            case "archived":
                statusCode = "004";
                break;

            case "inactive":
                statusCode = "005";
                break;

            case "deleted":
                statusCode = "006";
                break;

            case "ready for review":
                statusCode = "002";
                break;
            }

            await FillLookupsToViewBag(statusCode);

            return(PartialView(editPartial, vm));
        }
        public void Merge(BulkFormularyEditModel editedData, BulkFormularyEditModel orginalObj, FormularyEditModel modelFromDB)
        {
            editedData.FormularyIdentificationCodes = modelFromDB.FormularyIdentificationCodes;

            editedData.FormularyClassificationCodes = modelFromDB.FormularyClassificationCodes;

            if (!editedData.UnlicensedRoute.IsCollectionValid())
            {
                editedData.UnlicensedRoute = modelFromDB.UnlicensedRoute;
            }
            if (!editedData.UnlicensedUse.IsCollectionValid())
            {
                editedData.UnlicensedUse = modelFromDB.UnlicensedUse;
            }
            if (!editedData.LocalLicensedRoute.IsCollectionValid())
            {
                editedData.LocalLicensedRoute = modelFromDB.LocalLicensedRoute;
            }
            if (!editedData.LocalUnlicensedRoute.IsCollectionValid())
            {
                editedData.LocalUnlicensedRoute = modelFromDB.LocalUnlicensedRoute;
            }
            if (!editedData.LocalLicensedUse.IsCollectionValid())
            {
                editedData.LocalLicensedUse = modelFromDB.LocalLicensedUse;
            }
            if (!editedData.LocalUnlicensedUse.IsCollectionValid())
            {
                editedData.LocalUnlicensedUse = modelFromDB.LocalUnlicensedUse;
            }
            if (editedData.RoundingFactorCd.IsEmpty())
            {
                editedData.RoundingFactorCd = modelFromDB.RoundingFactorCd;
            }
            if (!editedData.CustomWarnings.IsCollectionValid())
            {
                editedData.CustomWarnings = modelFromDB.CustomWarnings;
            }
            if (!editedData.Reminders.IsCollectionValid())
            {
                editedData.Reminders = modelFromDB.Reminders;
            }
            if (!editedData.Endorsements.IsCollectionValid())
            {
                editedData.Endorsements = modelFromDB.Endorsements;
            }
            if (editedData.MedusaPreparationInstructionsEditable.IsEmpty())
            {
                if (modelFromDB.MedusaPreparationInstructions.IsCollectionValid())
                {
                    editedData.MedusaPreparationInstructionsEditable = modelFromDB.MedusaPreparationInstructions[0].Id;
                }
            }
            if (!editedData.SideEffects.IsCollectionValid())
            {
                editedData.SideEffects = modelFromDB.SideEffects;
            }
            if (!editedData.Cautions.IsCollectionValid())
            {
                editedData.Cautions = modelFromDB.Cautions;
            }
            editedData.ClinicalTrialMedication = editedData.NullableClinicalTrialMedication ?? modelFromDB.ClinicalTrialMedication;

            editedData.CriticalDrug = editedData.NullableCriticalDrug ?? modelFromDB.CriticalDrug;

            editedData.IVToOral = editedData.NullableIVToOral ?? modelFromDB.IVToOral;

            editedData.ExpensiveMedication = editedData.NullableExpensiveMedication ?? modelFromDB.ExpensiveMedication;

            editedData.HighAlertMedication = editedData.NullableHighAlertMedication ?? modelFromDB.HighAlertMedication;

            editedData.NotForPrn = editedData.NullableNotForPrn ?? modelFromDB.NotForPrn;

            editedData.Prescribable = editedData.NullablePrescribable ?? modelFromDB.Prescribable;

            editedData.OutpatientMedication = editedData.NullableOutpatientMedication ?? modelFromDB.OutpatientMedication;


            if (!editedData.TitrationTypes.IsCollectionValid())
            {
                editedData.TitrationTypes = modelFromDB.TitrationTypes;
            }
            if (orginalObj.RnohFormularyStatuscd == editedData.RnohFormularyStatuscd)
            {
                editedData.RnohFormularyStatuscd = modelFromDB.RnohFormularyStatuscd;
            }

            editedData.IgnoreDuplicateWarnings = editedData.NullableIgnoreDuplicateWarnings ?? modelFromDB.IgnoreDuplicateWarnings;

            editedData.WitnessingRequired = editedData.NullableWitnessingRequired ?? modelFromDB.WitnessingRequired;

            editedData.IsBloodProduct = editedData.NullableIsBloodProduct ?? modelFromDB.IsBloodProduct;

            editedData.IsDiluent = editedData.NullableIsDiluent ?? modelFromDB.IsDiluent;

            editedData.IsCustomControlledDrug = editedData.NullableIsCustomControlledDrug ?? modelFromDB.IsCustomControlledDrug;

            if (!editedData.Diluents.IsCollectionValid())
            {
                editedData.Diluents = modelFromDB.Diluents;
            }

            editedData.IsIndicationMandatory = editedData.NullableIsIndicationMandatory ?? modelFromDB.IsIndicationMandatory;

            editedData.IsGastroResistant = editedData.NullableIsGastroResistant ?? modelFromDB.IsGastroResistant;

            editedData.IsModifiedRelease = editedData.NullableIsModifiedRelease ?? modelFromDB.IsModifiedRelease;

            editedData.Status = editedData.Status ?? modelFromDB.Status;

            editedData.RecStatuschangeMsg = editedData.RecStatuschangeMsg ?? modelFromDB.RecStatuschangeMsg;
        }
Example #5
0
        public async Task <IActionResult> UpdateFormulary(FormularyEditModel editedData)
        {
            BulkFormularyEditModel bulkEditedData = null;

            string token = HttpContext.Session.GetString("access_token");

            var partialView = GetFormularyEditView(editedData.ProductType);

            if (editedData.IsBulkEdit)
            {
                bulkEditedData = editedData as BulkFormularyEditModel;
                partialView    = GetFormularyEditViewForBulkEdit(editedData.ProductType);
            }


            if (!ModelState.IsValid)
            {
                await FillLookupsToViewBag(editedData.OriginalStatus);

                editedData.IsSaveSuccessful = false;
                return(PartialView(partialView, editedData));
            }

            var apiModels = new List <FormularyHeaderAPIModel>();

            var uniqueIds = editedData.FormularyVersionIds;

            foreach (var rec in uniqueIds)
            {
                FormularyHeaderAPIModel apiModel = null;

                if (editedData.IsBulkEdit)
                {
                    var orginalObj = JsonConvert.DeserializeObject <BulkFormularyEditModel>(bulkEditedData.SerializedOriginalObj);

                    var edDataDeserializedObj = _mapper.Map <BulkFormularyEditModel>(bulkEditedData);

                    await MergeOnlyModified(edDataDeserializedObj, orginalObj, rec);

                    apiModel = _mapper.Map <FormularyHeaderAPIModel>(edDataDeserializedObj);
                }
                else
                {
                    apiModel = _mapper.Map <FormularyHeaderAPIModel>(editedData);
                }

                apiModel.FormularyVersionId = rec;
                apiModel.RecStatusCode      = apiModel.RecStatusCode; //editedData.IsBulkEdit ? null : apiModel.RecStatusCode;//For bulk-edit mode - Record status is not editable
                apiModels.Add(apiModel);
            }

            TerminologyAPIResponse <UpdateFormularyAPIResponse> response = await TerminologyAPIService.UpdateFormulary(apiModels, token);

            if (response.StatusCode != DataService.APIModel.StatusCode.Success)
            {
                await FillLookupsToViewBag(editedData.OriginalStatus);

                _toastNotification.AddErrorToastMessage(string.Join('\n', response.ErrorMessages));

                editedData.IsSaveSuccessful = false;

                return(PartialView(partialView, editedData));
            }

            if (response.StatusCode == DataService.APIModel.StatusCode.Success)
            {
                if (response.Data.Status != null && response.Data.Status.ErrorMessages.IsCollectionValid())
                {
                    var errors = string.Join('\n', response.Data.Status.ErrorMessages);

                    _toastNotification.AddInfoToastMessage(errors);

                    await FillLookupsToViewBag(editedData.OriginalStatus);

                    editedData.IsSaveSuccessful = true;

                    return(PartialView(partialView, editedData));
                }
            }

            _toastNotification.AddSuccessToastMessage("Successfully Updated Formulary details");

            editedData.IsSaveSuccessful = true;

            return(Json(null));
        }
Example #6
0
 public async Task <IActionResult> UpdateBulkFormulary(BulkFormularyEditModel editedData)
 {
     return(await UpdateFormulary(editedData));
 }