DigitalSlideArchive / digital_slide_archive

The official deployment of the Digital Slide Archive and HistomicsTK.
https://digitalslidearchive.github.io
Apache License 2.0
108 stars 49 forks source link

BDSA Dev / Install from devops/bdsa directory #347

Open dgutman opened 1 month ago

dgutman commented 1 month ago

To standardize our installation of the Brain Digital Slide Archive plugin / we want to adopt an installation procedure similar to the VolView plugin.

The BDSA will have it's own pip-installable package that will allow us to create a set of custom endpoints needed to validate the BDSA schema against an item, and have similar convenience functions, particularly related to getting aggregate queries that return information about number of cases in the system, number of cases with specific stains, specific regions, etc. This is analogous to the TCGA plugin from many years ago.

We want to create a docker-compose.override.yml file that we can append / extend the base DSA installation.

Key features of this include:

1). Create a separate BDSA plugin in the DSA namespace i.e. at https://github.com/digitalslidearchive/

Plugin has some basic code stubs to expose custom API endpoints.. for initial development simply having an endpoint to do a mongo query similar to: get unique caseID's from a specific collection such as all unique values for bdsaSchema.caseID. Once this is stubbed, we can modify extend this.

With this endpoint, also link to / include directions on how to run this plugin in "dev" mode so we can quickly iterate and have the DSA restart when we make / update endpoints without rebuilding the entire stack.

Other stub endpoint includes mechanism to get the current version of all plugins / components... this is critical as we install the BDSA across multiple sites.

2). The base BDSA plugin needs to have more version control, so we should pin all the individual modules / plugins so we can ensure consistency across individual BDSA sites.

3). The default bdsa installation should include the following plugins on top of the standard DSA.

 a) Currently DICOM plugin to parse DICOM directories, as well as the "ZIP" handler that allows us to index DICOM resources that were uploaded as a ZIP file
 b) VTKJS plugin so we can view NIFTI files and similar MRI image formats.   Would like this plugin to have the viewer integrated directly into the main DSA view, instead of being a "click out" as in current VolView / Dive Plugin.  We want to essentially recreate the VERY old XTK Demo plugin.
 c). Include both the LDAP and OAuth plugins-- we are still in development to figure out what the cross-domain authentication mechanism is.

4). BDSA Plugin / docker-compose.override file also has stubs that point to / connect two additional containers that will become part of the BDSA ecosystem. These "buttons" should route to additional containers/ services. For initial Development we have a simple docker container running a basic npm / javascript app that says "Hello Javascript" and is accessible / routed analogous to histomicstk. So may be /jsModule as the initial route and we will rename as things develop. We want a stub that links to another container running flask/python exposed on port 8080 internally, but is routable as /pythonModule.
These plugins should reference a docker image (that doesn't yet exist... but we can quickly stub out).