VIEW APIs
Authorization
Every HTTP request sent to any of the following API endpoints must include the following header:
Authorization: {APIkey}
The VIEW will reject any request that does not contain the Authorization header or contains a wrong API Key value. The returned response status in these cases will be HTTP 401 (Unauthorized).
The value of the API key is set in the ServletAuthorizationHeader field of the VIEW’s configuration page.
Access Token API (GET)
The API provides the secure token needed to open one or more studies or the history of a patient in a single monitor.
URL |
| ||
Method | GET | ||
Request headers |
| API Key | Required |
Query parameters | See the VIEW APIs | Access-Token-API-query-parameters section. | ||
Response body | The token to be used as a URL parameter when opening VIEW. | ||
Access Token API (GET) query parameters
Parameter | Type | Multiplicity | Description | Example |
|---|---|---|---|---|
| Required | 1 | It is used for auditing purposes and may not be present in the VIEW database. If there are personalized Hanging Protocols associated with the provided username, VIEW will load them. |
|
| Required | 1 | It is used to enable specific buttons and functionalities and must be present in the VIEW database. If there are no personalized Hanging Protocols associated with the provided username, VIEW will load those associated with the provided role. If there are no personalized Hanging Protocols associated with the provided role, VIEW will load global Hanging Protocols. |
|
| Conditionally required | 1-n | Unique identifier of the study(ies) to be opened in VIEW (Study Instance UID DICOM attribute). It is required if If a study does not exist, VIEW will display a “study not found” message. |
|
| Conditionally required | 1 | Number that identifies the order for the study(ies) to be opened in VIEW (Accession Number DICOM attribute). It is required if If multiple studies share the same Accession Number, they will be opened regardless of the patient to whom they belong. |
|
| Conditionally required | 1 | Identifier for the patient (Patient ID DICOM Attribute) of whose history is to be displayed in VIEW. The choice of the study to be opened is left to the user. Required if If provided in conjunction with |
|
| Optional | 1-n | Study Instance UID of the study(ies) to be displayed in the patient history. |
|
| Optional | 1-n | Study Instance UID of the study(ies) to be preloaded in memory by VIEW. |
|
| Optional | 1 | It is used to specify the instance of VIEW to be used. Requests with the same sticky value will be handled by the same server. It requires ad-hoc configuration on the NGINX Reverse Proxy or Ingress and can only be utilized when there are multiple instances of VIEW (e.g., Kubernetes cluster). |
|
| Optional | 1 | If set to Default: |
|
| Optional | 1 | If set to Default: |
|
| Optional | 1 | If set to Default: |
|
| Optional | 1 | Specific for Digital Pathology If set to true, all graphic annotations (Layers) present in the opened case will be hidden. Default: |
|
| Optional | 1 | Specific for Digital Pathology If set to If set to Default: |
|
| Optional | 1 | Specific for Digital Pathology The identifier for the digital slide to be displayed (i.e., slide barcode). It must be used in conjunction with the |
|
Access Token API (POST)
The API provides the secure token needed to open files stored on different types of archive systems, such as:
open a specific folder
open a list of files stored in a local filesystem
open files stored on cloud storage systems (GCP buckets or Amazon S3)
URL |
| ||
Method | POST | ||
Request headers |
| API Key | Required |
Request body | See the VIEW APIs | Access-Token-API-(POST)-Request-Body section | ||
Response body | The token to be used as a URL parameter when opening VIEW | ||
Access Token API (POST) Request Body
The request body must be a valid JSON message.
Required parameters:
usernameroleone among
studiesobject andfolderobjectan optional
OpeningParametersobject
Working with paths
In the following examples, path and file elements that indicate where to read images are locations from the “API consumer” perspective. Since the system runs in a Docker environment with mapped volumes, paths inside a running container may differ from those in the host.
To handle this, configure the system with a mapping table (NgvStorageMapping table on database). This table should include one or more host locations and their corresponding container locations.
If the host path /one/storage is mounted as a volume at /storage-one, and /two/storage is mounted at /storage-two, the NgvStorageMappings should be configured as follows:
Path (host PoV) | Replacement (container PoV) |
|---|---|
|
|
|
|
Please note that the system will not read a location that is not included in the mapping table. If a host folder is mounted with the same path inside the container, the table should be configured as follows:
Path (host PoV) | Replacement (container PoV) |
|---|---|
/storage | /storage |
Request Body examples
Open DICOM files in a folder
Open DICOM files found in the specified folder. Patient and study data will be extracted from the DICOM attributes.
{
"username": "john",
"role": "diagnostic",
"folder": {
"path": "/storage/studies/study1"
}
}
Open DICOM and non-DICOM files
Open a set of DICOM and non-DICOM files. Supported non-DICOM formats include JPEG, PNG, BITMAP, MPEG-4, and PDF. Patient and study data provided in the JSON will have priority over DICOM attributes.
{
"username": "john",
"role": "diagnostic",
"studies": [
{
"patientID": "PID-123",
"patientName": "DOE^JANE",
"patientBirthDate": "19821108",
"patientSex": "F",
"studyInstanceUID": "1.2.826.123.1",
"accessionNumber": "AN-123",
"studyDate": "20231205",
"studyTime": "123000.000",
"studyDescription": "File-system images",
"series": [
{
"seriesInstanceUID": "1.2.826.123.1.1",
"seriesDescription": "DICOM",
"instances": [
{
"sopInstanceUID": "1.2.826.123.1.1.1",
"file": "/storage/images/image-1.dcm",
"mimeType": "application/dicom"
}
]
},
{
"seriesInstanceUID": "1.2.826.123.1.2",
"seriesDescription": "JPEG",
"instances": [
{
"sopInstanceUID": "1.2.826.123.1.2.1",
"file": "/storage/images/image-1.jpg",
"mimeType": "image/jpeg"
}
]
},
{
"seriesInstanceUID": "1.2.826.123.1.3",
"seriesDescription": "PNG",
"instances": [
{
"sopInstanceUID": "1.2.826.123.1.3.1",
"file": "/storage/images/image-1.png",
"mimeType": "image/png"
}
]
},
{
"seriesInstanceUID": "1.2.826.123.1.4",
"seriesDescription": "BITMAP",
"instances": [
{
"sopInstanceUID": "1.2.826.123.1.4.1",
"file": "/storage/images/image-1.bmp",
"mimeType": "image/bmp"
}
]
},
{
"seriesInstanceUID": "1.2.826.123.1.5",
"seriesDescription": "MPEG4",
"modality": "XC",
"instances": [
{
"sopInstanceUID": "1.2.826.123.1.5.1",
"file": "/storage/images/video-1.mp4",
"mimeType": "video/mp4"
}
]
},
{
"seriesInstanceUID": "1.2.826.132.1.6",
"seriesDescription": "PDF",
"modality": "SR",
"instances": [
{
"sopInstanceUID": "1.2.826.123.1.6.1",
"file": "/storage/images/report-1.pdf",
"mimeType": "application/pdf"
}
]
}
]
}
]
}
Open DICOM WSIs
Open a set of digital slides in DICOM file format. The DICOM standard for Whole Slide Imaging (WSI) stores a digital slide by organizing it into multiple instances within a series. Specify one instance of the series to open the associated digital slide. Patient and study data provided in the JSON will have priority over DICOM attributes.
{
"username": "john",
"role": "diagnostic",
"studies": [
{
"patientID": "PID-123",
"patientName": "DOE^JANE",
"studyInstanceUID": "1.2.826.123.1",
"accessionNumber": "C231606-1426",
"series": [
{
"seriesInstanceUID": "1.2.826.123.1.1",
"modality": "SM",
"instances": [
{
"sopInstanceUID": "1.2.826.123.1.1.1",
"file": "/storage/dicom/C231606-1426-A-1-A.dcm",
"mimeType": "application/dicom",
"containerIdentifier": "C231606-1426-A-1-1",
"specimenIdentifier": "C231606-1426-A",
"specimenAlias": "A",
"specimenProcedure": "Right lower eyelid",
"specimenBodySite": "Bottom of the eye",
"blockIdentifier": "C231606-1426-A-1",
"blockAlias": "A-1",
"blockProcedure":"Margin",
"slideIdentifier": "C231606-1426-A-1-A",
"slideAlias": "A-1-A",
"slideStainCode": "H&E"
}
]
}
]
}
]
}
Open non-DICOM WSIs
Open a set of digital slides in non-DICOM file format. Supported file formats are NDPI, MRXS, SVS, and TIFF.
{
"username": "john",
"role": "diagnostic",
"studies": [
{
"patientID": "PID-123",
"patientName": "DOE^JANE",
"studyInstanceUID": "1.2.826.123.1",
"accessionNumber": "C231606-1426",
"series": [
{
"seriesInstanceUID": "1.2.826.123.1.1",
"modality": "SM",
"instances": [
{
"sopInstanceUID": "1.2.826.123.1.1.1",
"file": "/storage/ndpi/C231606-1426-A-1-A.ndpi",
"mimeType": "application/octet-stream",
"containerIdentifier": "C231606-1426-A-1-1",
"specimenIdentifier": "C231606-1426-A",
"specimenAlias": "A",
"specimenProcedure": "Right lower eyelid",
"specimenBodySite": "Bottom of the eye",
"blockIdentifier": "C231606-1426-A-1",
"blockAlias": "A-1",
"blockProcedure":"Margin",
"slideIdentifier": "C231606-1426-A-1-A",
"slideAlias": "A-1-A",
"slideStainCode": "H&E"
}
]
}
]
}
]
}
Open Cloud files (AWS S3)
Open a list of specific files stored on S3.
{
"username": "john",
"role": "diagnostic",
"studies": [
{
"storage": {
"name": "zeeromed-imaging-test",
"type": "aws-bucket",
"region": "eu-central-1",
"accessKey": "...",
"secretAccessKey": "..."
},
"patientID": "PID-123",
"patientName": "DOE^JANE",
"patientBirthDate": "19821108",
"patientSex": "F",
"studyInstanceUID": "1.2.826.123.1",
"accessionNumber": "AN-123",
"studyDate": "20231205",
"studyTime": "123000.000",
"studyDescription": "AWS-bucket images",
"series": [
{
"seriesInstanceUID": "1.2.826.123.1.1.1",
"seriesDescription": "JPEG",
"instances": [
{
"sopInstanceUID": "1.2.826.123.1.1.1",
"file": "images/image-1.jpg",
"mimeType": "image/jpeg"
}
]
},
{
"seriesInstanceUID": "1.2.826.123.1.2",
"seriesDescription": "DICOM",
"instances": [
{
"sopInstanceUID": "1.2.826.123.1.2.1",
"file": "images/images-1.dcm",
"mimeType": "application/dicom"
}
]
}
]
}
]
}
Open Cloud files (Google Bucket)
Open a list of specific files stored on Google Cloud Bucket.
{
"username": "john",
"role": "diagnostic",
"studies": [
{
"storage": {
"name": "o3-bucket-test-performance",
"type": "google-bucket",
"token": "[base64 encoded service account key]"
},
"patientID": "PID-123",
"patientName": "DOE^JANE",
"patientBirthDate": "19821108",
"patientSex": "F",
"studyInstanceUID": "1.2.826.123.1",
"accessionNumber": "AN-123",
"studyDate": "20231205",
"studyTime": "123000.000",
"studyDescription": "Google-bucket images",
"series": [
{
"seriesInstanceUID": "1.2.826.123.1.1",
"seriesDescription": "Jpeg",
"instances": [
{
"sopInstanceUID": "1.2.826.123.1.1.1",
"file": "images/image-1.jpg",
"mimeType": "image/jpeg"
}
]
}
]
}
]
}
Open Cloud files (WASABI S3)
Open a list of specific files stored on Wasabi.
{
"username": "john",
"role": "diagnostic",
"studies": [
{
"storage": {
"name": "zeeromed-imaging-test",
"type": "wasabi-bucket",
"region": "eu-central-1",
"accessKey": "...",
"secretAccessKey": "..."
},
"patientID": "PID-123",
"patientName": "DOE^JANE",
"patientBirthDate": "19821108",
"patientSex": "F",
"studyInstanceUID": "1.2.826.123.1",
"accessionNumber": "AN-123",
"studyDate": "20231205",
"studyTime": "123000.000",
"studyDescription": "wasabi-bucket images",
"series": [
{
"seriesInstanceUID": "1.2.826.123.1.1.1",
"seriesDescription": "JPEG",
"instances": [
{
"sopInstanceUID": "1.2.826.123.1.1.1",
"file": "images/image-1.jpg",
"mimeType": "image/jpeg"
}
]
},
{
"seriesInstanceUID": "1.2.826.123.1.2",
"seriesDescription": "DICOM",
"instances": [
{
"sopInstanceUID": "1.2.826.123.1.2.1",
"file": "images/images-1.dcm",
"mimeType": "application/dicom"
}
]
}
]
}
]
}
Open WADO-RS study
Open a study that can be retrieved through a WADO-RS enabled endpoint.
{
"username": "john",
"role": "diagnostic",
"studies": [
{
"storage": {
"name": "x-pacs",
"type": "wado-rs",
"url": "http://hostname:9002/wado-rs/",
"httpHeaders": {
"Authorization": "x-pacs-api-key"
}
},
"studyInstanceUID": "1.2.826.0.1.8400526.5.8668.5059.20240112"
}
]
}
Open WADO-URI instances
Open a list of DICOM instances that can be retrieved through WADO-URI URLs.
{
"username": "john",
"role": "diagnostic",
"studies": [
{
"storage": {
"name": "x-pacs",
"type": "wado-uri",
"url": "http://hostname:8282/wado",
"httpHeaders": {
"Authorization": "x-pacs-api-key"
}
},
"studyInstanceUID": "1.2.826.0.1.8400526.5.8668.5059.20240112",
"series": [
{
"seriesInstanceUID": "1.2.826.0.1.8400526.5.8668.5059.20240112.1",
"instances": [
{
"sopInstanceUID": "1.2.826.0.1.8400526.5.8668.5059.20240112.1.1"
}
]
}
]
}
]
}
Opening parameters
The thumbnail panel (tray panel in digital pathology) is expanded by default. It is possible to tell the VIEW to show it collapsed when opening an exam, adding the attribute collapsePreviews to the (optional) openingParameters object in the request.
{
"username": "john",
"role": "diagnostic",
"openingParameters": {
"collapsePreviews": true
},
"studies": [...]
}
Digital Pathology APIs
Post .cube files API
The API allows to save a .cube file into the system and associate it to the related digital slide in order to apply a color profile to the image.
URL |
| ||
Method | POST | ||
Request headers | | API Key | Required |
Query parameters |
| Slide identifier Multiplicity: 1-1 | Required |
Response code |
| ||
Get ISO API
The API provides a simple way to create an ISO image of the selected study(ies). The computed image will contain a DICOMDIR file containing all the necessary references of the included DICOM files and a standalone viewer (by default Weasis) to visualize them locally.
URL |
| ||
Method | GET | ||
Request headers | | API Key | Required |
Query parameters |
| Study Instance UID of the study(ies) to be included in the ISO. Multiplicity: 1-n | Required |
Response body | ISO image of the selected study(ies). | ||
Multimonitor API
The API provides the secure tokens needed to open one or more studies or the history of a patient in two monitors.
URL |
| ||
Method | GET | ||
Request headers |
| API Key | Required |
Query parameters | See the VIEW APIs | Multimonitor-API-query-parameters section | ||
Response body |
JSON
| ||
Multimonitor API query parameters
Parameter | Type | Multiplicity | Description | Example |
|---|---|---|---|---|
| Required | 1 | It is used for auditing purposes and may not be present in the VIEW database. If there are personalized Hanging Protocols associated with the provided username, VIEW will load them. |
|
| Required | 1 | It is used to enable specific buttons and functionalities and must be present in the VIEW database. If there are no personalized Hanging Protocols associated with the provided username, VIEW will load those associated with the provided role. If there are no personalized Hanging Protocols associated with the provided role, VIEW will load global Hanging Protocols. |
|
| Required | 1 | Identifier for the patient (Patient ID DICOM Attribute). If it is not used in conjunction with the |
|
| Required | 1 | Indicates the number of tokens to be returned by the Multimonitor API (i.e. how many monitors will be supported). Possibile values: |
|
| Conditionally required | 1 | Identifier of the system, organization, agency, or department) that issued the Patient ID (Isser of Patient ID DICOM Attribute). It is required when |
|
| Optional | 1-n | Unique identifier of the study(ies) to be opened in VIEW (Study Instance UID DICOM attribute). If a study does not exist, VIEW will display the patient’s history. It can not be used in conjunction with the |
|
| Optional | 1 | Number that identifies the order for the study(ies) to be opened in VIEW (Accession Number DICOM attribute). If multiple studies share the same Accession Number, they will be opened regardless of the patient to whom they belong. It can not be used in conjunction with the |
|
| Optional | 1-n | Study Instance UID of the study(ies) to be preloaded in memory by VIEW. |
|
| Optional | 1 | It is used to specify the instance of VIEW to be used. Requests with the same sticky value will be handled by the same server. It requires ad-hoc configuration on the NGINX Reverse Proxy or Ingress and can only be utilized when there are multiple instances of VIEW (e.g., Kubernetes cluster). |
|
| Optional | 1 | If set to Default: |
|
| Optional | 1 | If set to Default: |
|
| Optional | 1 | AE Title(s) of DICOM node(s) on which to search for the requested study(ies). Mutliple AE Titles must be separated by “;”. |
|