Metrics on this tab
- Data Transfer Rate A
- Data Transfer Rate C
- General Conformance Rate 1
- Date Conformance Rate 1
Features available on dashboard
- Master filter
- filter by either awardee or organization
- filter by performance group
- filter by either awardee or organization
- Information buttons
- Tooltip - detailed information and explanation by hovering over marks
- contact button
- once clicked, will automatically populate your new email recipient row and get an email started for you
Data Transfer Rates
Data Transfer Rate A
This rate measures the percentage of participants with EHR data that are submitted by sites. The numerator is the total count of participants with EHR data per HPO, and the denominator is the total count of all participants eligible for EHR data transfer.
Basic logic:
Data Transfer Rate A = [total number of distinct participants that have at least 1 record across the 6 major tables] / [total count of eligible participants with withdrawal_status = "NOT_WITHDRAWN" and consent = TRUE]
Additional NIH Grant Award Metrics
General Conformance Rate 1 (GC-1)
Every row in the condition_occurrence, procedure_occurrence, visit_occurrence, drug_exposure, measurement and observation tables must have a well-defined standard concept_id. This metric measures the averaged percentage of records in each table that meets the below criteria. Detailed breakdown by table is shown in tooltip.
1. standard_concept = "S"
2. standard_concept is not null.
3. domain_id = "Observation" (or other corresponding domains)
SQL template
select c.concept_id, c.standard_concept,
c.concept_name, c.domain_id, count(c.concept_id) as cnt
from [omop_table] p
left join [concept_table] c on p.[omop_table]_concept_id = c.concept_id
where standard_concept <> 'S' or standard_concept IS NULL
or c.domain_id != '[Relevant Domain]'
Group by 1,2,3,4
ORDER by cnt desc
- Please modify the [omop_table] to respective the OMOP table
- Ensure that the p.[omop_table]_concept_id matches as well. (eg. p.condition_concept_id)
- Update the [Relevant Domain]
Date Conformance Rate 1 (DC-1)
There should not be any end dates before start dates in any of the clinical data tables. This metric measures the averaged percentage of records in each table that meats the below criteria. Detailed breakdown by table is shown in tooltip.
1. xxx_end_date <= xxx_start_date
SQL template
SELECT COUNT(*) AS total_rows,
sum(case when (condition_start_date > condition_end_date) then 1 else 0 end) as wrong_date_rows
FROM `condition_occurrence`;
DC1 (condition) = 1 - failure_rate = round(100 * wrong_date_rows / total_rows, 1)
Date Conformance Rate 2 (DC-2)
No data points should exist beyond 30 days of death date, if applicable. This metric measures the averaged percentage of records in each table that meats the below criteria. Detailed breakdown by table is shown in tooltip.
1. xxx_start_date <= 30 days from death date
SQL template
SELECT COUNT(*) AS total,
sum(case when (DATE_DIFF(visit_start_date, death_date, DAY) > 30) then 1 else 0 end) as wrong_death_date
FROM `visit_occurrence` vo
INNER JOIN `death` AS d ON vo.person_id = d.person_id;
DC2 (visit) = 1 - failure_rate = round( 100 * wrong_death_date / total, 1)
Date Conformance Rate 3 (DC-3)
No dates should be prior to 1900 (for observation) or 1980 (for other clinical data tables). This metric measures the averaged percentage of records in each table. Detailed breakdown by table is shown in tooltip.
SQL template
SELECT COUNT(*) as num_rows
FROM `observation`;
SELECT COUNT(*) as num_bad_rows
FROM `observation` o
WHERE o.observation_datetime < CAST('1900-01-01 00:00:00' AS TIMESTAMP)
OR o.observation_date < CAST('1900-01-01' as DATE);
DC3 (observation) = 1 - ROUND( IFNULL( num_bad_rows, 0) / IFNULL( num_rows, 0) * 100 , 2 )
Date Conformance Rate 4 (DC-4)
Date and datetime fields should match. This metric measures the averaged percentage of records in each table. Detailed breakdown by table is shown in tooltip.
SQL template
SELECT DISTINCT COUNT(*) as total_rows
FROM `condition_occurrence`;
SELECT DISTINCT SUM(bad_rows_orig.cnt) as bad_rows_cnt
FROM
(SELECT DISTINCT
IFNULL(DATE_DIFF(CAST(co.condition_start_datetime AS DATE), co.condition_start_date, DAY), 0) as start_datetime_date_diff,
IFNULL(DATE_DIFF(CAST(co.condition_end_datetime AS DATE), co.condition_end_date, DAY), 0) as end_datetime_date_diff,
COUNT(*) as cnt
FROM `condition_occurrence` co
WHERE
((IFNULL(DATE_DIFF(CAST(co.condition_start_datetime AS DATE), co.condition_start_date, DAY), 0) > 1
OR
IFNULL(DATE_DIFF(CAST(co.condition_start_datetime AS DATE), co.condition_start_date, DAY), 0) < 0)
OR
(IFNULL(DATE_DIFF(CAST(co.condition_end_datetime AS DATE), co.condition_end_date, DAY), 0) > 1
OR
IFNULL(DATE_DIFF(CAST(co.condition_end_datetime AS DATE), co.condition_end_date, DAY), 0) < 0))
GROUP BY 1,2) bad_rows;
DC4 (condition_occurrence) = 1 - ROUND( IFNULL( bad_rows.bad_rows_cnt, 0) / total_rows.total_rows * 100, 2)
Conformance Rate Targets
Does Not Meet Target: <80%
Approaching Target: 80 - 90%
Meets or Exceeds Target: >90%