# From lab idea to vaccine in your arm

> A process map exported from forks.world (https://forks.world). Author: Brian. Source: https://forks.world/p/cmv0ie1q40018jw06ksu339x2
> It describes who does what, in what order, and with which technology. Read the plain-language sections first; the JSON at the end is the exact, complete data.

## Summary

- 36 steps across 4 layers
- Persona: Researchers, Volunteers, Regulators, Clinics and you
- Technology / systems: The factory

## How to read this file

- A process is made of **layers**. The main layer is the top level; any step of kind `subprocess` opens a detail layer with its own lanes and steps.
- **Lanes** are either persona (people/roles) or technology (systems). Each step belongs to one lane; `using` lists tools a person uses for that step.
- Step kinds: `start`, `task`, `decision` (its arrows carry the answer as a label), `subprocess`, `end`.

## From lab idea to vaccine in your arm

Lanes:
- Researchers: person / role (id `lab`)
- Volunteers: person / role (id `vol`)
- Regulators: person / role (id `reg`)
- The factory: technology / system (id `fac`)
- Clinics and you: person / role (id `clinic`)

Steps, in the order they run:

1. **Identify a target on the germ (an antigen)** [start; Researchers; id `v1`]
   - then Design candidate vaccines
2. **Design candidate vaccines** [task; Researchers; id `v2`]
   - then Test in cells and animals
3. **Test in cells and animals** [task; Researchers; id `v3`]
   - then Safe, and triggers an immune response?
4. **Safe, and triggers an immune response?** [decision; Researchers; id `v4`]
   - if "Yes" go to Phase 1: a few dozen volunteers. Is it safe?; if "No — redesign" go to Design candidate vaccines
5. **Phase 1: a few dozen volunteers. Is it safe?** [task; Volunteers; id `v5`]
   - then Safe at this dose?
6. **Safe at this dose?** [decision; Researchers; id `v6`]
   - if "Yes" go to Phase 2: hundreds of volunteers. Right dose?; if "No" go to Stop the program and publish what was learned
7. **Phase 2: hundreds of volunteers. Right dose?** [task; Volunteers; id `v7`]
   - then Strong immune response?
8. **Strong immune response?** [decision; Researchers; id `v8`]
   - if "Yes" go to Phase 3: tens of thousands, half get a placebo; if "No" go to Adjust the dose or ingredients
9. **Phase 3: tens of thousands, half get a placebo** [subprocess; Volunteers; id `v9`], opens the detail layer "Phase 3: the big blind trial"
   - then Regulators review every piece of data
10. **Regulators review every piece of data** [subprocess; Regulators; id `v10`], opens the detail layer "Regulatory review"
   - then Benefits clearly outweigh risks?
11. **Benefits clearly outweigh risks?** [decision; Regulators; id `v11`]
   - if "Yes" go to Manufacture at scale with strict quality checks; if "No" go to Provide more data
12. **Manufacture at scale with strict quality checks** [subprocess; The factory; id `v12`], opens the detail layer "Making it at scale"
   - then Distribute it cold to clinics
13. **Distribute it cold to clinics** [task; Clinics and you; id `v13`]
   - then You roll up your sleeve
14. **You roll up your sleeve** [task; Clinics and you; id `v14`]
   - then Safety monitoring continues for years
15. **Safety monitoring continues for years** [end; Clinics and you; id `v15`]
16. **Provide more data** [task; Researchers; id `v10a`]
   - then Regulators review every piece of data
17. **Adjust the dose or ingredients** [task; Researchers; id `v8a`]
   - then Phase 2: hundreds of volunteers. Right dose?
18. **Stop the program and publish what was learned** [end; Researchers; id `v6a`]

```mermaid
flowchart LR
  subgraph l_lab["Researchers"]
    n_v1(["Identify a target on the germ (an antigen)"])
    n_v2["Design candidate vaccines"]
    n_v3["Test in cells and animals"]
    n_v4{"Safe, and triggers an immune response?"}
    n_v6{"Safe at this dose?"}
    n_v6a(["Stop the program and publish what was learned"])
    n_v8{"Strong immune response?"}
    n_v8a["Adjust the dose or ingredients"]
    n_v10a["Provide more data"]
  end
  subgraph l_vol["Volunteers"]
    n_v5["Phase 1: a few dozen volunteers. Is it safe?"]
    n_v7["Phase 2: hundreds of volunteers. Right dose?"]
    n_v9[["Phase 3: tens of thousands, half get a placebo"]]
  end
  subgraph l_reg["Regulators"]
    n_v10[["Regulators review every piece of data"]]
    n_v11{"Benefits clearly outweigh risks?"}
  end
  subgraph l_fac["The factory"]
    n_v12[["Manufacture at scale with strict quality checks"]]
  end
  subgraph l_clinic["Clinics and you"]
    n_v13["Distribute it cold to clinics"]
    n_v14["You roll up your sleeve"]
    n_v15(["Safety monitoring continues for years"])
  end
  n_v1 --> n_v2
  n_v2 --> n_v3
  n_v3 --> n_v4
  n_v4 -->|"Yes"| n_v5
  n_v4 -->|"No — redesign"| n_v2
  n_v5 --> n_v6
  n_v6 -->|"Yes"| n_v7
  n_v6 -->|"No"| n_v6a
  n_v7 --> n_v8
  n_v8 -->|"Yes"| n_v9
  n_v8 -->|"No"| n_v8a
  n_v8a --> n_v7
  n_v9 --> n_v10
  n_v10 --> n_v11
  n_v11 -->|"Yes"| n_v12
  n_v11 -->|"No"| n_v10a
  n_v10a --> n_v10
  n_v12 --> n_v13
  n_v13 --> n_v14
  n_v14 --> n_v15
```

### Making it at scale (detail of step "Manufacture at scale with strict quality checks")

Lanes:
- The factory: technology / system (id `fac`)

Steps, in the order they run:

1. **Grow the active ingredient in giant bioreactors** [start; The factory; id `k1`]
   - then Purify it
2. **Purify it** [task; The factory; id `k2`]
   - then Does the batch pass every quality spec?
3. **Does the batch pass every quality spec?** [decision; The factory; id `k3`]
   - if "Yes" go to Fill vials, label and seal; if "No" go to Discard the batch and find the cause
4. **Fill vials, label and seal** [task; The factory; id `k4`]
   - then Test again before release
5. **Test again before release** [end; The factory; id `k5`]
6. **Discard the batch and find the cause** [task; The factory; id `k2a`]
   - then Grow the active ingredient in giant bioreactors

```mermaid
flowchart LR
  subgraph l_fac["The factory"]
    n_k1(["Grow the active ingredient in giant bioreactors"])
    n_k2["Purify it"]
    n_k3{"Does the batch pass every quality spec?"}
    n_k2a["Discard the batch and find the cause"]
    n_k4["Fill vials, label and seal"]
    n_k5(["Test again before release"])
  end
  n_k1 --> n_k2
  n_k2 --> n_k3
  n_k3 -->|"Yes"| n_k4
  n_k3 -->|"No"| n_k2a
  n_k2a --> n_k1
  n_k4 --> n_k5
```

### Phase 3: the big blind trial (detail of step "Phase 3: tens of thousands, half get a placebo")

Lanes:
- Volunteers: person / role (id `vol`)
- Researchers: person / role (id `lab`)

Steps, in the order they run:

1. **Volunteers are randomly given the vaccine or a placebo** [start; Volunteers; id `a1`]
   - then Neither they nor the doctors know which
2. **Neither they nor the doctors know which** [task; Volunteers; id `a2`]
   - then Wait for natural infections to happen
3. **Wait for natural infections to happen** [task; Researchers; id `a3`]
   - then Enough cases to compare the groups?
4. **Enough cases to compare the groups?** [decision; Researchers; id `a4`]
   - if "Yes" go to Unblind: far fewer cases in the vaccine group?; if "No — keep waiting" go to Wait for natural infections to happen
5. **Unblind: far fewer cases in the vaccine group?** [decision; Researchers; id `a5`]
   - if "Yes" go to Efficacy shown; if "No" go to It doesn't work well enough: back to the drawing board
6. **Efficacy shown** [end; Researchers; id `a6`]
7. **It doesn't work well enough: back to the drawing board** [end; Researchers; id `a7`]

```mermaid
flowchart LR
  subgraph l_vol["Volunteers"]
    n_a1(["Volunteers are randomly given the vaccine or a placebo"])
    n_a2["Neither they nor the doctors know which"]
  end
  subgraph l_lab["Researchers"]
    n_a3["Wait for natural infections to happen"]
    n_a4{"Enough cases to compare the groups?"}
    n_a5{"Unblind: far fewer cases in the vaccine group?"}
    n_a6(["Efficacy shown"])
    n_a7(["It doesn't work well enough: back to the drawing board"])
  end
  n_a1 --> n_a2
  n_a2 --> n_a3
  n_a3 --> n_a4
  n_a4 -->|"Yes"| n_a5
  n_a4 -->|"No — keep waiting"| n_a3
  n_a5 -->|"Yes"| n_a6
  n_a5 -->|"No"| n_a7
```

### Regulatory review (detail of step "Regulators review every piece of data")

Lanes:
- Regulators: person / role (id `reg`)
- Researchers: person / role (id `lab`)

Steps, in the order they run:

1. **An independent panel reads the trial data** [start; Regulators; id `r1`]
   - then Inspectors visit the factory and check records
2. **Inspectors visit the factory and check records** [task; Regulators; id `r2`]
   - then Anything wrong?
3. **Anything wrong?** [decision; Regulators; id `r3`]
   - if "Everything checks out" go to Approve, with conditions for ongoing monitoring; if "Problems found" go to Fix the problems and resubmit
4. **Approve, with conditions for ongoing monitoring** [end; Regulators; id `r4`]
5. **Fix the problems and resubmit** [task; Researchers; id `r5`]
   - then An independent panel reads the trial data

```mermaid
flowchart LR
  subgraph l_reg["Regulators"]
    n_r1(["An independent panel reads the trial data"])
    n_r2["Inspectors visit the factory and check records"]
    n_r3{"Anything wrong?"}
    n_r4(["Approve, with conditions for ongoing monitoring"])
  end
  subgraph l_lab["Researchers"]
    n_r5["Fix the problems and resubmit"]
  end
  n_r1 --> n_r2
  n_r2 --> n_r3
  n_r3 -->|"Everything checks out"| n_r4
  n_r3 -->|"Problems found"| n_r5
  n_r5 --> n_r1
```

## Full data (JSON)

```json
{
  "title": "From lab idea to vaccine in your arm",
  "maps": {
    "m_make": {
      "id": "m_make",
      "lanes": [
        {
          "id": "fac",
          "name": "The factory",
          "type": "system"
        }
      ],
      "steps": [
        {
          "id": "k1",
          "kind": "start",
          "lane": "fac",
          "next": [
            {
              "to": "k2"
            }
          ],
          "uses": [],
          "label": "Grow the active ingredient in giant bioreactors"
        },
        {
          "id": "k2",
          "kind": "task",
          "lane": "fac",
          "next": [
            {
              "to": "k3"
            }
          ],
          "uses": [],
          "label": "Purify it"
        },
        {
          "id": "k3",
          "kind": "decision",
          "lane": "fac",
          "next": [
            {
              "to": "k4",
              "label": "Yes"
            },
            {
              "to": "k2a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Does the batch pass every quality spec?"
        },
        {
          "id": "k2a",
          "kind": "task",
          "lane": "fac",
          "next": [
            {
              "to": "k1"
            }
          ],
          "uses": [],
          "label": "Discard the batch and find the cause"
        },
        {
          "id": "k4",
          "kind": "task",
          "lane": "fac",
          "next": [
            {
              "to": "k5"
            }
          ],
          "uses": [],
          "label": "Fill vials, label and seal"
        },
        {
          "id": "k5",
          "kind": "end",
          "lane": "fac",
          "next": [],
          "uses": [],
          "label": "Test again before release"
        }
      ],
      "title": "Making it at scale",
      "parent": {
        "map": "m_root",
        "step": "v12"
      }
    },
    "m_root": {
      "id": "m_root",
      "lanes": [
        {
          "id": "lab",
          "name": "Researchers",
          "type": "person"
        },
        {
          "id": "vol",
          "name": "Volunteers",
          "type": "person"
        },
        {
          "id": "reg",
          "name": "Regulators",
          "type": "person"
        },
        {
          "id": "fac",
          "name": "The factory",
          "type": "system"
        },
        {
          "id": "clinic",
          "name": "Clinics and you",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "v1",
          "kind": "start",
          "lane": "lab",
          "next": [
            {
              "to": "v2"
            }
          ],
          "uses": [],
          "label": "Identify a target on the germ (an antigen)"
        },
        {
          "id": "v2",
          "kind": "task",
          "lane": "lab",
          "next": [
            {
              "to": "v3"
            }
          ],
          "uses": [],
          "label": "Design candidate vaccines"
        },
        {
          "id": "v3",
          "kind": "task",
          "lane": "lab",
          "next": [
            {
              "to": "v4"
            }
          ],
          "uses": [],
          "label": "Test in cells and animals"
        },
        {
          "id": "v4",
          "kind": "decision",
          "lane": "lab",
          "next": [
            {
              "to": "v5",
              "label": "Yes"
            },
            {
              "to": "v2",
              "label": "No — redesign"
            }
          ],
          "uses": [],
          "label": "Safe, and triggers an immune response?"
        },
        {
          "id": "v5",
          "kind": "task",
          "lane": "vol",
          "next": [
            {
              "to": "v6"
            }
          ],
          "uses": [],
          "label": "Phase 1: a few dozen volunteers. Is it safe?"
        },
        {
          "id": "v6",
          "kind": "decision",
          "lane": "lab",
          "next": [
            {
              "to": "v7",
              "label": "Yes"
            },
            {
              "to": "v6a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Safe at this dose?"
        },
        {
          "id": "v6a",
          "kind": "end",
          "lane": "lab",
          "next": [],
          "uses": [],
          "label": "Stop the program and publish what was learned"
        },
        {
          "id": "v7",
          "kind": "task",
          "lane": "vol",
          "next": [
            {
              "to": "v8"
            }
          ],
          "uses": [],
          "label": "Phase 2: hundreds of volunteers. Right dose?"
        },
        {
          "id": "v8",
          "kind": "decision",
          "lane": "lab",
          "next": [
            {
              "to": "v9",
              "label": "Yes"
            },
            {
              "to": "v8a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Strong immune response?"
        },
        {
          "id": "v8a",
          "kind": "task",
          "lane": "lab",
          "next": [
            {
              "to": "v7"
            }
          ],
          "uses": [],
          "label": "Adjust the dose or ingredients"
        },
        {
          "id": "v9",
          "kind": "subprocess",
          "lane": "vol",
          "next": [
            {
              "to": "v10"
            }
          ],
          "uses": [],
          "child": "m_phase3",
          "label": "Phase 3: tens of thousands, half get a placebo"
        },
        {
          "id": "v10",
          "kind": "subprocess",
          "lane": "reg",
          "next": [
            {
              "to": "v11"
            }
          ],
          "uses": [],
          "child": "m_review",
          "label": "Regulators review every piece of data"
        },
        {
          "id": "v11",
          "kind": "decision",
          "lane": "reg",
          "next": [
            {
              "to": "v12",
              "label": "Yes"
            },
            {
              "to": "v10a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Benefits clearly outweigh risks?"
        },
        {
          "id": "v10a",
          "kind": "task",
          "lane": "lab",
          "next": [
            {
              "to": "v10"
            }
          ],
          "uses": [],
          "label": "Provide more data"
        },
        {
          "id": "v12",
          "kind": "subprocess",
          "lane": "fac",
          "next": [
            {
              "to": "v13"
            }
          ],
          "uses": [],
          "child": "m_make",
          "label": "Manufacture at scale with strict quality checks"
        },
        {
          "id": "v13",
          "kind": "task",
          "lane": "clinic",
          "next": [
            {
              "to": "v14"
            }
          ],
          "uses": [],
          "label": "Distribute it cold to clinics"
        },
        {
          "id": "v14",
          "kind": "task",
          "lane": "clinic",
          "next": [
            {
              "to": "v15"
            }
          ],
          "uses": [],
          "label": "You roll up your sleeve"
        },
        {
          "id": "v15",
          "kind": "end",
          "lane": "clinic",
          "next": [],
          "uses": [],
          "label": "Safety monitoring continues for years"
        }
      ],
      "title": "From lab idea to vaccine in your arm",
      "parent": null
    },
    "m_phase3": {
      "id": "m_phase3",
      "lanes": [
        {
          "id": "vol",
          "name": "Volunteers",
          "type": "person"
        },
        {
          "id": "lab",
          "name": "Researchers",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "a1",
          "kind": "start",
          "lane": "vol",
          "next": [
            {
              "to": "a2"
            }
          ],
          "uses": [],
          "label": "Volunteers are randomly given the vaccine or a placebo"
        },
        {
          "id": "a2",
          "kind": "task",
          "lane": "vol",
          "next": [
            {
              "to": "a3"
            }
          ],
          "uses": [],
          "label": "Neither they nor the doctors know which"
        },
        {
          "id": "a3",
          "kind": "task",
          "lane": "lab",
          "next": [
            {
              "to": "a4"
            }
          ],
          "uses": [],
          "label": "Wait for natural infections to happen"
        },
        {
          "id": "a4",
          "kind": "decision",
          "lane": "lab",
          "next": [
            {
              "to": "a5",
              "label": "Yes"
            },
            {
              "to": "a3",
              "label": "No — keep waiting"
            }
          ],
          "uses": [],
          "label": "Enough cases to compare the groups?"
        },
        {
          "id": "a5",
          "kind": "decision",
          "lane": "lab",
          "next": [
            {
              "to": "a6",
              "label": "Yes"
            },
            {
              "to": "a7",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Unblind: far fewer cases in the vaccine group?"
        },
        {
          "id": "a6",
          "kind": "end",
          "lane": "lab",
          "next": [],
          "uses": [],
          "label": "Efficacy shown"
        },
        {
          "id": "a7",
          "kind": "end",
          "lane": "lab",
          "next": [],
          "uses": [],
          "label": "It doesn't work well enough: back to the drawing board"
        }
      ],
      "title": "Phase 3: the big blind trial",
      "parent": {
        "map": "m_root",
        "step": "v9"
      }
    },
    "m_review": {
      "id": "m_review",
      "lanes": [
        {
          "id": "reg",
          "name": "Regulators",
          "type": "person"
        },
        {
          "id": "lab",
          "name": "Researchers",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "r1",
          "kind": "start",
          "lane": "reg",
          "next": [
            {
              "to": "r2"
            }
          ],
          "uses": [],
          "label": "An independent panel reads the trial data"
        },
        {
          "id": "r2",
          "kind": "task",
          "lane": "reg",
          "next": [
            {
              "to": "r3"
            }
          ],
          "uses": [],
          "label": "Inspectors visit the factory and check records"
        },
        {
          "id": "r3",
          "kind": "decision",
          "lane": "reg",
          "next": [
            {
              "to": "r4",
              "label": "Everything checks out"
            },
            {
              "to": "r5",
              "label": "Problems found"
            }
          ],
          "uses": [],
          "label": "Anything wrong?"
        },
        {
          "id": "r5",
          "kind": "task",
          "lane": "lab",
          "next": [
            {
              "to": "r1"
            }
          ],
          "uses": [],
          "label": "Fix the problems and resubmit"
        },
        {
          "id": "r4",
          "kind": "end",
          "lane": "reg",
          "next": [],
          "uses": [],
          "label": "Approve, with conditions for ongoing monitoring"
        }
      ],
      "title": "Regulatory review",
      "parent": {
        "map": "m_root",
        "step": "v10"
      }
    }
  }
}
```
