Skip to content

Job request: 25958

Organisation:
University of Nottingham
Workspace:
measures-testing
ID:
4xqm3sjcdy2vtqbq

This page shows the technical details of what happened when the authorised researcher Weiyao Meng requested one or more actions to be run against real patient data within a secure environment.

By cross-referencing the list of jobs with the pipeline section below, you can infer what security level the outputs were written to.

The output security levels are:

  • highly_sensitive
    • Researchers can never directly view these outputs
    • Researchers can only request code is run against them
  • moderately_sensitive
    • Can be viewed by an approved researcher by logging into a highly secure environment
    • These are the only outputs that can be requested for public release via a controlled output review service.

Jobs

  • Action:
    generate_patient_measures_for_practices
    Status:
    Pending
    Job identifier:
    nzvqlwe4g7f7nzjx
  • Action:
    process_measures_to_practice_dataset
    Status:
    Pending
    Job identifier:
    2amvixwqdya3thnl
  • Action:
    generate_patient_measures_population_structure
    Status:
    Pending
    Job identifier:
    hs7mxqtpdkzdrigr
  • Action:
    process_patient_measures_population_structure
    Status:
    Pending
    Job identifier:
    p4ujfcbg4xdrblpk
  • Action:
    process_practice_dataset_stp
    Status:
    Pending
    Job identifier:
    3tij2skjflrx4rjf
  • Action:
    process_practice_dataset_region
    Status:
    Pending
    Job identifier:
    256cxmt3mmfybjvt
  • Action:
    process_practice_size_distribution
    Status:
    Pending
    Job identifier:
    zdjfrsvsensckkwm

Pipeline

Show project.yaml
version: '4.0'

actions:
  # generate_dataset:
  #   run: ehrql:v1 generate-dataset analysis/dataset_definition_patients.py --output output/dataset_patients.csv.gz
  #   outputs:
  #     highly_sensitive:
  #       dataset: output/dataset_patients.csv.gz

  #################################################################
  # Actions defined for checking pregnancy variables

  generate_dataset_preg_2024_11_01:
    run: ehrql:v1 generate-dataset analysis/check_pregnancy_variables/dataset_definition_pregnancy.py --output output/dataset_preg_2024_11_01.csv.gz -- --start_date 2024-11-01
    outputs:
      highly_sensitive:
        dataset: output/dataset_preg_2024_11_01.csv.gz

  generate_dataset_preg_2025_11_01:
    run: ehrql:v1 generate-dataset analysis/check_pregnancy_variables/dataset_definition_pregnancy.py --output output/dataset_preg_2025_11_01.csv.gz -- --start_date 2025-11-01
    outputs:
      highly_sensitive:
        dataset: output/dataset_preg_2025_11_01.csv.gz

  generate_dataset_preg_measures:
    run: ehrql:v1 generate-measures analysis/check_pregnancy_variables/dataset_definition_pregnancy_measures.py --output output/measures/:csv
    outputs:
      moderately_sensitive:
        dataset: output/measures/*.csv

  analyse_preg_measures:
    run: python:v2 analysis/check_pregnancy_variables/pregnancy_checks.py --output output/measures/pregnancy_checks.csv --input output/measures/*.csv
    needs: 
      [generate_dataset_preg_measures]
    outputs:
      moderately_sensitive:
        dataset: output/measures/*by_year.csv
        charts: output/measures/*by_year.png
  
  #################################################################
  # Actions for retrieving patient-level data for each specified month AND combine all into one csv.gz for downstream analysis

  # retrieve csv.gz for each specified month
  generate_patient_dataset_2024_02_01:
    run: ehrql:v1 generate-dataset analysis/dataset_definition_patients.py --dummy-tables dummy_tables --output output/dataset_patients_2024-02-01.csv.gz -- --start_date 2024-02-01
    outputs:
      highly_sensitive:
        dataset: output/dataset_patients_2024-02-01.csv.gz
  generate_patient_dataset_2024_03_01:
    run: ehrql:v1 generate-dataset analysis/dataset_definition_patients.py --dummy-tables dummy_tables --output output/dataset_patients_2024-03-01.csv.gz -- --start_date 2024-03-01
    outputs:
      highly_sensitive:
        dataset: output/dataset_patients_2024-03-01.csv.gz

  # combine monthly tables into one csv.gz
  combine_monthly_patient_gz:
    run: python:v2 analysis/preprocess_combine_gz.py --output output/dataset_patients_combined.csv.gz
    needs: [generate_patient_dataset_2024_02_01, generate_patient_dataset_2024_03_01]
    outputs:
      highly_sensitive:
        dataset: output/dataset_patients_combined.csv.gz

  #################################################################
  # patient-level measures for sense checking; not final measures for analysis
  
  # # local testing with dummy tables
  # generate_patient_measures_population_structure:
  #   run: ehrql:v1 generate-measures analysis/validation/measures_patient_population_structure.py --dummy-tables dummy_tables --output output/patient_measures_population_structure.csv
  #   outputs:
  #     moderately_sensitive:
  #       measure_tables: output/patient_measures_population_structure.csv
  
  generate_patient_measures_population_structure:
    run: ehrql:v1 generate-measures analysis/validation/measures_patient_population_structure.py --output output/patient_measures_population_structure.csv
    outputs:
      moderately_sensitive:
        measure_tables: output/patient_measures_population_structure.csv
  
  process_patient_measures_population_structure:
    run: python:v2 analysis/validation/process_measure_population_structure.py --output output/patient_measures_population_structure_longformat.csv
    needs: [generate_patient_measures_population_structure]
    outputs:
      moderately_sensitive:
        measure_tables: output/patient_measures_population_structure_longformat.csv
  
  # TO ADD: measures for checking PF eligibility variables; consultation count variables
  
  #################################################################
  # Actions defined for getting measures and aggregating into practice-level

  # practice-level data step 1: run patient dataset measures 

  # # version for debugging
  # generate_patient_measures_for_practices:
  #   run: ehrql:v1 generate-measures analysis/practice_variables/measures_practice.py --dummy-tables dummy_tables --output output/practice_measures.csv
  #   outputs:
  #     highly_sensitive:
  #       measure_tables: output/practice_measures.csv

  generate_patient_measures_for_practices:
    run: ehrql:v1 generate-measures analysis/practice_variables/measures_practice.py --output output/practice_measures.csv
    outputs:
      highly_sensitive:
        measure_tables: output/practice_measures.csv
  
  # practice-level data step 2: aggregate patient measures to practice-level data
  process_measures_to_practice_dataset:
    run: python:v2 analysis/practice_variables/process_measures_to_practice_dataset.py --output output/practice_level_data.csv
    needs: [generate_patient_measures_for_practices]
    outputs:
      moderately_sensitive:
        practice_level_data: output/practice_level_data.csv
  
  # practice-level data step 3: extract info from practice-level data
  process_practice_dataset_stp:
    run: python:v2 analysis/practice_variables/practice_to_stp.py --output output/practice_summary_by_stp.csv
    needs: [process_measures_to_practice_dataset]
    outputs:
      moderately_sensitive:
        practice_level_data: output/practice_summary_by_stp.csv
  
  process_practice_dataset_region:
    run: python:v2 analysis/practice_variables/practice_to_region.py --output output/practice_summary_by_region.csv
    needs: [process_measures_to_practice_dataset]
    outputs:
      moderately_sensitive:
        practice_level_data: output/practice_summary_by_region.csv
  
  process_practice_size_distribution:
    run: python:v2 analysis/practice_variables/practice_size_distribution.py --output output/practice_size_distribution.png
    needs: [process_measures_to_practice_dataset]
    outputs:
      moderately_sensitive:
        practice_level_plot: output/practice_size_distribution.png

  #################################################################

# https://actions.opensafely.org/actions/safetab/v3.0.2/
# safetabs: create two-way tables for the specified variables; redact results for small numbers
  # generate_safetabs:
  #   run: safetab:v3.0.2 output/dataset_patients_combined.csv.gz
  #   needs: [combine_monthly_patient_gz]
  #   config:
  #     output_path: output
  #     redaction_limit: 2
  #     tables:
  #       two_way:
  #         tab_type: 2-way
  #         variables:
  #           - sex
  #           - region
  #   outputs:
  #     moderately_sensitive:
  #       safetab_log: output/dataset_patients_combined.csv_tables/table_log.txt
  #       safetab_two_way: output/dataset_patients_combined.csv_tables/two_way/*.md

# https://actions.opensafely.org/actions/cohort-report/v3.0.0/
# generate cohort report; require all variable_types
  # generate_cohort_report:
  #   run: cohort-report:v3.0.0 output/dataset_patients_combined.csv.gz
  #   needs: [combine_monthly_patient_gz]
  #   config:
  #     variable_types:
  #       start_date: date
  #       index_date: date
  #       registered_start: categorical
  #       registered_index: categorical
  #       alive: categorical
  #       sex: categorical
  #       age: int
  #       date_of_birth: date
  #       imd: categorical
  #       ethnicity: categorical
  #       region: categorical
  #   outputs:
  #     moderately_sensitive:
  #       reports: cohort_reports_outputs/descriptives_dataset_patients_combined.csv.html
  #       figures: cohort_reports_outputs/*.png

# https://actions.opensafely.org/actions/dataset-report/v0.0.29/
# dataset report
  # generate_dataset_report:
  #   run: >
  #     dataset-report:v0.0.29
  #       --input-files output/dataset_patients_combined.csv.gz
  #       --output-dir output
  #   needs: [combine_monthly_patient_gz]
  #   outputs:
  #     moderately_sensitive:
  #       dataset_report: output/dataset_patients_combined.html

Timeline

  • Created:

  • Runtime:

These timestamps are generated and stored using the UTC timezone on the TPP backend.

Job request

Status
Pending
Backend
TPP
Workspace
measures-testing
Requested by
Weiyao Meng
Branch
main
Force run dependencies
Yes
Git commit hash
f5255c5
Requested actions
  • generate_patient_measures_population_structure
  • process_patient_measures_population_structure
  • generate_patient_measures_for_practices
  • process_measures_to_practice_dataset
  • process_practice_dataset_stp
  • process_practice_dataset_region
  • process_practice_size_distribution

Code comparison

Compare the code used in this job request