Files
linqpad/create StrataSphere Mappings.linq
T

107 lines
5.5 KiB
C#

<Query Kind="Statements">
<Connection>
<ID>77b65bea-e766-4e3c-a1ed-c4c2534b6019</ID>
<Persist>true</Persist>
<Server>D0001-SQL-01.sdt.local</Server>
<Database>jazz dev master</Database>
<ShowServer>true</ShowServer>
</Connection>
<Reference>&lt;ProgramFilesX64&gt;\Microsoft SDKs\Azure\.NET SDK\v2.9\bin\plugins\Diagnostics\Newtonsoft.Json.dll</Reference>
<NuGetReference>Amazon.Lambda.S3Events</NuGetReference>
<NuGetReference>AWSSDK.Core</NuGetReference>
<NuGetReference>AWSSDK.S3</NuGetReference>
<Namespace>Amazon</Namespace>
<Namespace>Amazon.Auth.AccessControlPolicy</Namespace>
<Namespace>Amazon.Auth.AccessControlPolicy.ActionIdentifiers</Namespace>
<Namespace>Amazon.Internal</Namespace>
<Namespace>Amazon.Lambda.S3Events</Namespace>
<Namespace>Amazon.MissingTypes</Namespace>
<Namespace>Amazon.Runtime</Namespace>
<Namespace>Amazon.Runtime.CredentialManagement</Namespace>
<Namespace>Amazon.Runtime.CredentialManagement.Internal</Namespace>
<Namespace>Amazon.Runtime.EventStreams</Namespace>
<Namespace>Amazon.Runtime.EventStreams.Internal</Namespace>
<Namespace>Amazon.Runtime.Internal</Namespace>
<Namespace>Amazon.Runtime.Internal.Auth</Namespace>
<Namespace>Amazon.Runtime.Internal.Settings</Namespace>
<Namespace>Amazon.Runtime.Internal.Transform</Namespace>
<Namespace>Amazon.Runtime.Internal.Util</Namespace>
<Namespace>Amazon.Runtime.SharedInterfaces</Namespace>
<Namespace>Amazon.Runtime.SharedInterfaces.Internal</Namespace>
<Namespace>Amazon.S3</Namespace>
<Namespace>Amazon.S3.Encryption</Namespace>
<Namespace>Amazon.S3.Encryption.Internal</Namespace>
<Namespace>Amazon.S3.Internal</Namespace>
<Namespace>Amazon.S3.IO</Namespace>
<Namespace>Amazon.S3.Model</Namespace>
<Namespace>Amazon.S3.Model.Internal.MarshallTransformations</Namespace>
<Namespace>Amazon.S3.Transfer</Namespace>
<Namespace>Amazon.S3.Util</Namespace>
<Namespace>Amazon.Util</Namespace>
<Namespace>Amazon.Util.Internal</Namespace>
<Namespace>Amazon.Util.Internal.PlatformServices</Namespace>
<Namespace>Newtonsoft.Json</Namespace>
<Namespace>Newtonsoft.Json.Converters</Namespace>
<Namespace>Newtonsoft.Json.Linq</Namespace>
<Namespace>Newtonsoft.Json.Schema</Namespace>
<Namespace>Newtonsoft.Json.Serialization</Namespace>
<Namespace>System</Namespace>
<Namespace>System.ComponentModel.Composition</Namespace>
<Namespace>System.ComponentModel.Composition.Hosting</Namespace>
<Namespace>System.ComponentModel.Composition.Primitives</Namespace>
<Namespace>System.ComponentModel.Composition.ReflectionModel</Namespace>
<Namespace>System.Diagnostics</Namespace>
<Namespace>System.Diagnostics.Tracing</Namespace>
<Namespace>System.IO.Compression</Namespace>
<Namespace>System.Net.Http</Namespace>
<Namespace>System.Net.Http.Headers</Namespace>
<Namespace>System.Numerics</Namespace>
<Namespace>ThirdParty.BouncyCastle.Asn1</Namespace>
<Namespace>ThirdParty.BouncyCastle.Asn1.Utilities</Namespace>
<Namespace>ThirdParty.BouncyCastle.Math</Namespace>
<Namespace>ThirdParty.BouncyCastle.OpenSsl</Namespace>
<Namespace>ThirdParty.BouncyCastle.Utilities.IO.Pem</Namespace>
<Namespace>ThirdParty.Ionic.Zlib</Namespace>
<Namespace>ThirdParty.Json.LitJson</Namespace>
<Namespace>ThirdParty.MD5</Namespace>
</Query>
//var reports = from report in REReports select report;
//reports.Dump();
var parms = from report in REReports
join module in Folders on report.FolderGUID equals module.FolderGuid into reportModules
from rptModule in reportModules.DefaultIfEmpty()
join setup in REDSCubeReportSetups on report.ReportGUID equals setup.ReportGUID
join parameter in REDSCubeReportParameters on report.ReportGUID equals parameter.ReportGUID
where parameter.Name == "Patient Populations" && parameter.ParameterXML != null && parameter.ParameterXML != ""
select new
{
reportName = report.Name,
module = rptModule.Name,
//parameterName = parameter.Name,
//parameter.ColumnName,
parameterXML = XDocument.Parse(parameter.ParameterXML).Descendants("{http://schemas.datacontract.org/2004/07/Strata.CS.Jazz.Biz.Reporting.Parameters}DSCubeSearchCondition"),
Value = XDocument.Parse(parameter.ParameterXML).Descendants("{http://schemas.datacontract.org/2004/07/Strata.CS.Jazz.Biz.Reporting.Parameters}Value"),
ValueIds = XDocument.Parse(parameter.ParameterXML).Descendants("{http://schemas.datacontract.org/2004/07/Strata.CS.Jazz.Biz.Reporting.Parameters}ValueIDArray")
};
parms.ToList().Where(p => p.parameterXML.Any()).OrderBy(r => r.reportName)
.Select(p => new
{
p.reportName,
p.module,
values = p.Value.FirstOrDefault()?.Value.Split(new[] { ',' }).Select(v => v.Trim()),
valueIds = p.ValueIds.Descendants().Select(vi => vi.Value)
}).Dump();
var mappings = parms.ToList().Where(p => p.parameterXML.Any()).ToList()
.SelectMany(p => from ci in DimClinicalIndicators
join def in Definitions on ci.Name equals def.Name
where p.ValueIds.Descendants().Select(vi => Regex.Replace(vi.Value, @"[^\d]", "")).ToList().Contains(ci.ClinicalIndicatorID.ToString())
select new { id = ci.ClinicalIndicatorID, Guid = ci.MemberGUID, name = ci.Name, definitionGuid = def.Id }
).Distinct().OrderBy(p => p.name);
mappings.Dump();
var sql = "INSERT INTO dbo.StandardDefinitionMapping ( StandardDefinitionGUID, StandardDefinitionName, StandardDefinitionType, MappingMemberValue )\r\nValues " + string.Join(",\r\n ",
mappings.Select(y => $"('{y.definitionGuid}','[Patient Populations].[Patient Populations].&[{y.id}]','Patient Populations','{y.name}')"));
sql.Dump();