Skip to content

Job request: 14199

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

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

By cross-referencing the list of jobs with the pipeline section below, you can infer what security level various outputs were written to. Researchers can never directly view outputs marked as highly_sensitive ; 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

  reindex_distinct_values:
    needs: [query_distinct_values]
    run: >
      python:latest python -m analysis.actions.reindex
        --output output/distinct_values/reindexed_rows.csv
        --date-column-name booked_date
        output/distinct_values/rows.csv
        --group-by-column-names Organisation_ID
    outputs:
      highly_sensitive:
        rows: output/distinct_values/reindexed_rows.csv

  generate_prop_distinct_values_by_organisation_id_measure:
    needs: [reindex_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
    config:
      show_outer_percentiles: true
    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:
      - generate_distinct_values_deciles_charts
      - round_status
      - copy_date_range
      - round_num_rows_by_month
      - round_lead_time
    outputs:
      moderately_sensitive:
        reports: output/reports/*.html

Timeline

  • Created:

  • Started:

  • Finished:

  • Runtime: 00:04:22

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

Job information

Status
Succeeded
Backend
TPP
Requested by
Lisa Hopcroft
Branch
main
Force run dependencies
No
Git commit hash
c4b869d
Requested actions
  • query_distinct_values
  • reindex_distinct_values
  • generate_prop_distinct_values_by_organisation_id_measure
  • generate_distinct_values_deciles_charts
  • make_html_reports

Code comparison

Compare the code used in this Job Request