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 void ButtonAddUpdateDefinition_OnClick(Object sender, EventArgs eventArgs) { Boolean hasValue = false; Client.Core.MedicalServices.Definitions.ServiceSingletonDefinition singletonDefinition = null; Dictionary <String, String> validationResponse; if (MercuryApplication == null) { Response.RedirectLocation = "/PermissionDenied.aspx"; } switch (ServiceTypeSelection.SelectedValue) { case "CustomCriteria": if (!String.IsNullOrEmpty(CriteriaCustomStoredProcedureName.Text)) { hasValue = true; } if (hasValue) { singletonDefinition = new Mercury.Client.Core.MedicalServices.Definitions.ServiceSingletonDefinition(); singletonDefinition.DataSourceType = Mercury.Server.Application.ServiceDataSourceType.Custom; singletonDefinition.CustomCriteria = CriteriaCustomStoredProcedureName.Text; } break; case "AllMedical": #region All Medical Definition if (CriteriaAllMedicalPrincipalDiagnosisCodes.Text.Length != 0) { hasValue = true; } if (CriteriaAllMedicalDiagnosisCodes.Text.Length != 0) { hasValue = true; } if (CriteriaAllMedicalProcedureCodes.Text.Length != 0) { hasValue = true; } if (CriteriaAllMedicalModifierCodes.Text.Length != 0) { hasValue = true; } if (CriteriaAllMedicalProviderSpecialties.Text.Length != 0) { hasValue = true; } if (CriteriaAllMedicalUseMemberAgeCriteria.Checked) { hasValue = true; } if (hasValue) { singletonDefinition = new Mercury.Client.Core.MedicalServices.Definitions.ServiceSingletonDefinition(); singletonDefinition.DataSourceType = Mercury.Server.Application.ServiceDataSourceType.AllMedical; singletonDefinition.EventDateOrder = (Mercury.Server.Application.EventDateOrder)(Int32.Parse(CriteriaAllMedicalEventDateOrder.SelectedValue)); singletonDefinition.PrincipalDiagnosisCriteria = CriteriaAllMedicalPrincipalDiagnosisCodes.Text; singletonDefinition.DiagnosisCriteria = CriteriaAllMedicalDiagnosisCodes.Text; singletonDefinition.ProcedureCodeCriteria = CriteriaAllMedicalProcedureCodes.Text; singletonDefinition.ModifierCodeCriteria = CriteriaAllMedicalModifierCodes.Text; singletonDefinition.ProviderSpecialtyCriteria = CriteriaAllMedicalProviderSpecialties.Text; singletonDefinition.IsPcpRequiredCriteria = Convert.ToBoolean(CriteriaAllMedicalPcpPerformedService.SelectedValue); singletonDefinition.UseMemberAgeCriteria = CriteriaAllMedicalUseMemberAgeCriteria.Checked; singletonDefinition.MemberAgeDateQualifier = (Mercury.Server.Application.DateQualifier)Convert.ToInt32(CriteriaAllMedicalMemberAgeDateQualifier.SelectedValue); singletonDefinition.MemberAgeMinimum = (CriteriaAllMedicalMemberAgeMinimum.Value.HasValue) ? Convert.ToInt32(CriteriaAllMedicalMemberAgeMinimum.Value.Value) : 0; singletonDefinition.MemberAgeMaximum = (CriteriaAllMedicalMemberAgeMaximum.Value.HasValue) ? Convert.ToInt32(CriteriaAllMedicalMemberAgeMaximum.Value.Value) : 0; } #endregion break; case "Professional": #region Professional Definition if (CriteriaProfessionalPrincipalDiagnosisCodes.Text.Length != 0) { hasValue = true; } if (CriteriaProfessionalDiagnosisCodes.Text.Length != 0) { hasValue = true; } if (CriteriaProfessionalServiceLocations.Text.Length != 0) { hasValue = true; } if (CriteriaProfessionalProcedureCodes.Text.Length != 0) { hasValue = true; } if (CriteriaProfessionalModifierCodes.Text.Length != 0) { hasValue = true; } if (CriteriaProfessionalProviderSpecialties.Text.Length != 0) { hasValue = true; } if (CriteriaProfessionalUseMemberAgeCriteria.Checked) { hasValue = true; } if (hasValue) { singletonDefinition = new Mercury.Client.Core.MedicalServices.Definitions.ServiceSingletonDefinition(); singletonDefinition.DataSourceType = Mercury.Server.Application.ServiceDataSourceType.Professional; singletonDefinition.EventDateOrder = (Mercury.Server.Application.EventDateOrder)(Int32.Parse(CriteriaProfessionalEventDateOrder.SelectedValue)); singletonDefinition.PrincipalDiagnosisCriteria = CriteriaProfessionalPrincipalDiagnosisCodes.Text; singletonDefinition.DiagnosisCriteria = CriteriaProfessionalDiagnosisCodes.Text; singletonDefinition.LocationCodeCriteria = CriteriaProfessionalServiceLocations.Text; singletonDefinition.ProcedureCodeCriteria = CriteriaProfessionalProcedureCodes.Text; singletonDefinition.ModifierCodeCriteria = CriteriaProfessionalModifierCodes.Text; singletonDefinition.ProviderSpecialtyCriteria = CriteriaProfessionalProviderSpecialties.Text; singletonDefinition.IsPcpRequiredCriteria = Convert.ToBoolean(CriteriaProfessionalPcpPerformedService.SelectedValue); singletonDefinition.UseMemberAgeCriteria = CriteriaProfessionalUseMemberAgeCriteria.Checked; singletonDefinition.MemberAgeDateQualifier = (Mercury.Server.Application.DateQualifier)Convert.ToInt32(CriteriaProfessionalMemberAgeDateQualifier.SelectedValue); singletonDefinition.MemberAgeMinimum = (CriteriaProfessionalMemberAgeMinimum.Value.HasValue) ? Convert.ToInt32(CriteriaProfessionalMemberAgeMinimum.Value.Value) : 0; singletonDefinition.MemberAgeMaximum = (CriteriaProfessionalMemberAgeMaximum.Value.HasValue) ? Convert.ToInt32(CriteriaProfessionalMemberAgeMaximum.Value.Value) : 0; } #endregion break; case "Institutional": #region Institutional Definition if (CriteriaInstitutionalPrincipalDiagnosisCodes.Text.Length != 0) { hasValue = true; } if (CriteriaInstitutionalDiagnosisCodes.Text.Length != 0) { hasValue = true; } if (CriteriaInstitutionalDrgCodes.Text.Length != 0) { hasValue = true; } if (CriteriaInstitutionalIcd9Codes.Text.Length != 0) { hasValue = true; } if (CriteriaInstitutionalBillTypes.Text.Length != 0) { hasValue = true; } if (CriteriaInstitutionalRevenueCodes.Text.Length != 0) { hasValue = true; } if (CriteriaInstitutionalProcedureCodes.Text.Length != 0) { hasValue = true; } if (CriteriaInstitutionalModifierCodes.Text.Length != 0) { hasValue = true; } if (CriteriaInstitutionalProviderSpecialties.Text.Length != 0) { hasValue = true; } if (CriteriaInstitutionalUseMemberAgeCriteria.Checked) { hasValue = true; } if (hasValue) { singletonDefinition = new Mercury.Client.Core.MedicalServices.Definitions.ServiceSingletonDefinition(); singletonDefinition.DataSourceType = Mercury.Server.Application.ServiceDataSourceType.Institutional; singletonDefinition.EventDateOrder = (Mercury.Server.Application.EventDateOrder)(Int32.Parse(CriteriaInstitutionalEventDateOrder.SelectedValue)); singletonDefinition.PrincipalDiagnosisCriteria = CriteriaInstitutionalPrincipalDiagnosisCodes.Text; singletonDefinition.DiagnosisCriteria = CriteriaInstitutionalDiagnosisCodes.Text; singletonDefinition.DrgCriteria = CriteriaInstitutionalDrgCodes.Text; singletonDefinition.Icd9ProcedureCodeCriteria = CriteriaInstitutionalIcd9Codes.Text; singletonDefinition.BillTypeCriteria = CriteriaInstitutionalBillTypes.Text; singletonDefinition.RevenueCodeCriteria = CriteriaInstitutionalRevenueCodes.Text; singletonDefinition.ProcedureCodeCriteria = CriteriaInstitutionalProcedureCodes.Text; singletonDefinition.ModifierCodeCriteria = CriteriaInstitutionalModifierCodes.Text; singletonDefinition.ProviderSpecialtyCriteria = CriteriaInstitutionalProviderSpecialties.Text; singletonDefinition.UseMemberAgeCriteria = CriteriaInstitutionalUseMemberAgeCriteria.Checked; singletonDefinition.MemberAgeDateQualifier = (Mercury.Server.Application.DateQualifier)Convert.ToInt32(CriteriaInstitutionalMemberAgeDateQualifier.SelectedValue); singletonDefinition.MemberAgeMinimum = (CriteriaInstitutionalMemberAgeMinimum.Value.HasValue) ? Convert.ToInt32(CriteriaInstitutionalMemberAgeMinimum.Value.Value) : 0; singletonDefinition.MemberAgeMaximum = (CriteriaInstitutionalMemberAgeMaximum.Value.HasValue) ? Convert.ToInt32(CriteriaInstitutionalMemberAgeMaximum.Value.Value) : 0; } #endregion break; case "Pharmacy": #region Pharmacy Definition if (CriteriaPharmacyNdcCodes.Text.Length != 0) { hasValue = true; } if (CriteriaPharmacyDrugNames.Text.Length != 0) { hasValue = true; } if (CriteriaPharmacyDeaClassifications.Text.Length != 0) { hasValue = true; } if (CriteriaPharmacyTherapeuticClassifications.Text.Length != 0) { hasValue = true; } if (hasValue) { singletonDefinition = new Mercury.Client.Core.MedicalServices.Definitions.ServiceSingletonDefinition(); singletonDefinition.DataSourceType = Mercury.Server.Application.ServiceDataSourceType.Pharmacy; singletonDefinition.EventDateOrder = Mercury.Server.Application.EventDateOrder.ServiceClaimFromDate; singletonDefinition.NdcCodeCriteria = CriteriaPharmacyNdcCodes.Text; singletonDefinition.DrugNameCriteria = CriteriaPharmacyDrugNames.Text; singletonDefinition.DeaClassificationCriteria = CriteriaPharmacyDeaClassifications.Text; singletonDefinition.TherapeuticClassificationCriteria = CriteriaPharmacyTherapeuticClassifications.Text; } #endregion break; case "Lab": #region Lab Definition if (CriteriaLabLoincCodes.Text.Length != 0) { hasValue = true; } if (hasValue) { singletonDefinition = new Mercury.Client.Core.MedicalServices.Definitions.ServiceSingletonDefinition(); singletonDefinition.DataSourceType = Mercury.Server.Application.ServiceDataSourceType.Lab; singletonDefinition.EventDateOrder = Mercury.Server.Application.EventDateOrder.ServiceClaimFromDate; singletonDefinition.LabLoincCodeCriteria = CriteriaLabLoincCodes.Text; singletonDefinition.LabValueExpressionCriteria = CriteriaLabValueExpressions.Text; singletonDefinition.LabMetricId = Convert.ToInt64(CriteriaLabMetricSelection.SelectedValue); } #endregion break; } // switch if (singletonDefinition != null) { validationResponse = MercuryApplication.MedicalServiceSingletonDefinitionValidate(singletonDefinition); if (validationResponse.Count == 0) { switch (((System.Web.UI.WebControls.Button)sender).ID) { case "ButtonAddDefinition": serviceSingleton.AddDefinition(singletonDefinition); break; case "ButtonUpdateDefinition": if (ServiceDefinitionGrid.SelectedItems.Count == 0) { serviceSingleton.AddDefinition(singletonDefinition); } else { singletonDefinition.ServiceSingletonDefinitionId = serviceSingleton.Definitions[ServiceDefinitionGrid.SelectedItems[0].DataSetIndex].Id; serviceSingleton.Definitions.RemoveAt(ServiceDefinitionGrid.SelectedItems[0].DataSetIndex); serviceSingleton.AddDefinition(singletonDefinition); break; } break; } SaveResponseLabel.Text = String.Empty; } else { foreach (String validationKey in validationResponse.Keys) { SaveResponseLabel.Text = "Invalid [" + validationKey + "]: " + validationResponse[validationKey]; break; } } } InitializeDefinitionGrid(); return; }