feat: Add Static WADO display (#2499)

* Rebased to have just the static view changes

* Changes based on the PR

* Couple more changes for the PR

* Removed an extraneous log

* Fix the study worklist display when returning to the page

* Added some documentation on the static wado data source setup, and a
bounds check change on the Queue test which was failing

* PR updates - change the undefined study description to '' and remove the aws deploy

* Fixed the e2e tests to actually pass/fail correctly on actual results
This commit is contained in:
Bill Wallace authored and Alireza committed 2021-08-24 17:53:03 -04:00
1 parent ca900f80e1
commit 2327b4ae12
21 files changed
+483 -41

No files matched your search

@@ -189,3 +189,42 @@ below:
https://github.com/OHIF/Viewers/tree/master/platform/viewer/public/html-templates
[config-files]:
https://github.com/OHIF/Viewers/tree/master/platform/viewer/public/config
## Static Files
There is a binay DICOM to static file generator, which provides easily served
binary files. The files are all compressed in order to reduce space signifcantly,
and are pre-computed for the files required for OHIF, so that the performance
of serving the files is just the read from disk/write to http stream time, without
any extra processing time.
The project for the static wado files is located here:
[static-wado]: https://github.com/wayfarer3130/static-wado
It can be compiled with Java and Gradle, and then run against a set of dicom,
in the example located in /dicom/study1 outputting to /dicomweb, and then a
server run against that data, like this:
```
git clone https://github.com/wayfarer3130/static-wado.git
cd static-wado
./gradlew installDist
StaticWado/build/install/StaticWado/bin/StaticWado -d /dicomweb /dicom/study1
cd /dicomweb
npx http-server -p 5000 --cors -g
```
There is then a dev environment in the platform/viewer directory which can be run
against those files, like this:
```
cd platform/viewer
yarn dev:static
```
Additional studies can be added to the dicomweb by re-running the StaticWado command.
It will create a single studies.gz index file (JSON DICOM file, compressed)
containing an index of all studies created. There is then a small extension
to OHIF which performs client side indexing.
The StaticWado command also knows how to deploy a client and dicomweb directory
to Amazon s3, which can then server files up directly. There is another
build setup build:aws in the viewer package.json to create such a deployment.
@@ -76,7 +76,17 @@ function create({
You can take a look at `dicomweb` data source implementation to get an idea
`extensions/default/src/DicomWebDataSource/index.js`
## Static WADO Client
If the configuration for the data source has the value staticWado set, then it
is assumed that queries for the studies return a super-set of the studies, as
it is assumed to be returning a static list. The StaticWadoClient performs the
search functionality manually, by interpretting the query parameters and then
applying them to the returned response. This functionality may be useful for
other types of DICOMweb back ends, where they are capable of performing queries,
but don't allow for querying certain types of fields. However, that only works
as long as the size of the studies list isn't too large that client side
selectiton isn't too expensive.
## DicomMetadataStore
In `OHIF-v3` we have a central location for the metadata of studies and they are located