Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
<Sql>
with BR as (
select
Record ->> '$.Breast.BreastCore.BreastCoreLinkagePatientId.NHSNumber.@extension' as NhsNumber,
Record ->> '$.Breast.BreastCore.BreastCoreLinkagePatientId.NHSNumber.@extension' as NHSNumber,
Record ->> '$.Breast.BreastCore.BreastCoreLinkageDiagnosticDetails.ClinicalDateCancerDiagnosis' as ClinicalDateCancerDiagnosis,
Record ->> '$.Breast.BreastCore.BreastCoreLinkageDiagnosticDetails.DateOfNonPrimaryCancerDiagnosisClinicallyAgreed' as DateOfNonPrimaryCancerDiagnosisClinicallyAgreed,
Record ->> '$.Breast.BreastCore.BreastCoreDiagnosis.DiagnosisGradeOfDifferentiation.@code' as GradeOfDifferentiationAtDiagnosis
from omop_staging.cosd_staging_81
where Type = 'BR'
)
select distinct
NhsNumber,
NHSNumber,
coalesce(ClinicalDateCancerDiagnosis, DateOfNonPrimaryCancerDiagnosisClinicallyAgreed) as MeasurementDate,
GradeOfDifferentiationAtDiagnosis
from BR
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
using OmopTransformer.Annotations;
using OmopTransformer.Omop.Measurement;
using OmopTransformer.Transformation;

namespace OmopTransformer.COSD.Breast.Measurements.CosdV8BreastMeasurementMcategoryFinalPreTreatmentStage;

internal class CosdV8BreastMeasurementMcategoryFinalPreTreatmentStage : OmopMeasurement<CosdV8BreastMeasurementMcategoryFinalPreTreatmentStageRecord>
{
[CopyValue(nameof(Source.NhsNumber))]
public override string? nhs_number { get; set; }

[Transform(typeof(DateConverter), nameof(Source.MeasurementDate))]
public override DateTime? measurement_date { get; set; }

[Transform(typeof(DateConverter), nameof(Source.MeasurementDate))]
public override DateTime? measurement_datetime { get; set; }

[ConstantValue(32828, "EHR episode record")]
public override int? measurement_type_concept_id { get; set; }

[CopyValue(nameof(Source.McategoryFinalPreTreatment))]
public override string? measurement_source_value { get; set; }

[Transform(typeof(MCategoryLookup), nameof(Source.McategoryFinalPreTreatment))]
public override int[]? measurement_concept_id { get; set; }

[ConstantValue(2000500014, "MCategoryFinalPreTreatmentStage")]
public override int? measurement_source_concept_id { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<Query>
<Sql>
with BR as (
select
Record ->> '$.Breast.BreastCore.BreastCoreLinkagePatientId.NHSNumber.@extension' as NHSNumber,
Record ->> '$.Breast.BreastCore.BreastCoreLinkageDiagnosticDetails.ClinicalDateCancerDiagnosis' as ClinicalDateCancerDiagnosis,
Record ->> '$.Breast.BreastCore.BreastCoreStaging.FinalPreTreatmentMCategory' as McategoryFinalPreTreatment,
Record ->> '$.Breast.BreastCore.BreastCoreStaging.FinalPreTreatmentTNMStageGroupingDate' as StageDateFinalPretreatmentStage
from omop_staging.cosd_staging_81
where Type = 'BR'
)
select distinct
NHSNumber,
coalesce(StageDateFinalPretreatmentStage, ClinicalDateCancerDiagnosis) as MeasurementDate,
McategoryFinalPreTreatment
from BR
where McategoryFinalPreTreatment is not null
and NHSNumber is not null;
</Sql>
<Explanations>
<Explanation columnName="NHSNumber">
<Description>Patient NHS Number</Description>
<Origin>NHS NUMBER</Origin>
</Explanation>
<Explanation columnName="MeasurementDate">
<Description>Measurement Date is the date on which TNM Stage Grouping (Final pre-treatment) was recorded, but if this is not available, then it is the date the Primary Cancer was confirmed or the Primary Cancer diagnosis was agreed.</Description>
<Origin>DATE OF PRIMARY CANCER DIAGNOSIS (CLINICALLY AGREED)</Origin>
<Origin>TNM STAGE GROUPING DATE (FINAL PRETREATMENT)</Origin>
</Explanation>
<Explanation columnName="McategoryFinalPreTreatment">
<Description>Is the code, using a TNM CODING EDITION, which classifies the absence or presence of distant metastases before treatment during a Cancer Care Spell.</Description>
<Origin>M CATEGORY (FINAL PRETREATMENT)</Origin>
</Explanation>
</Explanations>
</Query>
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using OmopTransformer.Annotations;

namespace OmopTransformer.COSD.Breast.Measurements.CosdV8BreastMeasurementMcategoryFinalPreTreatmentStage;

[DataOrigin("COSD")]
[Description("COSD V8 Breast Measurement M Category Final Pre Treatment Stage")]
[SourceQuery("CosdV8BreastMeasurementMcategoryFinalPreTreatmentStage.xml")]
internal class CosdV8BreastMeasurementMcategoryFinalPreTreatmentStageRecord
{
public string? NhsNumber { get; set; }
public string? MeasurementDate { get; set; }
public string? McategoryFinalPreTreatment { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
using OmopTransformer.Annotations;
using OmopTransformer.Omop.Measurement;
using OmopTransformer.Transformation;

namespace OmopTransformer.COSD.Breast.Measurements.CosdV8BreastMeasurementMcategoryIntegratedStage;

internal class CosdV8BreastMeasurementMcategoryIntegratedStage : OmopMeasurement<CosdV8BreastMeasurementMcategoryIntegratedStageRecord>
{
[CopyValue(nameof(Source.NhsNumber))]
public override string? nhs_number { get; set; }

[Transform(typeof(DateConverter), nameof(Source.MeasurementDate))]
public override DateTime? measurement_date { get; set; }

[Transform(typeof(DateConverter), nameof(Source.MeasurementDate))]
public override DateTime? measurement_datetime { get; set; }

[ConstantValue(32828, "EHR episode record")]
public override int? measurement_type_concept_id { get; set; }

[CopyValue(nameof(Source.MCategoryIntegratedStage))]
public override string? measurement_source_value { get; set; }

[Transform(typeof(MCategoryLookup), nameof(Source.MCategoryIntegratedStage))]
public override int[]? measurement_concept_id { get; set; }

[ConstantValue(2000500018, "MCategoryIntegratedStage")]
public override int? measurement_source_concept_id { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<Query>
<Sql>
with BR as (
select
Record ->> '$.Breast.BreastCore.BreastCoreLinkagePatientId.NHSNumber.@extension' as NHSNumber,
Record ->> '$.Breast.BreastCore.BreastCoreLinkageDiagnosticDetails.ClinicalDateCancerDiagnosis' as ClinicalDateCancerDiagnosis,
Record ->> '$.Breast.BreastCore.BreastCoreStaging.IntegratedStageMCategory' as MCategoryIntegratedStage,
Record ->> '$.Breast.BreastCore.BreastCoreStaging.IntegratedStageTNMStageGroupingDate' as StageDateIntegratedStage
from omop_staging.cosd_staging_81
where Type = 'BR'
)
select distinct
NHSNumber,
coalesce(StageDateIntegratedStage, ClinicalDateCancerDiagnosis) as MeasurementDate,
MCategoryIntegratedStage
from BR
where MCategoryIntegratedStage is not null
and NHSNumber is not null;
</Sql>
<Explanations>
<Explanation columnName="NHSNumber">
<Description>Patient NHS Number</Description>
<Origin>NHS NUMBER</Origin>
</Explanation>
<Explanation columnName="MeasurementDate">
<Description>Measurement Date is the date on which TNM Stage Grouping (Integrated) was recorded, but if this is not available, then it is the date the Primary Cancer was confirmed or the Primary Cancer diagnosis was agreed.</Description>
<Origin>DATE OF PRIMARY CANCER DIAGNOSIS (CLINICALLY AGREED)</Origin>
<Origin>TNM STAGE GROUPING DATE (INTEGRATED)</Origin>
</Explanation>
<Explanation columnName="MCategoryIntegratedStage">
<Description>Is the code, using a TNM CODING EDITION, which classifies the absence or presence of distant metastases after all information from treatment is available during a Cancer Care Spell.</Description>
<Origin>M CATEGORY (INTEGRATED STAGE)</Origin>
</Explanation>
</Explanations>
</Query>
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using OmopTransformer.Annotations;

namespace OmopTransformer.COSD.Breast.Measurements.CosdV8BreastMeasurementMcategoryIntegratedStage;

[DataOrigin("COSD")]
[Description("COSD V8 Breast Measurement M Category Integrated Stage")]
[SourceQuery("CosdV8BreastMeasurementMcategoryIntegratedStage.xml")]
internal class CosdV8BreastMeasurementMcategoryIntegratedStageRecord
{
public string? NhsNumber { get; set; }
public string? MeasurementDate { get; set; }
public string? MCategoryIntegratedStage { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
using OmopTransformer.Annotations;
using OmopTransformer.Omop.Measurement;
using OmopTransformer.Transformation;

namespace OmopTransformer.COSD.Breast.Measurements.CosdV8BreastMeasurementNcategoryFinalPreTreatmentStage;

internal class CosdV8BreastMeasurementNcategoryFinalPreTreatmentStage : OmopMeasurement<CosdV8BreastMeasurementNcategoryFinalPreTreatmentStageRecord>
{
[CopyValue(nameof(Source.NhsNumber))]
public override string? nhs_number { get; set; }

[Transform(typeof(DateConverter), nameof(Source.MeasurementDate))]
public override DateTime? measurement_date { get; set; }

[Transform(typeof(DateConverter), nameof(Source.MeasurementDate))]
public override DateTime? measurement_datetime { get; set; }

[ConstantValue(32828, "EHR episode record")]
public override int? measurement_type_concept_id { get; set; }

[CopyValue(nameof(Source.NcategoryFinalPreTreatment))]
public override string? measurement_source_value { get; set; }

[Transform(typeof(NCategoryLookup), nameof(Source.NcategoryFinalPreTreatment))]
public override int[]? measurement_concept_id { get; set; }

[ConstantValue(2000500015, "NCategoryFinalPreTreatmentStage")]
public override int? measurement_source_concept_id { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<Query>
<Sql>
with BR as (
select
Record ->> '$.Breast.BreastCore.BreastCoreLinkagePatientId.NHSNumber.@extension' as NHSNumber,
Record ->> '$.Breast.BreastCore.BreastCoreLinkageDiagnosticDetails.ClinicalDateCancerDiagnosis' as ClinicalDateCancerDiagnosis,
Record ->> '$.Breast.BreastCore.BreastCoreStaging.FinalPreTreatmentNCategory' as NcategoryFinalPreTreatment,
Record ->> '$.Breast.BreastCore.BreastCoreStaging.FinalPreTreatmentTNMStageGroupingDate' as StageDateFinalPretreatmentStage
from omop_staging.cosd_staging_81
where Type = 'BR'
)
select distinct
NHSNumber,
coalesce(StageDateFinalPretreatmentStage, ClinicalDateCancerDiagnosis) as MeasurementDate,
NcategoryFinalPreTreatment
from BR
where NcategoryFinalPreTreatment is not null
and NHSNumber is not null;
</Sql>
<Explanations>
<Explanation columnName="NHSNumber">
<Description>Patient NHS Number</Description>
<Origin>NHS NUMBER</Origin>
</Explanation>
<Explanation columnName="MeasurementDate">
<Description>Measurement Date is the date on which TNM Stage Grouping (Final pre-treatment) was recorded, but if this is not available, then it is the date the Primary Cancer was confirmed or the Primary Cancer diagnosis was agreed.</Description>
<Origin>DATE OF PRIMARY CANCER DIAGNOSIS (CLINICALLY AGREED)</Origin>
<Origin>TNM STAGE GROUPING DATE (FINAL PRETREATMENT)</Origin>
</Explanation>
<Explanation columnName="NcategoryFinalPreTreatment">
<Description>Is the code, using a TNM CODING EDITION, which classifies the presence or absence of regional lymph node metastases before treatment during a Cancer Care Spell.</Description>
<Origin>N CATEGORY (FINAL PRETREATMENT)</Origin>
</Explanation>
</Explanations>
</Query>
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using OmopTransformer.Annotations;

namespace OmopTransformer.COSD.Breast.Measurements.CosdV8BreastMeasurementNcategoryFinalPreTreatmentStage;

[DataOrigin("COSD")]
[Description("COSD V8 Breast Measurement N Category Final Pre Treatment Stage")]
[SourceQuery("CosdV8BreastMeasurementNcategoryFinalPreTreatmentStage.xml")]
internal class CosdV8BreastMeasurementNcategoryFinalPreTreatmentStageRecord
{
public string? NhsNumber { get; set; }
public string? MeasurementDate { get; set; }
public string? NcategoryFinalPreTreatment { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
using OmopTransformer.Annotations;
using OmopTransformer.Omop.Measurement;
using OmopTransformer.Transformation;

namespace OmopTransformer.COSD.Breast.Measurements.CosdV8BreastMeasurementNcategoryIntegratedStage;

internal class CosdV8BreastMeasurementNcategoryIntegratedStage : OmopMeasurement<CosdV8BreastMeasurementNcategoryIntegratedStageRecord>
{
[CopyValue(nameof(Source.NhsNumber))]
public override string? nhs_number { get; set; }

[Transform(typeof(DateConverter), nameof(Source.MeasurementDate))]
public override DateTime? measurement_date { get; set; }

[Transform(typeof(DateConverter), nameof(Source.MeasurementDate))]
public override DateTime? measurement_datetime { get; set; }

[ConstantValue(32828, "EHR episode record")]
public override int? measurement_type_concept_id { get; set; }

[CopyValue(nameof(Source.NCategoryIntegratedStage))]
public override string? measurement_source_value { get; set; }

[Transform(typeof(NCategoryLookup), nameof(Source.NCategoryIntegratedStage))]
public override int[]? measurement_concept_id { get; set; }

[ConstantValue(2000500019, "NCategoryIntegratedStage")]
public override int? measurement_source_concept_id { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<Query>
<Sql>
with BR as (
select
Record ->> '$.Breast.BreastCore.BreastCoreLinkagePatientId.NHSNumber.@extension' as NHSNumber,
Record ->> '$.Breast.BreastCore.BreastCoreLinkageDiagnosticDetails.ClinicalDateCancerDiagnosis' as ClinicalDateCancerDiagnosis,
Record ->> '$.Breast.BreastCore.BreastCoreStaging.IntegratedStageNCategory' as NCategoryIntegratedStage,
Record ->> '$.Breast.BreastCore.BreastCoreStaging.IntegratedStageTNMStageGroupingDate' as StageDateIntegratedStage
from omop_staging.cosd_staging_81
where Type = 'BR'
)
select distinct
NHSNumber,
coalesce(StageDateIntegratedStage, ClinicalDateCancerDiagnosis) as MeasurementDate,
NCategoryIntegratedStage
from BR
where NCategoryIntegratedStage is not null;
</Sql>
<Explanations>
<Explanation columnName="NHSNumber">
<Description>Patient NHS Number</Description>
<Origin>NHS NUMBER</Origin>
</Explanation>
<Explanation columnName="MeasurementDate">
<Description>Measurement Date is the date on which TNM Stage Grouping (Integrated) was recorded, but if this is not available, then it is the date the Primary Cancer was confirmed or the Primary Cancer diagnosis was agreed.</Description>
<Origin>DATE OF PRIMARY CANCER DIAGNOSIS (CLINICALLY AGREED)</Origin>
<Origin>TNM STAGE GROUPING DATE (INTEGRATED)</Origin>
</Explanation>
<Explanation columnName="NCategoryIntegratedStage">
<Description>Is the code, using a TNM CODING EDITION, which classifies the presence or absence of regional lymph node metastases after all information from treatment is available during a Cancer Care Spell.</Description>
<Origin>N CATEGORY (INTEGRATED STAGE)</Origin>
</Explanation>
</Explanations>
</Query>
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using OmopTransformer.Annotations;

namespace OmopTransformer.COSD.Breast.Measurements.CosdV8BreastMeasurementNcategoryIntegratedStage;

[DataOrigin("COSD")]
[Description("COSD V8 Breast Measurement N Category Integrated Stage")]
[SourceQuery("CosdV8BreastMeasurementNcategoryIntegratedStage.xml")]
internal class CosdV8BreastMeasurementNcategoryIntegratedStageRecord
{
public string? NhsNumber { get; set; }
public string? MeasurementDate { get; set; }
public string? NCategoryIntegratedStage { get; set; }
}
28 changes: 28 additions & 0 deletions OmopTransformer/COSD/CosdTransformer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@
using OmopTransformer.COSD.Breast.ProcedureOccurrence.CosdV9BreastProcedureOccurrenceProcedureOpcs;
using OmopTransformer.COSD.Breast.ProcedureOccurrence.CosdV9BreastProcedureOccurrencePrimaryProcedureOpcs;
using OmopTransformer.COSD.Breast.Measurements.CosdV8BreastMeasurementGradeOfDifferentiation;
using OmopTransformer.COSD.Breast.Measurements.CosdV8BreastMeasurementMcategoryFinalPreTreatmentStage;
using OmopTransformer.COSD.Breast.Measurements.CosdV8BreastMeasurementMcategoryIntegratedStage;
using OmopTransformer.COSD.Breast.Measurements.CosdV8BreastMeasurementNcategoryFinalPreTreatmentStage;
using OmopTransformer.COSD.Breast.Measurements.CosdV8BreastMeasurementNcategoryIntegratedStage;
using OmopTransformer.COSD.Lung.ConditionOccurrence.CosdV8LungConditionOccurrencePrimaryDiagnosis;
using OmopTransformer.COSD.Lung.ConditionOccurrence.CosdV8LungConditionOccurrencePrimaryDiagnosisHistologyTopography;
using OmopTransformer.COSD.Lung.ConditionOccurrence.CosdV8LungConditionOccurrenceProgression;
Expand Down Expand Up @@ -1033,5 +1037,29 @@ await Transform<CosdV8BreastMeasurementGradeOfDifferentiationRecord, CosdV8Breas
"CosdV8BreastMeasurementGradeOfDifferentiation",
runId,
cancellationToken);

await Transform<CosdV8BreastMeasurementMcategoryFinalPreTreatmentStageRecord, CosdV8BreastMeasurementMcategoryFinalPreTreatmentStage>(
_measurementRecorder.InsertUpdateMeasurements,
"CosdV8BreastMeasurementMcategoryFinalPreTreatmentStage",
runId,
cancellationToken);

await Transform<CosdV8BreastMeasurementMcategoryIntegratedStageRecord, CosdV8BreastMeasurementMcategoryIntegratedStage>(
_measurementRecorder.InsertUpdateMeasurements,
"CosdV8BreastMeasurementMcategoryIntegratedStage",
runId,
cancellationToken);

await Transform<CosdV8BreastMeasurementNcategoryFinalPreTreatmentStageRecord, CosdV8BreastMeasurementNcategoryFinalPreTreatmentStage>(
_measurementRecorder.InsertUpdateMeasurements,
"CosdV8BreastMeasurementNcategoryFinalPreTreatmentStage",
runId,
cancellationToken);

await Transform<CosdV8BreastMeasurementNcategoryIntegratedStageRecord, CosdV8BreastMeasurementNcategoryIntegratedStage>(
_measurementRecorder.InsertUpdateMeasurements,
"CosdV8BreastMeasurementNcategoryIntegratedStage",
runId,
cancellationToken);
}
}
12 changes: 12 additions & 0 deletions OmopTransformer/OmopTransformer.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,18 @@
<None Update="COSD\Breast\Measurements\CosdV8BreastMeasurementGradeOfDifferentiation\CosdV8BreastMeasurementGradeOfDifferentiation.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="COSD\Breast\Measurements\CosdV8BreastMeasurementMcategoryFinalPreTreatmentStage\CosdV8BreastMeasurementMcategoryFinalPreTreatmentStage.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="COSD\Breast\Measurements\CosdV8BreastMeasurementMcategoryIntegratedStage\CosdV8BreastMeasurementMcategoryIntegratedStage.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="COSD\Breast\Measurements\CosdV8BreastMeasurementNcategoryFinalPreTreatmentStage\CosdV8BreastMeasurementNcategoryFinalPreTreatmentStage.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="COSD\Breast\Measurements\CosdV8BreastMeasurementNcategoryIntegratedStage\CosdV8BreastMeasurementNcategoryIntegratedStage.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="COSD\Lung\ConditionOccurrence\CosdV8LungConditionOccurrencePrimaryDiagnosis\CosdV8LungConditionOccurrencePrimaryDiagnosis.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
Expand Down
Loading