Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Specify tracing identifiers in AuditEvents #94

Open
qligier opened this issue Feb 6, 2024 · 1 comment · May be fixed by #100
Open

Specify tracing identifiers in AuditEvents #94

qligier opened this issue Feb 6, 2024 · 1 comment · May be fixed by #100
Assignees
Labels
enhancement New feature or request

Comments

@qligier
Copy link

qligier commented Feb 6, 2024

Is your feature request related to a problem? Please describe.
The Swiss national EPR will require the use of the traceparent HTTP header in future REST transactions (and backport it somehow into a SOAP header for the SOAP transactions).
I am looking for a way to integrate that value in the AuditEvents and saw that BALP was already supporting the somewhat similar X-Request-Id header.

Describe the solution you'd like
I am unsure: add a code for traceparent and tracestate in the CodeSystem and ValueSet BasicAuditEntityType, or add a more generic tracing identifier code?

Describe alternatives you've considered
None.

Additional context
Official specifications: https://www.w3.org/TR/trace-context/

The traceparent has a few advantages over X-Request-Id: it is a proper (W3C) specification, it supports flags to negotiate tracing behaviours, and allows for better transaction tracing by providing multiple identifiers: the trace-id (second part in traceparent) is constant for a given transaction, while the parent-id (third part) changes at each HTTP message (request, response). For example:

GET /Patient/$ihe-pix?sourceIdentifier=1 HTTP/1.1
traceparent: 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-00
200 ok
traceparent: 00-0af7651916cd43dd8448eb211c80319c-00f067aa0ba902b7-00

In the case where the server is acting like an initiating gateway, it can also use the same trace-id to link the transactions together.

The Trace Context specification also defines the tracestate header, which is a vendor-specific header: its value is not standardized, but if support is added for traceparent, tracestate should be supported as well.

Related discussions on Zulip:
https://chat.fhir.org/#narrow/stream/179223-ihe/topic/.E2.9C.94.20Specify.20tracing.20identifiers.20in.20AuditEvents.20.28BALP.29
https://chat.fhir.org/#narrow/stream/179247-Security-and.20Privacy/topic/TraceID's

@JohnMoehrke
Copy link
Contributor

@qligier Need to develop CP-ITI-1303 for a CP ballot.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants