ChRIS - A Service for Collecting, Organizing, Processing, and Sharing Medical Image Data in the Cloud

 

Rudolph Pienaar, PhD

 

 

Technical Director
Fetal-Neonatal Neuroimaging and Developmental Science Center


Staff Scientist
Boston Children's Hospital
 


introduction

Healthcare informatics is at an inflection point

This talk considers a particular perspective on the problem and proposes a solution

ChRIS

Research

Integration

Service

ChRIS


overview

Some trends confronting computing in healthcare and shaping the landscape

An introduction to our web-based system called ChRIS

Logical topology / design

UI considerations

Containerization

Healthcare informatics landscape

Clouds and untethered computing

Historical legacy


overview


overview


overview


healthcare informatics landscape...

Healthcare informatics is at an inflection point

This talk considers a particular perspective on the problem and proposes a solution

explosion of sensors

complex analytics


healthcare... philosophy shapes informatics

historically, healthcare is differential, not integrative

informatics is poorly understood and not seen necessarily as fundamental

classically information relationship is best described as 1:1

the practice of medicine is less integrative


healthcare "compute"...

provided by vendors with very specialized skills and market

thin, vertical stacks


silos...

Multiple, deep data sets exist in the healthcare dataverse

Largely disconnected and independent of each other

clinical

billing

health records


connections between data

data points, rich as they are, can be insufficient...

the more connections between points...


connections between data

the better!


some trends in informatics...

disparate, disconnected computing

the primacy of the browser as client platform

the rise of the ...


clouds and clouds and clouds...

what are "clouds"?

remember above all others that a "cloud" is really just...

someone else's computer


what do clouds do?

well... they rain...

essentially, we often think of "cloud" computing as less of "computing" and more as storage

we use "clouds" as hard drives in the sky

pull data (i.e. rain) and consume it locally


compute should be "free"...

If we abstract "clouds" to "containing" data...

then we can think of compute as being applied to data and somewhat independent of it


ChRIS...

ChRIS is a bio-medical data workflow manage that allows easy and intuitive collection, analysis, and sharing of data between parties.

  • allows for advanced view rendering
  • allows for sharing of images
  • allows for immersive real time collaboration
  • allows for post-processing of images

many data sources... many compute sources...

via here

connect data here

to here...

and compute!


system topology

Main web server local data repository

remote compute nodes

data source (e.g. in hospital PACS)


distributed design...

web server

coordinator

data handler

compute handler


distributed design...

Red Hat collaboration


containerization


containerization


compute and io...

disparate, disconnected computing

data needs to be transferred from server host to remote location

data needs to be processed on remote location


io

local web server

data descriptor

data handler


io

pfurl --verb POST --raw --http 172.17.0.2:5055/api/v1/cmd --msg \
'{  "action": "pushPath",
    "meta": {
        "remote": {
            "key":         "someKey"
        },
        "local": {
            "path":         "/home/data"
        },
        "transport": {
            "mechanism":    "compress",
            "compress": {
                "encoding": "base64",
                "archive":  "zip",
                "unpack":   true,
                "cleanup":  true
            }
        }
    }
}' --quiet --jsonpprintindent 4  

compute

local web server

exec descriptor

exec handler


compute

pfurl --verb POST --raw --http 172.17.0.2:5010/api/v1/cmd \
     --jsonwrapper 'payload' --msg \
'{  "action": "run",
        "meta": {
                "cmd":      "cal 7 1970",
                "auid":     "rudolphpienaar",
                "jid":      "cal-job-1234",
                "threaded": true
        }
}' --quiet --jsonpprintindent 4

compute... using a container

pfurl --verb POST --raw --http 10.17.24.163:5010/api/v1/cmd 
--jsonwrapper 'payload' --msg '
        {   "action": "run",
            "meta":  {
                "cmd":      "$execshell $selfpath/$selfexec --prefix test- --sleepLength 0 /share/incoming /share/outgoing",
                "auid":     "rudolphpienaar",
                "jid":      "simpledsapp-1",
                "threaded": true,
                "container":   {
                        "target": {
                            "image":            "fnndsc/pl-simpledsapp",
                            "cmdParse":         true
                        },
                        "manager": {
                            "image":            "fnndsc/swarm",
                            "app":              "swarm.py",
                            "env":  {
                                "shareDir":     "/home/tmp/share",
                                "serviceType":  "docker",
                                "serviceName":  "testService"
                            }
                        }
                }
            }
        }
'

coordination

timing can be complex...

PUSH data

separate coordinator service

WAIT!

EXEC on data

WAIT!

PULL data

WAIT!


coordination


coordinate

            "meta-store": {
                        "comment":      "The <meta-store> defines which paragraph to process to determine the <key> field to pass to <pfioh>. In this case, the <jid> field of the <meta-compute> will be used as the <key> field.",
                        "meta":         "meta-compute",
                        "key":          "jid"
            },

            "meta-data": {
                "remote": {
                        "comment":      "The <key> to use is a lookup in the <meta-store>.",
                        "key":          "%meta-store"
                },
                "localSource": {
                        "comment":      "The path containing data to process.",
                        "path":         "/neuro/users/rudolphpienaar/Pictures"
                },
                "localTarget": {
                        "comment":      "Once processed at the remote compute, return results to this path.",
                        "path":         "/neuro/users/rudolphpienaar/tmp/Pictures",
                        "createDir":    true
                },
                "specialHandling": {
                        "comment":      "This triggers some special processing in <pfioh> -- basically the <incoming> and <outgoing> directories are created and populated in a manner that the plugins expect.",
                        "op":           "plugin"
                },
                "transport": {
                    "mechanism":    "compress",
                    "compress": {
                        "encoding": "none",
                        "archive":  "zip",
                        "unpack":   true,
                        "cleanup":  true
                    }
                },
                "comment":              "The <service> name is hardcoded in the pfcon source and denotes the IP and port of the <pfioh> service.",
                "service":              "pangea"
            },

coordinate

            "meta-compute":  {
                "comment":  "The $ strings in the <cmd> are substituted with values found my running the plugin w/o any args. NB: the incoming and outgoing dirs need to be properly handled! In this example they are mapped from the <key> location in <pfioh> appropriately.",
                "cmd":      "$execshell $selfpath/$selfexec --prefix test- --sleepLength 0 /share/incoming /share/outgoing",
                "auid":     "rudolphpienaar",
                "jid":      "simpledsapp-1",
                "threaded": true,
                "container":   {
                        "target": {
                            "comment":          "The plugin to run. The <cmdParse>, if true, means substitute $ in the <cmd> string.",
                            "image":            "fnndsc/pl-simpledsapp",
                            "cmdParse":         true
                        },
                        "manager": {
                            "comment":          "The manager container to run, with relevant <env> settings.",
                            "image":            "fnndsc/swarm",
                            "app":              "swarm.py",
                            "env":  {
                                "meta-store":   "key",
                                "serviceType":  "docker",
                                "shareDir":     "%shareDir",
                                "serviceName":  "testService"
                            }
                        }
                },
                "comment":              "The <service> name is hardcoded in the pfcon source and denotes the IP and port of the <pfioh> service.",
                "service":              "pangea"
            }
        }

security

  • Medical data is constrained by many external factors


     
  • Logging and control
  • Single shutoff point

     
  • Communication pathways
  • HIPAA
  • Local regulatory
  • IRB

secure architecturally


secure communication


big data

  • Imaging


     
  • Genomics
  • Pathology
  • Input DICOM space
  • Processed result space
  • Structured clinical reporting

big data...


UI concepts


UI concepts


UI concepts


conclusion

  • Healthcare compute is at an inflection point
  • Lags larger computing -verse
  • Many opportunities and challenges exist

references... ChRIS

  • https://github.com/FNNDSC/ChRIS_ultron_backEnd
  • https://github.com/FNNDSC/ChRIS_ultron_frontEnd
    

references... services

 
  • https://github.com/FNNDSC/viewerjs
  • https://github.com/FNNDSC/gcjs
  • https://github.com/FNNDSC/fmjs
  • https://github.com/FNNDSC/toolbarjs
  • https://github.com/FNNDSC/rboxjs
  • https://github.com/FNNDSC/rendererjs
  • https://github.com/FNNDSC/thbarjs
  • https://github.com/FNNDSC/pman
  • https://github.com/FNNDSC/pfioh
  • https://github.com/FNNDSC/pfcon

references... viewers

  • https://goxtk.com
    
  • https://github.com/FNNDSC/ami

team

  • Jorge "To Be" Bernal, PhD
  • Nicolas "VJ" Rannou, MSc
  • Rudolph "Cat Herder" Pienaar, PhD
  • Daniel "X Slicer" Haehn, PhD
  • Daniel "Game On" Ginsburg, MSc
  • Ellen "Doc" Grant, MD

fin!

Thank you!

rudolph.pienaar@childrens.harvard.edu

Web apps..?

  • Simple, single-purpose
    • Show static information: text and/or images
    • Provide single-focus dynamic data
  • Complex, integrative, but still generically single-purpose
    • Facebook
    • Twitter
    • Mobile: instagram, snapchat, whatsapp, etc...
Web-apps....​
... can be

Web apps..?

Web apps...

are

  • Accessible from anywhere!
    • Desktops, Laptops
    • (Smart) Phones
    • Tablets
  • Are "simple"
    • require little end user maintenance
    • just go to a link
  • but...
    • Are typically not as "powerful" as traditional client apps.

Medical Image Viewers

How to view images...

... easily?

  • MedXT
  • Zebra-med
  • Cornerstone (Chris Chafey)
  • SliceDrop
  • MedView
  • mi2b2 Viewer

Medical Image Viewers


Medical Image Viewers


Medical Image Viewers


Medical Image Viewers


Medical Image Viewers


Viewer infrastructure...


ChRIS "reloaded..."

Web applications are increasingly more powerful, easy to use, and accessible

  • more familiar interface metaphor
    • web 2.0 "social" interaction
    • posting/sharing
  • moves the burden of maintenance away from end user
  • allows for mobile

what is ChRIS?



ChRIS is a bio-medical data workflow manage that allows easy and intuitive collection, analysis, and sharing of data between parties.


what is ChRIS?

ChRIS also...

  • allows for advanced view rendering
  • allows for sharing of images
  • allows for immersive real time collaboration
  • allows for post-processing of images

components

  • collect
  • manage
  • analyze
  • view
  • collaborate

ChRIS "Ultron"... REST


overview

FNNDSC...

... software efforts

  • Compute infrastructure
    • HPC
      • "front end" cluster
      • "back end" cluster
  • Data "movement"
    • file system abstractions
    • cloud-based access
  • Compute "movement"
    • dockers

further references...


  • https://github.com/FNNDSC/chrisreloaded
  • https://github.com/FNNDSC/ChRIS_API
  • https://github.com/FNNDSC/viewerjs
  • https://github.com/FNNDSC/mi2b2
  • https://github.com/FNNDSC/vjs
  • https://github.com/slicedrop
  • https://goxtk.com

Development team


  • Jorge "To Be" Bernal, PhD
  • Nicolas "VJ" Rannou, MSc
  • Rudolph "Cat Herder" Pienaar, PhD
  • Daniel "X Slicer" Haehn, PhD
  • Daniel "Game On" Ginsburg, MSc
  • Ellen "Doc" Grant, MD

thank you...


ChRIS -- A Service for Collecting, Organizing, Processing, and Sharing Medical Image Data in the Cloud

By Rudolph Pienaar

ChRIS -- A Service for Collecting, Organizing, Processing, and Sharing Medical Image Data in the Cloud

A general overview of ChRIS

  • 1,350