chore: deploy initial code base

This commit is contained in:
Thom Lamb
2026-05-12 10:34:30 -05:00
parent cce2961782
commit a81300a571
1829 changed files with 248331 additions and 1 deletions
@@ -0,0 +1,117 @@
using FluentAssertions;
using Microsoft.Extensions.Logging;
using Moq;
using Strata.ContinuousImprovement.Biz.ChargeCode.Opportunities;
using Strata.ContinuousImprovement.Biz.Shared;
using Strata.CoreLib.Claims;
using Strata.FeatureFlags.Client;
using Strata.Schema.Client;
using System.Diagnostics.CodeAnalysis;
using System.Security.Claims;
namespace Strata.ContinuousImprovement.Biz.Test.Integration.JazzIntegrationTests
{
[ExcludeFromCodeCoverage]
[TestFixture, Category("Integration"), Category("CCI")]
internal class TestCCOpportunityDetailService : IntegrationTestBase
{
protected ICCOpportunityDetailService _ccOpportunityDetailService;
[OneTimeSetUp]
public void SetupChargeCodeDetailService()
{
var claims = new List<Claim>
{
new Claim("database_guid", GmAutomationDatabase.ToString())
};
var principal = new ClaimsPrincipal(new ClaimsIdentity(claims, "TestAuth"));
var claimsPrincipalMock = Mock.Of<IClaimsPrincipalAccessor>();
Mock.Get(claimsPrincipalMock)
.Setup(x => x.GetCurrentClaimsPrincipal())
.Returns(principal);
var featureFlagServiceMock = Mock.Of<IFeatureFlagServiceClient>();
Mock.Get(featureFlagServiceMock)
.Setup(x => x.IsEnabledAsync("is-decision-support-queries-enabled", It.IsAny<Guid>(), It.IsAny<bool>(), It.IsAny<bool>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(true);
_ccOpportunityDetailService = new CCOpportunityDetailService(
JazzConnBuilderFactory,
Mock.Of<ISchemaServiceClient>(),
SnowflakeDatabaseContext,
featureFlagServiceMock,
Mock.Of<ILogger<CCOpportunityDetailService>>(),
claimsPrincipalMock);
}
[TestCaseSource(nameof(OpportunityCases))]
public async Task OpportunityDetailQueryTest_Returns_Data(bool isBaseline, CCOpportunityDataModel opportunity)
{
// arrange
var configuration = CreateConfiguration();
// act
var results = await _ccOpportunityDetailService.GetCCOpportunityDetailQueryResult(
opportunity,
configuration,
CancellationToken.None,
isBaseline: true);
// assert
results.Should().NotBeNullOrEmpty();
}
[TestCaseSource(nameof(OpportunityCases))]
public async Task OpportunityDetailLevelCasesQueryTest_Returns_Data(bool isBaseline, CCOpportunityDataModel opportunity)
{
// arrange
var configuration = CreateConfiguration();
// act
var results = await _ccOpportunityDetailService.CCOpportunityLevelCasesQuery(
opportunity,
configuration,
CancellationToken.None,
isBaseline: true);
// assert
results.Should().NotBeNullOrEmpty();
}
private Configuration.Configuration CreateConfiguration()
{
return new Configuration.Configuration
{
OrgDefinedEndDate = new DateTime(2024, 1, 1)
};
}
private static IEnumerable<TestCaseData> OpportunityCases()
{
yield return new TestCaseData(true, GetSystemLevelData()).SetName("System");
}
private static CCOpportunityDataModel GetSystemLevelData()
{
return new CCOpportunityDataModel
{
OpportunityLevel = OpportunityLevel.Organization.ToString(),
ChargeCodeJson =
@"{""HierarchyPaths"":[""CC|CCRU|Blood""],""Members"":[
{""MemberGuid"":""4041e269-34c4-4a1d-bebf-c6e0a0799539"",""Name"":""10002765 - HB RBC LEUKOREDUCED EA UNIT"",""Id"":""3540""}]}",
ClinicalIndicatorJson =
@"{""HierarchyPaths"":[""CLINICALINDICATOR|CLINICALINDI|188""],""Members"":[{""MemberGuid"":""d1e38321-5e37-4dad-9a54-ca8599763e7a"",""Name"":""All Readmissions"",""Id"":""188""}]}",
OpportunityLevelJson =
@"{""HierarchyPaths"":[""SYS|SYSTEM""],
""Members"":[{""MemberGuid"":""00000000-0000-0000-0000-000000000000"",
""Id"":""1"",
""Name"":""System""}]}"
};
}
}
}
@@ -0,0 +1,61 @@
using FluentAssertions;
using Microsoft.Extensions.Logging;
using Moq;
using Strata.ContinuousImprovement.Biz.Encounter;
using Strata.ContinuousImprovement.Biz.Encounter.Opportunities;
using Strata.Schema.Client;
using Strata.Schema.Client.Dtos;
using Strata.Schema.Client.Dtos.Info;
using System.Diagnostics.CodeAnalysis;
namespace Strata.ContinuousImprovement.Biz.Test.Integration.JazzIntegrationTests
{
[ExcludeFromCodeCoverage]
[TestFixture, Category("Integration"), Category("CCI")]
internal class TestGetENOpportunityDetailQuery : IntegrationTestBase
{
[Test]
public async Task TestGetENOpportunityDetailQuery_Returns_Data()
{
// arrange
var config = CreateConfiguration();
var opportunity = CreateOpportunity();
var schemaService = new Mock<ISchemaServiceClient>().Object;
Mock.Get(schemaService)
.Setup(x => x.GetDimensionMembersFromHierarchyPathsAsync(It.IsAny<Guid>(), It.IsAny<IEnumerable<string>>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new List<MemberDto> { new() { Id = "188", } });
Mock.Get(schemaService)
.Setup(x => x.GetDimensionByGlobalIdAsync(It.IsAny<string>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new ScoreDimensionInfoDto { DimensionGuid = new Guid("3465fcd8-9149-4d96-8456-3ecaa3ffdadd") });
var logger = Mock.Of<ILogger<ENOpportunityDetailJob>>();
// act
var results = await JazzDbContext.GetENOpportunityDetailQuery(opportunity, config, schemaService, logger, GmAutomationDatabase);
// assert
results.Should().NotBeNullOrEmpty();
}
private ENOpportunityDataModel CreateOpportunity()
{
return new ENOpportunityDataModel()
{
EncounterOpportunityJSON = @"{
""EncounterGroup"":1,""IsSeasonal"":false, ""CaseTypes"":[],
""PatientPopulations"":[{""Text"":""All Readmissions"",""Id"":""CLINICALINDICATOR|CLINICALINDI|188""}],
""OpportunityLevel"":""Organization"",
""EncounterOpportunityLevel"":0,
""Entities"":[],""ServiceLines"":[],""Specialties"":[],""Providers"":[],""IsBaseline"":true}"
};
}
private Configuration.Configuration CreateConfiguration()
{
return new Configuration.Configuration
{
OrgDefinedEndDate = new DateTime(2024, 1, 1)
};
}
}
}
@@ -0,0 +1,330 @@
using Microsoft.EntityFrameworkCore;
using Strata.ContinuousImprovement.Biz.All.Opportunities;
using Strata.ContinuousImprovement.Biz.ChargeCode.Opportunities;
using Strata.ContinuousImprovement.Biz.Cube;
using Strata.ContinuousImprovement.Biz.DbContexts;
using Strata.ContinuousImprovement.Biz.DbContexts.Jazz.Dimensions;
using Strata.ContinuousImprovement.Biz.DbContexts.Reports;
using Strata.ContinuousImprovement.Biz.DbContexts.Security;
using Strata.ContinuousImprovement.Biz.Encounter.Opportunities;
using Strata.ContinuousImprovement.Biz.Exploration.CaseTypeFamilies;
using Strata.ContinuousImprovement.Biz.Exploration.Opportunities;
using Strata.ContinuousImprovement.Biz.Filter;
using Strata.ContinuousImprovement.Biz.FreeForm.Initiatives;
using Strata.ContinuousImprovement.Biz.FreeForm.Opportunities;
using Strata.ContinuousImprovement.Biz.GeneralLedger.Details;
using Strata.ContinuousImprovement.Biz.GeneralLedger.Opportunities;
using Strata.ContinuousImprovement.Biz.GMDN;
using Strata.ContinuousImprovement.Biz.InitiativeRollupColumns;
using Strata.ContinuousImprovement.Biz.Initiatives;
using Strata.ContinuousImprovement.Biz.Network;
using Strata.ContinuousImprovement.Biz.Payroll.Opportunities;
using Strata.ContinuousImprovement.Biz.PeerGroups;
using Strata.ContinuousImprovement.Biz.Population;
using Strata.ContinuousImprovement.Biz.QualityVariation.Breakdowns;
using Strata.ContinuousImprovement.Biz.QualityVariation.Events;
using Strata.ContinuousImprovement.Biz.QualityVariation.Metrics;
using Strata.ContinuousImprovement.Biz.QualityVariation.Opportunities;
using Strata.ContinuousImprovement.Biz.Score;
using Strata.ContinuousImprovement.Biz.Security;
using Strata.ContinuousImprovement.Biz.Shared;
using Strata.ContinuousImprovement.Biz.Test.Unit.Utilities;
using Strata.ContinuousImprovement.Biz.UserProfiles;
using Strata.ContinuousImprovement.Biz.UserSetting;
using Strata.ContinuousImprovement.Biz.UtilizationVariation;
using Strata.ContinuousImprovement.Biz.UtilizationVariation.Opportunities;
using Strata.ContinuousImprovement.Biz.UtilizationVariation.VariationCaseTypes;
using Strata.Stratasphere.Biz.DbContexts;
using System.Diagnostics.CodeAnalysis;
namespace Strata.ContinuousImprovement.Biz.Test.Integration.JazzIntegrationTests
{
[ExcludeFromCodeCoverage]
[TestFixture, Category("Integration"), Category("CCI")]
public partial class TestJazzDbContext : IntegrationTestBase
{
public async Task TestGeneric<T>(TestContext testContext) where T : class
{
try
{
var count = await ((DbContext)JazzDbContext).Set<T>().CountAsync(CancellationToken.None);
Assert.That(count, Is.GreaterThanOrEqualTo(0));
if (count == 0) { return; }
var result = await ((DbContext)JazzDbContext).Set<T>().FirstOrDefaultAsync(CancellationToken.None);
Assert.That(result, Is.Not.Null.And.InstanceOf<T>());
}
catch
{
// ILB
}
}
[Test]
public async Task JazzDbTestCases()
{
var types = ((DbContext)JazzDbContext).Model.GetEntityTypes()
.Select(e => e.ClrType).OrderBy(c => c.Name).ToList();
foreach (var type in types)
{
switch (type.Name)
{
case nameof(AllOpportunity):
TestGeneric<AllOpportunity>(TestContext.CurrentContext);
break;
case nameof(CaseTypeFamily):
TestGeneric<CaseTypeFamily>(TestContext.CurrentContext);
break;
case nameof(CciUserSetting):
TestGeneric<CciUserSetting>(TestContext.CurrentContext);
break;
case nameof(CCOpportunity):
TestGeneric<CCOpportunity>(TestContext.CurrentContext);
break;
case nameof(CCOpportunityDataModel):
TestGeneric<CCOpportunityDataModel>(TestContext.CurrentContext);
break;
case nameof(CCOpportunityDetailQueryResult):
TestGeneric<CCOpportunityDetailQueryResult>(TestContext.CurrentContext);
break;
case nameof(CCOpportunityLevelCaseQueryResult):
TestGeneric<CCOpportunityLevelCaseQueryResult>(TestContext.CurrentContext);
break;
case nameof(ChargeCode.ChargeCode):
TestGeneric<ChargeCode.ChargeCode>(TestContext.CurrentContext);
break;
case nameof(ChargeCodeOpportunityDetail):
TestGeneric<ChargeCodeOpportunityDetail>(TestContext.CurrentContext);
break;
case nameof(ChargeCodeOpportunityLevelCase):
TestGeneric<ChargeCodeOpportunityLevelCase>(TestContext.CurrentContext);
break;
case nameof(Configuration.Configuration):
TestGeneric<Configuration.Configuration>(TestContext.CurrentContext);
break;
case nameof(CostComponentRollup):
TestGeneric<CostComponentRollup>(TestContext.CurrentContext);
break;
case nameof(DboUserSetting):
TestGeneric<DboUserSetting>(TestContext.CurrentContext);
break;
case nameof(DimCaseType):
TestGeneric<DimCaseType>(TestContext.CurrentContext);
break;
case nameof(DimCostComponent):
TestGeneric<DimCostComponent>(TestContext.CurrentContext);
break;
case nameof(DimDeviceIdentifier):
TestGeneric<DimDeviceIdentifier>(TestContext.CurrentContext);
break;
case nameof(DimSupply):
TestGeneric<DimSupply>(TestContext.CurrentContext);
break; case nameof(DimEntity):
TestGeneric<DimEntity>(TestContext.CurrentContext);
break; case nameof(StringValue):
TestGeneric<StringValue>(TestContext.CurrentContext);
break;
case nameof(ENOpportunity):
TestGeneric<ENOpportunity>(TestContext.CurrentContext);
break;
case nameof(ENOpportunityDataModel):
TestGeneric<ENOpportunityDataModel>(TestContext.CurrentContext);
break;
case nameof(ENOpportunityMetricData):
TestGeneric<ENOpportunityMetricData>(TestContext.CurrentContext);
break;
case nameof(EXOpportunity):
TestGeneric<EXOpportunity>(TestContext.CurrentContext);
break;
case nameof(FactGL):
TestGeneric<FactGL>(TestContext.CurrentContext);
break;
case nameof(FactGLSampled):
TestGeneric<FactGLSampled>(TestContext.CurrentContext);
break;
case nameof(FactStatistic):
TestGeneric<FactStatistic>(TestContext.CurrentContext);
break;
case nameof(FactStatisticSampledMonthly):
TestGeneric<FactStatisticSampledMonthly>(TestContext.CurrentContext);
break;
case nameof(FFFInitiativeTrackingData):
TestGeneric<FFFInitiativeTrackingData>(TestContext.CurrentContext);
break;
case nameof(FFInitiativeTrackingData):
TestGeneric<FFInitiativeTrackingData>(TestContext.CurrentContext);
break;
case nameof(FFOpportunity):
TestGeneric<FFOpportunity>(TestContext.CurrentContext);
break;
case nameof(FFOpportunityDataModel):
TestGeneric<FFOpportunityDataModel>(TestContext.CurrentContext);
break;
case nameof(Folder):
TestGeneric<Folder>(TestContext.CurrentContext);
break;
case nameof(GLOpportunity):
TestGeneric<GLOpportunity>(TestContext.CurrentContext);
break;
case nameof(GLOpportunityDataModel):
TestGeneric<GLOpportunityDataModel>(TestContext.CurrentContext);
break;
case nameof(Identity):
TestGeneric<Identity>(TestContext.CurrentContext);
break;
case nameof(Initiative):
TestGeneric<Initiative>(TestContext.CurrentContext);
break;
case nameof(InitiativeComment):
TestGeneric<InitiativeComment>(TestContext.CurrentContext);
break;
case nameof(InitiativeCriteria):
TestGeneric<InitiativeCriteria>(TestContext.CurrentContext);
break;
case nameof(InitiativeCriteriaQueryResult):
TestGeneric<InitiativeCriteriaQueryResult>(TestContext.CurrentContext);
break;
case nameof(InitiativeRollupColumn):
TestGeneric<InitiativeRollupColumn>(TestContext.CurrentContext);
break;
case nameof(InitiativeRollupValue):
TestGeneric<InitiativeRollupValue>(TestContext.CurrentContext);
break;
case nameof(InitiativeScore):
TestGeneric<InitiativeScore>(TestContext.CurrentContext);
break;
case nameof(Lock):
// Lock is inaccessible due to its protection level
break;
case nameof(NetworkOpportunityLink):
TestGeneric<NetworkOpportunityLink>(TestContext.CurrentContext);
break;
case nameof(OpportunityMetricCohortData):
TestGeneric<OpportunityMetricCohortData>(TestContext.CurrentContext);
break;
case nameof(OpportunityReport):
TestGeneric<OpportunityReport>(TestContext.CurrentContext);
break;
case nameof(PeerGroup):
TestGeneric<PeerGroup>(TestContext.CurrentContext);
break;
case nameof(PeerGroupCriteriaMapping):
TestGeneric<PeerGroupCriteriaMapping>(TestContext.CurrentContext);
break;
case nameof(PROpportunity):
TestGeneric<PROpportunity>(TestContext.CurrentContext);
break;
case nameof(PROpportunityDataModel):
TestGeneric<PROpportunityDataModel>(TestContext.CurrentContext);
break;
case nameof(QVIBreakdown):
TestGeneric<QVIBreakdown>(TestContext.CurrentContext);
break;
case nameof(QVIEvent):
TestGeneric<QVIEvent>(TestContext.CurrentContext);
break;
case nameof(QVIOpportunity):
TestGeneric<QVIOpportunity>(TestContext.CurrentContext);
break;
case nameof(REReport):
TestGeneric<REReport>(TestContext.CurrentContext);
break;
case nameof(RESQLReportRegisteredAttribute):
TestGeneric<RESQLReportRegisteredAttribute>(TestContext.CurrentContext);
break;
case nameof(S3ACLSimple):
TestGeneric<S3ACLSimple>(TestContext.CurrentContext);
break;
case nameof(S3SimplePermission):
TestGeneric<S3SimplePermission>(TestContext.CurrentContext);
break;
case nameof(S3SimplePermissionDefault):
TestGeneric<S3SimplePermissionDefault>(TestContext.CurrentContext);
break;
case nameof(ScoreAttribute):
TestGeneric<ScoreAttribute>(TestContext.CurrentContext);
break;
case nameof(ScoreDimension):
TestGeneric<ScoreDimension>(TestContext.CurrentContext);
break;
case nameof(SimplePermission):
TestGeneric<SimplePermission>(TestContext.CurrentContext);
break;
case nameof(SourceOfSavingsReport):
TestGeneric<SourceOfSavingsReport>(TestContext.CurrentContext);
break;
case nameof(SystemSetting):
TestGeneric<SystemSetting>(TestContext.CurrentContext);
break;
case nameof(UserGroup):
TestGeneric<UserGroup>(TestContext.CurrentContext);
break;
case nameof(UserProfile):
TestGeneric<UserProfile>(TestContext.CurrentContext);
break;
case nameof(UVCaseType):
TestGeneric<UVCaseType>(TestContext.CurrentContext);
break;
case nameof(UVOpportunity):
TestGeneric<UVOpportunity>(TestContext.CurrentContext);
break;
case nameof(VariationOpportunityDataModel):
TestGeneric<VariationOpportunityDataModel>(TestContext.CurrentContext);
break;
case nameof(ExplorationVariationOpportunityDataModel):
TestGeneric<ExplorationVariationOpportunityDataModel>(TestContext.CurrentContext);
break;
case nameof(ViewScoreAttribute):
TestGeneric<ViewScoreAttribute>(TestContext.CurrentContext);
break;
case nameof(DimAprdrg):
TestGeneric<DimAprdrg>(TestContext.CurrentContext);
break;
case nameof(DimCpt):
TestGeneric<DimCpt>(TestContext.CurrentContext);
break;
case nameof(DimIcd10Dx):
TestGeneric<DimIcd10Dx>(TestContext.CurrentContext);
break;
case nameof(DimIcd10Px):
TestGeneric<DimIcd10Px>(TestContext.CurrentContext);
break;
case nameof(DimMsdrg):
TestGeneric<DimMsdrg>(TestContext.CurrentContext);
break;
case nameof(DimMsdrgRollup):
TestGeneric<DimMsdrgRollup>(TestContext.CurrentContext);
break;
case nameof(QviMetrics):
TestGeneric<QviMetrics>(TestContext.CurrentContext);
break;
default:
var pathArr = TestContext.CurrentContext.TestDirectory.Split(Path.DirectorySeparatorChar);
var path = string.Join(Path.DirectorySeparatorChar, pathArr[..^3].Append("JazzIntegrationTests"));
var fileName = Path.Combine(path, $"{nameof(TestJazzDbContext)}_{type.Name}.cs");
if (File.Exists(fileName)) break;
var testFile = @"
namespace Strata.ContinuousImprovement.Biz.Test.Integration.ContinuousImprovementServiceTests
{
[TestFixture, Category(""Integration""), Category(""CCI"")]
public partial class TestJazzDbContext : IntegrationTestBase
{
[Test]
public async Task Test" + type.Name + @"()
{
TestGeneric<" + type.Name + @">(TestContext.CurrentContext);
}
}
}
";
File.WriteAllText(fileName, testFile);
break;
}
}
await Verify(types, verifySettings)
.UseFileName(TestContext.CurrentContext.TestName());
}
}
}