AI Attribution¶
A consumer has to be able to ask one question of any resource in a chart -- was this content produced by a machine? -- and get the answer without knowing what type the resource is.
That is what the AIAST security label is for. One rule, spec-wide:
The rule
Any resource whose clinical content was produced, in whole or in part, by a non-human agent
carries the security label
http://terminology.hl7.org/CodeSystem/v3-ObservationValue#AIAST
("Artificial Intelligence asserted") in meta.security, whatever its resource type.
This is a rule for producers, and it is not retroactive. It states what a conformant writer does from here; it says nothing about what is already stored, and nothing backfills it. A consumer reads the label as reliable evidence that a machine was involved, never as evidence that one was not -- see What a consumer must get right.
"meta": {
"security": [
{
"system": "http://terminology.hl7.org/CodeSystem/v3-ObservationValue",
"code": "AIAST",
"display": "Artificial Intelligence asserted"
}
]
}
AIAST is a standard HL7 code, not a Nexus invention, and it is the same label the HL7
AI Transparency on FHIR implementation guide
uses for this purpose. Aligning on it means a consumer that already understands AI labelling from
elsewhere understands this chart.
Why a label and not a lookup¶
The label is a discovery mechanism. It is searchable (_security=AIAST), it survives being
read out of context, and it costs one comparison.
The alternatives all require work proportional to the chart. Detecting a machine producer from
Composition.author, or Task.requester, means resolving or pattern-matching a reference per
resource, and knowing which element carries the producer for that type. Detecting it from
Provenance means a second query per resource, and Provenance is written for AI-mediated and
cross-boundary writes rather than for everything -- so its absence is inconclusive.
The label does not replace either of those. It answers whether; they answer what, from where, and under whose supervision. A renderer that only needs to badge a note as machine-drafted should read the label. An audit that needs the inputs the model saw should read the Provenance.
What "in part" means¶
The label rides on partial authorship, not only on wholly generated content. An AI-scribed note that a clinician then edited and signed still carries it: a machine produced the text that the clinician started from, and a reader deciding how much scrutiny to apply needs to know that.
Attestation is a separate question and is answered separately. A signed note carries attester
naming the human who is medico-legally responsible and AIAST saying a machine drafted it.
Neither displaces the other, and the label never implies that nobody is accountable.
Where it goes¶
On the resource that holds the content. Not on a resource contained inside it: per dom-5 a
contained resource cannot carry meta.security at all, so for a
suggested-resource Task the label rides the
Task, never the suggested payload inside it.
Applied across the profiles that carry machine-produced content today:
| Content | Resource | Carries AIAST |
|---|---|---|
| A proposal a graph or rule put forward | Task | Yes, on the Task |
| A generated summary | Composition | Yes |
| An AI-scribed note, including after a clinician edits and signs it | Composition | Yes |
| A note a clinician typed | Composition | No |
| A computed risk score | RiskAssessment | Yes, where the score was computed by a non-human agent |
| A note or letter converted from a source EMR | Composition | No -- conversion is not authorship |
The last row is the boundary worth stating plainly. Moving existing content between systems does not make it machine-produced; the label is about who or what composed the clinical statement, not about which pipeline carried it.
Who produced it¶
The label says a machine did. Naming which one is the producer reference, and it is
type-specific: Task.requester for a proposal, Composition.author for a note or summary. In both
cases a non-human producer is a logical Device reference -- Reference.identifier under the
nexus-harness-graph NamingSystem, with
Reference.type = "Device", needing no Device resource on the server.
Granularity is the graph or feature -- a name a clinician or an auditor would recognise.
Open: model identity and version
The producer reference names the graph, not the model that ran inside it or the version of that model. Recording model identity and version in the record is not currently required by this specification; per-agent detail stays in the harness that produced the output and is correlated by identifier.
What would decide it: a consumer that must answer "which model version produced this statement" from the record alone -- for example to withdraw or re-review every output of a model version found to be defective, without access to the producing system's own logs. External AI-transparency and clinical-decision-support standards are moving toward requiring exactly that, so this is expected to be revisited rather than to stay open indefinitely.
Operational telemetry -- token spend, latency, cost -- is out of scope in any case. It is not a clinical fact and does not belong in the record.
What a consumer must get right¶
- Filter on the label, not on the producer.
_security=AIASTis the portable question. Any rule that pattern-matches a reference or a display string will break on a producer it has not seen. - Absence of the label is not yet a claim. The intent is that an unlabelled resource asserts
human authorship, but that only holds once every producer applies the rule, and it never holds
for content written before the rule existed. There is no backfill: resources already in a chart
carry whatever they were written with. Until a producer states otherwise, read an absent label
as unknown, not as human -- and fall back to the producer reference or
Provenancewhere the distinction matters.Provenanceis written for AI-mediated and cross-boundary writes rather than for everything, so its absence is inconclusive too. - Do not treat the label as a warning. It is descriptive. Whether machine-produced content is shown, badged, or gated is a product decision, and this specification does not make it.
- Preserve it. A system that reads a labelled resource and writes it onward carries the label with it. Dropping it silently converts machine-produced content into apparently human-authored content, which is the single outcome this pattern exists to prevent.
Related¶
- Suggested-Resource Tasks -- proposals, and why the label rides the Task rather than the payload.
- Generated Summaries -- machine-written Compositions.
- Provenance -- the inputs an agent read, the human who accepted the output, and per-statement citations for generated text.