Software

Software

Some of the packages and tools I've produced. All prompted by my desire to solve a work-related problem.

runcharter

Plots and analyses multiple run charts at once, finds successive improvement signals, and revises the median when one occurs.

I used to build hundreds of these charts and do the analysis by hand, then update a database so that signals of improvement were reflected and easier to spot. It was a huge process. This is the package I wanted at the time.

{runcharter} has become an indispensable tool in our QI analytics workflow. Thank you for authoring such a robust and usable package!

Robert L. Lobato, MD, August 2022
  • R
  • CRAN
  • Run charts
  • SPC

cusumcharter

CUSUM control charts from simple vectors or dataframes. Returns a single plot, or a small-multiple chart, generating as many plots as you need from one call.

CUSUM charts pick up small sustained shifts that a Shewhart chart won't flag. The control chart versions are hard to build by hand, and the y-axis limits are not intuitive. But, they are incredibly useful as an early warning system for your process reliability.

  • R
  • CRAN
  • CUSUM
  • SPC

spccharter

Multiple SPC or process behaviour charts at once, detecting signals of process change and revising the centre line and limits as it goes.

Still a work in progress, (and currently no time to enhance it) but it is functional and reliable.

  • R
  • SPC
  • Work in progress

Small area population estimates

Population pyramids for the community partnership areas of Highland and Argyll and Bute, drawn in base R, using open data. The associated Shiny app runs in your browser, there is no need for R to already be installed on your machine.

  • R
  • Shiny
  • shinylive
  • WebAssembly
  • Open data

tidy-scotland-census

Makes Scotland's 2022 census open data easier to analyse. Seventy-one CSV files, each with multiple non-data rows at the top, additional rows at the bottom, occasionally multiple header rows to stitch back together, varying column counts, and stray delimiters for good measure.

Reads each file once, keeps nothing temporary on disk, and can optionally write the results out as Parquet.

  • R
  • data.table
  • Arrow
  • Parquet
  • DuckDB
  • Open data

patientcounter

Fast, flexible census tables. Quickly count patients or resources by interval. No SQL, no problem.

How many patients were in our hospital during every hour of the day, over the last 6 months? A potential nightmare question, easily answered. Given a range of check-in and check-out times, the package will provide a breakdown at the frequency you specify, grouped as desired. This package was rewritten as juncture, with fewer dependencies and a name that reflects its potential for use beyond healthcare.

  • R
  • data.table

A database explorer in Shiny

A Shiny dashboard that connects to a remote SQL Server, executes dynamic SQL according to parameters and queries you specify, and visualises the results. Run the same queries against multiple tables, consolidate the results and plot them. Example uses include comparison of records in test and production databases.

  • R
  • SQL Server
  • Shiny
  • Dynamic SQL