Format specification, version 1.0

Registration Decision Record

The Registration Decision Record (RDR) is the document EUDAMate produces with every EUDAMED export. For each device it states how every registration value was derived, who approved or changed it, what was checked, and whether the audit trail behind it verifies. This page is the specification of that document, so a reviewer, an auditor or a notified body can read one without an EUDAMate account.

This page describes format version 1.0 and is kept for records that print that version. The current specification describes the version EUDAMate produces today.

What the record is

One record covers one project. It opens with a project part and continues with one part per device. It is generated from the project's audit trail, the append-only log EUDAMate writes while the data is prepared, together with the device data and the review log as they stand at generation. It describes the values as they stood at that moment. It can be generated again at any time and then shows the state at that time.

The record is delivered as Markdown, as HTML and as an A4 PDF, each rendered from the same generator. The Markdown delivered with an export is made at that moment. The HTML and the PDF are made when they are opened, so each is a new record with its own generation time.

The sample linked above is a synthetic twelve-device project made for this purpose. It shows exceptions, a bulk review, overrides, warnings and removed devices. No customer data is in it.

What the record claims, and what it does not

A decision record is only useful if its limits are stated as plainly as its content. These two lists are the contract. The record itself opens its ISO 13485 section with the sentence: "This record supports the manufacturer's QMS. It does not by itself demonstrate conformity with ISO 13485:2016 or any regulation."

The record states

Which uploaded file and column each value came from, or which rule, reviewer or AI step produced it.
Who approved, changed or left empty a value and when, where the audit trail or the review log names them. For a change, the reason given or the words "none recorded".
What the EMDN classifier proposed, how sure it was, the reasoning it gave and the other codes it listed, where the classifier ran.
Which validation errors were found at upload. At each export, which rule errors and warnings remained, with the rule and field of each, who confirmed exporting anyway and what the EUDAMED XSD format check returned.
Whether the audit trail the record was built from verifies against its stored hashes at the time of generation.

The record never claims

That a value is correct. The record shows how it was decided and who decided it where that is recorded. The manufacturer owns the decision.
Conformity with ISO 13485:2016, the MDR, the IVDR or any regulation. The record supports the manufacturer's own procedures.
That EUDAMED accepted the submission. The record does not cover submission to EUDAMED. Acceptance is recorded by EUDAMED.
Anything about events the audit trail did not record. Where the record knows of a gap, such as changes made before change capture started, it says so instead of filling it.
Integrity of the delivered file itself. The hash chain lives in the database. The PDF carries no digital signature and is not PDF/A.

Structure: the project part

The header names the project and the record. The sections follow in this order. A section marked "when recorded" is printed only when its condition holds. The other sections are always printed. Where one can be empty, it says so in a short sentence.

Header fieldMeaning
ProjectThe project name as the account named it, where one was given.
Project IDThe identifier of the project in EUDAMate.
LegislationEach regime (MDR, IVDR, MDD, AIMDD or IVDD) with its device count, followed by "determined per device" where the regime was set per device. Where no device has a regime recorded, the project's regime or the words "not yet determined".
DevicesHow many device sections the record holds.
GeneratedWhen the record was made, in UTC. Every time in the record is UTC.
Generated byThe account that requested the record.
Record format versionThe version of the specification the record follows. It is printed in the header and repeated in the last line.
Exceptions recorded at export

The rule errors that remained at export and the warnings recorded then, with who confirmed the export anyway where that is recorded and which section of which device holds the detail. A category with nothing in it is not listed. A sentence says so when no rule error and no warning remained or when no export is recorded.

State of the values at the time of this record

EMDN codes whose confidence is below the review threshold, values a reviewer deliberately left empty, and values with no recorded reviewer approval, as they stood when the record was made.

Devices in this record

One row per device: reference number, UDI-DI, name, legislation and the result at the last export. Each device section starts with the same three identifiers.

Change capturewhen recorded

From when the audit trail records every saved change to a device field. Where there are earlier events, what the record can and cannot show for changes made before that time.

Bulk reviewswhen recorded

Each bulk approval: who confirmed it, when it started and ended, how many devices and fields were selected and how many were approved.

Devices removedwhen recorded

Devices taken out of the project after upload, with who removed them and the event number.

Audit trail check

The result of verifying the project's hash chain at the moment the record was made. One of four verdicts, described below.

XSD schema check

Whether the last export passed the EUDAMED XSD format check, per legislation, or that no export has been recorded yet.

Project statement about CMR and endocrine-disrupting substanceswhen recorded

The project-wide declaration about substances, where one was made, with who made it and when.

Project decisions about the language of textswhen recorded

The language chosen for free-text fields, or the decision that it differs per device.

How to read the EMDN classification

A fixed explanation of what the printed confidence means depending on how the code was found, and why a search match is not a probability.

How this record relates to ISO 13485:2016

The clauses the record can support, in "supports" wording only. Quoted in full below.

Structure: each device part

Each device opens with the same identifiers the device index used, so a reader can move between the two without ambiguity:

Reference numberDevice UDI-DINameLegislation, with its sourceReviewed by, with the time of the bulk reviewEvents in this record
1. Data Provenance

The uploaded file, its type, its row count and the upload time.

2. Column Mapping

How many columns were mapped, by which method, and which mandatory fields had no source column at upload.

3. EMDN Classification

The EMDN code and whether a reviewer confirmed or changed it, with the reason for a change. Where the classifier proposed a code, that code with its confidence, the AI reasoning and the other codes it listed with their search match.

3.5 Field-Level Reasoningwhen recorded

One row per field with Field, Value, Status, Source, Confidence and Reasoning. The source column, rule, reviewer action or AI rationale that produced each value. An empty value reads "(empty)". A confidence or reasoning that was not recorded reads "-" or "(none)". Printed when the device data is available.

3.6 Substanceswhen recorded

The declarations about medicinal product substances and the substances recorded for them, with their type and their INN or name. The CMR substances with their category and the endocrine-disrupting substances, each with its name and CAS# or EC#. Whether each entry was complete enough for the export.

3.7 Storage and handling conditions and critical warningswhen recorded

Each storage or handling condition and each critical warning recorded for the device, with its code and description and whether it was complete enough for the export.

4. Human Overrides

Every override with the field, the value before and after where recorded, the reason or the words "none recorded" and who changed it where the trail names them.

4.1 Change historywhen recorded

Each saved change to the device since change capture started, grouped by field and oldest first within each field, each with its position in the audit trail. It also lists review log entries the audit trail did not record and those written before change capture started.

5. Validation History

Each validation run and export check: errors, warnings, the rule and field each one names, and the XSD result.

6. Milestones

The snapshots taken at upload, at export, after review and at final approval, with who took them and when.

6.5 Repeating Groupswhen recorded

Certificate entries and other repeating groups: what was added, removed, declared absent or copied from a sibling device.

7. Full Timeline

Every recorded event for the device plus the project's uploads, column mapping and validation runs, each with its time, its type and a one-line summary.

The audit trail check

Every event EUDAMate records for a project stores a hash over its own content and the hash of the event before it. When a record is generated, the chain is walked from the first event to the last and the verdict is printed in the project part. There are exactly four verdicts.

IntactThe events checked, their count, and the sentence quoted below.
NOT INTACTThe first event the check could not verify, or the finding that the end of the chain does not match its stored pointer or that the pointer could not be read, and the instruction to treat the record as unreliable.
NO AUDIT TRAILThe project has no recorded events, so there is nothing to check and the record is not evidence of how values were decided.
UNKNOWNThe check could not run or was not available. This is not evidence either way. Where the query failed, the record says to generate it again.
The sentence printed with an intact verdictThe application's database refuses changes to audit events and deletes them only when the project's data is deleted under the retention policy. The stored hashes link each event to the one before it. The check found no event that was altered or reordered since it was written, as far as the stored hashes show.

The verdict is bounded by what stored hashes can show. The database refuses updates and deletions of audit events. The one exception is the deletion of a whole project's data under the retention policy. Before that deletion, a seal is written that records the first and last event hashes, the event count, the verification result and a digest over the whole chain, so that the chain's existence and state remain on record after the events themselves are gone.

Where a project runs on chain version 2, the hashed content also includes the event's sequence number, its device identifier and its creation time, and a head pointer lets the check detect a deleted newest event. The record does not state which chain version a project runs on; the verdict wording is the same for both.

Events a device timeline can list, by their printed name

File uploadedColumns mappedValidation at uploadValidation at exportAI EMDN suggestionValue changedSnapshotXSD format check runLegislation determinedCertificate readBulk reviewProject answerLanguage set for texts without oneCertificate sheet importedField changeDevice importedDevice removedBulk review completed

Vocabulary

The record uses a closed set of words for the state of a value, where it came from, why a reviewer changed it and which snapshot was taken. These are the complete lists for version 1.0. A record never uses a word outside them, and a new word is a new version of this specification.

Status of a value

The three readiness words describe a value nobody has looked at yet. Once a reviewer has acted, the status says what they did. A row a reviewer approved never reads "Needs review".

ReadyNeeds reviewNot readyApprovedChanged by reviewerLeft empty by reviewer

Source of a value

Exact column matchColumn match after normalising the nameColumn match by aliasAI column mappingAI suggestionAI inferenceChanged by reviewerEntered by reviewerApproved by reviewerApproved in bulkLeft empty by reviewerDerived by ruleDeclared by the customerNot mappedPendingConflicting sourcesColumn chosen by the device's legislationCopied from a sibling deviceRead from a certificateFrom similar EUDAMED registrationsReprocessing declarationPattern matchLocked

Reason for a change

EUDAMED DI format suggestionData correctionNomenclature ambiguitySource data preferredRegulatory requirementExpert judgmentOtherCorrection by reviewer, no reason givenManual column mappingProject answer appliedProject answer resetProject answer applied againLanguage set for every text without oneFilled in bulk where the source file had no valueCertificate entry addedCertificate entry removedDeclared no certificatesNo-certificates declaration withdrawnCopied from a sibling device

Milestones

Snapshot at uploadSnapshot at exportSnapshot after reviewSnapshot at final approval

How the record relates to ISO 13485:2016

This table is printed in every record, verbatim. The wording is deliberately limited to "supports". The record is evidence the manufacturer may use under its own procedures, never proof of conformity.

ISO 13485:2016 clauseHow this record supports it
4.2.5 Control of recordsSupports your control of records. This record can be kept under your procedure for control of records. Identification, storage, protection, retention time and disposal stay under that procedure.
4.2.3 Medical device fileSupports your medical device file. It can be referenced there as the record of how the EUDAMED registration data for these devices were prepared and reviewed.
7.5.8 IdentificationSupports the documentation of how UDI-related identifiers (Basic UDI-DI, UDI-DI, EUDAMED DI) and their registration data were derived from your source data and reviewed.
4.1.6 Validation of software used in the QMSSupports your validation of EUDAMate as software used in your QMS processes. Validation proportionate to risk is your responsibility. The validation results recorded here can be used as evidence in that validation.

Versioning

Every record prints its format version in the header and in its last line. This page describes version 1.0. A record states the format version of the generator that made it. Generating a record again makes a new record in the version current at that time, which the current specification describes.

The headings, the vocabulary, the ISO rows, the intact-verdict sentence and the version number on this page were checked against the generator in EUDAMate's test suite while version 1.0 was current.

Reading a record as an auditor

1Start with "Exceptions recorded at export" and "State of the values at the time of this record". Together they list the rule errors and warnings at export, EMDN codes below the review threshold, values left empty and values with no recorded approval. They say where the detail is.
2Read "Audit trail check" next. If the verdict is not "Intact", the rest of the record must be read with that in mind.
3For any device, section 3.5 is the field table. Each row has a status, a source and a reasoning cell. An empty value reads "(empty)". A confidence or reasoning that was not recorded reads "-" or "(none)".
4Section 4 lists every value a reviewer overrode, with the reason or the words "none recorded". Section 4.1, where present, lists every recorded change to the device, approvals and other edits included.
5Section 7 is the event list for the device with the project's uploads, column mapping and validation runs. Sections 3 and 3.5 describe the values as they stood when the record was made.

Every EUDAMate export includes one

The record is not an add-on. It is generated from the same audit trail as the export, for every project, in Markdown, HTML and PDF. Download the sample and show it to the person who will audit your technical documentation.