© 2024 IQVIA - All Rights Reserved

Welch Allyn VS Devices

Overview

This document describes the functional & non-functional requirements and design specifications for the Welch Allyn vital signs device interface with ClinSpark.

ClinSpark can be configured to work with Welch Allyn vital signs devices such that measurements can be initiated directly from the ClinSpark application and results can be transmitted to, viewed, reviewed and stored within ClinSpark. Date and time information are automatically captured with the results.

The user is not required to add subject/patient identifiers or trial protocol information into the device and no data is required to be transcribed into ClinSpark. These processes happen securely and a clear audit trail is maintained.

Applicability

It applies to the following equipment models:

Above graphic is from the Welch Allyn SDK Best Practices Guide.

The WA SDK leverages ActiveX 2.0, allowing IQVIA to communicate with supported devices through the ClinSpark Agent. The interface does not require ActiveX interaction by way of a browser plugin, but rather uses Microsoft’s COM API.

The Welch Allyn Connectivity SDK and supporting documentation were previously supplied directly by the vendor, Baxter (Welch Allyn). Baxter has recently communicated to IQVIA that they will no longer be hosting the SDK on their support website for download. Please contact your PM to gain access to the Connectivity SDK. 

IQVIA has been informed that Welch Allyn Connectivity SDK 2.3 and 3.0 are currently unsupported with Windows 11 and are in process of developing a new version. Once this newly supported version is supplied IQVIA will review and determine incorporating into a future release of Agent.

Requirements

  • Welch Allyn Connectivity SDK 2.3 or 3.0 (as supported by Welch Allyn)

  • ClinSpark version 1.4.0 or greater

  • ClinSpark Agent version 1.1.0 or greater

Scope

  1. Functional Requirements

  2. Non-functional Requirements

  3. Design Specifications

Out of Scope

  1. User Requirements Specification (URS) is not included. IQVIA has reviewed the general requirements of the user community and used these to determine Functional and Non-Functional Requirements for this ClinSpark component.

  2. ClinSpark Infrastructure specification (documented separately)

  3. ClinSpark Architecture specification (documented separately)

  4. ClinSpark Configuration Specification (documented separately)

GxP Applicability

This interface is intended for use within the context of clinical research and clinical trial activities and as such, the user is likely to be subject to applicable GCP regulations and guidelines.

System Impact

Subject/Patient Safety

The design of the interface has low impact on subject/patient safety, since the integrated devices are not impacted, altered or affected in any way.

They continue to function independently of ClinSpark and are intended to be used by qualified and trained users under the supervision of medical personnel.

Data Integrity

Testing has occurred to confirm data integrity upon transfer from the device to ClinSpark.

System Specifications

Functional Requirements

The interface is only supported on Windows operating systems, meeting the minimum SDK requirements.

Non-functional Requirements

Authorization

The interface is intended to be installed and configured by qualified users.  In most pharmaceutical and associated life-science settings, this is typically governed through an Information Systems/Technology administrator or support team.

Once installed and configured, ClinSpark application users can leverage the interface through the regular use of the ClinSpark application.

Availability

It is expected that the interface be available at time of data collection through ClinSpark.  For this to be fully achieved, the SDK must be installed/configured successfully with the ClinSpark Agent and ClinSpark application operating in a functional state.

Maintainability

The interface is reliant on the use of the Welch Allyn SDK. It is to be expected that Welch Allyn continue to develop the SDK and support additional devices that are brought to market.  IQVIA will maintain the interface through the supported SDK updates and Welch Allyn devices, where applicable.

The end user is not able to conduct maintenance activities.

Design Specifications

The interface is established using the Welch Allyn Connectivity SDK. This SDK leverages ActiveX 2.0, allowing IQVIA to communicate with supported devices through the ClinSpark Agent. The interface does not require ActiveX interaction by way of a browser plugin, but rather uses Microsoft’s COM API.

Installation

The Welch Allyn SDK must be installed on all computers wishing to leverage the ClinSpark interface. 

Once the SDK zip file has been received, please follow the directions below to install.

  • Extract the SDK zip file

  • Double click ‘autorun.exe’

  • Follow the prompts:

  •  

  • Confirm the SDK is found with ‘Programs’

  • Restart computer

ClinSpark Agent Component

The device interface requires a specific ClinSpark Agent version (defined within this document).  This can be enforced in ClinSpark General Settings by specifying the minimum required agent version here:

ClinSpark Agent/API Workflow Description

  1. The ClinSpark Agent receives instruction from ClinSpark (in JSON, sent after “Invoke Device” has been clicked) to communicate with the Welch Allyn Device.

  2. The for loop which hosts the connection process to the device is then instantiated with the “scanDevicesIterations” configuration option.

  3. Within this loop, the ClinSpark Agent instantiates the Welch Allyn SDK with WelchAllyn.WAConnectivityATL progID by the creation of an ActiveX object which depends on this SDK (ActiveX allows us to interact with the Connectivity SDK, and therefore the device).

  4. The Welch Allyn SDK is checked for installation via the state of the ActiveX object (after instantiation with Welch Allyn SDK). If null (because ActiveX object couldn’t be instantiated with the SDK), the SDK doesn’t exist. An error is then reported to the user in the Client and the workflow stops here. If it does exist (sdk != null), workflow continues.

  5. Then, via the ActiveX object, the “DeviceArrival” event (which will exist as a result of connection with the device) is checked for existence. This verifies whether the device is connected or not.

    DeviceArrival is an event tied to the IDevices object (as specified in the SDK documentation), and if the event is triggered, provides the DeviceID, as well as a pointer to the IDeviceData object, which allows the Agent to access the vitals measurement parameters that will populate the ClinSpark form.

    1. If not connected:

      1. DeviceArrival does not contain a pointer to the IDeviceData object (DeviceArrival.size !> 1. When DeviceArrival is triggered, a DeviceArrival object is created. Vitals data is accessed at DeviceArrival[1], in the IDeviceData object). The Agent will then attempt to connect to the device via “sdk.Connect(INPUT XML DIRECTORY)” every 100 ms for the duration of the specified timeout, for each iteration. I.e., with a ScanDevicesTimeout of 1500ms, and a scanDevicesIterations of 10, the Agent will have attempted connection with the device 150 times before timing out and reporting an error with the connection. If an official timeout occurs (no connection within scanDevicesIteration*ScanDevicesTimeout milliseconds), workflow ends here until device in re-invoked, in which the process restarts at step 1.

    2. If connected:

      1. If connected before official timeout, then DeviceArrival.size > 1, resulting in steps 6-8 being carried out.

  6. IDeviceData has it’s vitals data retrieved, by 1) obtaining the data ID number for each vitals measurement parameter (the Welch Allyn SDK’s ID maps to NIBP (“non-invasive blood pressure” readings), temperature, etc.), and 2) using this ID, retrieving the corresponding vitals measurement parameter data.

    1. The ID is obtained with the following command, which navigates the SDK’s object path: IDeviceData.IDatum.item(INPUT SDK ITEM ID NUMBER). The SDK item ID number can be found in the SDK help documentation, under “Interfaces > IDatum.” The specific data values then, for the specified vitals measurement parameter, are retrieved via the REQUEST method (IDeviceData.IDatum.item(INPUT SDK ITEM ID NUMBER).REQUEST). 

  7. The values retrieved by the Agent are then ONLY populated in the ClinSpark form if the property “Status” (DATATYPE: Enum) of the IDatum item returns 1, meaning “Complete” (IDeviceData.IDatum.item(#).REQUEST.Status). The Agent relays “null” if the Status reports on any other value (i.e., NOT AVAILABLE, FAILED, EXCEPTION, OR PROCESSING).

    The Agent, no matter the measurement capabilities of the connected Welch Allyn device, will retrieve all vitals measurement parameters specified by the Welch Allyn SDK. If it does not exist, or is incomplete as stated in step 5, the value of the parameter is set to null, and the user is asked to wait until the device finishes measuring the person’s vitals (via a pop-up dialogue box in the Client). When the measurements are complete, the user is to to press ‘OK’ (as prompted) to close the dialogue box, allowing the Agent to attempt to pull ‘COMPLETE’ data from the Welch Allyn vitals device once more before returning null values to the Client. 

  8. Once all vitals measurement parameters are retrieved, a Map(String, Object) of all parameters (Date, Diastolic, HR, O2Sat, Pulse, Systolic, and Temperature) is converted to JSON and delivered to the ClinSpark browser for form population. If no values are retrieved from the device, the user has the opportunity to invoke the device and restart the process from Step 1, or fill in the form manually.

ClinSpark Configuration

All configuration options have sensible defaults built into the ClinSpark Agent, and thus is is not anticipated that any further server-side configuration will be required.

Here are the options for this device as seen from the ClinSpark UI:

ConfigFileContents

The ClinSpark Agent supplies the Welch Allyn SDK with a “default” XML, which instructs the SDK (through ActiveX) to establish a USB connection between the Welch Allyn device and the data collection computer (and therefore the ClinSpark Agent). The ClinSpark Client allows the user to override this default XML with an XML of their own, via this configuration option.

  • Input: XML code (refer to SDK documentation on proper syntax and available commands).

The default XML if the parameter is not specified is:

Updates can be made to this XML and provided in this parameter.  They will then be sent to the device upon invocation.

ScanDevicesTimeout

The ClinSpark Agent specifies a timeout, to prevent infinite looping in the case of connection problems when searching for devices to connect to. This value is defaulted at 1.5 seconds (1500 ms). This ScanDevicesTimeout configuration option allows the user to set this value to their liking.

  • Input: Integer (milliseconds)

ScanDevicesIterations

The ClinSpark Agent specifies how many times it will attempt to connect to the device via the ScanDevicesIterations configuration option. This value is defaulted to 10, meaning a connection will be attempted to be made 10 times, with the ScanDevicesTimeout timeout occurring each iteration. i.e., with ScanDevicesIterations and ScanDevicesTimeout defaulted, the ClinSpark Agent will attempt to connect to the device for a total of ~15 seconds before reporting error to the user.

  • Input: Integer

Data

Device Parameters

Date, Diastolic, Heart Rate (HR), Mean Arterial Pressure (MAP),  Systolic

  • In SDK Documentation, found in…

    • Interfaces > INIBPData 

  • Object hierarchy used in retrieval of specified parameter…

    • IWAConnectivity > IDevices > IDeviceData > IDatum > INIBPData > Date/Diastolic/Heart Rate (HR)/Mean Arterial Pressure (MAP)/Systolic

  • Rounding

    • Diastolic Pressure, Systolic Pressures, and MAP (mmHg)

      • Welch Allyn devices read pressures to the .01 mmHg as specified in SDK documentation, i.e., a pressure of 123.50 mmHg is reported as 12350 to the Agent. To report accurately, shifting, scaling, and rounding operations are done within the Agent using BigDecimal methods.

        • The retrieved value is made into a BigDecimal

        • The value is then shifted left two places, using leftPointShift(n) (where n = 2 in this case; turns 12350. to 123.50)

        • Using setScale(int, RoundingMode), the scale (int) is set to 0, and RoundingMode is specified as “HALF_UP,” which together rounds the pressure up or down to the nearest whole number/mmHg (if the pressure equates to 123.50 mmHg, it is rounded up to 124 mmHg)

  • Units

    • Date: MM/DD/YYYY; hh:mm (military/24-hour clock)

    • Diastolic pressure, Systolic pressure, and MAP: mmHg

    • HR: Beats per minute (BPM)

O2Sat (Only available on select devices)

  • In SDK Documentation, found in…

    • Interfaces > ISpO2Data

  • Object hierarchy used in retrieval of specified parameter…

    • IWAConnectivity > IDevices > IDeviceData > IDatum > ISpO2Data > Sat

  • Units

    • Percentage (%)

Pulse (Only available if device supports O2Sat)

  • In SDK Documentation, found in…

    • Interfaces > ISpO2Data 

  • Object hierarchy used in retrieval of specified parameter…

    • IWAConnectivity > IDevices > IDeviceData > IDatum > ISpO2Data > HR

  • Units

    • Beats per minute (BPM)

Temperature (Only available on select devices)

  • In SDK Documentation, found in…

    • Interfaces > ITempData 

  • Object hierarchy used in retrieval of specified parameter…

    • IWAConnectivity > IDevices > IDeviceData > IDatum > ITempData > Temperature

  • Units

    • Kelvin (K)

  • Conversion

    • The ClinSpark Agent leverages the Welch Allyn SDK to report the appropriate temperature reading to ClinSpark (matching the displayed temperature on the Welch Allyn device) for form population. The Agent accesses the property “DisplayUnits” (enum), which returns either a 0 (Fahrenheit) or 1 (Celsius), via the following object path: IWAConnectivity > IDevices > IDeviceData > IDatum > ITempData > ITempConfig > DisplayUnits. Based on which value is returned from the enum, the Agent performs the appropriate operation to convert Kelvin to either Celsius or Fahrenheit. 

      • Kelvin is converted to Celsius using the following equation:

        • Temperature (Kelvin) - 273.15

      • Kelvin is converted to Fahrenheit using the following equation:

        • Temperature (Kelvin) * (9/5) - 459.67

  • Rounding

    • Welch Allyn devices read temperatures to the .01 degrees (Kelvin; therefore also for C or F after conversion) as specified in SDK documentation, i.e., a temperature of 371.55 K is reported as 371.55 to the Agent. To report accurately, scaling, and rounding operations are done within the Agent using BigDecimal methods.

      • The retrieved value is made into a BigDecimal

      • Using setScale(int, RoundingMode), the scale (int) is set to 1, and RoundingMode is specified as “HALF_UP,” which together rounds the temperature up or down to the nearest tenths place (if the temperature equates to 371.55 K, rounds up to 371.6 K).

ClinSpark User Interface

Roles

The interaction of the interface is facilitated by qualified users.  Typically, these are staff that are responsible for facilitating data collection activities, where a Welch Allyn device would be found and used.

Input Modes

Data collection can be performed in various components within the ClinSpark application.  Generally, the Data Collection component presents the ability to invoke the interface and collect data.

The following is a general overview of the interface user experience within ClinSpark.

The user starts or ‘invokes’ measurement by way of clicking the ‘Invoke Device’ button or scanning the device barcode.

If a connection can be made to the device, the user is given a message indicating that they need to acquire the data with the device and then click ‘ok’ when done.

Assuming measurements were collected properly, the SDK will obtain them and populate the form.

The device values are erased upon successful transfer to the ClinSpark user interface.

Error Scenarios

If a connection cannot be made, the user is given an error alert. Error alerts can occur if:

  • The required SDK is not available on the computer in question

  • The device is not connected

If the Welch Allyn Connectivity SDK is not detected or installed, users will also receive an error.

Notes/Miscellaneous

  • The default password to edit advanced settings in the device is found in the ‘service manual’ and is as follows: 6345

  • It is described above that a HALF_UP rounding mechanism is sometimes used. Following are some examples of this rounding algorithm from Java programing language documentation.

  • The USB port/cable used to connect to the laptop running the Agent must allow for bidirectional data transfer. Please consult your device manual or Welch Allyn to confirm which port can be used.

Exported and Printed Copies Are Uncontrolled