Download as pdf or txt
Download as pdf or txt
You are on page 1of 48

Interoperabilität von patientennahen

Medizingeräten

openSDC Tutorial
for openSDC-V1.0-beta01

2014/01/23, Stefan Schlichting


openSDC Tutorial
for openSDC-V1.0-beta01

1. The architecture & protocols


2. A simple device
3. A simple client
4. A second device

2| An architecture for distributed systems of medical devices in high-acuity environments


openSDC Tutorial
Before we start…

• Have eclipse ready to be used


• M2e Maven eclipse plugin is also used
• Download biceps, mdpws & jdpws jars
• https://sourceforge.net/projects/opensdc/files/framework/V1.0-Beta01/Jars/
• It might be useful to download the sources also
• Download tutorial material
• http://sourceforge.net/projects/opensdc/files/examples/openSDC%20Tutori
al-V1.0-Beta01.zip/download
• Next install jars in local maven repository

• Note: Some classes and packages are prefixes with DICE


• DICE stands for Dräger Integrated Clinical Environment
• Names will change in one of the upcoming releases of openSDC

3| An architecture for distributed systems of medical devices in high-acuity environments


openSDC Tutorial
Install jars into local maven repositories
Mvn install:install-file –Dfile=JDPWS-1.0-BETA_01.jar –DpomFile=JDPWSpom.xml

1. JDPWS

2. MDPWS

3. MDPWS

Pom files are in the tutorial material

4| An architecture for distributed systems of medical devices in high-acuity environments


openSDC Tutorial
for openSDC-V1.0-beta01

1. The architecture & protocols


2. A simple device
3. A simple client
4. A second device

5| An architecture for distributed systems of medical devices in high-acuity environments


The architecture & protocols
Learning objectives

Please read the technical whitepaper and have a look at the BICEPS Message
Information Model in order to get a better understanding of the architecture
and protocols that are utilized in openSDC.

Documentation on sourceforge

In the end …
 The ideas behind the BICEPS Message Information Model are clear
 You should be able to develop a device description as XML-File
– Example files are included in the tutorial material

6| An architecture for distributed systems of medical devices in high-acuity environments


openSDC Tutorial
for openSDC-V1.0-beta01

1. The architecture & protocols


2. A simple device
3. A simple client
4. A second device

7| An architecture for distributed systems of medical devices in high-acuity environments


A simple device
Objectives

 In this tutorial we develop a simple device that will provide its description to
clients and an initial state
– Develop a device based on openSDC
– Learn how to use DPWS Explorer for simple testing

8| An architecture for distributed systems of medical devices in high-acuity environments


A simple device
Setup

Let‘s start
 File -> New -> Maven Project
 Quickstart archetype
– GroupID=openSDC
– ArtefactID=openSDCDevice01

That is how the initial project in Eclipse


should look like.

Don’t forget to update your local Maven


repository index

9| An architecture for distributed systems of medical devices in high-acuity environments


A simple device
Setup

Setup the device


dependencies
• Pom.xml
• Dependencies
• Add Dependency
• Group ID: de.draeger.run
• Artefact ID: BICEPS
• Version: 1.0-BETA_01
• Don’t forget to save the pom.xml
file

10 | An architecture for distributed systems of medical devices in high-acuity environments


A simple device
Setup

The Maven dependencies on the


Build Path should be updated

11 | An architecture for distributed systems of medical devices in high-acuity environments


A simple device
Configuration

Create configuration folders


• config
• description

Copy mdpws.properties from tutorial


material to config folder

12 | An architecture for distributed systems of medical devices in high-acuity environments


A simple device
Configuration

Find the right configuration


• Network interface
• UUID

Use Platform toolkit for that purpose


• Use the generated App.java file
• Source code provided in tutorial
material

I will use the Eth3 interface for this


tutorial

13 | An architecture for distributed systems of medical devices in high-acuity environments


A simple device
config/mdpws.properties

Update mdpws.properties regardig network


interface
• HTTPBinding\AddressGroup
• Device\OutputDiscoveryProtocolDomai
n=DPWS:
• Stream\Binding.Interface
Copy the network interface name from the
console output

Update mdpws.properties regarding


DeviceUUID
• Device\DeviceUUID
Copy the UUID from the console output

14 | An architecture for distributed systems of medical devices in high-acuity environments


A simple device
description/openSDCDevice01.xml

Add the openSDCDevice01.xml from


the tutorial material to description
folder

Review the description file


• Description of the capabilities of our
simple device

15 | An architecture for distributed systems of medical devices in high-acuity environments


A simple device
openSDCDevice01

Start coding…
Add two classes
• MyMedicalDeviceNodeInterface
• MyMedicalCommunicationInterface

16 | An architecture for distributed systems of medical devices in high-acuity environments


A simple device
MyDeviceNodeInterface




MyDeviceNodeInterface will
• provide the description of the capabilities (2) and an initial state (2) to the
openSDC middleware by implementing the relevant interfaces (3),(4)
17 | An architecture for distributed systems of medical devices in high-acuity environments
A simple device
MyMedicalCommunicationInterface


MyMedicalCommunicationInterface will
• provide the MyMedicalNodeInterface to the openSDC middleware during
startup phase (1) by extending a default implementation (2)
• Receive information about the startup state in callback methods (3)

18 | An architecture for distributed systems of medical devices in high-acuity environments


A simple device
openSDCDevice01App


OpenSDCDevice01App will
• Instantiate the MyMedicalCommunicationInterface (1)
• Start the application thread (2)

19 | An architecture for distributed systems of medical devices in high-acuity environments


A simple device
openSDCDevice01App



Starting the openSDCDevice01App, the console should look like this
(1)BICEPS services and the endpoints
(2)DeviceUUID configured
that are configured in the mdpws.properties
20 | An architecture for distributed systems of medical devices in high-acuity environments
A simple device
Test the simple Device using the DPWS Explorer

• Start DPWS Explorer


•Ensure that the Search is configured to use

the correct network interfaces

• After pressing “Search” (1), the


output should similar like in the
examples (2)
• You can the see BICEPS services
and the actions defined 



Clicking the Metadata Endpoint
Reference Addess(es) (3), a
browser will open and display the
WSDL representation of the
BICEPS Service interface

21 | An architecture for distributed systems of medical devices in high-acuity environments


A simple device
Test the simple Device using the DPWS Explorer

• Retrieve the current MDIB (GetMDIB, 1) utilizing the method and the
“Invoke Operation” (3) on Parameter Tree tab (2).
• Description and states (4)


 

22 | An architecture for distributed systems of medical devices in high-acuity environments


openSDC Tutorial
for openSDC-V1.0-beta01

1. The architecture & protocols


2. A simple device
3. A simple client
4. A second device

23 | An architecture for distributed systems of medical devices in high-acuity environments


A simple client
Objectives

 In this tutorial we develop a simple client that will interact with the simple
device
– Discovery of devices
– Register to changes of metrics

24 | An architecture for distributed systems of medical devices in high-acuity environments


A simple client
Setup

Let‘s start
 File -> New -> Maven Project
 Quickstart archetype
– GroupID=openSDC

– ArtefactID=openSDCClient

Updating the dependencies in the pom.xml


file, will update the project


dependencies (1)
• Add de.draeger.run:BICEPS 1.0-
BETA_01 as dependency

• For the beginning add two classes (2)


• MyClientApplication
• MyMDIBListener

25 | An architecture for distributed systems of medical devices in high-acuity environments


A simple client
MyClientApplication

MyClientApplication will
• Use the client interface of the
framework in order to probe
(search) for medical devices
implementing BICEPS (1)
• Provide a simulated application
thread in order to not be shut-down

while waiting for the probe
response 

26 | An architecture for distributed systems of medical devices in high-acuity environments


A simple client
MyMDIBListener



MyMDIBListener will
• Implement MdibListener interface in order to receive a callback when a new
BICEPS device has been found (1), a BICEPS device is removed (2) from
the environment or a probe timesout without having a matching BICEPS
device found (3)
27 | An architecture for distributed systems of medical devices in high-acuity environments
A simple client
config/mdpwsClient.properties


• Create a config folder & copy mdpwsClient.properties from tutorial material
to the folder (1)
• Update referenced network interface (2) for receiving events
• HTTPBinding\AddressGroup
• Take a network interface that may by reached by the device with IP
multicast messages

28 | An architecture for distributed systems of medical devices in high-acuity environments


A simple client
App




• App will

• Start the client framework (1)
• Register MyMDIBListener with the client framework (2) and enable Plug &
Play search (3)
• Start MyClientApplication (4) and hence start a discovery process
29 | An architecture for distributed systems of medical devices in high-acuity environments
A simple client
App


Starting App, the console should look like this
(1) Setting up discovery binding
(2) If a BICEPS device is still running, this will be announced to the console by
MyMDIBListener
30 | An architecture for distributed systems of medical devices in high-acuity environments
A simple client
MyMetricListener



MyMetricListener will
• receive information about changed metrics (1) by implementing the
MetricListener callback interface (2)
• print the unique proxy id for the changed metrics (3)
31 | An architecture for distributed systems of medical devices in high-acuity environments
A simple client
MyMDIBListener



Update MyMyMDIBListener in order to display
(1) display some information about the discovered BICEPS device
(2) subscribe to changes to the metric of a discovered BICEPS device

32 | An architecture for distributed systems of medical devices in high-acuity environments


A simple client
App


 

Starting App, the console should look like this


(1) displaying how many metrics a BICEPS device provides
(2) displaying the type of each metric
(3) displaying that the state has changed
33 | An architecture for distributed systems of medical devices in high-acuity environments
A simple client
Receiving state changes
Idea
 Modify a value of metrics utilizing DPWS Explorer
– Invoke SetService\SetValue for that purpose (1)
– OperationHandleRef references the modifying operation (2)
– Don‘t forget to set a RequestNumericValue (3)
 Receive changed value by Client (4)





Failed because the BICEPS device does not handle the request.

34 | An architecture for distributed systems of medical devices in high-acuity environments


openSDC Tutorial
for openSDC-V1.0-beta01

1. The architecture & protocols


2. A simple device
3. A simple client
4. A second device

35 | An architecture for distributed systems of medical devices in high-acuity environments


A second device
Objectives

 In this tutorial we develop a device that will have the capabilities of the simple
device and
– Will handle remote invocation requests

36 | An architecture for distributed systems of medical devices in high-acuity environments


A second device
Setup

Let‘s start 
 File -> New -> Maven Project
 Quickstart archetype
– GroupID=openSDC
– ArtefactID=openSDCDevice02

Run the configuration finding app



developed before (1)

Update Configuration 
• Copy config & description folder from simple Device
• Change the UUID according to the output of the
configuration app (2)
• Modify the port for each binding in the config so that
don’t overlap with the simple device (3)

37 | An architecture for distributed systems of medical devices in high-acuity environments


A second device
Activate operations


Setup the second device project by


(1) copying sources from simple Device and rename OpenSDCDevice01App.
(2) Modify states of the operation so that they are enabled

38 | An architecture for distributed systems of medical devices in high-acuity environments


A second device
MyCommandProcessingTask



Create MyCommandProcessingTask
(1) by extending CommandProcessingTask
(2) that will handle remote invocation requests
(3) use a notification queue to send updates to the state of the device to the
openSDC middleware
39 | An architecture for distributed systems of medical devices in high-acuity environments
A second device
MySetHandler


Create MySetHandler
(1) by extending DefaultCommandHandler
(2) that specifies which requests it handles and sends
(3) and setups the command task that will handle the request

40 | An architecture for distributed systems of medical devices in high-acuity environments


A second device
MyMedicalCommunicationInterface


Update MyMedicalCommunicationInterface
(1) by create the CommandProcessingTask
(2) add it as a handler
That’s it for now!

41 | An architecture for distributed systems of medical devices in high-acuity environments


A second device
Test
Start the new OpenSDCDevice02
application

The Client should be running,


otherwise start it.

The Device should be shown in the


client output.

42 | An architecture for distributed systems of medical devices in high-acuity environments


A second device
Test



(1) Invoke the set operation on the new device in the DPWS explorer.
(2) The operation should be in Waiting state
(3) The command should be printed into the console of the device.

43 | An architecture for distributed systems of medical devices in high-acuity environments


A second device
Handle the commands

44 | An architecture for distributed systems of medical devices in high-acuity environments


A second device
Handle the commands



(1) Notify the clients that the processing was started
(2) Find the state and modify it
(3) Send a message to the middleware

45 | An architecture for distributed systems of medical devices in high-acuity environments


A second device
Handle the commands

(1) Notify the clients that the processing was finished or failed
(2) This is how the state is modified.

46 | An architecture for distributed systems of medical devices in high-acuity environments


A second device
Test it again



Restart the device and the client. Afterwards…
(1) Invoke the set operation on the new device in the DPWS explorer.
(2) The operation should be in Waiting state
(3) The change of the metric should be printed into the console of the client.

47 | An architecture for distributed systems of medical devices in high-acuity environments


Thank you for your
attention.

Contact
Dr. Stefan Schlichting
Research Unit, Drägerwerk AG
stefan.schlichting@draeger.com

You might also like