DiagnosticReport-update
Rad AI Reporting interprets the DiagnosticReport-update event as a set of resources that provide additional context to the open report.
These resources will appear in the Measurements panel in Rad AI Reporting.
Workflow
The DiagnosticReport-update event signals Rad AI Reporting to make related resources accessible to the current report.
If a report isn't currently open, this event is ignored.
Today, Rad AI Reporting only acts on Observation and ImagingSelection resources found in this event.
Each Observation is:
- Added to the Measurements panel.
- Matched against Formula Fields in the current template, if one is selected.
- Inserted directly into the report if tagged for Quick-Paste.
- Persisted, so it remains available in the Measurements panel if the report is closed and later reopened.
Each ImagingSelection is added to the Measurements panel.
It's only persisted if it arrives in the same event as an Observation. See ImagingSelection for details.
Data Format
The event object will look like this.
Please note that any number of FHIR resources may be provided in the entry parameter.
For each FHIR resource, you'll need a separate object in the entry array.
{
"id": "155cc6e5-0e85-41f9-b94a-a409d4769073",
"timestamp": "2024-01-01T00:00:00.000Z",
"event": {
"hub.topic": "test-topic",
"hub.event": "DiagnosticReport-update",
"context": [
{
"key": "updates",
"resource": {
"resourceType": "Bundle",
"type": "transaction",
"entry": [
{
"request": {
"method": "PUT"
},
"resource": {fhir-resource}
}
]
}
}
]
}
}
Using the above format, the event should contain one or more of the following resources.
Observation
FHIR Observation resources can be used to provide measurements or annotations to Rad AI Reporting.
code Field
The code field is used for both Observation.code (for single measurements) and Observation.component.code (for related measurements).
Display
When displayed in Rad AI Reporting, the Observation.code.coding[0].display field is prefixed to the value display.
See Single Measurement for an example of this.
Formula Fields
Observation resources shared via FHIRcast can populate Formula Fields in a Rad AI Reporting template.
See Template Integration for how values are matched, including how related measurements (Observation.component) are handled.
value[x] Field
The value[x] field is used for both Observation.value[x] (for single measurements) and Observation.component.value[x] (for related measurements).
See Template Integration for which value[x] fields Rad AI Reporting supports and how they're displayed.
Single Measurement
If you are providing a single measurement, use the Observation.value[x] field.
Here's a simplified example of a single measurement in an Observation resource.
In this example, the Observation would be displayed as "Circumference: 12.0cm".
{
"resourceType": "Observation",
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "42405-0",
"display": "Circumference"
}
]
},
"valueQuantity": {
"value": 12.0,
"unit": "cm",
"system": "http://unitsofmeasure.org",
"code": "cm"
}
}
Related Measurements
If you are providing related measurements, use the Observation.component field, where each component has an Observation.component.value[x] field.
Here's an simplified example of related measurements in an Observation resource.
In this example, the Observation would be displayed as a list of measurements:
- "Circumference: 12.0cm"
- "Diameter: 6.0cm"
- "Area: 6.75cm²"
{
"resourceType": "Observation",
"component": [
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "42405-0",
"display": "Circumference"
}
]
},
"valueQuantity": {
"value": 12.0,
"unit": "cm",
"system": "http://unitsofmeasure.org",
"code": "cm"
}
},
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "42406-8",
"display": "Diameter"
}
]
},
"valueQuantity": {
"value": 6.0,
"unit": "cm",
"system": "http://unitsofmeasure.org",
"code": "cm"
}
},
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "42798000",
"display": "Area"
}
]
},
"valueQuantity": {
"value": 6.75,
"unit": "cm²",
"system": "http://unitsofmeasure.org",
"code": "cm-2"
}
}
]
}
Quick-Paste
An Observation resource tagged with a quick-paste meta.tag is, in addition to appearing in the Measurements panel, inserted directly into the report at the user's cursor position.
{
"resourceType": "Observation",
"meta": {
"tag": [
{
"code": "quick-paste"
}
]
},
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "42406-8",
"display": "Diameter"
}
]
},
"valueQuantity": {
"value": 8,
"unit": "mm",
"system": "http://unitsofmeasure.org",
"code": "mm"
}
}
Unlike the Measurements panel, the inserted text is just the value (with its unit): the example above inserts "8 mm", not "Diameter: 8mm".
If more than one quick-paste Observation (or related measurement component) arrives at once, each value is inserted as a comma-separated list, e.g. "8 mm, 12 mm".
Quick-paste only fires once per unique Observation.code (or Observation.component.code).
Sending an Observation with a code that's already been quick-pasted updates its value in the Measurements panel, but does not insert it into the report again.
If no report editor is focused when a quick-paste Observation arrives, the value is not inserted.
ImagingSelection
The ImagingSelection resource is not profiled in the FHIRcast Implementation Guide; Rad AI Reporting's implementation references the FHIR R5 definition.
FHIR ImagingSelection resources can be used to specify series and imaging information from the PACS.
When providing measurements, this can be used to specify which series/image(s) the measurements originated from.
An ImagingSelection appears in the Measurements panel as its own row, displayed as "Series 1, Image 2" (or "Series 1, Images 2, 3" for multiple instances).
When it's sent in the same DiagnosticReport-update event as one or more Observation measurements, it's grouped alongside them in the panel.
As with any Measurements panel row, clicking it inserts its displayed text into the report at the user's cursor.
Here's an simplified example of an ImagingSelection resource.
{
"resourceType": "ImagingSelection",
"seriesNumber": 1,
"instance": [
{
"uid": "2.16.840.1.113669.632.21.1650549011.2966824467.36921496302286845",
"number": 2,
"sopClass": {
"system": "urn:ietf:rfc:3986",
"code": "urn:oid:1.2.840.10008.5.1.4.1.1.2"
}
}
]
}
Example Message
For a comprehensive DiagnosticReport-update event, see below.
This event contains:
- An
Observationresource with a single measurement - An
Observationresource with a related measurements - An
ImagingSelectionresource
{
"id": "155cc6e5-0e85-41f9-b94a-a409d4769073",
"timestamp": "2024-01-01T00:00:00.000Z",
"event": {
"hub.topic": "test-topic",
"hub.event": "DiagnosticReport-update",
"context": [
{
"key": "updates",
"resource": {
"resourceType": "Bundle",
"type": "transaction",
"entry": [
{
"request": {
"method": "PUT"
},
"resource": {
"resourceType": "Observation",
"id": "f408aa75-04ca-431e-ac9c-7cb6b33c8a27",
"partOf": {
"reference": "ImagingStudy/43212b29-7d26-4874-87ca-9ae6b18af765"
},
"status": "preliminary",
"category": {
"system": "http://terminology.hl7.org/CodeSystem/observation-category",
"code": "imaging",
"display": "Imaging"
},
"valueQuantity": {
"value": 123.456,
"unit": "mm",
"system": "http://unitsofmeasure.org",
"code": "mm"
},
"started": "2024-01-01T00:00:00.000Z"
}
},
{
"request": {
"method": "PUT"
},
"resource": {
"resourceType": "Observation",
"id": "f408aa75-04ca-431e-ac9c-7cb6b33c8a27",
"partOf": {
"reference": "ImagingStudy/1a84d5b0-2f71-486d-913b-79ae4034666c"
},
"status": "preliminary",
"category": {
"system": "http://terminology.hl7.org/CodeSystem/observation-category",
"code": "imaging",
"display": "Imaging"
},
"code": {
"coding": [
{
"system": "http://app.radai.com",
"code": "Annotation"
}
]
},
"component": [
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "42405-0",
"display": "Circumference"
}
]
},
"valueQuantity": {
"value": 12.0,
"unit": "cm",
"system": "http://unitsofmeasure.org",
"code": "cm"
}
},
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "42406-8",
"display": "Diameter"
}
]
},
"valueQuantity": {
"value": 6.0,
"unit": "cm",
"system": "http://unitsofmeasure.org",
"code": "cm"
}
},
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "42798000",
"display": "Area"
}
]
},
"valueQuantity": {
"value": 6.75,
"unit": "cm²",
"system": "http://unitsofmeasure.org",
"code": "cm-2"
}
}
],
"started": "2024-01-01T00:00:00.000Z"
}
},
{
"request": {
"method": "PUT"
},
"resource": {
"resourceType": "ImagingSelection",
"id": "3287df10-7d51-472f-9d62-7cbb36056df1",
"status": "available",
"subject": {
"type": "Patient",
"identifier": {
"value": "f143a238-7dd0-4f80-bd7e-051480662a7a"
}
},
"studyUid": "2.16.840.1.113669.632.21.1650549011.2966824467.75719194720573882",
"derivedFrom": [
{
"type": "ImagingStudy",
"identifier": {
"system": "urn:dicom:uid",
"value": "urn:oid:1.2.840.113747.20080222.35738358372924306270412538783781"
}
}
],
"seriesUid": "2.16.840.1.113669.632.21.1650549011.2966824467.37498213102206685",
"seriesNumber": 1,
"instance": [
{
"uid": "2.16.840.1.113669.632.21.1650549011.2966824467.36921496302286845",
"number": 2,
"sopClass": {
"system": "urn:ietf:rfc:3986",
"code": "urn:oid:1.2.840.10008.5.1.4.1.1.2"
}
}
]
}
}
]
}
}
]
}
}