Besar Shabani
Work  /  Artichoke

Artichoke

A lab management app for a COVID testing laboratory in Austria, built to move samples from intake to result as fast as possible.

Client
COVID testing laboratory, Austria
My role
UI/UX designer
Type of work
Web app product design
Industry
Healthcare, laboratory testing
Timeline
1.5 months
Company
Mesh WEB
Artichoke Manage Runs screen on a laptop in a laboratory, with sample tubes and a lab technician

In short

  • During COVID, a testing laboratory in Austria had to process a large number of samples every day, and every minute counted.
  • I designed the web app the lab runs on: samples, runs, results, lab setup, tasks, and the logbook.
  • The focus was speed: fewer decisions per sample, and the app asking the right question at the right moment.
49screens and components
1.5months of design work
2user roles: technicians and admins
5lab setup modules
01

Overview

From sample to result, without slowing down.

Artichoke is the internal web app of a COVID testing laboratory in Austria. Lab technicians register samples, group them into PCR runs, and record results. Admins set up the lab behind it: analysis methods, protocols, detection kits, pathogens, and products.

I designed the whole app at Mesh WEB in a month and a half, from sign-in to the component library. All data shown here is placeholder content.

Manage Samples table with orders, labels, sample numbers, pool results, plate and PCR run numbers
02

The challenge

Speed, every day, at volume.

  • Hundreds of samples

    Every sample has to be registered, labelled, assigned to a run, and given a result. Any extra click is repeated hundreds of times a day.

  • Two kinds of user

    Technicians work through samples quickly at the bench. Admins configure what the lab can test. Both use the same app.

  • No room for mistakes

    A sample in the wrong run or with the wrong label means a wrong result. Speed could not come at the cost of accuracy.

  • A dense domain

    Methods, protocols, detection kits, and pathogens all depend on each other, and the interface had to keep that clear.

03

The core flow

One path from intake to result.

Everything in the app serves one path. A sample comes in, gets a label, joins a run, and gets a result. I designed each step to ask only what it needs, and to move straight on to the next one.

  1. Sign inTwo-factor authentication
  2. RegisterCreate the sample
  3. LabelScan or generate and print
  4. RunScan samples into a PCR run
  5. ResultRecord and review
Sign in screen: Hi, Welcome back, with email, password and remember meTwo-factor authentication screen asking for a six-digit code
04

Samples

A new sample in one short form

Creating a sample asks for the type, test type, additional information, and subject. The number, order, responsible person, and status are filled in for the technician.

Key features

  • Save, or save and create the next one
  • Number and order generated automatically
  • Responsible person taken from the account
Create new sample modal with type, test type, additional information and subjectGenerate and print sample label modal with a QR code, sample id, container, code and date

Everything about one sample

A single sample shows its details, every result with images, and a comment thread with the progress of the work on the right.

Key features

  • Details, results, and images on one page
  • Comments and progress beside the record
  • Add an analysis from the header
Single sample page with details, two result blocks with image upload, and a comment thread
05

Asking at the right moment

The hardest part: decisions without slowing down.

The difficult part was not any single screen but the moments in between. A sample may or may not arrive with a label. A run may already be full. A protocol may or may not need its own run label. In a busy lab, these are exactly the places where mistakes and delays happen.

Instead of a long form that covers every case, the app asks one short yes or no question at the moment the decision is needed, with the most common answer as the primary button. The technician never has to remember the rule; the app brings it up.

Dialog: Sample has label? with Yes, scan sample label, or No, generate and print sample labelGenerate and print sample label dialog shown when the sample has no label
Dialog: Run is full, do you want to continue with analysis protocol?Dialog: Does analysis protocol require a run label? Yes print run label, or proceed
06

Runs and results

Runs built by scanning

A new run starts from the analysis protocol, the test type, and the number of samples. Samples are then scanned in one by one, and each line confirms or rejects the scan straight away.

Key features

  • Protocol, test type, and size up front
  • Instant check per scanned sample
  • Runs grouped in the same table as samples
Add new run modal with analysis protocol, test type and number of samplesScan Samples modal with six sample numbers, two confirmed, one rejected and three waiting to scan

Results in one wide table

Results show every sample of a run with its PCR position and the values per target, with Excel and CSV export, column controls, and filters.

Key features

  • Excel and CSV export
  • Hide columns and public column filters
  • Edit a sample from the results
Results table for a run with samples, PCR run position and values per target, with export buttons
07

Lab setup

The rules behind every test.

Admins define what the lab can test: analysis methods, analysis protocols, detection kits, pathogens, and products. Every module follows the same pattern, a table with filters and an add, edit, and delete modal, so learning one means knowing all five.

Analysis protocols table with detection kit, analysis method, pathogen and descriptionNew analysis protocol modal with range, detection kit, analysis method and description
New detection kit modal with sample type, pathogen and test kit typeConfirm delete dialog for a detection kit with Go back and Delete

Deleting always asks first, with Go back as the main button and Delete as the quieter one, because a removed protocol affects every run that uses it.

08

Tasks and logbook

The work around the samples.

Tasks give the team assignments with subtasks, due dates, priorities, and people. The logbook records who did what and when, so every change in the lab can be traced.

Tasks table with date, assignees, description, subtasks and priorityTask detail with subtasks, assignees, due date and priority
Logbook table with date, time, user and the text of each entry
09

Design system

One purple, and components for every state.

A single deep purple marks every primary action and the active state, on light grey surfaces that keep long tables easy to scan. Danger is a soft red, used for delete and cancel. Buttons, fields, dropdowns, and toast messages were built as components with every state, so the five setup modules could be designed quickly and consistently.

Core palette

  • Primary#7A2182
  • Primary soft#F1E6F2
  • Danger soft#FDE2E4
  • Canvas#F9F9F9
Button components in primary, secondary, danger and ghost styles with all states
Text field components with default, active, filled, warning and error states
Toast messages for success, info, warning and fail, with and without actions
10

Outcome

A lab app designed for speed.

Technicians move a sample from intake to result along one path, with the app asking only what each step needs. Admins set up the lab through five modules that all work the same way, and the component library keeps the whole app consistent.

What I delivered

  • Sign in, registration, password reset, and two-factor authentication
  • Sample, run, and results flows
  • Lab setup: methods, protocols, kits, pathogens, products
  • Tasks, logbook, and profile
  • Component library

Project

  • Client: COVID testing laboratory, Austria
  • Timeline: 1.5 months
  • Company: Mesh WEB
  • 49 screens and components