feat: initial commit
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
using NUnit.Framework;
|
||||
using Strata.Stratasphere.Biz.Standards;
|
||||
using Strata.Stratasphere.Biz.Standards.Commands;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using FluentAssertions;
|
||||
using System.Collections;
|
||||
using Microsoft.EntityFrameworkCore.Query.SqlExpressions;
|
||||
|
||||
namespace Strata.Stratasphere.Biz.UnitTests.Standards
|
||||
{
|
||||
[TestFixture]
|
||||
public class HACQueryDefinitionUnitTests
|
||||
{
|
||||
private static IEnumerable<TestCaseData> GetHacTestCases(string testName)
|
||||
{
|
||||
yield return new TestCaseData("HAC01", true, false).SetName($"{testName}.HAC01, IsDX = true, IsPx = false");
|
||||
yield return new TestCaseData("HAC02", true, false).SetName($"{testName}.HAC02, IsDX = true, IsPx = false");
|
||||
yield return new TestCaseData("HAC03", true, false).SetName($"{testName}.HAC03, IsDX = true, IsPx = false");
|
||||
yield return new TestCaseData("HAC04", true, false).SetName($"{testName}.HAC04, IsDX = true, IsPx = false");
|
||||
yield return new TestCaseData("HAC05", true, false).SetName($"{testName}.HAC05, IsDX = true, IsPx = false)");
|
||||
yield return new TestCaseData("HAC06", true, false).SetName($"{testName}.HAC06, IsDX = true, IsPx = false");
|
||||
yield return new TestCaseData("HAC07", true, false).SetName($"{testName}.HAC07, IsDX = true, IsPx = false");
|
||||
yield return new TestCaseData("HAC08", true, true).SetName($"{testName}.HAC08, IsDX = true, IsPx = true");
|
||||
yield return new TestCaseData("HAC09", true, false).SetName($"{testName}.HAC09, IsDX = true, IsPx = false");
|
||||
yield return new TestCaseData("HAC10", true, true).SetName($"{testName}.HAC10, IsDX = true, IsPx = true");
|
||||
yield return new TestCaseData("HAC11", true, true).SetName($"{testName}.HAC11, IsDX = true, IsPx = true");
|
||||
yield return new TestCaseData("HAC12", true, true).SetName($"{testName}.HAC12, IsDX = true, IsPx = true");
|
||||
yield return new TestCaseData("HAC13", true, true).SetName($"{testName}.HAC13, IsDX = true, IsPx = true");
|
||||
yield return new TestCaseData("HAC14", true, true).SetName($"{testName}.HAC14, IsDX = true, IsPx = true");
|
||||
}
|
||||
|
||||
[Test, TestCaseSource("GetHacTestCases", new object[] { "Full Refresh" })]
|
||||
public void Test(string hacCmd, bool isDx, bool isPx)
|
||||
{
|
||||
//Creates an instance of the type from the name of the hac command
|
||||
var cmd = Activator.CreateInstance("Strata.Stratasphere.Biz", $"Strata.Stratasphere.Biz.Standards.Commands.{hacCmd}Command").Unwrap() as HACsBaseCommand;
|
||||
cmd.Query.Should().Contain("DSSPES")
|
||||
.And.Contain($@"INSERT INTO SPH.ENCOUNTERHACS (ENCOUNTERID, HAC)
|
||||
SELECT DISTINCT DSSPES.ENCOUNTERID, '{hacCmd}'
|
||||
FROM CLIENTDSS.FACTPATIENTENCOUNTERSUMMARY DSSPES
|
||||
INNER JOIN SPH.ENCOUNTERPATIENTTYPE PT ON PT.ENCOUNTERID = DSSPES.ENCOUNTERID");
|
||||
if (isDx)
|
||||
{
|
||||
|
||||
cmd.Query.Should().Contain(@"INNER JOIN DSS.FACTPATIENTICD10DIAGNOSTICDETAIL PATICD10DX ON PATICD10DX.ENCOUNTERID = DSSPES.ENCOUNTERID
|
||||
INNER JOIN DSS.DIMICD10DX ICD10DX ON PATICD10DX.ICD10DXID = ICD10DX.ICD10DXID
|
||||
INNER JOIN CLIENTDSS.DIMPRESENTONADMISSION PRESENTONADMISSION ON PATICD10DX.PRESENTONADMISSIONID = PRESENTONADMISSION.PRESENTONADMISSIONID
|
||||
INNER JOIN DSS.DIMSPHPRESENTONADMISSIONROLLUP SPHPOA ON SPHPOA.SPHPRESENTONADMISSIONROLLUPID = PRESENTONADMISSION.SPHPRESENTONADMISSIONROLLUPID").
|
||||
And.Contain(@"PATICD10DX.SEQUENCENUMBERID <> 1
|
||||
AND
|
||||
SPHPOA.SPHPRESENTONADMISSIONROLLUPCODE IN ('1', 'N', 'U', 'W')
|
||||
AND ICD10DX.ICD10DXCODENODECIMAL IN ");
|
||||
}
|
||||
else
|
||||
{
|
||||
cmd.Query.Should().NotContain(@"INNER JOIN DSS.FACTPATIENTICD10DIAGNOSTICDETAIL PATICD10DX ON PATICD10DX.ENCOUNTERID = DSSPES.ENCOUNTERID
|
||||
INNER JOIN DSS.DIMICD10DX ICD10DX ON PATICD10DX.ICD10DXID = ICD10DX.ICD10DXID
|
||||
INNER JOIN CLIENTDSS.DIMPRESENTONADMISSION PRESENTONADMISSION ON PATICD10DX.PRESENTONADMISSIONID = PRESENTONADMISSION.PRESENTONADMISSIONID
|
||||
INNER JOIN DSS.DIMSPHPRESENTONADMISSIONROLLUP SPHPOA ON SPHPOA.SPHPRESENTONADMISSIONROLLUPID = PRESENTONADMISSION.SPHPRESENTONADMISSIONROLLUPID").
|
||||
And.NotContain(@" PATICD10DX.SEQUENCENUMBERID <> 1
|
||||
AND
|
||||
SPHPOA.SPHPRESENTONADMISSIONROLLUPCODE IN ('1', 'N', 'U', 'W')
|
||||
AND ICD10DX.ICD10DXCODENODECIMAL IN ");
|
||||
}
|
||||
if (isPx)
|
||||
{
|
||||
cmd.Query.Should().Contain(@"INNER JOIN DSS.FACTPATIENTICD10PROCEDURALDETAIL PATICD10PX ON PATICD10PX.ENCOUNTERID = DSSPES.ENCOUNTERID
|
||||
INNER JOIN DSS.DIMICD10PX ICD10PX ON PATICD10PX.ICD10PXID = ICD10PX.ICD10PXID").
|
||||
And.Contain(@" AND ICD10PX.ICD10PXCODENODECIMAL IN ");
|
||||
}
|
||||
else
|
||||
{
|
||||
cmd.Query.Should().NotContain(@"INNER JOIN DSS.FACTPATIENTICD10PROCEDURALDETAIL PATICD10PX ON PATICD10PX.ENCOUNTERID = DSSPES.ENCOUNTERID
|
||||
INNER JOIN DSS.DIMICD10PX ICD10PX ON PATICD10PX.ICD10PXID = ICD10PX.ICD10PXID").
|
||||
And.NotContain(@" AND ICD10PX.ICD10PXCODENODECIMAL IN ");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[Test, TestCaseSource("GetHacTestCases", new object[] { "Encounter List" })]
|
||||
public void TestMasterEncounterList(string hacCmd, bool isDx, bool isPx)
|
||||
{
|
||||
var sessionId = Guid.NewGuid().ToString("N");
|
||||
var mel = new MasterEncounterListDto()
|
||||
{
|
||||
ClientDbGuid = Guid.NewGuid(),
|
||||
MasterEncounterListTableName = $"DSS.MASTERENCOUNTERLIST_{sessionId}",
|
||||
SessionId = sessionId
|
||||
};
|
||||
var cmd = Activator.CreateInstance("Strata.Stratasphere.Biz", $"Strata.Stratasphere.Biz.Standards.Commands.{hacCmd}Command", false, System.Reflection.BindingFlags.Default, null, new object[]{ mel.MasterEncounterListTableName }, null, null).Unwrap() as HACsBaseCommand;
|
||||
|
||||
cmd.Query.Should().Contain("DSSPES").
|
||||
And.Contain($@"INSERT INTO SPH.ENCOUNTERHACS (ENCOUNTERID, HAC)")
|
||||
.And.Contain($"SELECT DISTINCT DSSPES.ENCOUNTERID, '{hacCmd}'")
|
||||
.And.Contain($"FROM CLIENTDSS.FACTPATIENTENCOUNTERSUMMARY DSSPES")
|
||||
.And.Contain($"INNER JOIN SPH.ENCOUNTERPATIENTTYPE PT ON PT.ENCOUNTERID = DSSPES.ENCOUNTERID")
|
||||
.And.Contain($"INNER JOIN {mel.MasterEncounterListTableName} MEL ON MEL.ENCOUNTERID = DSSPES.ENCOUNTERID");
|
||||
if (isDx)
|
||||
{
|
||||
cmd.Query.Should().Contain(@"INNER JOIN DSS.FACTPATIENTICD10DIAGNOSTICDETAIL PATICD10DX ON PATICD10DX.ENCOUNTERID = DSSPES.ENCOUNTERID
|
||||
INNER JOIN DSS.DIMICD10DX ICD10DX ON PATICD10DX.ICD10DXID = ICD10DX.ICD10DXID
|
||||
INNER JOIN CLIENTDSS.DIMPRESENTONADMISSION PRESENTONADMISSION ON PATICD10DX.PRESENTONADMISSIONID = PRESENTONADMISSION.PRESENTONADMISSIONID
|
||||
INNER JOIN DSS.DIMSPHPRESENTONADMISSIONROLLUP SPHPOA ON SPHPOA.SPHPRESENTONADMISSIONROLLUPID = PRESENTONADMISSION.SPHPRESENTONADMISSIONROLLUPID").
|
||||
And.Contain(@"PATICD10DX.SEQUENCENUMBERID <> 1
|
||||
AND
|
||||
SPHPOA.SPHPRESENTONADMISSIONROLLUPCODE IN ('1', 'N', 'U', 'W')
|
||||
AND ICD10DX.ICD10DXCODENODECIMAL IN ");
|
||||
}
|
||||
else
|
||||
{
|
||||
cmd.Query.Should().NotContain(@"INNER JOIN DSS.FACTPATIENTICD10DIAGNOSTICDETAIL PATICD10DX ON PATICD10DX.ENCOUNTERID = DSSPES.ENCOUNTERID
|
||||
INNER JOIN DSS.DIMICD10DX ICD10DX ON PATICD10DX.ICD10DXID = ICD10DX.ICD10DXID
|
||||
INNER JOIN CLIENTDSS.DIMPRESENTONADMISSION PRESENTONADMISSION ON PATICD10DX.PRESENTONADMISSIONID = PRESENTONADMISSION.PRESENTONADMISSIONID
|
||||
INNER JOIN DSS.DIMSPHPRESENTONADMISSIONROLLUP SPHPOA ON SPHPOA.SPHPRESENTONADMISSIONROLLUPID = PRESENTONADMISSION.SPHPRESENTONADMISSIONROLLUPID").
|
||||
And.NotContain(@" PATICD10DX.SEQUENCENUMBERID <> 1
|
||||
AND
|
||||
AND ICD10DX.ICD10DXCODENODECIMAL IN ");
|
||||
}
|
||||
if (isPx)
|
||||
{
|
||||
cmd.Query.Should().Contain(@"INNER JOIN DSS.FACTPATIENTICD10DIAGNOSTICDETAIL PATICD10DX ON PATICD10DX.ENCOUNTERID = DSSPES.ENCOUNTERID
|
||||
INNER JOIN DSS.DIMICD10DX ICD10DX ON PATICD10DX.ICD10DXID = ICD10DX.ICD10DXID").
|
||||
And.Contain(@" AND ICD10PX.ICD10PXCODENODECIMAL IN ");
|
||||
}
|
||||
else
|
||||
{
|
||||
cmd.Query.Should().NotContain(@"INNER JOIN DSS.FACTPATIENTICD10PROCEDURALDETAIL PATICD10PX ON PATICD10PX.ENCOUNTERID = DSSPES.ENCOUNTERID
|
||||
INNER JOIN DSS.DIMICD10PX ICD10PX ON PATICD10PX.ICD10PXID = ICD10PX.ICD10PXID").
|
||||
And.NotContain(@" AND ICD10PX.ICD10PXCODENODECIMAL IN ");
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestSpecialCaseForHAC11()
|
||||
{
|
||||
var hac11 = new HAC11Command();
|
||||
hac11.Query.Should().Contain("INNER JOIN DSS.DIMICD10DX PRIMARYDX ON PRIMARYDX.ICD10DXID = DSSPES.ICD10DXPRIMARYDIAGID");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user