diff --git a/application/CohortManager/src/Functions/Shared/DataServices.Migrations/Migrations/20251203173828_AddPowerBIViews.Designer.cs b/application/CohortManager/src/Functions/Shared/DataServices.Migrations/Migrations/20251203173828_AddPowerBIViews.Designer.cs new file mode 100644 index 000000000..11f209126 --- /dev/null +++ b/application/CohortManager/src/Functions/Shared/DataServices.Migrations/Migrations/20251203173828_AddPowerBIViews.Designer.cs @@ -0,0 +1,1076 @@ +// +using System; +using DataServices.Database; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace DataServices.Migrations.Migrations +{ + [DbContext(typeof(DataServicesContext))] + [Migration("20251203173828_AddPowerBIViews")] + partial class AddPowerBIViews + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "9.0.2") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Model.BsSelectGpPractice", b => + { + b.Property("GpPracticeCode") + .HasColumnType("nvarchar(450)") + .HasColumnName("GP_PRACTICE_CODE"); + + b.Property("AuditCreatedTimeStamp") + .HasColumnType("datetime") + .HasColumnName("AUDIT_CREATED_TIMESTAMP"); + + b.Property("AuditId") + .HasColumnType("decimal(18,2)") + .HasColumnName("AUDIT_ID"); + + b.Property("AuditLastUpdatedTimeStamp") + .HasColumnType("datetime") + .HasColumnName("AUDIT_LAST_MODIFIED_TIMESTAMP"); + + b.Property("AuditText") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("AUDIT_TEXT"); + + b.Property("BsoCode") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("BSO"); + + b.Property("CountryCategory") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("COUNTRY_CATEGORY"); + + b.HasKey("GpPracticeCode"); + + b.ToTable("BS_SELECT_GP_PRACTICE_LKP", "dbo"); + }); + + modelBuilder.Entity("Model.BsSelectOutCode", b => + { + b.Property("Outcode") + .HasColumnType("nvarchar(450)") + .HasColumnName("OUTCODE"); + + b.Property("AuditCreatedTimeStamp") + .HasColumnType("datetime") + .HasColumnName("AUDIT_CREATED_TIMESTAMP"); + + b.Property("AuditId") + .HasColumnType("decimal(18,2)") + .HasColumnName("AUDIT_ID"); + + b.Property("AuditLastModifiedTimeStamp") + .HasColumnType("datetime") + .HasColumnName("AUDIT_LAST_MODIFIED_TIMESTAMP"); + + b.Property("AuditText") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("AUDIT_TEXT"); + + b.Property("BSO") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("BSO"); + + b.HasKey("Outcode"); + + b.ToTable("BS_SELECT_OUTCODE_MAPPING_LKP", "dbo"); + }); + + modelBuilder.Entity("Model.BsSelectRequestAudit", b => + { + b.Property("RequestId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasColumnName("REQUEST_ID"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime") + .HasColumnName("CREATED_DATETIME"); + + b.Property("StatusCode") + .IsRequired() + .HasMaxLength(3) + .HasColumnType("nvarchar(3)") + .HasColumnName("STATUS_CODE"); + + b.HasKey("RequestId"); + + b.ToTable("BS_SELECT_REQUEST_AUDIT", "dbo"); + }); + + modelBuilder.Entity("Model.BsoOrganisation", b => + { + b.Property("BsoOrganisationId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("BSO_ORGANISATION_ID"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("BsoOrganisationId")); + + b.Property("AddressLine1") + .HasMaxLength(35) + .HasColumnType("nvarchar(35)") + .HasColumnName("ADDRESS_LINE_1"); + + b.Property("AddressLine2") + .HasMaxLength(35) + .HasColumnType("nvarchar(35)") + .HasColumnName("ADDRESS_LINE_2"); + + b.Property("AddressLine3") + .HasMaxLength(35) + .HasColumnType("nvarchar(35)") + .HasColumnName("ADDRESS_LINE_3"); + + b.Property("AddressLine4") + .HasMaxLength(35) + .HasColumnType("nvarchar(35)") + .HasColumnName("ADDRESS_LINE_4"); + + b.Property("AddressLine5") + .HasMaxLength(35) + .HasColumnType("nvarchar(35)") + .HasColumnName("ADDRESS_LINE_5"); + + b.Property("AdminEmailAddress") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)") + .HasColumnName("ADMIN_EMAIL_ADDRESS"); + + b.Property("AutoBatchLastRun") + .HasColumnType("datetime2") + .HasColumnName("AUTO_BATCH_LAST_RUN"); + + b.Property("AutoBatchMaxDateTimeProcessed") + .HasColumnType("datetime2") + .HasColumnName("AUTO_BATCH_MAX_DATE_TIME_PROCESSED"); + + b.Property("BsoOrganisationCode") + .IsRequired() + .HasMaxLength(4) + .HasColumnType("nvarchar(4)") + .HasColumnName("BSO_ORGANISATION_CODE"); + + b.Property("BsoOrganisationName") + .IsRequired() + .HasMaxLength(60) + .HasColumnType("nvarchar(60)") + .HasColumnName("BSO_ORGANISATION_NAME"); + + b.Property("BsoRecallInterval") + .HasColumnType("tinyint") + .HasColumnName("BSO_RECALL_INTERVAL"); + + b.Property("BsoRegionId") + .HasColumnType("int") + .HasColumnName("BSO_REGION_ID"); + + b.Property("EmailAddress") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)") + .HasColumnName("EMAIL_ADDRESS"); + + b.Property("Extension") + .HasMaxLength(35) + .HasColumnType("nvarchar(35)") + .HasColumnName("EXTENSION"); + + b.Property("FailSafeDateOfMonth") + .HasColumnType("tinyint") + .HasColumnName("FAILSAFE_DATE_OF_MONTH"); + + b.Property("FailSafeLastRun") + .HasColumnType("datetime2") + .HasColumnName("FAILSAFE_LAST_RUN"); + + b.Property("FailSafeMaxAgeMonths") + .HasColumnType("tinyint") + .HasColumnName("FAILSAFE_MAX_AGE_MONTHS"); + + b.Property("FailSafeMaxAgeYears") + .HasColumnType("tinyint") + .HasColumnName("FAILSAFE_MAX_AGE_YEARS"); + + b.Property("FailSafeMinAgeMonths") + .HasColumnType("tinyint") + .HasColumnName("FAILSAFE_MIN_AGE_MONTHS"); + + b.Property("FailSafeMinAgeYears") + .HasColumnType("tinyint") + .HasColumnName("FAILSAFE_MIN_AGE_YEARS"); + + b.Property("FailSafeMonths") + .HasColumnType("tinyint") + .HasColumnName("FAILSAFE_MONTHS"); + + b.Property("FaxNumber") + .HasMaxLength(35) + .HasColumnType("nvarchar(35)") + .HasColumnName("FAX_NUMBER"); + + b.Property("FoaMaxOffset") + .HasColumnType("tinyint") + .HasColumnName("FOA_MAX_OFFSET"); + + b.Property("IepDetails") + .HasColumnType("nvarchar(max)") + .HasColumnName("IEP_DETAILS"); + + b.Property("IgnoreEarlyRecall") + .HasColumnType("bit") + .HasColumnName("IGNORE_EARLY_RECALL"); + + b.Property("IgnoreGPReferrals") + .HasColumnType("bit") + .HasColumnName("IGNORE_GP_REFERRALS"); + + b.Property("IgnoreSelfReferrals") + .HasColumnType("bit") + .HasColumnName("IGNORE_SELF_REFERRALS"); + + b.Property("InviteListSequenceNumber") + .HasColumnType("int") + .HasColumnName("INVITE_LIST_SEQUENCE_NUMBER"); + + b.Property("IsActive") + .HasColumnType("bit") + .HasColumnName("IS_ACTIVE"); + + b.Property("IsAgex") + .HasColumnType("bit") + .HasColumnName("IS_AGEX"); + + b.Property("IsAgexActive") + .HasColumnType("bit") + .HasColumnName("IS_AGEX_ACTIVE"); + + b.Property("LinkCode") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("LINK_CODE"); + + b.Property("LowerAgeRange") + .HasColumnType("tinyint") + .HasColumnName("LOWER_AGE_RANGE"); + + b.Property("Notes") + .HasColumnType("nvarchar(max)") + .HasColumnName("NOTES"); + + b.Property("OutgoingTransferNumber") + .HasColumnType("int") + .HasColumnName("OUTGOING_TRANSFER_NUMBER"); + + b.Property("PostCode") + .HasMaxLength(8) + .HasColumnType("nvarchar(8)") + .HasColumnName("POSTCODE"); + + b.Property("RispRecallInterval") + .HasColumnType("tinyint") + .HasColumnName("RISP_RECALL_INTERVAL"); + + b.Property("RlpDateEnabled") + .HasColumnType("datetime2") + .HasColumnName("RLP_DATE_ENABLED"); + + b.Property("SafetyPeriod") + .HasColumnType("tinyint") + .HasColumnName("SAFETY_PERIOD"); + + b.Property("TelephoneNumber") + .HasMaxLength(18) + .HasColumnType("nvarchar(18)") + .HasColumnName("TELEPHONE_NUMBER"); + + b.Property("TransactionAppDateTime") + .HasColumnType("datetime2") + .HasColumnName("TRANSACTION_APP_DATE_TIME"); + + b.Property("TransactionDbDateTime") + .HasColumnType("datetime2") + .HasColumnName("TRANSACTION_DB_DATE_TIME"); + + b.Property("TransactionId") + .HasColumnType("int") + .HasColumnName("TRANSACTION_ID"); + + b.Property("TransactionUserOrgRoleId") + .HasColumnType("int") + .HasColumnName("TRANSACTION_USER_ORG_ROLE_ID"); + + b.Property("UpperAgeRange") + .HasColumnType("tinyint") + .HasColumnName("UPPER_AGE_RANGE"); + + b.HasKey("BsoOrganisationId"); + + b.ToTable("BSO_ORGANISATIONS", "dbo"); + }); + + modelBuilder.Entity("Model.CohortDistribution", b => + { + b.Property("CohortDistributionId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("BS_COHORT_DISTRIBUTION_ID"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("CohortDistributionId")); + + b.Property("AddressLine1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)") + .HasColumnName("ADDRESS_LINE_1"); + + b.Property("AddressLine2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)") + .HasColumnName("ADDRESS_LINE_2"); + + b.Property("AddressLine3") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)") + .HasColumnName("ADDRESS_LINE_3"); + + b.Property("AddressLine4") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)") + .HasColumnName("ADDRESS_LINE_4"); + + b.Property("AddressLine5") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)") + .HasColumnName("ADDRESS_LINE_5"); + + b.Property("CurrentPosting") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)") + .HasColumnName("CURRENT_POSTING"); + + b.Property("CurrentPostingFromDt") + .HasColumnType("datetime") + .HasColumnName("CURRENT_POSTING_FROM_DT"); + + b.Property("DateOfBirth") + .HasColumnType("datetime") + .HasColumnName("DATE_OF_BIRTH"); + + b.Property("DateOfDeath") + .HasColumnType("datetime") + .HasColumnName("DATE_OF_DEATH"); + + b.Property("EmailAddressHome") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)") + .HasColumnName("EMAIL_ADDRESS_HOME"); + + b.Property("EmailAddressHomeFromDt") + .HasColumnType("datetime") + .HasColumnName("EMAIL_ADDRESS_HOME_FROM_DT"); + + b.Property("FamilyName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)") + .HasColumnName("FAMILY_NAME"); + + b.Property("Gender") + .HasColumnType("smallint") + .HasColumnName("GENDER"); + + b.Property("GivenName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)") + .HasColumnName("GIVEN_NAME"); + + b.Property("InterpreterRequired") + .HasColumnType("smallint") + .HasColumnName("INTERPRETER_REQUIRED"); + + b.Property("IsExtracted") + .HasColumnType("smallint") + .HasColumnName("IS_EXTRACTED"); + + b.Property("NHSNumber") + .HasColumnType("bigint") + .HasColumnName("NHS_NUMBER"); + + b.Property("NamePrefix") + .HasMaxLength(35) + .HasColumnType("nvarchar(35)") + .HasColumnName("NAME_PREFIX"); + + b.Property("OtherGivenName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)") + .HasColumnName("OTHER_GIVEN_NAME"); + + b.Property("ParticipantId") + .HasColumnType("bigint") + .HasColumnName("PARTICIPANT_ID"); + + b.Property("PostCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)") + .HasColumnName("POST_CODE"); + + b.Property("PreferredLanguage") + .HasMaxLength(35) + .HasColumnType("nvarchar(35)") + .HasColumnName("PREFERRED_LANGUAGE"); + + b.Property("PreviousFamilyName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)") + .HasColumnName("PREVIOUS_FAMILY_NAME"); + + b.Property("PrimaryCareProvider") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)") + .HasColumnName("PRIMARY_CARE_PROVIDER"); + + b.Property("PrimaryCareProviderDate") + .HasColumnType("datetime") + .HasColumnName("PRIMARY_CARE_PROVIDER_FROM_DT"); + + b.Property("ReasonForRemoval") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)") + .HasColumnName("REASON_FOR_REMOVAL"); + + b.Property("ReasonForRemovalDate") + .HasColumnType("datetime") + .HasColumnName("REASON_FOR_REMOVAL_FROM_DT"); + + b.Property("RecordInsertDateTime") + .HasColumnType("datetime") + .HasColumnName("RECORD_INSERT_DATETIME"); + + b.Property("RecordUpdateDateTime") + .HasColumnType("datetime") + .HasColumnName("RECORD_UPDATE_DATETIME"); + + b.Property("RequestId") + .HasColumnType("uniqueidentifier") + .HasColumnName("REQUEST_ID"); + + b.Property("SupersededNHSNumber") + .HasColumnType("bigint") + .HasColumnName("SUPERSEDED_NHS_NUMBER"); + + b.Property("TelephoneNumberHome") + .HasMaxLength(35) + .HasColumnType("nvarchar(35)") + .HasColumnName("TELEPHONE_NUMBER_HOME"); + + b.Property("TelephoneNumberHomeFromDt") + .HasColumnType("datetime") + .HasColumnName("TELEPHONE_NUMBER_HOME_FROM_DT"); + + b.Property("TelephoneNumberMob") + .HasMaxLength(35) + .HasColumnType("nvarchar(35)") + .HasColumnName("TELEPHONE_NUMBER_MOB"); + + b.Property("TelephoneNumberMobFromDt") + .HasColumnType("datetime") + .HasColumnName("TELEPHONE_NUMBER_MOB_FROM_DT"); + + b.Property("UsualAddressFromDt") + .HasColumnType("datetime") + .HasColumnName("USUAL_ADDRESS_FROM_DT"); + + b.HasKey("CohortDistributionId"); + + b.HasIndex(new[] { "IsExtracted", "RequestId" }, "IX_BSCOHORT_IS_EXTACTED_REQUESTID"); + + b.HasIndex(new[] { "NHSNumber" }, "IX_BS_COHORT_DISTRIBUTION_NHSNUMBER"); + + b.HasIndex(new[] { "ParticipantId" }, "IX_BS_COHORT_DISTRIBUTION_PARTICIPANTID"); + + b.ToTable("BS_COHORT_DISTRIBUTION", "dbo"); + }); + + modelBuilder.Entity("Model.CurrentPosting", b => + { + b.Property("Posting") + .HasColumnType("nvarchar(450)") + .HasColumnName("POSTING"); + + b.Property("InUse") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("IN_USE"); + + b.Property("IncludedInCohort") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("INCLUDED_IN_COHORT"); + + b.Property("PostingCategory") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("POSTING_CATEGORY"); + + b.HasKey("Posting"); + + b.ToTable("CURRENT_POSTING_LKP", "dbo"); + }); + + modelBuilder.Entity("Model.ExceptionManagement", b => + { + b.Property("ExceptionId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("EXCEPTION_ID"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ExceptionId")); + + b.Property("Category") + .HasColumnType("int") + .HasColumnName("CATEGORY"); + + b.Property("CohortName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)") + .HasColumnName("COHORT_NAME"); + + b.Property("DateCreated") + .HasColumnType("datetime") + .HasColumnName("DATE_CREATED"); + + b.Property("DateResolved") + .HasColumnType("date") + .HasColumnName("DATE_RESOLVED"); + + b.Property("ErrorRecord") + .HasColumnType("nvarchar(max)") + .HasColumnName("ERROR_RECORD"); + + b.Property("ExceptionDate") + .HasColumnType("datetime") + .HasColumnName("EXCEPTION_DATE"); + + b.Property("FileName") + .HasMaxLength(250) + .HasColumnType("nvarchar(250)") + .HasColumnName("FILE_NAME"); + + b.Property("IsFatal") + .HasColumnType("smallint") + .HasColumnName("IS_FATAL"); + + b.Property("NhsNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)") + .HasColumnName("NHS_NUMBER"); + + b.Property("RecordUpdatedDate") + .HasColumnType("datetime") + .HasColumnName("RECORD_UPDATED_DATE"); + + b.Property("RuleDescription") + .HasColumnType("nvarchar(max)") + .HasColumnName("RULE_DESCRIPTION"); + + b.Property("RuleId") + .HasColumnType("int") + .HasColumnName("RULE_ID"); + + b.Property("ScreeningName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)") + .HasColumnName("SCREENING_NAME"); + + b.Property("ServiceNowCreatedDate") + .HasColumnType("date") + .HasColumnName("SERVICENOW_CREATED_DATE"); + + b.Property("ServiceNowId") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)") + .HasColumnName("SERVICENOW_ID"); + + b.HasKey("ExceptionId"); + + b.HasIndex(new[] { "NhsNumber", "ScreeningName" }, "IX_EXCEPTIONMGMT_NHSNUM_SCREENINGNAME"); + + b.ToTable("EXCEPTION_MANAGEMENT", "dbo"); + }); + + modelBuilder.Entity("Model.ExcludedSMULookup", b => + { + b.Property("GpPracticeCode") + .HasColumnType("nvarchar(450)") + .HasColumnName("GP_PRACTICE_CODE"); + + b.HasKey("GpPracticeCode"); + + b.ToTable("EXCLUDED_SMU_LKP", "dbo"); + }); + + modelBuilder.Entity("Model.GenderMaster", b => + { + b.Property("GenderCd") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)") + .HasColumnName("GENDER_CD"); + + b.Property("GenderDesc") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)") + .HasColumnName("GENDER_DESC"); + + b.HasKey("GenderCd"); + + b.ToTable("GENDER_MASTER", "dbo"); + }); + + modelBuilder.Entity("Model.GeneCodeLkp", b => + { + b.Property("GeneCodeId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("GENE_CODE_ID"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("GeneCodeId")); + + b.Property("GeneCode") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("GENE_CODE"); + + b.Property("GeneCodeDescription") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("GENE_CODE_DESCRIPTION"); + + b.HasKey("GeneCodeId"); + + b.ToTable("GENE_CODE_LKP", "dbo"); + }); + + modelBuilder.Entity("Model.HigherRiskReferralReasonLkp", b => + { + b.Property("HigherRiskReferralReasonId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("HIGHER_RISK_REFERRAL_REASON_ID"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("HigherRiskReferralReasonId")); + + b.Property("HigherRiskReferralReasonCode") + .HasColumnType("nvarchar(max)") + .HasColumnName("HIGHER_RISK_REFERRAL_REASON_CODE"); + + b.Property("HigherRiskReferralReasonCodeDescription") + .HasColumnType("nvarchar(max)") + .HasColumnName("HIGHER_RISK_REFERRAL_REASON_CODE_DESCRIPTION"); + + b.HasKey("HigherRiskReferralReasonId"); + + b.ToTable("HIGHER_RISK_REFERRAL_REASON_LKP", "dbo"); + }); + + modelBuilder.Entity("Model.LanguageCode", b => + { + b.Property("LanguageCodeId") + .HasColumnType("nvarchar(450)") + .HasColumnName("LANGUAGE_CODE"); + + b.Property("LanguageDescription") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("LANGUAGE_DESCRIPTION"); + + b.HasKey("LanguageCodeId"); + + b.ToTable("LANGUAGE_CODES", "dbo"); + }); + + modelBuilder.Entity("Model.NemsSubscription", b => + { + b.Property("SubscriptionId") + .HasColumnType("nvarchar(450)") + .HasColumnName("SUBSCRIPTION_ID"); + + b.Property("NhsNumber") + .HasColumnType("bigint") + .HasColumnName("NHS_NUMBER"); + + b.Property("RecordInsertDateTime") + .HasColumnType("datetime") + .HasColumnName("RECORD_INSERT_DATETIME"); + + b.Property("RecordUpdateDateTime") + .HasColumnType("datetime") + .HasColumnName("RECORD_UPDATE_DATETIME"); + + b.Property("SubscriptionSource") + .HasColumnType("int") + .HasColumnName("SUBSCRIPTION_SOURCE"); + + b.HasKey("SubscriptionId"); + + b.ToTable("NEMS_SUBSCRIPTION", "dbo"); + }); + + modelBuilder.Entity("Model.ParticipantDemographic", b => + { + b.Property("ParticipantId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("PARTICIPANT_ID"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ParticipantId")); + + b.Property("AddressLine1") + .HasColumnType("nvarchar(max)") + .HasColumnName("ADDRESS_LINE_1"); + + b.Property("AddressLine2") + .HasColumnType("nvarchar(max)") + .HasColumnName("ADDRESS_LINE_2"); + + b.Property("AddressLine3") + .HasColumnType("nvarchar(max)") + .HasColumnName("ADDRESS_LINE_3"); + + b.Property("AddressLine4") + .HasColumnType("nvarchar(max)") + .HasColumnName("ADDRESS_LINE_4"); + + b.Property("AddressLine5") + .HasColumnType("nvarchar(max)") + .HasColumnName("ADDRESS_LINE_5"); + + b.Property("CurrentPosting") + .HasColumnType("nvarchar(max)") + .HasColumnName("CURRENT_POSTING"); + + b.Property("CurrentPostingFromDate") + .HasColumnType("nvarchar(max)") + .HasColumnName("CURRENT_POSTING_FROM_DT"); + + b.Property("DateOfBirth") + .HasColumnType("nvarchar(max)") + .HasColumnName("DATE_OF_BIRTH"); + + b.Property("DateOfDeath") + .HasColumnType("nvarchar(max)") + .HasColumnName("DATE_OF_DEATH"); + + b.Property("DeathStatus") + .HasColumnType("smallint") + .HasColumnName("DEATH_STATUS"); + + b.Property("EmailAddressHome") + .HasColumnType("nvarchar(max)") + .HasColumnName("EMAIL_ADDRESS_HOME"); + + b.Property("EmailAddressHomeFromDate") + .HasColumnType("nvarchar(max)") + .HasColumnName("EMAIL_ADDRESS_HOME_FROM_DT"); + + b.Property("FamilyName") + .HasColumnType("nvarchar(max)") + .HasColumnName("FAMILY_NAME"); + + b.Property("Gender") + .HasColumnType("smallint") + .HasColumnName("GENDER"); + + b.Property("GivenName") + .HasColumnType("nvarchar(max)") + .HasColumnName("GIVEN_NAME"); + + b.Property("InterpreterRequired") + .HasColumnType("smallint") + .HasColumnName("INTERPRETER_REQUIRED"); + + b.Property("InvalidFlag") + .HasColumnType("smallint") + .HasColumnName("INVALID_FLAG"); + + b.Property("NamePrefix") + .HasColumnType("nvarchar(max)") + .HasColumnName("NAME_PREFIX"); + + b.Property("NhsNumber") + .HasColumnType("bigint") + .HasColumnName("NHS_NUMBER"); + + b.Property("OtherGivenName") + .HasColumnType("nvarchar(max)") + .HasColumnName("OTHER_GIVEN_NAME"); + + b.Property("PafKey") + .HasColumnType("nvarchar(max)") + .HasColumnName("PAF_KEY"); + + b.Property("PostCode") + .HasColumnType("nvarchar(max)") + .HasColumnName("POST_CODE"); + + b.Property("PreferredLanguage") + .HasColumnType("nvarchar(max)") + .HasColumnName("PREFERRED_LANGUAGE"); + + b.Property("PreviousFamilyName") + .HasColumnType("nvarchar(max)") + .HasColumnName("PREVIOUS_FAMILY_NAME"); + + b.Property("PrimaryCareProvider") + .HasColumnType("nvarchar(max)") + .HasColumnName("PRIMARY_CARE_PROVIDER"); + + b.Property("PrimaryCareProviderFromDate") + .HasColumnType("nvarchar(max)") + .HasColumnName("PRIMARY_CARE_PROVIDER_FROM_DT"); + + b.Property("RecordInsertDateTime") + .HasColumnType("datetime") + .HasColumnName("RECORD_INSERT_DATETIME"); + + b.Property("RecordUpdateDateTime") + .HasColumnType("datetime") + .HasColumnName("RECORD_UPDATE_DATETIME"); + + b.Property("SupersededByNhsNumber") + .HasColumnType("bigint") + .HasColumnName("SUPERSEDED_BY_NHS_NUMBER"); + + b.Property("TelephoneNumberHome") + .HasColumnType("nvarchar(max)") + .HasColumnName("TELEPHONE_NUMBER_HOME"); + + b.Property("TelephoneNumberHomeFromDate") + .HasColumnType("nvarchar(max)") + .HasColumnName("TELEPHONE_NUMBER_HOME_FROM_DT"); + + b.Property("TelephoneNumberMob") + .HasColumnType("nvarchar(max)") + .HasColumnName("TELEPHONE_NUMBER_MOB"); + + b.Property("TelephoneNumberMobFromDate") + .HasColumnType("nvarchar(max)") + .HasColumnName("TELEPHONE_NUMBER_MOB_FROM_DT"); + + b.Property("UsualAddressFromDate") + .HasColumnType("nvarchar(max)") + .HasColumnName("USUAL_ADDRESS_FROM_DT"); + + b.HasKey("ParticipantId"); + + b.HasIndex(new[] { "NhsNumber" }, "Index_PARTICIPANT_DEMOGRAPHIC_NhsNumber") + .IsUnique(); + + b.ToTable("PARTICIPANT_DEMOGRAPHIC", "dbo"); + }); + + modelBuilder.Entity("Model.ParticipantManagement", b => + { + b.Property("ParticipantId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("PARTICIPANT_ID"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ParticipantId")); + + b.Property("BlockedFlag") + .HasColumnType("smallint") + .HasColumnName("BLOCKED_FLAG"); + + b.Property("BusinessRuleVersion") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)") + .HasColumnName("BUSINESS_RULE_VERSION"); + + b.Property("DateIrradiated") + .HasColumnType("datetime") + .HasColumnName("DATE_IRRADIATED"); + + b.Property("EligibilityFlag") + .HasColumnType("smallint") + .HasColumnName("ELIGIBILITY_FLAG"); + + b.Property("ExceptionFlag") + .HasColumnType("smallint") + .HasColumnName("EXCEPTION_FLAG"); + + b.Property("GeneCodeId") + .HasColumnType("int") + .HasColumnName("GENE_CODE_ID"); + + b.Property("HigherRiskNextTestDueDate") + .HasColumnType("datetime") + .HasColumnName("HIGHER_RISK_NEXT_TEST_DUE_DATE"); + + b.Property("HigherRiskReferralReasonId") + .HasColumnType("int") + .HasColumnName("HIGHER_RISK_REFERRAL_REASON_ID"); + + b.Property("IsHigherRisk") + .HasColumnType("smallint") + .HasColumnName("IS_HIGHER_RISK"); + + b.Property("IsHigherRiskActive") + .HasColumnType("smallint") + .HasColumnName("IS_HIGHER_RISK_ACTIVE"); + + b.Property("NHSNumber") + .HasColumnType("bigint") + .HasColumnName("NHS_NUMBER"); + + b.Property("NextTestDueDate") + .HasColumnType("datetime") + .HasColumnName("NEXT_TEST_DUE_DATE"); + + b.Property("NextTestDueDateCalcMethod") + .HasColumnType("nvarchar(max)") + .HasColumnName("NEXT_TEST_DUE_DATE_CALC_METHOD"); + + b.Property("ParticipantScreeningStatus") + .HasColumnType("nvarchar(max)") + .HasColumnName("PARTICIPANT_SCREENING_STATUS"); + + b.Property("ReasonForRemoval") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)") + .HasColumnName("REASON_FOR_REMOVAL"); + + b.Property("ReasonForRemovalDate") + .HasColumnType("datetime") + .HasColumnName("REASON_FOR_REMOVAL_FROM_DT"); + + b.Property("RecordInsertDateTime") + .HasColumnType("datetime") + .HasColumnName("RECORD_INSERT_DATETIME"); + + b.Property("RecordType") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)") + .HasColumnName("RECORD_TYPE"); + + b.Property("RecordUpdateDateTime") + .HasColumnType("datetime") + .HasColumnName("RECORD_UPDATE_DATETIME"); + + b.Property("ReferralFlag") + .HasColumnType("smallint") + .HasColumnName("REFERRAL_FLAG"); + + b.Property("ScreeningCeasedReason") + .HasColumnType("nvarchar(max)") + .HasColumnName("SCREENING_CEASED_REASON"); + + b.Property("ScreeningId") + .HasColumnType("bigint") + .HasColumnName("SCREENING_ID"); + + b.Property("SrcSysProcessedDateTime") + .HasColumnType("datetime") + .HasColumnName("SRC_SYSTEM_PROCESSED_DATETIME"); + + b.HasKey("ParticipantId"); + + b.HasIndex(new[] { "NHSNumber", "ScreeningId" }, "ix_PARTICIPANT_MANAGEMENT_screening_nhs") + .IsUnique(); + + b.ToTable("PARTICIPANT_MANAGEMENT", "dbo"); + }); + + modelBuilder.Entity("Model.ScreeningLkp", b => + { + b.Property("ScreeningWorkflowId") + .HasColumnType("nvarchar(450)") + .HasColumnName("SCREENING_WORKFLOW_ID"); + + b.Property("ScreeningAcronym") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("SCREENING_ACRONYM"); + + b.Property("ScreeningId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("SCREENING_ID"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScreeningId")); + + b.Property("ScreeningName") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("SCREENING_NAME"); + + b.Property("ScreeningType") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("SCREENING_TYPE"); + + b.HasKey("ScreeningWorkflowId"); + + b.ToTable("SCREENING_LKP", "dbo"); + }); + + modelBuilder.Entity("Model.ServicenowCase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasColumnName("ID"); + + b.Property("NhsNumber") + .HasColumnType("bigint") + .HasColumnName("NHS_NUMBER"); + + b.Property("RecordInsertDatetime") + .HasColumnType("datetime") + .HasColumnName("RECORD_INSERT_DATETIME"); + + b.Property("RecordUpdateDatetime") + .HasColumnType("datetime") + .HasColumnName("RECORD_UPDATE_DATETIME"); + + b.Property("ServicenowId") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)") + .HasColumnName("SERVICENOW_ID"); + + b.Property("Status") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)") + .HasColumnName("STATUS"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "ServicenowId" }, "IX_SERVICENOW_CASES_SERVICENOW_ID"); + + b.ToTable("SERVICENOW_CASES", "dbo"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/application/CohortManager/src/Functions/Shared/DataServices.Migrations/Migrations/20251203173828_AddPowerBIViews.cs b/application/CohortManager/src/Functions/Shared/DataServices.Migrations/Migrations/20251203173828_AddPowerBIViews.cs new file mode 100644 index 000000000..69498f7de --- /dev/null +++ b/application/CohortManager/src/Functions/Shared/DataServices.Migrations/Migrations/20251203173828_AddPowerBIViews.cs @@ -0,0 +1,108 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace DataServices.Migrations.Migrations +{ + /// + public partial class AddPowerBIViews : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.Sql(@" + CREATE VIEW vw_ServiceNowParticipants AS + SELECT + CAST(RECORD_INSERT_DATETIME AS DATE) AS Date, + IIF(IS_HIGHER_RISK = 1, 'High Risk Participant', 'Standard Risk Participant') AS Category, + COUNT(*) AS ServiceNow_Participants + FROM ( + SELECT + RECORD_INSERT_DATETIME, + IS_HIGHER_RISK + FROM PARTICIPANT_MANAGEMENT + WHERE REFERRAL_FLAG = 1 + AND RECORD_TYPE = 'ADD' + ) AS DateSelection + GROUP BY + CAST(RECORD_INSERT_DATETIME AS DATE), + IS_HIGHER_RISK; + "); + + migrationBuilder.Sql(@" + CREATE VIEW vw_ParticipantManagementRecords AS + SELECT + Date, + COUNT(*) AS Participant_Management_Records + FROM ( + SELECT DISTINCT + NHS_NUMBER, + CAST(COALESCE(RECORD_UPDATE_DATETIME, RECORD_INSERT_DATETIME) AS DATE) AS Date + FROM PARTICIPANT_MANAGEMENT + WHERE RECORD_INSERT_DATETIME IS NOT NULL + OR RECORD_UPDATE_DATETIME IS NOT NULL + ) unique_records + GROUP BY Date; + "); + + migrationBuilder.Sql(@" + CREATE VIEW vw_ParticipantDemographic AS + SELECT + Date, + COUNT(*) AS Participant_Demographic_Records + FROM ( + SELECT DISTINCT + NHS_NUMBER, + CAST(COALESCE(RECORD_UPDATE_DATETIME, RECORD_INSERT_DATETIME) AS DATE) AS Date + FROM PARTICIPANT_DEMOGRAPHIC + WHERE RECORD_INSERT_DATETIME IS NOT NULL + OR RECORD_UPDATE_DATETIME IS NOT NULL + ) unique_records + GROUP BY Date; + "); + + migrationBuilder.Sql(@" + CREATE VIEW vw_ExceptionManagement AS + SELECT + CAST(DATE_CREATED AS DATE) AS Date, + RULE_ID AS RuleId, + CATEGORY AS Category, + COUNT(*) AS Number_Of_Exceptions, + NULLIF(MAX(DATE_RESOLVED), '9999-12-31') AS DATE_RESOLVED, + RULE_DESCRIPTION AS RULE_DESCRIPTION + FROM EXCEPTION_MANAGEMENT + WHERE RULE_ID >= 0 + GROUP BY + CAST(DATE_CREATED AS DATE), + RULE_ID, + CATEGORY, + RULE_DESCRIPTION; + "); + + migrationBuilder.Sql(@" + CREATE VIEW vw_CohortDistribution AS + SELECT + Date, + COUNT(DISTINCT NHS_NUMBER) AS Cohort_Distribution_Records + FROM ( + SELECT DISTINCT + NHS_NUMBER, + CAST(COALESCE(RECORD_UPDATE_DATETIME, RECORD_INSERT_DATETIME) AS DATE) AS Date + FROM BS_COHORT_DISTRIBUTION + WHERE RECORD_INSERT_DATETIME IS NOT NULL + ) unique_records + GROUP BY Date; + "); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.Sql("DROP VIEW IF EXISTS vw_ServiceNowParticipants;"); + migrationBuilder.Sql("DROP VIEW IF EXISTS vw_ParticipantManagementRecords;"); + migrationBuilder.Sql("DROP VIEW IF EXISTS vw_ParticipantDemographic;"); + migrationBuilder.Sql("DROP VIEW IF EXISTS vw_ExceptionManagement;"); + migrationBuilder.Sql("DROP VIEW IF EXISTS vw_CohortDistribution;"); + } + } +}