# Representing a business identifier for a procedure (EHDS header.identifier) in openEHR-EHR-ACTION.procedure

**URL:** https://discourse.openehr.org/t/representing-a-business-identifier-for-a-procedure-ehds-header-identifier-in-openehr-ehr-action-procedure/17318
**Category:** Specifications
**Tags:** archetype
**Created:** [21 September 2026 09:09 UTC](https://discourse.openehr.org/t/representing-a-business-identifier-for-a-procedure-ehds-header-identifier-in-openehr-ehr-action-procedure/17318 "2026-09-21T09:09:24Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![jkrafft](https://discourse.openehr.org/user_avatar/discourse.openehr.org/jkrafft/32/6310_2.png) [@jkrafft](https://discourse.openehr.org/u/jkrafft)
#### Post date: [21 September 2026 09:09 UTC](https://discourse.openehr.org/t/representing-a-business-identifier-for-a-procedure-ehds-header-identifier-in-openehr-ehr-action-procedure/17318/1 "2026-09-21T09:09:25Z")

</div>

Hi all,

EHDSProcedure has a business identifier in its header: `EHDSProcedure.header.identifier` (0..\*, “Business identifier for the object, unique within its system. Supporting disambiguation between different contexts (systems/countries).”). In HL7 Europe Base and Core this maps to FHIR `Procedure.identifier`. I’d like to trace this requirement back to openEHR, but can’t find an obvious place for it in the archetype.

The use case: telling apart two registrations of the same procedure for the same patient (e.g. the same procedure performed twice on one day), recognising updates of a registration, and deduplicating when the same procedure reaches a system through more than one source.

Options I’ve looked at:

1. **Requestor order identifier (at0054) / Receiver order identifier (at0056)** in the protocol. These identify the order, not the procedure itself. One order can result in several ACTIONs (planned, scheduled, performed, completed) and in repeated performances, and not every procedure has an order.
2. **`LOCATABLE.uid` on the ACTION.** Allowed, since an ENTRY is an archetype root, but the Common IM states that uid “will usually be empty in most EHR data” and that nodes are referenced by version id + path. Is version uid + path (or a DV\_EHR\_URI) the intended way to identify an entry, also towards external parties?
3. **`FEEDER_AUDIT.originating_system_item_ids`** (List\<DV\_IDENTIFIER\>): “Identifiers used for the item in the originating system, e.g. filler and placer ids.” Semantically this looks closest, and DV\_IDENTIFIER maps well onto a FHIR Identifier. However, FEEDER\_AUDIT seems intended for data converted from non-openEHR systems. Would it also be appropriate for natively created data?
4. **The Extension slot (at0064)** with a CLUSTER holding a DV\_IDENTIFIER. The slot description explicitly mentions “additional metadata to align with FHIR”. Is there an existing CLUSTER archetype for this?

Our questions:

- What is the recommended way to represent a business identifier of a procedure in openEHR? Which of the options above (if any) would you use to map EHDSProcedure.header.identifier?
- Since `header.identifier` is part of the common header in all EHDS logical models, is there a general pattern (or ongoing work) for mapping the EHDS header to openEHR, for example in relation to Xt-EHR or existing openEHR–FHIR mappings?
- If none of these fits, would adding an identifier element to the procedure archetype (e.g. in the protocol) be a reasonable change request?

Thanks in advance!

---

<div class="post-metadata">

### Author: ![ian.mcnicoll](https://discourse.openehr.org/user_avatar/discourse.openehr.org/ian.mcnicoll/32/4430_2.png) [@ian.mcnicoll](https://discourse.openehr.org/u/ian.mcnicoll)
#### Post date: [22 September 2026 15:33 UTC](https://discourse.openehr.org/t/representing-a-business-identifier-for-a-procedure-ehds-header-identifier-in-openehr-ehr-action-procedure/17318/2 "2026-09-22T15:33:46Z")

</div>

Hi Joshua

Very interesting question

The openehr ENTRY.uid attribute is really the equivalent of the FHIR id … a unique internal identifier, whilst the identifier descrbed here is an external cross organisation identifier not allocated internally.

So I would say that at least for now, that feeder\_audit is the correct approach.

---

<div class="post-metadata">

### Author: ![joostholslag](https://discourse.openehr.org/user_avatar/discourse.openehr.org/joostholslag/32/1981_2.png) [@joostholslag](https://discourse.openehr.org/u/joostholslag)
#### Post date: [23 September 2026 05:42 UTC](https://discourse.openehr.org/t/representing-a-business-identifier-for-a-procedure-ehds-header-identifier-in-openehr-ehr-action-procedure/17318/3 "2026-09-23T05:42:44Z")

</div>

Can you share a bit more about your project please?  
Maybe this is of interest to you? An implementation of EPS in openEHR plus FHIR-connect mapping:

> **[GitHub - freshehrteam/EHDS: Repository for artefacts related to EHDS and...](https://github.com/freshehrteam/EHDS)**
>
> Repository for artefacts related to EHDS and openEHR

We’re looking for contributors to share maintenance of this work.  
For those at ehrcon, this afternoon I’m presenting this work.

---

<div class="post-metadata">

### Author: ![jkrafft](https://discourse.openehr.org/user_avatar/discourse.openehr.org/jkrafft/32/6310_2.png) [@jkrafft](https://discourse.openehr.org/u/jkrafft)
#### Post date: [23 September 2026 12:58 UTC](https://discourse.openehr.org/t/representing-a-business-identifier-for-a-procedure-ehds-header-identifier-in-openehr-ehr-action-procedure/17318/4 "2026-09-23T12:58:19Z")

</div>

Thanks Ian, that helps. One nuance I’d like to check: I’d describe the EHDS/FHIR business identifier less as not allocated internally and more as allocated by the source system, but stable and meaningful once the data leaves that system. FHIR defines `Procedure.identifier` as “[Business identifiers assigned to this procedure by the performer or other systems which remain constant as the resource is updated and is propagated from server to server](https://hl7.org/fhir/R4/procedure-definitions.html)”, and EHDS says “[unique within its system](https://www.xt-ehr.eu/fhir/models/en/StructureDefinition-EHDSProcedure.html)”. In our setting it will typically be the number the source EHR assigns to the procedure record and exposes for exchange, rather than an identifier issued by a national or cross-organisational authority. If we specified the latter, hardly any source system could populate it. Does that match how you see it?

On feeder\_audit I’d be happy to follow your advice. What I’m still unsure about is data created natively in an openEHR system. FEEDER\_AUDIT is defined as an “[audit trail from non-openEHR system of original commit](https://specifications.openehr.org/releases/RM/Release-1.0.3/common.html) … or from a conversion gateway which has synthesised this node”, so for a natively created entry there is no originating system to carry the id. Would you still populate feeder\_audit in that case, or is the expectation that version uid + path takes over that role when the data is shared?
