protected void InitializeProperties() { Int64 serviceId = 0; if ((MercuryApplication != null) && (!IsPostBack)) { if (Request.QueryString["ServiceId"] != null) { serviceId = Int64.Parse(Request.QueryString["ServiceId"]); } if (serviceId != 0) { serviceSingleton = MercuryApplication.MedicalServiceSingletonGet(serviceId); if (serviceSingleton == null) { serviceSingleton = new Mercury.Client.Core.MedicalServices.ServiceSingleton(MercuryApplication); } Page.Title = "Service Singleton - " + serviceSingleton.Name; } else { serviceSingleton = new Mercury.Client.Core.MedicalServices.ServiceSingleton(MercuryApplication); } InitializeGeneralPage(); InitializeDefinitionPage(); InitializeDefinitionGrid(); Session[SessionCachePrefix + "ServiceSingleton"] = serviceSingleton; Session[SessionCachePrefix + "ServiceSingletonUnmodified"] = serviceSingleton.Copy(); } else // Postback { serviceSingleton = (Mercury.Client.Core.MedicalServices.ServiceSingleton)Session[SessionCachePrefix + "ServiceSingleton"]; } ApplySecurity(); return; }
protected void ButtonImport_OnClick(Object sender, EventArgs eventArgs) { System.Data.DataView sortedNdcView = new DataView(ndcImportTable); // sortedNdcView.Sort = "category, ndc_code"; // 2009 sortedNdcView.Sort = "[Category], [NDC Code]"; // 2011 Boolean allowOverwrite = false; Boolean allowMerge = true; Boolean processNdc = false; Boolean serviceProcess = true; String currentServiceName = String.Empty; Client.Core.MedicalServices.ServiceSingleton currentSingleton = null; Client.Core.MedicalServices.Definitions.ServiceSingletonDefinition currentSingletonDefinition = null; System.Data.DataTable importResultsTable = new DataTable(); importResultsTable.Columns.Add("ObjectType"); importResultsTable.Columns.Add("ObjectName"); importResultsTable.Columns.Add("Success"); importResultsTable.Columns.Add("Exception"); importResultsTable.Columns.Add("Id"); foreach (System.Data.DataRow currentRow in sortedNdcView.ToTable().Rows) { String categoryName = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(currentRow["category"].ToString()); categoryName = categoryName.Replace("\"", ""); String serviceName = "Medication - " + categoryName; if (currentServiceName != serviceName) { #region New Services based on Change in Medication Name if (currentSingleton != null) { #region If Working on Previous Service, Save before Continuing if (currentSingletonDefinition != null) { if (!String.IsNullOrEmpty(currentSingletonDefinition.NdcCodeCriteria)) { currentSingletonDefinition.NdcCodeCriteria = currentSingletonDefinition.NdcCodeCriteria.Replace("}{", ", "); currentSingletonDefinition.NdcCodeCriteria = currentSingletonDefinition.NdcCodeCriteria.Replace("{", ""); currentSingletonDefinition.NdcCodeCriteria = currentSingletonDefinition.NdcCodeCriteria.Replace("}", ""); currentSingletonDefinition.NdcCodeCriteria.Trim(); if (!String.IsNullOrWhiteSpace(currentSingletonDefinition.NdcCodeCriteria)) { currentSingleton.Definitions.Add(currentSingletonDefinition); } } } Mercury.Server.Application.ObjectSaveResponse saveResponse = application.MedicalServiceSave(currentSingleton); importResultsTable.Rows.Add( "Singleton", currentSingleton.Name, saveResponse.Success, (saveResponse.HasException) ? saveResponse.Exception.Message : String.Empty, saveResponse.Id ); #endregion } serviceProcess = true; currentServiceName = serviceName; currentSingleton = application.MedicalServiceSingletonGet(application.MedicalServiceGetIdByName(currentServiceName)); if (currentSingleton == null) { serviceProcess = true; currentSingleton = new Mercury.Client.Core.MedicalServices.ServiceSingleton(application); currentSingleton.Name = currentServiceName; currentSingleton.Description = currentServiceName; currentSingleton.ServiceType = Mercury.Server.Application.MedicalServiceType.Singleton; currentSingleton.ServiceClassification = Mercury.Server.Application.ServiceClassification.Medication; } else { serviceProcess = allowOverwrite || allowMerge; if (allowOverwrite) { foreach (Client.Core.MedicalServices.Definitions.ServiceSingletonDefinition currentDefinition in currentSingleton.Definitions) { currentDefinition.Enabled = false; } } } currentSingletonDefinition = null; #endregion } if (currentSingletonDefinition != null) { #region Current Definition Exists for Appending, check Length for cutoff if (currentSingletonDefinition.NdcCodeCriteria.Length > 800) { currentSingletonDefinition.NdcCodeCriteria = currentSingletonDefinition.NdcCodeCriteria.Replace("}{", ", "); currentSingletonDefinition.NdcCodeCriteria = currentSingletonDefinition.NdcCodeCriteria.Replace("{", ""); currentSingletonDefinition.NdcCodeCriteria = currentSingletonDefinition.NdcCodeCriteria.Replace("}", ""); currentSingletonDefinition.NdcCodeCriteria.Trim(); if (!String.IsNullOrWhiteSpace(currentSingletonDefinition.NdcCodeCriteria)) { currentSingleton.Definitions.Add(currentSingletonDefinition); } currentSingletonDefinition = null; } #endregion } if (currentSingletonDefinition == null) // MUST REMAIN AS ITS OWN VALIDATION SINCE A CUTOFF WILL SET CURRENT BACK TO NULL { #region No Current Definition to Append To, Create New Definition currentSingletonDefinition = new Client.Core.MedicalServices.Definitions.ServiceSingletonDefinition(MercuryApplication); currentSingletonDefinition.DataSourceType = Mercury.Server.Application.ServiceDataSourceType.Pharmacy; #endregion } if (serviceProcess) { // VALIDATE THAT THE SINGLETON DOES NOT ALREADY CONTAIN THE NDC IN ANOTHER DEFINITION if (!currentSingleton.ContainsNdc(currentRow["NDC Code"].ToString().Trim())) { // 2009: currentSingletonDefinition.NdcCodeCriteria = currentSingletonDefinition.NdcCodeCriteria + "{" + (currentRow["ndc_code"].ToString ().Trim ()) + "}"; currentSingletonDefinition.NdcCodeCriteria = currentSingletonDefinition.NdcCodeCriteria + "{" + (currentRow["NDC Code"].ToString().Trim()) + "}"; // 2011 } } } if ((currentSingleton != null) && (currentSingletonDefinition != null)) { #region SAVE ANY LEFT OVER SERVICE AND DEFINITION FROM LOOP currentSingletonDefinition.NdcCodeCriteria = currentSingletonDefinition.NdcCodeCriteria.Replace("}{", ", "); currentSingletonDefinition.NdcCodeCriteria = currentSingletonDefinition.NdcCodeCriteria.Replace("{", ""); currentSingletonDefinition.NdcCodeCriteria = currentSingletonDefinition.NdcCodeCriteria.Replace("}", ""); currentSingletonDefinition.NdcCodeCriteria.Trim(); if (!String.IsNullOrWhiteSpace(currentSingletonDefinition.NdcCodeCriteria)) { currentSingleton.Definitions.Add(currentSingletonDefinition); } Mercury.Server.Application.ObjectSaveResponse saveResponse = application.MedicalServiceSave(currentSingleton); importResultsTable.Rows.Add( "Singleton", currentSingleton.Name, saveResponse.Success, (saveResponse.HasException) ? saveResponse.Exception.Message : String.Empty, saveResponse.Id ); #endregion } System.Data.DataView importResultsView = new DataView(importResultsTable); importResultsView.Sort = "ObjectType, ObjectName"; ImportResultsGrid.DataSource = importResultsView; ImportResultsGrid.Rebind(); ButtonImport.Visible = false; return; }
protected Boolean ApplyChanges() { Boolean success = false; Boolean isModified = false; Boolean isValid = false; Dictionary <String, String> validationResponse; if (MercuryApplication == null) { return(false); } Mercury.Client.Core.MedicalServices.ServiceSingleton serviceSingletonUnmodified = (Mercury.Client.Core.MedicalServices.ServiceSingleton)Session [SessionCachePrefix + "ServiceSingletonUnmodified"]; Mercury.Server.Application.ObjectSaveResponse saveResponse; serviceSingleton.Name = SingletonName.Text; serviceSingleton.Description = SingletonDescription.Text; serviceSingleton.ServiceType = Mercury.Server.Application.MedicalServiceType.Singleton; serviceSingleton.ServiceClassification = (Mercury.Server.Application.ServiceClassification)Int32.Parse(SingletonClassification.SelectedValue); serviceSingleton.Enabled = SingletonEnabled.Checked; serviceSingleton.Visible = SingletonVisible.Checked; if (SingletonLastPaidDate.SelectedDate.HasValue) { serviceSingleton.LastPaidDate = SingletonLastPaidDate.SelectedDate.Value; } else { serviceSingleton.LastPaidDate = new DateTime(1900, 01, 01); } if (serviceSingletonUnmodified.Id == 0) { isModified = true; } if (!isModified) { isModified = !serviceSingleton.IsEqual(serviceSingletonUnmodified); } validationResponse = serviceSingleton.Validate(); isValid = (validationResponse.Count == 0); if ((isModified) && (isValid)) { if (!MercuryApplication.HasEnvironmentPermission(ManagePermission)) { SaveResponseLabel.Text = "Permission Denied."; return(false); } saveResponse = MercuryApplication.MedicalServiceSave(serviceSingleton); success = saveResponse.Success; if (success) { serviceSingleton = MercuryApplication.MedicalServiceSingletonGet(saveResponse.Id); Session[SessionCachePrefix + "ServiceSingleton"] = serviceSingleton; Session[SessionCachePrefix + "ServiceSingletonUnmodified"] = serviceSingleton.Copy(); SaveResponseLabel.Text = "Save Successful."; InitializeGeneralPage(); InitializeDefinitionGrid(); } else { SaveResponseLabel.Text = "Unable to Save."; if (MercuryApplication.LastException != null) { SaveResponseLabel.Text = SaveResponseLabel.Text + " [" + MercuryApplication.LastException.Message + "]"; } success = false; } } else if (!isModified) { SaveResponseLabel.Text = "No Changes Detected."; success = true; } else if (!isValid) { foreach (String validationKey in validationResponse.Keys) { SaveResponseLabel.Text = "Invalid [" + validationKey + "]: " + validationResponse[validationKey]; break; } success = false; } return(success); }