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,297 @@
using Microsoft.Extensions.Logging;
using Moq;
using NUnit.Framework;
using Strata.ContinuousImprovement.Biz.DbContexts.Snowflake;
using Strata.ContinuousImprovement.Biz.Exploration;
using Strata.ContinuousImprovement.Biz.Exploration.CaseTypeFamilies;
using Strata.ContinuousImprovement.Biz.Exploration.Filters;
using Strata.ContinuousImprovement.Biz.FiscalMonths;
using Strata.ContinuousImprovement.Biz.Test.Unit.Utilities;
using Strata.ContinuousImprovement.Biz.Utilities;
using Strata.ContinuousImprovement.JazzEntityFrameworkStub;
using Strata.CoreLib.Claims;
using Strata.StrataSphereCompare.Client;
using Strata.StrataSphereCompare.Client.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using static Strata.ContinuousImprovement.Biz.Exploration.ExplorationService;
using ExplorationFilter = Strata.ContinuousImprovement.Biz.Exploration.Filters.Filter;
namespace Strata.ContinuousImprovement.Biz.Test.Unit.Exploration
{
[TestFixture, Category("Unit")]
public class ExplorationServiceBenchmarkingUnitTests
{
private const string FeatureFlagKey = "cibenchmarkingenabled";
private const string CaseTypeFamilyName = "Sample CTF";
private Mock<ISnowflakeDatabaseContext> _snowflakeDatabaseContextMock;
private Mock<IFiscalMonthResolver> _fiscalMonthResolverMock;
private Mock<IClaimsPrincipalAccessor> _claimsPrincipalAccessorMock;
private Mock<IStrataSphereCompareService> _strataSphereCompareServiceMock;
private Mock<ILogger<ExplorationService>> _explorationServiceLoggerMock;
private Mock<IExplorationFilterService> _explorationFilterServiceMock;
private ExplorationInfo _explorationInfo;
[OneTimeSetUp]
public void OneTimeSetUp()
{
_snowflakeDatabaseContextMock = new Mock<ISnowflakeDatabaseContext>();
_fiscalMonthResolverMock = new Mock<IFiscalMonthResolver>();
_explorationServiceLoggerMock = new Mock<ILogger<ExplorationService>>();
var principal = TestUtilities.GetClaimsPrincipalAccessor();
var defaultUser = principal.GetCurrentClaimsPrincipal();
_claimsPrincipalAccessorMock = new Mock<IClaimsPrincipalAccessor>();
_claimsPrincipalAccessorMock.Setup(a => a.GetCurrentClaimsPrincipal()).Returns(defaultUser);
_strataSphereCompareServiceMock = new Mock<IStrataSphereCompareService>();
_explorationFilterServiceMock = new Mock<IExplorationFilterService>();
// Setup ExplorationFilterService mock
_explorationFilterServiceMock
.Setup(s => s.GetFilterStringsAsync(It.IsAny<IEnumerable<FilterChipItem>>(), It.IsAny<IQueryParamBase>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(("", ""));
_explorationFilterServiceMock
.Setup(s => s.BuildDataFiltersAsync(It.IsAny<CaseTypeFamily>(), It.IsAny<string>(), It.IsAny<ExplorationFilter>(), It.IsAny<bool>(), It.IsAny<bool>(), It.IsAny<bool>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new CostDetailsFilterDto());
// Setup 1: For GetCaseTypeFamilySummariesAsync (no drill down filter)
_strataSphereCompareServiceMock
.Setup(s => s.GetCostDetailsAsync(
It.IsAny<BaseComparisonParams>(),
It.Is<CostDetailsFilterDto>(filter => filter.CostDetailsFilterDrillDown == null),
It.IsAny<CancellationToken>()))
.ReturnsAsync(new[]
{
new CostDetailsDto
{
AprDrgCaseTypeFamilyName = CaseTypeFamilyName,
P50th_VariableDirectCost = 250.75m,
P50th_Alos = 5.2m
}
});
// Setup 2: For GetCaseTypeFamilySummaryDetailsAsync (with drill down filter)
_strataSphereCompareServiceMock
.Setup(s => s.GetCostDetailsAsync(
It.IsAny<BaseComparisonParams>(),
It.Is<CostDetailsFilterDto>(filter => filter.CostDetailsFilterDrillDown != null),
It.IsAny<CancellationToken>()))
.ReturnsAsync(new[]
{
new CostDetailsDto
{
SphChargeCodeCostDriver = "LOS",
P50th_VariableDirectCost = 150.50m,
P50th_Alos = 3.2m
},
new CostDetailsDto
{
SphChargeCodeCostDriver = "Surgery",
P50th_VariableDirectCost = 300.25m,
P50th_Alos = 4.8m
}
});
// Summary Mock Data
_snowflakeDatabaseContextMock
.Setup(s => s.QueryAsync<CaseTypeFamilySummaryInfo>(
It.IsAny<string>(), It.IsAny<string>(), It.IsAny<object>(), It.IsAny<TimeSpan>()))
.ReturnsAsync(new[]
{
new CaseTypeFamilySummaryInfo { CaseTypeFamilyName = CaseTypeFamilyName }
});
// Summary Detail Mock Data - for GetCaseTypeFamilySummaryDetailsAsync
_snowflakeDatabaseContextMock
.Setup(s => s.QueryAsync<CaseTypeFamilyEncounterInfo>(
It.IsAny<string>(), It.IsAny<string>(), It.IsAny<object>(), It.IsAny<TimeSpan>()))
.ReturnsAsync(new[]
{
new CaseTypeFamilyEncounterInfo
{
CaseTypeFamilyName = CaseTypeFamilyName,
CostDriver = "LOS"
},
new CaseTypeFamilyEncounterInfo
{
CaseTypeFamilyName = CaseTypeFamilyName,
CostDriver = "Surgery"
}
});
_explorationInfo = new ExplorationCostDriverInfo
{
CaseTypeFamilyId = 1,
PeerGroupId = 1,
ExclusionCriteria = new ExclusionCriteria
{
LosExclusionType = ExclusionCriteriaType.None,
CostExclusionType = ExclusionCriteriaType.None
},
Filters = new ExplorationFilter // Use the alias
{
FilterChipItems = new List<FilterChipItem>
{
new FilterChipItem
{
ChipType = ChipType.DateRange,
Key = ChipKey.DischargeDateID,
DateRange = new List<DateTime>
{
new DateTime(2024, 1, 1),
new DateTime(2024, 12, 31)
}
}
}
}
};
}
[Test]
public async Task GetCaseTypeFamilySummariesAsync_FeatureFlagOn_PopulatesPeerMetrics()
{
// Arrange
var jazzFactory = new JazzEntityFrameworkFactory();
await jazzFactory.CreateDbContextAsync(CancellationToken.None);
var featureFlagWrapper = Mock.Of<IFeatureFlagWrapper>();
Mock.Get(featureFlagWrapper)
.Setup(f => f.IsCiBenchmarkingEnabled(It.IsAny<bool>()))
.ReturnsAsync(true);
var service = new ExplorationService(
jazzFactory,
_snowflakeDatabaseContextMock.Object,
_fiscalMonthResolverMock.Object,
featureFlagWrapper,
_strataSphereCompareServiceMock.Object,
_explorationFilterServiceMock.Object,
_explorationServiceLoggerMock.Object);
// Act
var summaries = await service.GetCaseTypeFamilySummariesAsync(_explorationInfo, CancellationToken.None);
var summary = summaries.Single(s => s.Name == CaseTypeFamilyName);
// Assert
Assert.That(summary.Data.PeerMedianCost, Is.EqualTo(250.75d));
Assert.That(summary.Data.PeerMedianALos, Is.EqualTo(5.2d));
}
[Test]
public async Task GetCaseTypeFamilySummariesAsync_FeatureFlagOff_DefaultPeerMetrics()
{
// Arrange
var jazzFactory = new JazzEntityFrameworkFactory();
await jazzFactory.CreateDbContextAsync(CancellationToken.None);
var featureFlagWrapper = Mock.Of<IFeatureFlagWrapper>();
Mock.Get(featureFlagWrapper)
.Setup(f => f.IsCiBenchmarkingEnabled(It.IsAny<bool>()))
.ReturnsAsync(false);
var service = new ExplorationService(
jazzFactory,
_snowflakeDatabaseContextMock.Object,
_fiscalMonthResolverMock.Object,
featureFlagWrapper,
_strataSphereCompareServiceMock.Object,
_explorationFilterServiceMock.Object,
_explorationServiceLoggerMock.Object);
// Act
var summaries = await service.GetCaseTypeFamilySummariesAsync(_explorationInfo, CancellationToken.None);
var summary = summaries.Single(s => s.Name == CaseTypeFamilyName);
// Assert
Assert.That(summary.Data.PeerMedianCost, Is.EqualTo(0d));
Assert.That(summary.Data.PeerMedianALos, Is.EqualTo(0d));
}
[Test, Ignore("Feature flag is not enabled, this might need additional refactoring")]
public async Task GetCaseTypeFamilySummaryDetailsAsync_FeatureFlagOn_PopulatesPeerMetrics()
{
// Arrange
var jazzFactory = new JazzEntityFrameworkFactory();
await jazzFactory.CreateDbContextAsync(CancellationToken.None);
var featureFlagWrapper = Mock.Of<IFeatureFlagWrapper>();
Mock.Get(featureFlagWrapper)
.Setup(f => f.IsCiBenchmarkingEnabled(It.IsAny<bool>()))
.ReturnsAsync(true);
var service = new ExplorationService(
jazzFactory,
_snowflakeDatabaseContextMock.Object,
_fiscalMonthResolverMock.Object,
featureFlagWrapper,
_strataSphereCompareServiceMock.Object,
_explorationFilterServiceMock.Object,
_explorationServiceLoggerMock.Object);
// Act
var summaries = await service.GetCaseTypeFamilySummaryDetailsAsync(_explorationInfo, CancellationToken.None);
var summary = summaries.Single();
// Assert
Assert.That(summary, Is.Not.Null);
Assert.That(summary.Name, Is.EqualTo(CaseTypeFamilyName));
Assert.That(summary.Children, Is.Not.Null.And.Not.Empty);
var losChild = summary.Children.FirstOrDefault(c => c.Name == "LOS");
if (losChild != null)
{
Assert.That(losChild.Data.PeerMedianCost, Is.EqualTo(150.50d));
}
var surgeryChild = summary.Children.FirstOrDefault(c => c.Name == "Surgery");
if (surgeryChild != null)
{
Assert.That(surgeryChild.Data.PeerMedianCost, Is.EqualTo(300.25d));
}
}
[Test]
public async Task GetCaseTypeFamilySummaryDetailsAsync_FeatureFlagOff_DefaultPeerMetrics()
{
// Arrange
var jazzFactory = new JazzEntityFrameworkFactory();
await jazzFactory.CreateDbContextAsync(CancellationToken.None);
var featureFlagWrapper = Mock.Of<IFeatureFlagWrapper>();
Mock.Get(featureFlagWrapper)
.Setup(f => f.IsCiBenchmarkingEnabled(It.IsAny<bool>()))
.ReturnsAsync(false);
var service = new ExplorationService(
jazzFactory,
_snowflakeDatabaseContextMock.Object,
_fiscalMonthResolverMock.Object,
featureFlagWrapper,
_strataSphereCompareServiceMock.Object,
_explorationFilterServiceMock.Object,
_explorationServiceLoggerMock.Object);
// Act
var summaries = await service.GetCaseTypeFamilySummaryDetailsAsync(_explorationInfo as ExplorationCostDriverInfo, CancellationToken.None);
var summary = summaries.Single();
// Assert
Assert.That(summary, Is.Not.Null);
Assert.That(summary.Name, Is.EqualTo(CaseTypeFamilyName));
if (summary.Children != null && summary.Children.Any())
{
foreach (var child in summary.Children)
{
Assert.That(child.Data.PeerMedianCost, Is.EqualTo(0d));
Assert.That(child.Data.PeerMedianALos, Is.EqualTo(0d));
}
}
}
}
}
@@ -0,0 +1,316 @@
using DocumentFormat.OpenXml.Wordprocessing;
using Microsoft.Extensions.Logging;
using Moq;
using MoreLinq;
using NUnit.Framework;
using Strata.ContinuousImprovement.Biz.Configuration;
using Strata.ContinuousImprovement.Biz.DbContexts;
using Strata.ContinuousImprovement.Biz.DbContexts.Snowflake;
using Strata.ContinuousImprovement.Biz.Exploration;
using Strata.ContinuousImprovement.Biz.Exploration.CaseTypeFamilies;
using Strata.ContinuousImprovement.Biz.Exploration.Filters;
using Strata.ContinuousImprovement.Biz.FiscalMonths;
using Strata.ContinuousImprovement.Biz.Test.Unit.Utilities;
using Strata.ContinuousImprovement.Biz.Utilities;
using Strata.ContinuousImprovement.JazzEntityFrameworkStub;
using Strata.SqlTools.Configuration.Common.AsyncFactory;
using Strata.StrataSphereCompare.Client;
using Strata.StrataSphereCompare.Client.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
using VerifyNUnit;
using VerifyTests;
using static Strata.ContinuousImprovement.Biz.Exploration.ExplorationService;
using ExplorationFilter = Strata.ContinuousImprovement.Biz.Exploration.Filters.Filter;
namespace Strata.ContinuousImprovement.Biz.Test.Unit.Exploration
{
[TestFixture, Category("Unit")]
public class ExplorationServiceTest
{
private const string SourceFilePath = @"Exploration/source/";
public IAsyncDbContextFactory<JazzDbContext> DbContextFactory { get; set; }
public JazzEntityFrameworkFactory JAZZ_Framework { get; set; }
public JazzDbContext JazzDbContext { get; set; }
public ISqlGridReaderWrapper SqlGridReader { get; set; }
public ISnowflakeDatabaseContext SnowflakeDatabaseContext { get; set; }
public IConfigurationService ConfigurationService { get; set; }
public IFiscalMonthResolver FiscalMonthResolver { get; set; }
public ILogger<ExplorationService> Logger { get; set; }
public VerifySettings VerifySettings { get; set; }
public IFeatureFlagWrapper FeatureFlagWrapper { get; set; }
public IStrataSphereCompareService StrataSphereCompareService { get; set; }
public IExplorationFilterService ExplorationFilterService { get; set; }
[OneTimeSetUp]
public void ExplorationServiceTestOneTimeSetUp()
{
DbContextFactory = Mock.Of<IAsyncDbContextFactory<JazzDbContext>>();
JAZZ_Framework = new JazzEntityFrameworkFactory();
Mock.Get(DbContextFactory)
.Setup(s => s.CreateDbContextAsync(It.IsAny<CancellationToken>()))
.Returns(async () =>
{
JazzDbContext = await JAZZ_Framework.CreateDbContextAsync(CancellationToken.None);
return JazzDbContext;
});
SqlGridReader = Mock.Of<ISqlGridReaderWrapper>();
Mock.Get(SqlGridReader)
.Setup(s => s.Read(It.IsAny<bool>()))
.Returns(Enumerable.Empty<dynamic>());
SnowflakeDatabaseContext = Mock.Of<ISnowflakeDatabaseContext>();
Mock.Get(SnowflakeDatabaseContext)
.Setup(s => s.QueryMultipleAsync(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<object>(), It.IsAny<TimeSpan>()))
.Returns(Task.FromResult(SqlGridReader));
ConfigurationService = Mock.Of<IConfigurationService>();
FiscalMonthResolver = Mock.Of<IFiscalMonthResolver>();
Logger = Mock.Of<ILogger<ExplorationService>>();
VerifySettings = TestExtensions.TestSettings();
FeatureFlagWrapper = Mock.Of<IFeatureFlagWrapper>();
StrataSphereCompareService = Mock.Of<IStrataSphereCompareService>();
ExplorationFilterService = Mock.Of<IExplorationFilterService>();
// Setup the mock to return empty results
Mock.Get(ExplorationFilterService)
.Setup(s => s.GetFilterStringsAsync(It.IsAny<IEnumerable<FilterChipItem>>(), It.IsAny<IQueryParamBase>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(("", ""));
Mock.Get(ExplorationFilterService)
.Setup(s => s.BuildDataFiltersAsync(It.IsAny<CaseTypeFamily>(), It.IsAny<string>(), It.IsAny<ExplorationFilter>(), It.IsAny<bool>(), It.IsAny<bool>(), It.IsAny<bool>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new CostDetailsFilterDto());
Mock.Get(ExplorationFilterService)
.Setup(s => s.CreateCostDriverFilter())
.Returns(new FilterChipItem());
Mock.Get(FeatureFlagWrapper)
.Setup(f => f.IsCiBenchmarkingEnabled(It.IsAny<bool>()))
.ReturnsAsync(true);
}
[TestCaseSource(nameof(GetCaseTypeFamilyDetailsTestCases))]
public async Task GetCaseTypeFamilyDetailsTest(GetCaseTypeFamilyDetailsTestData data)
{
// arrange
Mock.Get(SqlGridReader)
.Setup(s => s.Read<CTFGroupCalcs>(It.IsAny<bool>()))
.Returns(data.CTFGroupCalcsList);
Mock.Get(SqlGridReader)
.Setup(s => s.Read<EntityGroupCalcs>(It.IsAny<bool>()))
.Returns(data.EntityGroupCalcsList);
Mock.Get(SqlGridReader)
.Setup(s => s.Read<EntityCodeGroupCalcs>(It.IsAny<bool>()))
.Returns(data.EntityCodeGroupCalcsList);
Mock.Get(SqlGridReader)
.Setup(s => s.Read<EntityCodePhysicianGroupCalcs>(It.IsAny<bool>()))
.Returns(data.EntityCodePhysicianGroupCalcsList);
Mock.Get(SqlGridReader)
.Setup(s => s.Read<CTFEncounterDetail>(It.IsAny<bool>()))
.Returns(data.CTFEncounterDetailList);
var explorationService = new ExplorationService(
DbContextFactory,
SnowflakeDatabaseContext,
FiscalMonthResolver,
FeatureFlagWrapper,
StrataSphereCompareService,
ExplorationFilterService,
Logger);
// act
var taskResult = await explorationService.GetCaseTypeFamilyDetailsAsync(data.ExplorationDetailInfoData, CancellationToken.None);
// assert
await Verifier.Verify(taskResult, VerifySettings)
.UseFileName(TestContext.CurrentContext.TestName());
}
[TestCaseSource(nameof(GetEncountersTestCases))]
public async Task GetEncountersTest(GetEncountersTestData data)
{
// arrange
Mock.Get(SqlGridReader)
.Setup(s => s.Read<PhysicianInfo>(It.IsAny<bool>()))
.Returns(data.PhysicianInfoList);
Mock.Get(SqlGridReader)
.Setup(s => s.Read<EncounterInfoBase>(It.IsAny<bool>()))
.Returns(data.EncounterInfoBaseList);
var configurationGuid = Guid.Empty;
var explorationService = new ExplorationService(
DbContextFactory,
SnowflakeDatabaseContext,
FiscalMonthResolver,
FeatureFlagWrapper,
StrataSphereCompareService,
ExplorationFilterService,
Logger);
// act
var taskResult = await explorationService.GetEncountersAsync(data.ExplorationDetailInfoData, configurationGuid, CancellationToken.None);
// assert
await Verifier.Verify(taskResult, VerifySettings)
.UseFileName(TestContext.CurrentContext.TestName());
}
private static IEnumerable<TestCaseData> GetCaseTypeFamilyDetailsTestCases()
{
var testName = "GetCaseTypeFamilyDetailsTest";
var explorationDetailInfoDataJson = GetSourceFile("ExplorationDetailInfo.txt");
var ctfGroupCalcsListJson = GetSourceFile("CTFGroupCalcs.txt");
var entityGroupCalcsListJson = GetSourceFile("EntityGroupCalcs.txt");
var entityCodeGroupCalcsListJson = GetSourceFile("EntityCodeGroupCalcs.txt");
var entityCodePhysicianGroupCalcsListJson = GetSourceFile("EntityCodePhysicianGroupCalcs.txt");
var ctfEncounterDetailListJson = GetSourceFile("CTFEncounterDetail.txt");
var dataAllMatch = new GetCaseTypeFamilyDetailsTestData()
{
ExplorationDetailInfoData = JsonSerializer.Deserialize<ExplorationDetailInfo>(explorationDetailInfoDataJson),
CTFGroupCalcsList = JsonSerializer.Deserialize<IEnumerable<CTFGroupCalcs>>(ctfGroupCalcsListJson),
EntityGroupCalcsList = JsonSerializer.Deserialize<IEnumerable<EntityGroupCalcs>>(entityGroupCalcsListJson),
EntityCodeGroupCalcsList = JsonSerializer.Deserialize<IEnumerable<EntityCodeGroupCalcs>>(entityCodeGroupCalcsListJson),
EntityCodePhysicianGroupCalcsList = JsonSerializer.Deserialize<IEnumerable<EntityCodePhysicianGroupCalcs>>(entityCodePhysicianGroupCalcsListJson),
CTFEncounterDetailList = JsonSerializer.Deserialize<IEnumerable<CTFEncounterDetail>>(ctfEncounterDetailListJson)
};
dataAllMatch.ExplorationDetailInfoData.Filters = new ExplorationFilter() // FIXED: Changed from Biz.Exploration.Filters.Filter to ExplorationFilter
{
FilterChipItems = new List<FilterChipItem>()
{
new FilterChipItem {
ChipType = ChipType.DateRange, Key = ChipKey.DischargeDateID,
DateRange = new List<DateTime>()
{
new DateTime(2024, 1, 1),
new DateTime(2024, 12, 31)
}
}
}
};
yield return new TestCaseData(dataAllMatch)
.SetName($"{testName} All Match");
var dataPhysicianIdNotMatch = new GetCaseTypeFamilyDetailsTestData()
{
ExplorationDetailInfoData = dataAllMatch.ExplorationDetailInfoData,
CTFGroupCalcsList = dataAllMatch.CTFGroupCalcsList,
EntityGroupCalcsList = dataAllMatch.EntityGroupCalcsList,
EntityCodeGroupCalcsList = dataAllMatch.EntityCodeGroupCalcsList,
EntityCodePhysicianGroupCalcsList = JsonSerializer.Deserialize<IEnumerable<EntityCodePhysicianGroupCalcs>>(entityCodePhysicianGroupCalcsListJson),
CTFEncounterDetailList = dataAllMatch.CTFEncounterDetailList
};
dataPhysicianIdNotMatch.EntityCodePhysicianGroupCalcsList.First().PhysicianId = 0;
yield return new TestCaseData(dataPhysicianIdNotMatch)
.SetName($"{testName} PhysicianId Not Match");
var dataCodeNotMatch = new GetCaseTypeFamilyDetailsTestData()
{
ExplorationDetailInfoData = dataAllMatch.ExplorationDetailInfoData,
CTFGroupCalcsList = dataAllMatch.CTFGroupCalcsList,
EntityGroupCalcsList = dataAllMatch.EntityGroupCalcsList,
EntityCodeGroupCalcsList = JsonSerializer.Deserialize<IEnumerable<EntityCodeGroupCalcs>>(entityCodeGroupCalcsListJson),
EntityCodePhysicianGroupCalcsList = dataAllMatch.EntityCodePhysicianGroupCalcsList,
CTFEncounterDetailList = dataAllMatch.CTFEncounterDetailList
};
dataCodeNotMatch.EntityCodeGroupCalcsList.First().Code = "";
yield return new TestCaseData(dataCodeNotMatch)
.SetName($"{testName} Code Not Match");
var dataEntityNotMatch = new GetCaseTypeFamilyDetailsTestData()
{
ExplorationDetailInfoData = dataAllMatch.ExplorationDetailInfoData,
CTFGroupCalcsList = dataAllMatch.CTFGroupCalcsList,
EntityGroupCalcsList = JsonSerializer.Deserialize<IEnumerable<EntityGroupCalcs>>(entityGroupCalcsListJson),
EntityCodeGroupCalcsList = dataAllMatch.EntityCodeGroupCalcsList,
EntityCodePhysicianGroupCalcsList = dataAllMatch.EntityCodePhysicianGroupCalcsList,
CTFEncounterDetailList = dataAllMatch.CTFEncounterDetailList
};
dataEntityNotMatch.EntityGroupCalcsList.First().EntityId = 0;
yield return new TestCaseData(dataEntityNotMatch)
.SetName($"{testName} Entity Not Match");
}
private static IEnumerable<TestCaseData> GetEncountersTestCases()
{
var testName = "GetEncountersTest";
var explorationDetailInfoDataJson = GetSourceFile("ExplorationDetailInfo.txt");
var physicianInfoJson = GetSourceFile("PhysicianInfo.txt");
var encounterInfoBaseJson = GetSourceFile("EncounterInfoBase.txt");
var dataAllMatch = new GetEncountersTestData()
{
ExplorationDetailInfoData = JsonSerializer.Deserialize<ExplorationDetailInfo>(explorationDetailInfoDataJson),
PhysicianInfoList = JsonSerializer.Deserialize<IEnumerable<PhysicianInfo>>(physicianInfoJson),
EncounterInfoBaseList = JsonSerializer.Deserialize<IEnumerable<EncounterInfoBase>>(encounterInfoBaseJson)
};
dataAllMatch.ExplorationDetailInfoData.Filters = new ExplorationFilter() // FIXED: Changed from Biz.Exploration.Filters.Filter to ExplorationFilter
{
FilterChipItems = new List<FilterChipItem>()
{
new FilterChipItem {
ChipType = ChipType.DateRange, Key = ChipKey.DischargeDateID,
DateRange = new List<DateTime>()
{
new DateTime(2024, 1, 1),
new DateTime(2024, 12, 31)
}
}
}
};
yield return new TestCaseData(dataAllMatch)
.SetName($"{testName} All Match");
var dataPhysicianIdNotMatch = new GetEncountersTestData()
{
ExplorationDetailInfoData = dataAllMatch.ExplorationDetailInfoData,
PhysicianInfoList = JsonSerializer.Deserialize<IEnumerable<PhysicianInfo>>(physicianInfoJson),
EncounterInfoBaseList = dataAllMatch.EncounterInfoBaseList,
};
dataPhysicianIdNotMatch.PhysicianInfoList.First().PhysicianID = 0;
yield return new TestCaseData(dataPhysicianIdNotMatch)
.SetName($"{testName} PhysicianId Not Match");
}
private static string GetSourceFile(string file)
{
string filePath = Path.Combine(TestHelper.TestsRootDirectory, SourceFilePath, file);
string jsonData = File.ReadAllText(filePath);
return jsonData;
}
public class GetCaseTypeFamilySummariesTestData
{
public ExplorationInfo ExplorationInfoData { get; set; }
public IEnumerable<CaseTypeFamilyEncounterInfo> CaseTypeFamilyEncounterInfoList { get; set; }
}
public class GetCaseTypeFamilyDetailsTestData
{
public ExplorationDetailInfo ExplorationDetailInfoData { get; set; }
public IEnumerable<CTFGroupCalcs> CTFGroupCalcsList { get; set; }
public IEnumerable<EntityGroupCalcs> EntityGroupCalcsList { get; set; }
public IEnumerable<EntityCodeGroupCalcs> EntityCodeGroupCalcsList { get; set; }
public IEnumerable<EntityCodePhysicianGroupCalcs> EntityCodePhysicianGroupCalcsList { get; set; }
public IEnumerable<CTFEncounterDetail> CTFEncounterDetailList { get; set; }
}
public class GetEncountersTestData
{
public ExplorationDetailInfo ExplorationDetailInfoData { get; set; }
public IEnumerable<PhysicianInfo> PhysicianInfoList { get; set; }
public IEnumerable<EncounterInfoBase> EncounterInfoBaseList { get; set; }
}
}
}
@@ -0,0 +1,66 @@
[
{
"EncounterId": 24375411,
"EncounterRecordNumber": "1024375411",
"CTFType": 0,
"EntityId": 93,
"Code": "880",
"PhysicianId": 3339,
"LengthOfStay": 5,
"VariableDirectCost": 208.1365,
"IdentifiedVariation": 148.89435,
"Charges": 4045.0814,
"IsExpired": 0,
"IsExcluded": false,
"DischargeStatusCode": "06",
"DischargeStatusDescription": "Discharged/transferred to home under care of an organized home health service organization in anticipation of covered skilled care"
},
{
"EncounterId": 26713064,
"EncounterRecordNumber": "1026713064",
"CTFType": 0,
"EntityId": 93,
"Code": "880",
"PhysicianId": 3474,
"LengthOfStay": 3,
"VariableDirectCost": 71.8018,
"IdentifiedVariation": 12.559649999999998,
"Charges": 985.8658,
"IsExpired": 0,
"IsExcluded": false,
"DischargeStatusCode": "01",
"DischargeStatusDescription": "Discharged to home or self care (routine discharge)"
},
{
"EncounterId": 27090900,
"EncounterRecordNumber": "1027090900",
"CTFType": 0,
"EntityId": 93,
"Code": "880",
"PhysicianId": 794,
"LengthOfStay": 15,
"VariableDirectCost": 5.0037,
"IdentifiedVariation": -54.23845,
"Charges": 384.65,
"IsExpired": 0,
"IsExcluded": true,
"DischargeStatusCode": "03",
"DischargeStatusDescription": "Discharged/transferred to Skilled Nursing Facility (SNF) with Medicare certification"
},
{
"EncounterId": 28432227,
"EncounterRecordNumber": "1028432227",
"CTFType": 0,
"EntityId": 93,
"Code": "880",
"PhysicianId": 3896,
"LengthOfStay": 7,
"VariableDirectCost": 46.6825,
"IdentifiedVariation": -12.559650000000005,
"Charges": 996.8704,
"IsExpired": 0,
"IsExcluded": true,
"DischargeStatusCode": "03",
"DischargeStatusDescription": "Discharged/transferred to Skilled Nursing Facility (SNF) with Medicare certification"
}
]
@@ -0,0 +1,7 @@
[
{
"CTFId": 206,
"CTFName": "Acute Adjustment Reaction And Psychosocial Dysfunction",
"MedianVDC": 59.24215
}
]
@@ -0,0 +1,596 @@
[
{
"CaseTypeFamilyId": 6654,
"CaseTypeFamilyName": "Endoscopy Procedures on the Mediastinum",
"Vdc": 2038.5242,
"MedianVdc": 1931.0259,
"TwentyFivePercentileVdc": 1877.27675,
"SeventyFivePercentileVdc": 1984.77505,
"TwentyFivePercentileLos": 0,
"SeventyFivePercentileLos": 0,
"CostDriver": "Laboratory",
"EncounterId": 2562780,
"DischargeDateTime": "2023-01-17T00:00:00Z",
"EncounterRecordNumber": null,
"EntityId": 0,
"IdentifiedVariation": 270.5061,
"IsExpired": 0,
"LengthOfStay": 0,
"MedianLengthOfStay": 0,
"MedianVariableDirectCost": 283.5443,
"MedianGrossCharges": 0,
"VariableDirectCost": 554.0504,
"Charges": 11265.2698,
"IsExcluded": false,
"IqrLos": 0,
"IqrVdc": 107.4983,
"MadLos": 0,
"MadVdc": 159.37698,
"DischargeStatusCode": null,
"DischargeStatusDescription": null,
"MortalityRate": 0,
"ROM": 0,
"SOI": 0
},
{
"CaseTypeFamilyId": 6654,
"CaseTypeFamilyName": "Endoscopy Procedures on the Mediastinum",
"Vdc": 2038.5242,
"MedianVdc": 1931.0259,
"TwentyFivePercentileVdc": 1877.27675,
"SeventyFivePercentileVdc": 1984.77505,
"TwentyFivePercentileLos": 0,
"SeventyFivePercentileLos": 0,
"CostDriver": "Excluded",
"EncounterId": 2562780,
"DischargeDateTime": "2023-01-17T00:00:00Z",
"EncounterRecordNumber": null,
"EntityId": 0,
"IdentifiedVariation": 0,
"IsExpired": 0,
"LengthOfStay": 0,
"MedianLengthOfStay": 0,
"MedianVariableDirectCost": 0.2644,
"MedianGrossCharges": 0,
"VariableDirectCost": 0.2644,
"Charges": 49.0752,
"IsExcluded": false,
"IqrLos": 0,
"IqrVdc": 107.4983,
"MadLos": 0,
"MadVdc": 159.37698,
"DischargeStatusCode": null,
"DischargeStatusDescription": null,
"MortalityRate": 0,
"ROM": 0,
"SOI": 0
},
{
"CaseTypeFamilyId": 6654,
"CaseTypeFamilyName": "Endoscopy Procedures on the Mediastinum",
"Vdc": 2038.5242,
"MedianVdc": 1931.0259,
"TwentyFivePercentileVdc": 1877.27675,
"SeventyFivePercentileVdc": 1984.77505,
"TwentyFivePercentileLos": 0,
"SeventyFivePercentileLos": 0,
"CostDriver": "OR Time",
"EncounterId": 2562780,
"DischargeDateTime": "2023-01-17T00:00:00Z",
"EncounterRecordNumber": null,
"EntityId": 0,
"IdentifiedVariation": -15.31945,
"IsExpired": 0,
"LengthOfStay": 0,
"MedianLengthOfStay": 0,
"MedianVariableDirectCost": 1066.93575,
"MedianGrossCharges": 0,
"VariableDirectCost": 1051.6163,
"Charges": 17348.9676,
"IsExcluded": false,
"IqrLos": 0,
"IqrVdc": 107.4983,
"MadLos": 0,
"MadVdc": 159.37698,
"DischargeStatusCode": null,
"DischargeStatusDescription": null,
"MortalityRate": 0,
"ROM": 0,
"SOI": 0
},
{
"CaseTypeFamilyId": 6654,
"CaseTypeFamilyName": "Endoscopy Procedures on the Mediastinum",
"Vdc": 2038.5242,
"MedianVdc": 1931.0259,
"TwentyFivePercentileVdc": 1877.27675,
"SeventyFivePercentileVdc": 1984.77505,
"TwentyFivePercentileLos": 0,
"SeventyFivePercentileLos": 0,
"CostDriver": "Supplies",
"EncounterId": 2562780,
"DischargeDateTime": "2023-01-17T00:00:00Z",
"EncounterRecordNumber": null,
"EntityId": 0,
"IdentifiedVariation": -74.0283,
"IsExpired": 0,
"LengthOfStay": 0,
"MedianLengthOfStay": 0,
"MedianVariableDirectCost": 275.0648,
"MedianGrossCharges": 0,
"VariableDirectCost": 201.0365,
"Charges": 908.8934,
"IsExcluded": false,
"IqrLos": 0,
"IqrVdc": 107.4983,
"MadLos": 0,
"MadVdc": 159.37698,
"DischargeStatusCode": null,
"DischargeStatusDescription": null,
"MortalityRate": 0,
"ROM": 0,
"SOI": 0
},
{
"CaseTypeFamilyId": 6654,
"CaseTypeFamilyName": "Endoscopy Procedures on the Mediastinum",
"Vdc": 2038.5242,
"MedianVdc": 1931.0259,
"TwentyFivePercentileVdc": 1877.27675,
"SeventyFivePercentileVdc": 1984.77505,
"TwentyFivePercentileLos": 0,
"SeventyFivePercentileLos": 0,
"CostDriver": "Pharmacy",
"EncounterId": 2562780,
"DischargeDateTime": "2023-01-17T00:00:00Z",
"EncounterRecordNumber": null,
"EntityId": 0,
"IdentifiedVariation": -15.66025,
"IsExpired": 0,
"LengthOfStay": 0,
"MedianLengthOfStay": 0,
"MedianVariableDirectCost": 120.94545,
"MedianGrossCharges": 0,
"VariableDirectCost": 105.2852,
"Charges": 1801.1414,
"IsExcluded": false,
"IqrLos": 0,
"IqrVdc": 107.4983,
"MadLos": 0,
"MadVdc": 159.37698,
"DischargeStatusCode": null,
"DischargeStatusDescription": null,
"MortalityRate": 0,
"ROM": 0,
"SOI": 0
},
{
"CaseTypeFamilyId": 6654,
"CaseTypeFamilyName": "Endoscopy Procedures on the Mediastinum",
"Vdc": 2038.5242,
"MedianVdc": 1931.0259,
"TwentyFivePercentileVdc": 1877.27675,
"SeventyFivePercentileVdc": 1984.77505,
"TwentyFivePercentileLos": 0,
"SeventyFivePercentileLos": 0,
"CostDriver": "",
"EncounterId": 2562780,
"DischargeDateTime": "2023-01-17T00:00:00Z",
"EncounterRecordNumber": null,
"EntityId": 0,
"IdentifiedVariation": 0,
"IsExpired": 0,
"LengthOfStay": 0,
"MedianLengthOfStay": 0,
"MedianVariableDirectCost": 0,
"MedianGrossCharges": 0,
"VariableDirectCost": 0,
"Charges": 0,
"IsExcluded": false,
"IqrLos": 0,
"IqrVdc": 107.4983,
"MadLos": 0,
"MadVdc": 159.37698,
"DischargeStatusCode": null,
"DischargeStatusDescription": null,
"MortalityRate": 0,
"ROM": 0,
"SOI": 0
},
{
"CaseTypeFamilyId": 6654,
"CaseTypeFamilyName": "Endoscopy Procedures on the Mediastinum",
"Vdc": 2038.5242,
"MedianVdc": 1931.0259,
"TwentyFivePercentileVdc": 1877.27675,
"SeventyFivePercentileVdc": 1984.77505,
"TwentyFivePercentileLos": 0,
"SeventyFivePercentileLos": 0,
"CostDriver": "Cardiovascular",
"EncounterId": 2562780,
"DischargeDateTime": "2023-01-17T00:00:00Z",
"EncounterRecordNumber": null,
"EntityId": 0,
"IdentifiedVariation": 0,
"IsExpired": 0,
"LengthOfStay": 0,
"MedianLengthOfStay": 0,
"MedianVariableDirectCost": 5.0037,
"MedianGrossCharges": 0,
"VariableDirectCost": 5.0037,
"Charges": 393.3321,
"IsExcluded": false,
"IqrLos": 0,
"IqrVdc": 107.4983,
"MadLos": 0,
"MadVdc": 159.37698,
"DischargeStatusCode": null,
"DischargeStatusDescription": null,
"MortalityRate": 0,
"ROM": 0,
"SOI": 0
},
{
"CaseTypeFamilyId": 6654,
"CaseTypeFamilyName": "Endoscopy Procedures on the Mediastinum",
"Vdc": 2038.5242,
"MedianVdc": 1931.0259,
"TwentyFivePercentileVdc": 1877.27675,
"SeventyFivePercentileVdc": 1984.77505,
"TwentyFivePercentileLos": 0,
"SeventyFivePercentileLos": 0,
"CostDriver": "Therapeutic Services",
"EncounterId": 2562780,
"DischargeDateTime": "2023-01-17T00:00:00Z",
"EncounterRecordNumber": null,
"EntityId": 0,
"IdentifiedVariation": -60.63385,
"IsExpired": 0,
"LengthOfStay": 0,
"MedianLengthOfStay": 0,
"MedianVariableDirectCost": 181.90155,
"MedianGrossCharges": 0,
"VariableDirectCost": 121.2677,
"Charges": 320.4913,
"IsExcluded": false,
"IqrLos": 0,
"IqrVdc": 107.4983,
"MadLos": 0,
"MadVdc": 159.37698,
"DischargeStatusCode": null,
"DischargeStatusDescription": null,
"MortalityRate": 0,
"ROM": 0,
"SOI": 0
},
{
"CaseTypeFamilyId": 592,
"CaseTypeFamilyName": "Skin Debridement",
"Vdc": 4353.6024,
"MedianVdc": 4353.6024,
"TwentyFivePercentileVdc": 2983.74705,
"SeventyFivePercentileVdc": 4525.49485,
"TwentyFivePercentileLos": 4.5,
"SeventyFivePercentileLos": 9.5,
"CostDriver": "Pharmacy",
"EncounterId": 2565425,
"DischargeDateTime": "2023-02-02T00:00:00Z",
"EncounterRecordNumber": null,
"EntityId": 0,
"IdentifiedVariation": 0,
"IsExpired": 0,
"LengthOfStay": 12,
"MedianLengthOfStay": 7,
"MedianVariableDirectCost": 373.0302,
"MedianGrossCharges": 0,
"VariableDirectCost": 373.0302,
"Charges": 11782.8149,
"IsExcluded": false,
"IqrLos": 5,
"IqrVdc": 1541.7478,
"MadLos": 7.413,
"MadVdc": 509.6955,
"DischargeStatusCode": null,
"DischargeStatusDescription": null,
"MortalityRate": 0,
"ROM": 0,
"SOI": 0
},
{
"CaseTypeFamilyId": 592,
"CaseTypeFamilyName": "Skin Debridement",
"Vdc": 4353.6024,
"MedianVdc": 4353.6024,
"TwentyFivePercentileVdc": 2983.74705,
"SeventyFivePercentileVdc": 4525.49485,
"TwentyFivePercentileLos": 4.5,
"SeventyFivePercentileLos": 9.5,
"CostDriver": "Supplies",
"EncounterId": 2565425,
"DischargeDateTime": "2023-02-02T00:00:00Z",
"EncounterRecordNumber": null,
"EntityId": 0,
"IdentifiedVariation": -19.7357,
"IsExpired": 0,
"LengthOfStay": 12,
"MedianLengthOfStay": 7,
"MedianVariableDirectCost": 87.3104,
"MedianGrossCharges": 0,
"VariableDirectCost": 67.5747,
"Charges": 254.2575,
"IsExcluded": false,
"IqrLos": 5,
"IqrVdc": 1541.7478,
"MadLos": 7.413,
"MadVdc": 509.6955,
"DischargeStatusCode": null,
"DischargeStatusDescription": null,
"MortalityRate": 0,
"ROM": 0,
"SOI": 0
},
{
"CaseTypeFamilyId": 592,
"CaseTypeFamilyName": "Skin Debridement",
"Vdc": 4353.6024,
"MedianVdc": 4353.6024,
"TwentyFivePercentileVdc": 2983.74705,
"SeventyFivePercentileVdc": 4525.49485,
"TwentyFivePercentileLos": 4.5,
"SeventyFivePercentileLos": 9.5,
"CostDriver": "OR Time",
"EncounterId": 2565425,
"DischargeDateTime": "2023-02-02T00:00:00Z",
"EncounterRecordNumber": null,
"EntityId": 0,
"IdentifiedVariation": 0,
"IsExpired": 0,
"LengthOfStay": 12,
"MedianLengthOfStay": 7,
"MedianVariableDirectCost": 680.5711,
"MedianGrossCharges": 0,
"VariableDirectCost": 680.5711,
"Charges": 12771.463,
"IsExcluded": false,
"IqrLos": 5,
"IqrVdc": 1541.7478,
"MadLos": 7.413,
"MadVdc": 509.6955,
"DischargeStatusCode": null,
"DischargeStatusDescription": null,
"MortalityRate": 0,
"ROM": 0,
"SOI": 0
},
{
"CaseTypeFamilyId": 592,
"CaseTypeFamilyName": "Skin Debridement",
"Vdc": 4353.6024,
"MedianVdc": 4353.6024,
"TwentyFivePercentileVdc": 2983.74705,
"SeventyFivePercentileVdc": 4525.49485,
"TwentyFivePercentileLos": 4.5,
"SeventyFivePercentileLos": 9.5,
"CostDriver": "LOS",
"EncounterId": 2565425,
"DischargeDateTime": "2023-02-02T00:00:00Z",
"EncounterRecordNumber": null,
"EntityId": 0,
"IdentifiedVariation": 357.1267,
"IsExpired": 0,
"LengthOfStay": 12,
"MedianLengthOfStay": 7,
"MedianVariableDirectCost": 1747.5269,
"MedianGrossCharges": 0,
"VariableDirectCost": 2104.6536,
"Charges": 29186.0674,
"IsExcluded": false,
"IqrLos": 5,
"IqrVdc": 1541.7478,
"MadLos": 7.413,
"MadVdc": 509.6955,
"DischargeStatusCode": null,
"DischargeStatusDescription": null,
"MortalityRate": 0,
"ROM": 0,
"SOI": 0
},
{
"CaseTypeFamilyId": 592,
"CaseTypeFamilyName": "Skin Debridement",
"Vdc": 4353.6024,
"MedianVdc": 4353.6024,
"TwentyFivePercentileVdc": 2983.74705,
"SeventyFivePercentileVdc": 4525.49485,
"TwentyFivePercentileLos": 4.5,
"SeventyFivePercentileLos": 9.5,
"CostDriver": "Other Diagnostic Services",
"EncounterId": 2565425,
"DischargeDateTime": "2023-02-02T00:00:00Z",
"EncounterRecordNumber": null,
"EntityId": 0,
"IdentifiedVariation": 37.18375,
"IsExpired": 0,
"LengthOfStay": 12,
"MedianLengthOfStay": 7,
"MedianVariableDirectCost": 113.54845,
"MedianGrossCharges": 0,
"VariableDirectCost": 150.7322,
"Charges": 3224.1159,
"IsExcluded": false,
"IqrLos": 5,
"IqrVdc": 1541.7478,
"MadLos": 7.413,
"MadVdc": 509.6955,
"DischargeStatusCode": null,
"DischargeStatusDescription": null,
"MortalityRate": 0,
"ROM": 0,
"SOI": 0
},
{
"CaseTypeFamilyId": 592,
"CaseTypeFamilyName": "Skin Debridement",
"Vdc": 4353.6024,
"MedianVdc": 4353.6024,
"TwentyFivePercentileVdc": 2983.74705,
"SeventyFivePercentileVdc": 4525.49485,
"TwentyFivePercentileLos": 4.5,
"SeventyFivePercentileLos": 9.5,
"CostDriver": "",
"EncounterId": 2565425,
"DischargeDateTime": "2023-02-02T00:00:00Z",
"EncounterRecordNumber": null,
"EntityId": 0,
"IdentifiedVariation": 0,
"IsExpired": 0,
"LengthOfStay": 12,
"MedianLengthOfStay": 7,
"MedianVariableDirectCost": 0,
"MedianGrossCharges": 0,
"VariableDirectCost": 0,
"Charges": 0,
"IsExcluded": false,
"IqrLos": 5,
"IqrVdc": 1541.7478,
"MadLos": 7.413,
"MadVdc": 509.6955,
"DischargeStatusCode": null,
"DischargeStatusDescription": null,
"MortalityRate": 0,
"ROM": 0,
"SOI": 0
},
{
"CaseTypeFamilyId": 592,
"CaseTypeFamilyName": "Skin Debridement",
"Vdc": 4353.6024,
"MedianVdc": 4353.6024,
"TwentyFivePercentileVdc": 2983.74705,
"SeventyFivePercentileVdc": 4525.49485,
"TwentyFivePercentileLos": 4.5,
"SeventyFivePercentileLos": 9.5,
"CostDriver": "Laboratory",
"EncounterId": 2565425,
"DischargeDateTime": "2023-02-02T00:00:00Z",
"EncounterRecordNumber": null,
"EntityId": 0,
"IdentifiedVariation": 0,
"IsExpired": 0,
"LengthOfStay": 12,
"MedianLengthOfStay": 7,
"MedianVariableDirectCost": 123.2207,
"MedianGrossCharges": 0,
"VariableDirectCost": 123.2207,
"Charges": 5503.8051,
"IsExcluded": false,
"IqrLos": 5,
"IqrVdc": 1541.7478,
"MadLos": 7.413,
"MadVdc": 509.6955,
"DischargeStatusCode": null,
"DischargeStatusDescription": null,
"MortalityRate": 0,
"ROM": 0,
"SOI": 0
},
{
"CaseTypeFamilyId": 592,
"CaseTypeFamilyName": "Skin Debridement",
"Vdc": 4353.6024,
"MedianVdc": 4353.6024,
"TwentyFivePercentileVdc": 2983.74705,
"SeventyFivePercentileVdc": 4525.49485,
"TwentyFivePercentileLos": 4.5,
"SeventyFivePercentileLos": 9.5,
"CostDriver": "Therapeutic Services",
"EncounterId": 2565425,
"DischargeDateTime": "2023-02-02T00:00:00Z",
"EncounterRecordNumber": null,
"EntityId": 0,
"IdentifiedVariation": 245.3111,
"IsExpired": 0,
"LengthOfStay": 12,
"MedianLengthOfStay": 7,
"MedianVariableDirectCost": 473.0037,
"MedianGrossCharges": 0,
"VariableDirectCost": 718.3148,
"Charges": 7026.8907,
"IsExcluded": false,
"IqrLos": 5,
"IqrVdc": 1541.7478,
"MadLos": 7.413,
"MadVdc": 509.6955,
"DischargeStatusCode": null,
"DischargeStatusDescription": null,
"MortalityRate": 0,
"ROM": 0,
"SOI": 0
},
{
"CaseTypeFamilyId": 592,
"CaseTypeFamilyName": "Skin Debridement",
"Vdc": 4353.6024,
"MedianVdc": 4353.6024,
"TwentyFivePercentileVdc": 2983.74705,
"SeventyFivePercentileVdc": 4525.49485,
"TwentyFivePercentileLos": 4.5,
"SeventyFivePercentileLos": 9.5,
"CostDriver": "Imaging",
"EncounterId": 2565425,
"DischargeDateTime": "2023-02-02T00:00:00Z",
"EncounterRecordNumber": null,
"EntityId": 0,
"IdentifiedVariation": 0,
"IsExpired": 0,
"LengthOfStay": 12,
"MedianLengthOfStay": 7,
"MedianVariableDirectCost": 37.5413,
"MedianGrossCharges": 0,
"VariableDirectCost": 37.5413,
"Charges": 690.5777,
"IsExcluded": false,
"IqrLos": 5,
"IqrVdc": 1541.7478,
"MadLos": 7.413,
"MadVdc": 509.6955,
"DischargeStatusCode": null,
"DischargeStatusDescription": null,
"MortalityRate": 0,
"ROM": 0,
"SOI": 0
},
{
"CaseTypeFamilyId": 592,
"CaseTypeFamilyName": "Skin Debridement",
"Vdc": 4353.6024,
"MedianVdc": 4353.6024,
"TwentyFivePercentileVdc": 2983.74705,
"SeventyFivePercentileVdc": 4525.49485,
"TwentyFivePercentileLos": 4.5,
"SeventyFivePercentileLos": 9.5,
"CostDriver": "Excluded",
"EncounterId": 2565425,
"DischargeDateTime": "2023-02-02T00:00:00Z",
"EncounterRecordNumber": null,
"EntityId": 0,
"IdentifiedVariation": -49.1141,
"IsExpired": 0,
"LengthOfStay": 12,
"MedianLengthOfStay": 7,
"MedianVariableDirectCost": 147.0779,
"MedianGrossCharges": 0,
"VariableDirectCost": 97.9638,
"Charges": 1718.5171,
"IsExcluded": false,
"IqrLos": 5,
"IqrVdc": 1541.7478,
"MadLos": 7.413,
"MadVdc": 509.6955,
"DischargeStatusCode": null,
"DischargeStatusDescription": null,
"MortalityRate": 0,
"ROM": 0,
"SOI": 0
}
]
@@ -0,0 +1,170 @@
[
{
"EncounterId": 3490618,
"EncounterRecordNumber": "1003490618",
"PhysicianID": 3845,
"AgeCohortID": 3,
"EntityID": 2,
"ServiceLineID": 13,
"LengthOfStay": 15,
"IsQVIEncounter": false,
"DischargeDateTime": "2023-02-18T00:00:00Z",
"IsExcluded": false
},
{
"EncounterId": 21268418,
"EncounterRecordNumber": "1021268418",
"PhysicianID": 3939,
"AgeCohortID": 4,
"EntityID": 2,
"ServiceLineID": 13,
"LengthOfStay": 2,
"IsQVIEncounter": false,
"DischargeDateTime": "2023-04-07T00:00:00Z",
"IsExcluded": false
},
{
"EncounterId": 21269053,
"EncounterRecordNumber": "1021269053",
"PhysicianID": 2986,
"AgeCohortID": 3,
"EntityID": 2,
"ServiceLineID": 13,
"LengthOfStay": 14,
"IsQVIEncounter": false,
"DischargeDateTime": "2023-01-28T00:00:00Z",
"IsExcluded": false
},
{
"EncounterId": 21366384,
"EncounterRecordNumber": "1021366384",
"PhysicianID": 1370,
"AgeCohortID": 4,
"EntityID": 2,
"ServiceLineID": 13,
"LengthOfStay": 12,
"IsQVIEncounter": false,
"DischargeDateTime": "2023-03-01T00:00:00Z",
"IsExcluded": false
},
{
"EncounterId": 21549774,
"EncounterRecordNumber": "1021549774",
"PhysicianID": 3153,
"AgeCohortID": 3,
"EntityID": 13,
"ServiceLineID": 13,
"LengthOfStay": 1,
"IsQVIEncounter": false,
"DischargeDateTime": "2023-02-15T00:00:00Z",
"IsExcluded": false
},
{
"EncounterId": 22931559,
"EncounterRecordNumber": "1022931559",
"PhysicianID": 4446,
"AgeCohortID": 4,
"EntityID": 2,
"ServiceLineID": 13,
"LengthOfStay": 11,
"IsQVIEncounter": false,
"DischargeDateTime": "2023-05-21T00:00:00Z",
"IsExcluded": false
},
{
"EncounterId": 23497650,
"EncounterRecordNumber": "1023497650",
"PhysicianID": 842,
"AgeCohortID": 4,
"EntityID": 2,
"ServiceLineID": 13,
"LengthOfStay": 8,
"IsQVIEncounter": false,
"DischargeDateTime": "2023-05-14T00:00:00Z",
"IsExcluded": false
},
{
"EncounterId": 24240851,
"EncounterRecordNumber": "1024240851",
"PhysicianID": 720,
"AgeCohortID": 3,
"EntityID": 2,
"ServiceLineID": 13,
"LengthOfStay": 3,
"IsQVIEncounter": false,
"DischargeDateTime": "2023-06-24T00:00:00Z",
"IsExcluded": false
},
{
"EncounterId": 25272685,
"EncounterRecordNumber": "1025272685",
"PhysicianID": 3481,
"AgeCohortID": 4,
"EntityID": 2,
"ServiceLineID": 13,
"LengthOfStay": 3,
"IsQVIEncounter": false,
"DischargeDateTime": "2023-07-13T00:00:00Z",
"IsExcluded": false
},
{
"EncounterId": 25954564,
"EncounterRecordNumber": "1025954564",
"PhysicianID": 842,
"AgeCohortID": 3,
"EntityID": 2,
"ServiceLineID": 13,
"LengthOfStay": 2,
"IsQVIEncounter": false,
"DischargeDateTime": "2023-08-04T00:00:00Z",
"IsExcluded": false
},
{
"EncounterId": 25971328,
"EncounterRecordNumber": "1025971328",
"PhysicianID": 3343,
"AgeCohortID": 3,
"EntityID": 2,
"ServiceLineID": 13,
"LengthOfStay": 2,
"IsQVIEncounter": false,
"DischargeDateTime": "2023-07-25T00:00:00Z",
"IsExcluded": false
},
{
"EncounterId": 27006329,
"EncounterRecordNumber": "1027006329",
"PhysicianID": 4269,
"AgeCohortID": 3,
"EntityID": 2,
"ServiceLineID": 13,
"LengthOfStay": 2,
"IsQVIEncounter": false,
"DischargeDateTime": "2023-10-01T00:00:00Z",
"IsExcluded": false
},
{
"EncounterId": 29625457,
"EncounterRecordNumber": "1029625457",
"PhysicianID": 842,
"AgeCohortID": 4,
"EntityID": 2,
"ServiceLineID": 13,
"LengthOfStay": 9,
"IsQVIEncounter": false,
"DischargeDateTime": "2023-11-24T00:00:00Z",
"IsExcluded": false
},
{
"EncounterId": 30059663,
"EncounterRecordNumber": "1030059663",
"PhysicianID": 24764,
"AgeCohortID": 4,
"EntityID": 13,
"ServiceLineID": 13,
"LengthOfStay": 6,
"IsQVIEncounter": false,
"DischargeDateTime": "2023-11-19T00:00:00Z",
"IsExcluded": false
}
]
@@ -0,0 +1,12 @@
[
{
"EntityId": 93,
"Code": "880",
"CodeName": "880 - ACUTE ADJUSTMENT REACTION AND PSYCHOSOCIAL DYSFUNCTION",
"MedianVDC": 59.24215,
"MedianLOS": 6,
"MedianCharges": 991.3681,
"Id": "880",
"Name": "880 - ACUTE ADJUSTMENT REACTION AND PSYCHOSOCIAL DYSFUNCTION"
}
]
@@ -0,0 +1,46 @@
[
{
"EntityId": 93,
"Code": "880",
"PhysicianId": 3474,
"PhysicianName": "KLAPPERICH CORDELL",
"MedianVDC": 71.8018,
"MedianLOS": 3,
"MedianCharges": 985.8658,
"Id": "3474",
"Name": "KLAPPERICH CORDELL"
},
{
"EntityId": 93,
"Code": "880",
"PhysicianId": 3896,
"PhysicianName": "HARTSE FRANKIE",
"MedianVDC": 46.6825,
"MedianLOS": 7,
"MedianCharges": 996.8704,
"Id": "3896",
"Name": "HARTSE FRANKIE"
},
{
"EntityId": 93,
"Code": "880",
"PhysicianId": 794,
"PhysicianName": "DIAZDELEON HIPOLITO",
"MedianVDC": 5.0037,
"MedianLOS": 15,
"MedianCharges": 384.65,
"Id": "794",
"Name": "DIAZDELEON HIPOLITO"
},
{
"EntityId": 93,
"Code": "880",
"PhysicianId": 3339,
"PhysicianName": "HATZENBUHLER SCOTTY",
"MedianVDC": 208.1365,
"MedianLOS": 5,
"MedianCharges": 4045.0814,
"Id": "3339",
"Name": "HATZENBUHLER SCOTTY"
}
]
@@ -0,0 +1,11 @@
[
{
"EntityId": 93,
"EntityName": "10 - Northern Valley Medical Center",
"MedianVDC": 59.24215,
"MedianLOS": 6,
"MedianCharges": 991.3681,
"Id": "93",
"Name": "10 - Northern Valley Medical Center"
}
]
@@ -0,0 +1,19 @@
{
"CaseTypeFamilyId": 206,
"CostDriver": "Cardiovascular",
"CodeType": null,
"ExcludedEncounters": [],
"IncludedEncounters": [],
"ConfigurationGuid": "aa4cba4f-2506-462c-8e34-c45b21653988",
"ExclusionCriteria": {
"LosExclusionType": 0,
"LosExclusionValue": 0,
"CostExclusionType": 0,
"CostExclusionValue": 0
},
"Filters": {
"DischargeDateStart": "2023-01-01T00:00:00",
"DischargeDateEnd": "2023-12-31T00:00:00",
"FilterChipItems": []
}
}
@@ -0,0 +1,14 @@
{
"ConfigurationGuid": "aa4cba4f-2506-462c-8e34-c45b21653988",
"ExclusionCriteria": {
"LosExclusionType": 0,
"LosExclusionValue": 0,
"CostExclusionType": 0,
"CostExclusionValue": 0
},
"Filters": {
"DischargeDateStart": "2023-01-01T00:00:00",
"DischargeDateEnd": "2023-12-31T00:00:00",
"FilterChipItems": []
}
}
@@ -0,0 +1,134 @@
[
{
"PhysicianID": 3153,
"PhysicianName": "TOZIER BOBBY",
"PhysicianGUID": "d3d281ce-c255-45f0-8334-88e15ffe48cd",
"PhysicianGroupAffiliationID": 0,
"PhysicianGroupAffiliation": "Not Specified",
"PhysicianGroupAffiliationGUID": "1c3af86f-a7b7-4484-935c-bad5b93627e7",
"PhysicianSpecialtyID": 208,
"PhysicianSpecialty": "123 - Hospitalist",
"PhysicianSpecialtyGUID": "3a3e27d9-3454-4fc3-83a9-e86b6fe3bd61"
},
{
"PhysicianID": 3845,
"PhysicianName": "KEITHLEY CHRISTOPHER",
"PhysicianGUID": "9dc822af-5b79-4063-b75a-72cc4cca6040",
"PhysicianGroupAffiliationID": 0,
"PhysicianGroupAffiliation": "Not Specified",
"PhysicianGroupAffiliationGUID": "1c3af86f-a7b7-4484-935c-bad5b93627e7",
"PhysicianSpecialtyID": 208,
"PhysicianSpecialty": "123 - Hospitalist",
"PhysicianSpecialtyGUID": "3a3e27d9-3454-4fc3-83a9-e86b6fe3bd61"
},
{
"PhysicianID": 1370,
"PhysicianName": "BONELLO HUONG",
"PhysicianGUID": "1fbc3e74-e32e-4a31-a55a-2ba2a581bf68",
"PhysicianGroupAffiliationID": 0,
"PhysicianGroupAffiliation": "Not Specified",
"PhysicianGroupAffiliationGUID": "1c3af86f-a7b7-4484-935c-bad5b93627e7",
"PhysicianSpecialtyID": 221,
"PhysicianSpecialty": "17 - Internal Medicine",
"PhysicianSpecialtyGUID": "02db369d-885a-474a-acaf-81363e490534"
},
{
"PhysicianID": 24764,
"PhysicianName": "FLUETSCH CARY",
"PhysicianGUID": "723d834b-d4da-4885-9efb-4c9de59cb982",
"PhysicianGroupAffiliationID": 0,
"PhysicianGroupAffiliation": "Not Specified",
"PhysicianGroupAffiliationGUID": "1c3af86f-a7b7-4484-935c-bad5b93627e7",
"PhysicianSpecialtyID": 221,
"PhysicianSpecialty": "17 - Internal Medicine",
"PhysicianSpecialtyGUID": "02db369d-885a-474a-acaf-81363e490534"
},
{
"PhysicianID": 4446,
"PhysicianName": "DEMAS CHARLEY",
"PhysicianGUID": "acefb0de-25b1-4cda-9eae-2b5799155816",
"PhysicianGroupAffiliationID": 0,
"PhysicianGroupAffiliation": "Not Specified",
"PhysicianGroupAffiliationGUID": "1c3af86f-a7b7-4484-935c-bad5b93627e7",
"PhysicianSpecialtyID": 271,
"PhysicianSpecialty": "62 - Critical Care Medicine",
"PhysicianSpecialtyGUID": "32c0a064-a015-472a-b1a1-3ee9ada450f2"
},
{
"PhysicianID": 3343,
"PhysicianName": "BLINKA GRAIG",
"PhysicianGUID": "a96d6d2c-029f-4689-8f31-51870150ac1c",
"PhysicianGroupAffiliationID": 0,
"PhysicianGroupAffiliation": "Not Specified",
"PhysicianGroupAffiliationGUID": "1c3af86f-a7b7-4484-935c-bad5b93627e7",
"PhysicianSpecialtyID": 208,
"PhysicianSpecialty": "123 - Hospitalist",
"PhysicianSpecialtyGUID": "3a3e27d9-3454-4fc3-83a9-e86b6fe3bd61"
},
{
"PhysicianID": 720,
"PhysicianName": "TOMASSI RUSS",
"PhysicianGUID": "3802cc8a-5ad5-48e0-864e-9acfe0e4d324",
"PhysicianGroupAffiliationID": 0,
"PhysicianGroupAffiliation": "Not Specified",
"PhysicianGroupAffiliationGUID": "1c3af86f-a7b7-4484-935c-bad5b93627e7",
"PhysicianSpecialtyID": 221,
"PhysicianSpecialty": "17 - Internal Medicine",
"PhysicianSpecialtyGUID": "02db369d-885a-474a-acaf-81363e490534"
},
{
"PhysicianID": 3481,
"PhysicianName": "TREVIZO DIRK",
"PhysicianGUID": "55639862-736c-4e9b-afcc-16673445c181",
"PhysicianGroupAffiliationID": 0,
"PhysicianGroupAffiliation": "Not Specified",
"PhysicianGroupAffiliationGUID": "1c3af86f-a7b7-4484-935c-bad5b93627e7",
"PhysicianSpecialtyID": 221,
"PhysicianSpecialty": "17 - Internal Medicine",
"PhysicianSpecialtyGUID": "02db369d-885a-474a-acaf-81363e490534"
},
{
"PhysicianID": 2986,
"PhysicianName": "COAXUM RUDY",
"PhysicianGUID": "3cd87422-3164-4c2c-9f42-dafa6c927353",
"PhysicianGroupAffiliationID": 0,
"PhysicianGroupAffiliation": "Not Specified",
"PhysicianGroupAffiliationGUID": "1c3af86f-a7b7-4484-935c-bad5b93627e7",
"PhysicianSpecialtyID": 221,
"PhysicianSpecialty": "17 - Internal Medicine",
"PhysicianSpecialtyGUID": "02db369d-885a-474a-acaf-81363e490534"
},
{
"PhysicianID": 842,
"PhysicianName": "CLENDENON RENDA",
"PhysicianGUID": "edb778e5-c677-4800-a1bc-153331e52f48",
"PhysicianGroupAffiliationID": 0,
"PhysicianGroupAffiliation": "Not Specified",
"PhysicianGroupAffiliationGUID": "1c3af86f-a7b7-4484-935c-bad5b93627e7",
"PhysicianSpecialtyID": 221,
"PhysicianSpecialty": "17 - Internal Medicine",
"PhysicianSpecialtyGUID": "02db369d-885a-474a-acaf-81363e490534"
},
{
"PhysicianID": 4269,
"PhysicianName": "CROUTHAMEL SUNNY",
"PhysicianGUID": "5c889c75-adab-4c08-9ccb-347ce13b9e70",
"PhysicianGroupAffiliationID": 0,
"PhysicianGroupAffiliation": "Not Specified",
"PhysicianGroupAffiliationGUID": "1c3af86f-a7b7-4484-935c-bad5b93627e7",
"PhysicianSpecialtyID": 221,
"PhysicianSpecialty": "17 - Internal Medicine",
"PhysicianSpecialtyGUID": "02db369d-885a-474a-acaf-81363e490534"
},
{
"PhysicianID": 3939,
"PhysicianName": "LANMAN JOVAN",
"PhysicianGUID": "5b68c9cf-beaa-4267-9bc7-05cddba3de4c",
"PhysicianGroupAffiliationID": 0,
"PhysicianGroupAffiliation": "Not Specified",
"PhysicianGroupAffiliationGUID": "1c3af86f-a7b7-4484-935c-bad5b93627e7",
"PhysicianSpecialtyID": 221,
"PhysicianSpecialty": "17 - Internal Medicine",
"PhysicianSpecialtyGUID": "02db369d-885a-474a-acaf-81363e490534"
}
]