<< Click to Display Table of Contents >> DQM Check for Relative Percent Difference 
Copyright © 2018 EarthSoft, Inc • Modified: 12 Dec 2018 

This is a Check for Relative Percent Difference (RPD) values for duplicate sample results that fall outside Quality Control (QC) limits.
Notes: •The QC_RPD column or both of the QC_SPIKE_RECOVERY and QC_DUP_SPIKE_RECOVERY columns must be populated in DT_RESULT_QC for this check to function. •Control limits for this check are determined as described in the RT_DQM_CONTROL_LIMITS section. •See EarthSoft.DQM.RelativePercentDiffField to check field duplicate samples without using DT_RESULT_QC. 
Check name is EarthSoft.DQM.RelativePercentDifference = Relative Percent Difference (RPD).
This check uses the REPORTABLE_RESULT and TEST_BATCH_TYPE parameters from Global Parameters. There are nine other parameters:
•Multiplier – Multiplier used with detection limit in the Orig/Dup check to test for results with concentrations > multiplier * detection limit. Defaults to 5.
•Medium_code_soil – RT_MATRIX.MEDIUM_CODE for soil samples. Defaults to "Soil".
•MultiplierSoil –Mmultiplier used with detection limit in the Orig/Dup check to test soil samples for results with the absolute difference in concentrations > multiplierSoil * detection limit. Defaults to 2.
•Sample_type_LCSD – The sample type for Lab Control Sample Dups (only the Dups). Defaults to BD.
•Sample_type_MSD – The sample type for Matrix Spike Dups (only the Dups). Defaults to MSD, SD.
•Sample_type_Orig_Dup – The sample type for other Dups (only the Dups), such as Lab Replicates. Defaults to LR.
•Sample_result_type_1 – Which RESULT_TYPE to use with these SAMPLE_TYPES. Defaults to SAMPLE_TYPE = BD / RESULT_TYPE (stored in the REMARK column) = SC.
•Sample_result_type_2 – Which RESULT_TYPE to use with these SAMPLE_TYPES. Defaults to SAMPLE_TYPE = MSD, SD / RESULT_TYPE (stored in the REMARK column)= SC.
•Sample_result_type_3 – Which RESULT_TYPE to use with these SAMPLE_TYPES. Defaults to SAMPLE_TYPE = LR / RESULT_TYPE (stored in the REMARK column)= TRG.
Notes: •The default value is used if there is no record in RT_DQM_CHECK_PARAM for an input parameter. •The default value is used if the PARAM_VALUE is NULL for this parameter in RT_DQM_CHECK_PARAM. 
Errors (where table is not indicated, it is DT_RESULT_QC):
For Blank Spikes and Matrix Spikes:
•If QC_RPD, QC_SPIKE_RECOVERY, and QC_DUP_SPIKE_RECOVERY are all NULL or Not Numeric, then add error and skip result.
•If QC_RPD is NULL or Not Numeric, and either QC_SPIKE_RECOVERY or QC_DUP_SPIKE_RECOVERY are also NULL or Not Numeric, then add error and skip result.
•If the Control Limit is NULL or Not Numeric in both RT_DQM_CONTROL_LIMITS and DT_RESULT_QC, then add error and skip result.
For Lab Duplicates:
•If DT_RESULT.RESULT_NUMERIC is NULL or Not Numeric, then add error and skip result.
Exceptions (where table is not indicated, it is DT_RESULT_QC):
For LCS/LCSD and LCS/LCSD_NON_DETECT
•Review results with DT_SAMPLE.SAMPLE_TYPE_CODE = sample_type_LCSD and DT_RESULT.RESULT_TYPE_CODE = sample_result_type_1.
•Qualify a result if rpd > rpd_cl.
•Qualify associated results related by TEST_BATCH_ID.
•Use the LCS/LCSD qualifier for results with detected concentrations and the LCS/LCSD_NON_DETECT qualifier for nondetect results.
For MS/MSD and MS/MSD_NON_DETECT
•Review results with DT_SAMPLE.SAMPLE_TYPE_CODE = sample_type_MSD and DT_RESULT.RESULT_TYPE_CODE = sample_result_type_2.
•Qualify a result if rpd > rpd_cl.
•Qualify associated results related by SYS_SAMPLE_CODE in the PARENT_SAMPLE_CODE field of the MSD's parent sample. For example:
▪MSD sample's SYS_SAMPLE_CODE = ABC_MSD and PARENT_SAMPLE_CODE = ABC_MS.
▪MSD's parent sample's SYS_SAMPLE_CODE = ABC_MS and PARENT_SAMPLE_CODE = ABC.
▪Associated Results are found by finding results with SYS_SAMPLE_CODE = ABC.
•Use the MS/MSD qualifier for results with detected concentrations and the MS/MSD_NON_DETECT qualifier for nondetect results.
For Orig/Dup and Orig/Dup_NON_DETECT
•Review results with DT_SAMPLE.SAMPLE_TYPE_CODE = sample_type_Orig_Dup and DT_RESULT.RESULT_TYPE_CODE = sample_result_type_3.
•Find the parent sample using DT_SAMPLE.PARENT_SAMPLE_CODE or DT_FIELDQC_BATCH_PARTNER.
•TEST #1:
▪For both samples, is DT_RESULT.RESULT_NUMERIC >= multiplier * DT_RESULT.REPORTING_DETECTION_LIMIT?
▪If TRUE, then
▪calculate rpd_dup
▪If rpd_dup > rpd_cl, then qualify the results.
•TEST #2 (if TEST #1 = FALSE):
▪If the RT_MATRIX.MEDIUM_CODE of DT_SAMPLE.MATRIX_CODE = medium_code_soil,
▪then AD_multiplier = multiplierSoil
▪else AD_multiplier = 1
▪ABS_DIFF = absolute difference in the parent and duplicate concentrations = ABS(Parent  Dup).
▪Detection_Limit = the value in the first column that is not NULL:
▪DT_RESULT.REPORTING_DETECTION_LIMIT
▪DT_RESULT.QUANTITATION_LIMIT
▪DT_RESULT.METHOD_DETECTION_LIMIT
▪If the ABS_DIFF > AD_multiplier * Detection_Limit, then qualify the results.
•Use the Orig/Dup qualifier for results with detected concentrations.
•Use the Orig/Dup_NON_DETECT qualifier for nondetect results.
Calculations (where table is not indicated, it is DT_RESULT_QC):
RT_DQM_CONTROL_LIMITS is discussed in more detail here.
For Blank Spikes and Matrix Spikes (sample_type_LCSD and sample_type_MSD):
•If QC_RPD is Numeric,
▪then rpd = QC_RPD
▪else rpd = 100 * ABS(QC_SPIKE_RECOVERY  QC_DUP_SPIKE_RECOVERY) / (0.5 * (QC_SPIKE_RECOVERY + QC_DUP_SPIKE_RECOVERY).
For Blank Spikes (sample_type_LCSD):
•If RT_DQM_CONTROL_LIMITS.LCS_DUP_RPD_CL is Numeric,
▪then rpd_cl = RT_DQM_CONTROL_LIMITS.LCS_DUP_RPD_CL
▪else rpd_cl = QC_RPD_CL.
For Matrix Spikes (sample_type_MSD):
•If RT_DQM_CONTROL_LIMITS.MS_DUP_RPD_CL is Numeric,
▪then rpd_cl = RT_DQM_CONTROL_LIMITS.MS_DUP_RPD_CL
▪else rpd_cl = QC_RPD_CL.
For Lab Duplicates (sample_type_Orig_Dup):
•rpd_dup = 100 * ABS(RESULT_NUMERIC  RESULT_NUMERIC from parent) /(0.5 * (RESULT_NUMERIC + RESULT_NUMERIC from parent).
•If RT_DQM_CONTROL_LIMITS.LAB_DUP_RPD_CL is Numeric,
▪then rpd_cl = RT_DQM_CONTROL_LIMITS.LAB_DUP_RPD_CL
▪else rpd_cl = QC_RPD_CL.