MunitasFeature tourAll walkthroughs

All walkthroughs / Health organisation

Health organisation · Locked patient data

Bring in patient data, locked under a key for each patient

The research programme now needs data about patients: three recordings of consultations and a table of clinic appointments about the same patients. Devi, a data engineer, brings both in so that each patient's identifying data is locked under a key made for that patient. Destroying one patient's key later erases that patient and nobody else.

11Steps
1Person
about 9Minutes to read
Who is involved
Devi
Data engineer in the Health organisation

How to read this page

Words used on this page

Organisation
A company or hospital group that uses Munitas. Each organisation sees only its own data.
Department
A team inside an organisation that owns some of its data, such as Cardiology.
Dataset
A named collection of records, such as a table of patient admissions.
Locked column
A column whose values are scrambled under a key made for each person. Reading them back needs permission. Destroying a person’s key later makes their values unreadable for good, while the sealed table itself never changes.
Locked recording
A recording stored scrambled under a key made for the one patient it is about. Reading it back needs the platform to open it, and destroying the patient’s key later makes it unreadable for good.
Manifest of recordings
A small table, saved as a CSV file, with two columns: the recording and the patient it is about. It is how the platform knows whose key to lock each recording under.
Answer key
A file that holds the correct written text of one recording, used to check how well names were removed from it. It is named after its recording and belongs to the same patient.
Privacy contract
A file that says, column by column, how identifying each column of a table is and what is done to it when the table is sealed, and how to find the person each row is about.
Person code
A label that stands for one person and means nothing on its own. It replaces the number that identified them.
Sealed
Finished and closed for good, so that it can never be edited.
Version
One sealed state of a dataset. Changing the contents means making a new version, never editing an old one.
Sensitivity label
How identifying a column is. none does not identify anybody, quasi is a detail that could help identify a person when combined with others, and phi is protected health information.
Manifest
The list of every file in a package, each with its size and a fingerprint of its contents. The platform signs it, so that changing a file or the list can be noticed.
Small group
A combination of readable columns, such as postcode and age band, shared by only a few people, so that one of them could be singled out even though no column names anybody.
PART ONE

Three recordings arrive locked

The research programme now needs data about people: recordings of consultations, and a table of clinic appointments about the same patients. Everything in it that identifies a person must be erasable later, so that one patient can be removed without losing anybody else's data. Devi, a data engineer in the Cardiology department, brings it in. Every name and number in this story is invented, and the recordings were made with a computer voice.

1
Devi
Devi registers a dataset for the recordings
Munitas console · Bring a dataset in · /datasets/register

A dataset is a named collection of data that Munitas keeps, and it has an owning department from the first moment, so that somebody is answerable for deciding who may read it. Devi names this one consultation-recordings and chooses the Cardiology department. Nothing has been uploaded yet.

Screenshot: Devi registers a dataset for the recordings
The Name box holds consultation-recordings and Owned by says Cardiology. Beside the Register button the page says Nothing is readable yet. This only creates the record and its owner.
2
Devi
The first question: will anybody ever need to be erased from this data?
Munitas console · Bring a dataset in · /datasets/<id>/ingest

The page asks a question that cannot be asked later. To erase one person from locked data, Munitas destroys the key that the person's data was locked under. What was locked for that person can then never be read again, and the rest of the data stays. The key has to be made as the data arrives, which is why the question comes first. The safe default is no.

Screenshot: The first question: will anybody ever need to be erased from this data?
The heading is “Will you ever need to erase one person from this data?” and under it the page says Decide now: locking cannot be added after the upload. The answer “No. Store what I bring as it is.” is selected until somebody changes it.
3
Devi
Devi answers yes and chooses files, one person in each
Munitas console · Bring a dataset in · /datasets/<id>/ingest

Devi answers yes, and chooses to bring in files, each of which is about one person. A manifest says which person each file is about. A manifest is a plain text table with two columns, file and person. The recordings also come with an answer key each, which is the correct written text of a recording, used later to check how well names were removed from it.

Screenshot: Devi answers yes and chooses files, one person in each
The answer “Yes. Lock what identifies a person, with one key for each person.” is selected, and so is Files, one person in each. The text below says that Each file is locked under the key of the person it is about as it uploads.
4
Devi
Every mistake in the files is listed before anything is sent
Munitas console · Bring a dataset in · /datasets/<id>/ingest

Devi first tries a manifest and a set of files that contain mistakes. Munitas checks the whole set and lists every problem at once, so that nothing half correct is uploaded and locked, and so that Devi does not have to find the mistakes one at a time.

Screenshot: Every mistake in the files is listed before anything is sent
Fix these before uploading: lists four problems, one on each line. The first says visit-2.wav names no person in the manifest, and a file is locked to one person. The second says visit-4.wav is not in the manifest, so nobody is named as the person it is about. The button Upload and lock is greyed out.
5
Devi
The corrected manifest and the six files are ready
Munitas console · Bring a dataset in · /datasets/<id>/ingest

Devi corrects the manifest and chooses the three recordings with the answer key for each. The manifest names each patient by patient number, and Devi has told Munitas that this is the kind of identifier it holds. The same kind of number will name the same patients in the table of appointments later, which is how Munitas will know that they are one person.

Screenshot: The corrected manifest and the six files are ready
The box labelled What kind of identifier names a person holds patient number, The manifest holds manifest.csv, and The files lists visit-1.wav, visit-2.wav, visit-3.wav, visit-1.truth.json, visit-2.truth.json, visit-3.truth.json. The list of problems has gone.
6
Devi
Every file is locked under the key of the patient it is about
Munitas console · Bring a dataset in · /datasets/<id>/ingest

Devi presses Upload and lock. Each file is locked as it arrives, under a key that Munitas makes for the patient the file is about. Devi is never given the keys and cannot see them.

Screenshot: Every file is locked under the key of the patient it is about
Each of the six files ends with Locked. The recordings are 8.2 MB, 4.1 MB and 7.3 MB. The button Seal these files has appeared, with the line Closes the upload. Nothing can be added to this version afterwards.
7
Devi
Devi seals the files, and Munitas counts them without naming anybody
Munitas console · Bring a dataset in · /datasets/<id>/ingest

Devi seals the upload. A sealed version is one state of a dataset that is finished and closed for good: nothing can be added to it, and files that arrive later become a new version. The message counts the files and the people, and names nobody.

Screenshot: Devi seals the files, and Munitas counts them without naming anybody
The green box says “Sealed as version 1: 3 files about 3 people.” and Each file is locked under the key of the person it is about. The three answer keys do not count as files of their own, because each belongs to its recording.
8
Devi
Even Devi cannot open the files that Devi brought in
Munitas console · A dataset version · /versions/<id>

The page of the new version lists its files. A locked file is opened only through Munitas, which unlocks it with the key of the person it is about and writes down every opening. Devi is not an approver of the Cardiology department, so Devi has to ask. Asking is shown in the walkthroughs Read five locked rows, with an approver's say, and Open two of the recordings, with an approver's say.

Screenshot: Even Devi cannot open the files that Devi brought in
The panel Files lists visit-1, visit-2 and visit-3, each marked Locked, with the sentence You cannot open these files. No patient number and no name appears on the page.
PART TWO

The same patients arrive in a table

Three of the patients in the recordings also appear in a table of clinic appointments, with other patients. Devi brings the table in the same way, with a table instead of files.

9
Devi
A table with mistakes is refused, with every mistake named
Munitas console · Bring a dataset in · /datasets/<id>/ingest

Devi registered a second dataset, clinic-appointments, owned by Cardiology, answered yes to the erasure question, and chose a table. A table needs two files. The first is a contract, which says, column by column, how identifying each column is and what is done to it, and which column names the person each row is about. The second holds the rows. Devi first sends rows that contain two mistakes.

Screenshot: A table with mistakes is refused, with every mistake named
The page says Nothing was sealed. Fix these first: and lists “A-1001: seen_on is 'not a date', which is not a date written like 2026-03-31.” and A-1012: names nobody, because patient_number (the patient number) is empty.
10
Devi
The corrected table is sealed, and Munitas reports what is left identifiable
Munitas console · Bring a dataset in · /datasets/<id>/ingest

With the mistakes fixed, the table is sealed. Munitas also reports on small groups. A column left readable, such as an age band or a postcode, can point at one person when few people share the same combination. The report does not stop the seal. It gives the approver of the department something to decide about later.

Screenshot: The corrected table is sealed, and Munitas reports what is left identifiable
The green box says “Sealed as version 1: 23 rows about 20 people.” and Their identifying values are locked, each under a key made for that person. A second line adds 12 people sit in a group smaller than 5. It did not stop the seal.
11
Devi
The version page says what was done to every column
Munitas console · A dataset version · /versions/<id>

The page of the new version lists each column of the table, what it is, and what was done to it. A column that names a person is replaced by a person code, which is a label that stands for one person and means nothing on its own. Columns that describe a person are locked under that person's key. Columns that are not identifying stay readable, so that analysis keeps working.

Screenshot: The version page says what was done to every column
patient_name and reason_for_visit say Locked under the person's key, patient_number says Replaced by a person code, and postcode says Readable with Could identify someone in combination with others. Under the table: 23 rows.