Skip to content

Job request: 25922

Organisation:
UKHSA
Workspace:
study-result-resistant-bsi
ID:
at5seefljppgyaik

This page shows the technical details of what happened when the authorised researcher Billy Zhong 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_dataset
    Status:
    Failed
    Job identifier:
    glqv3osaiqtvmesk
    Error:
    cancelled_by_user: Cancelled by user
  • Action:
    generate_dataset_combined
    Status:
    Failed
    Job identifier:
    q7di2rij7zkjruty
    Error:
    cancelled_by_user: Cancelled by user
  • Action:
    generate_measures
    Status:
    Failed
    Job identifier:
    c536tmsycqk2uu5m
    Error:
    cancelled_by_user: Cancelled by user
  • Action:
    generate_controls
    Status:
    Failed
    Job identifier:
    spyhrm4llxu7bwqu
    Error:
    cancelled_by_user: Cancelled by user

Pipeline

Show project.yaml
version: '5.0'

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

  # Step 2a: Sepsis trend analysis (monthly counts, resistant %)
  sepsis_trend_analysis:
    run: r:v2 analysis/sepsis_trend_analysis.R
    needs: [generate_dataset]
    outputs:
      moderately_sensitive:
        table_monthly: output/tables/table_sepsis_monthly.csv
        table_annual: output/tables/table_sepsis_annual.csv
        fig_monthly_trend: output/figures/fig_sepsis_monthly_trend.png
        fig_annual_trend: output/figures/fig_sepsis_annual_trend.png

  # Step 1b: Combined dataset (ICD-10 hospital + SNOMED primary care BSI)
  generate_dataset_combined:
    run: ehrql:v1 generate-dataset analysis/dataset_definition_combined.py
         --output output/dataset_combined.csv.gz
    outputs:
      highly_sensitive:
        dataset: output/dataset_combined.csv.gz

  # Step 2b: Descriptive analysis (hospital-only, original)
  descriptive_analysis:
    run: r:v2 analysis/descriptive_analysis.R
    needs: [generate_dataset]
    outputs:
      moderately_sensitive:
        table1: output/tables/table1_overall.csv
        table1_period: output/tables/table1_by_period.csv
        table_mortality: output/tables/table_mortality.csv
        table_amr: output/tables/table_amr_codes.csv
        table_covid: output/tables/table_covid_status.csv
        fig_annual: output/figures/fig_cases_by_year.png
        fig_monthly: output/figures/fig_cases_by_year_month.png
        fig_age: output/figures/fig_age_distribution.png
        fig_comorb: output/figures/fig_comorbidity_prevalence.png
        fig_region: output/figures/fig_region_distribution.png
        fig_ethnicity: output/figures/fig_ethnicity_distribution.png
        fig_imd: output/figures/fig_imd_distribution.png
        fig_mortality: output/figures/fig_mortality_by_period.png

  # Step 2c: Descriptive analysis (combined: ICD-10 + SNOMED primary care)
  descriptive_analysis_combined:
    run: r:v2 analysis/descriptive_analysis_combined.R
    needs: [generate_dataset_combined]
    outputs:
      moderately_sensitive:
        table1: output/tables_combined/table1_overall.csv
        table1_period: output/tables_combined/table1_by_period.csv
        table_mortality: output/tables_combined/table_mortality.csv
        table_amr: output/tables_combined/table_amr_codes.csv
        table_covid: output/tables_combined/table_covid_status.csv
        table_source: output/tables_combined/table_bsi_source.csv
        fig_annual: output/figures_combined/fig_cases_by_year.png
        fig_monthly: output/figures_combined/fig_cases_by_year_month.png
        fig_age: output/figures_combined/fig_age_distribution.png
        fig_comorb: output/figures_combined/fig_comorbidity_prevalence.png
        fig_region: output/figures_combined/fig_region_distribution.png
        fig_ethnicity: output/figures_combined/fig_ethnicity_distribution.png
        fig_imd: output/figures_combined/fig_imd_distribution.png
        fig_mortality: output/figures_combined/fig_mortality_by_period.png
        fig_source: output/figures_combined/fig_cases_by_source.png

  # Step 3: Measures (monthly BSI rates per registered population)
  generate_measures:
    run: ehrql:v1 generate-measures analysis/measures_definition.py
         --output output/measures/:csv
    outputs:
      moderately_sensitive:
        bsi_rate: output/measures/bsi_rate.csv
        resistant_bsi_rate: output/measures/resistant_bsi_rate.csv
        bsi_rate_by_imd: output/measures/bsi_rate_by_imd.csv
        resistant_bsi_rate_by_imd: output/measures/resistant_bsi_rate_by_imd.csv
        bsi_rate_by_region: output/measures/bsi_rate_by_region.csv
        bsi_rate_by_age: output/measures/bsi_rate_by_age.csv
        bsi_rate_by_sex: output/measures/bsi_rate_by_sex.csv

  # Step 4: Control cohort (no-BSI population for matching)
  generate_controls:
    run: ehrql:v1 generate-dataset analysis/dataset_definition_controls.py
         --output output/dataset_controls.csv.gz
    outputs:
      highly_sensitive:
        dataset: output/dataset_controls.csv.gz

Timeline

  • Created:

  • Finished:

  • Runtime:

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

Job request

Status
Failed
Backend
TPP
Requested by
Billy Zhong
Branch
main
Force run dependencies
No
Git commit hash
e31debd
Requested actions
  • generate_dataset
  • generate_dataset_combined
  • generate_measures
  • generate_controls

Code comparison

Compare the code used in this job request