Skip to content

Job request: 13523

Organisation:
Bennett Institute
Workspace:
appointments-short-data-report
ID:
nezjrt5v46tqpteh

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

By cross-referencing the indicated Requested Actions with the Pipeline section below, you can infer what security level various outputs were written to. Outputs marked as highly_sensitive can never be viewed directly by a researcher; they can only request that code runs against them. Outputs marked as moderately_sensitive can be viewed by an approved researcher by logging into a highly secure environment. Only outputs marked as moderately_sensitive can be requested for release to the public, via a controlled output review service.

Jobs

Pipeline

Show project.yaml
version: "3.0"

expectations:
  population_size: 1000

actions:
  query_distinct_values:
    run: >
      sqlrunner:latest
        --output output/distinct_values/rows.csv
        analysis/distinct_values/query.sql
    outputs:
      highly_sensitive:
        rows: output/distinct_values/rows.csv

  generate_prop_distinct_values_by_organisation_id_measure:
    needs: [query_distinct_values]
    run: >
      python:latest python -m analysis.distinct_values.generate_measure
    outputs:
      highly_sensitive:
        measure: output/distinct_values/measure_prop_distinct_values_by_organisation_id.csv

  generate_distinct_values_deciles_charts:
    needs: [generate_prop_distinct_values_by_organisation_id_measure]
    run: >
      deciles-charts:v0.0.33
        --input-files output/distinct_values/measure_*.csv
        --output-dir output/distinct_values
    outputs:
      moderately_sensitive:
        deciles_charts: output/distinct_values/deciles_chart_*.png
        deciles_tables: output/distinct_values/deciles_table_*.csv

  query_status:
    run: >
      sqlrunner:latest
        --output output/status/rows.csv
        analysis/status/query.sql
    outputs:
      highly_sensitive:
        rows: output/status/rows.csv

  round_status:
    needs: [query_status]
    run: >
      python:latest python -m analysis.actions.round
        --output output/status/results.csv
        output/status/rows.csv
        --column-names num_values
    outputs:
      moderately_sensitive:
        results: output/status/results.csv

  query_date_range:
    run: >
      sqlrunner:latest
        --output output/date_range/rows.csv
        analysis/date_range/query.sql
    outputs:
      highly_sensitive:
        rows: output/date_range/rows.csv

  copy_date_range:
    needs: [query_date_range]
    run: >
      python:latest python -m analysis.actions.copy
        --output output/date_range/results.csv
        output/date_range/rows.csv
    outputs:
      moderately_sensitive:
        results: output/date_range/results.csv

  query_num_rows_by_month:
    run: >
      sqlrunner:latest
        --output output/num_rows_by_month/rows.csv
        analysis/num_rows_by_month/query.sql
    outputs:
      highly_sensitive:
        rows: output/num_rows_by_month/rows.csv

  round_num_rows_by_month:
    needs: [query_num_rows_by_month]
    run: >
      python:latest python -m analysis.actions.round
        --output output/num_rows_by_month/results.csv
        output/num_rows_by_month/rows.csv
        --column-names num_rows
    outputs:
      moderately_sensitive:
        results: output/num_rows_by_month/results.csv

  query_lead_time:
    run: >
      sqlrunner:latest
        --output output/lead_time/rows.csv
        analysis/lead_time/query.sql
    outputs:
      highly_sensitive:
        rows: output/lead_time/rows.csv

  round_lead_time:
    needs: [query_lead_time]
    run: >
      python:latest python -m analysis.actions.round
        --output output/lead_time/results.csv
        output/lead_time/rows.csv
        --column-names frequency
    outputs:
      moderately_sensitive:
        results: output/lead_time/results.csv

  make_html_reports:
    # --execute
    #   execute notebooks before converting them to HTML reports
    # --no-input
    #   exclude input cells and output prompts from HTML reports
    # --to=html
    #   convert notebooks to HTML reports (not e.g. to PDF reports)
    # --template basic
    #   use the basic (unstyled) template for HTML reports
    # --output-dir=output/reports
    #   write HTML reports to the `output/reports` directory
    # --ExecutePreprocessor.timeout=-1
    #   disable the time to wait (in seconds) for output from executions
    run: >
      python:latest jupyter nbconvert
        --execute
        --no-input
        --to=html
        --template basic
        --output-dir=output/reports
        --ExecutePreprocessor.timeout=-1
        analysis/reports/*.ipynb
    needs:
      - copy_date_range
      - round_num_rows_by_month
      - round_lead_time
    outputs:
      moderately_sensitive:
        reports: output/reports/*.html

Timeline

  • Created:

  • Started:

  • Finished:

  • Runtime: 00:20:40

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

Job information

Status
Succeeded
Backend
TPP
Requested by
Iain Dillingham
Branch
main
Force run dependencies
Yes
Git commit hash
ddabb2c
Requested actions
  • run_all

Code comparison

Compare the code used in this Job Request