/// <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; }
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; }
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)); }
public async Task <IActionResult> UpdateBulkFormulary(BulkFormularyEditModel editedData) { return(await UpdateFormulary(editedData)); }