Difference between revisions of "Phonegap Healthcare Adapter Design"

From CDOT Wiki
Jump to: navigation, search
(Class Diagram)
 
(14 intermediate revisions by one other user not shown)
Line 1: Line 1:
 +
{{Admon/obsolete}}
 +
 
[[Category: NexJ_Express]]
 
[[Category: NexJ_Express]]
 
[[category: NexJ Express PhoneGap]]
 
[[category: NexJ Express PhoneGap]]
Line 5: Line 7:
 
'''''NexJ Medical Peripheral Mobile Adapter''''' Will be designed to enable NexJ's Mobile Healthcare solutions to interact with Bluetooth peripherals.
 
'''''NexJ Medical Peripheral Mobile Adapter''''' Will be designed to enable NexJ's Mobile Healthcare solutions to interact with Bluetooth peripherals.
  
: ''{{Main|Phonegap Healthcare Adapter}}''
+
: ''{{Main|Mobile Medical Device Integration}}''
 +
: ''{{See Also|Phonegap Healthcare Adapter Bluetooth Implementation|Phonegap Healthcare Adapter Bluetooth Spec}}''
  
 
== Class Diagram ==
 
== Class Diagram ==
[[File:NexjBluetooth.png|left]]
+
[[File:NexjBluetooth.png|right]]
 
=== Classes ===
 
=== Classes ===
 
==== phonegapMedicalDeviceInterface ====
 
==== phonegapMedicalDeviceInterface ====
Line 34: Line 37:
 
=== Flaws ===
 
=== Flaws ===
 
* Should we be concerned about managing the instances of ''medicalDevice'' or will the rest of the solution
 
* Should we be concerned about managing the instances of ''medicalDevice'' or will the rest of the solution
 +
** ''Rest of the application'': It becomes more of a Medical device factory
 +
** ''This Project'': Another layer should be added to represent a device manager
 
* bloodPressureBluetoothAdapter should know about specific device communication without relying on any specific communication protocol, otherwise it will need be reimplemented per communication adapter(eg. BluetoothAdapter, WifiAdapter)
 
* bloodPressureBluetoothAdapter should know about specific device communication without relying on any specific communication protocol, otherwise it will need be reimplemented per communication adapter(eg. BluetoothAdapter, WifiAdapter)
 +
== Mobile Device Libraries ==
 +
=== iOS ===
 +
==== Wifi ====
 +
* Unknown at this time
 +
==== Bluetooth ====
 +
* [http://developer.apple.com/library/ios/#documentation/CoreBluetooth/Reference/CBCentralManager_Class/translated_content/CBCentralManager.html#//apple_ref/doc/uid/TP40011284 CBCentralManager] entry point to Bluetooth communication
 +
** Allows querying of devices
 +
** Can list connected devices
 +
** Can connect to devices, creating [http://developer.apple.com/library/ios/#documentation/CoreBluetooth/Reference/CBPeripheral_Class/translated_content/CBPeripheral.html#//apple_ref/doc/c_ref/CBPeripheral CBPreripheral] Objects
 +
* [http://developer.apple.com/library/ios/#documentation/CoreBluetooth/Reference/CBPeripheral_Class/translated_content/CBPeripheral.html#//apple_ref/doc/c_ref/CBPeripheral CBPeripheral]'s allows reading and writing of [http://developer.apple.com/library/ios/#documentation/CoreBluetooth/Reference/CBCharacteristic_Class/translated_content/CBCharacteristic.html#//apple_ref/doc/c_ref/CBCharacteristic CBCharacteristic] Objects
 +
** Can listen for changes to characteristics
 +
** Writing and reading is event driven programing via callback parameters
 +
* [http://developer.apple.com/library/ios/#documentation/CoreBluetooth/Reference/CBCharacteristic_Class/translated_content/CBCharacteristic.html#//apple_ref/doc/c_ref/CBCharacteristic CBCharacteristic]'s represent a piece of data from a device along with semantic data
 +
 +
=== Android ===
 +
==== [http://developer.android.com/reference/android/net/wifi/p2p/package-summary.html Wifi] ====
 +
* [http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html WifiP2pManager] is the starting point for all peer to peer communication
 +
** Upon initialization devices connections can be established
 +
** Peers can be queried
 +
==== [http://developer.android.com/reference/android/bluetooth/package-summary.html Bluetooth] ====
 +
* Supports many 'paired' devices
 +
* [http://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html BluetoothAdapter] is the starting point for all Bluetooth communication
 +
** Discover devices
 +
** Query addresses
 +
** Get remote [http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html BluetoothDevice] objects
 +
** Control [http://developer.android.com/reference/android/bluetooth/BluetoothProfile.html BluetoothProfile]'s
 +
** Create listening sockets to addresses
 +
* Classes Implementing [http://developer.android.com/reference/android/bluetooth/BluetoothProfile.html BluetoothProfile] can be queried for [http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html BluetoothDevice] Objects, implementing classes:
 +
** [http://developer.android.com/reference/android/bluetooth/BluetoothA2dp.html BluetoothA2dp]
 +
** [http://developer.android.com/reference/android/bluetooth/BluetoothHeadset.html BluetoothHeadset]
 +
** [http://developer.android.com/reference/android/bluetooth/BluetoothHealth.html BluetoothHealth]
 +
* [http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html BluetoothDevice] objects allow the creation secure and insecure [http://developer.android.com/reference/android/bluetooth/BluetoothSocket.html Bluetooth socket]'s
 +
** These all data transfer between physical devices
 +
** Bluetooth protocols are transparent
 +
 +
=== Comparison ===
 +
==== Requirements ====
 +
* Querying of devices
 +
** Supported by both platforms on both communication mediums
 +
* The ability to fetch data from devices
 +
** Supported by both platforms on both communication mediums
 +
** Assuming connections have been created with medical devices, this requires a known address to be cross referenced with current devices from the ''query'' functionality above
 +
* ''Optional'' The ability to push data to devices
 +
** See above
 +
==== Assumptions ====
 +
* NexJ's spec dictates that devices can be assumed paired
 +
* Any semantic information required will be provided upon initialization

Latest revision as of 19:37, 26 January 2014

Important.png
This page may be obsolete.
It contains historical information.

NexJ Medical Peripheral Mobile Adapter Will be designed to enable NexJ's Mobile Healthcare solutions to interact with Bluetooth peripherals.

Class Diagram

NexjBluetooth.png

Classes

phonegapMedicalDeviceInterface

  • Interface to a medical device for use by the NexJ mobile health solution
  • Implemented in Javascript

medicalDevice

  • Representation of a medical device
  • Delegates to a native medical device interface
  • Implemented in Javascript

nativeMedicalDeviceInterface

  • Private interface to physical medical devices
  • Implemented in native code (Objective C on iOS, java on Android)

bluetoothAdapter

  • Adapter to allow medical device objects to interact with communication libraries on the device
  • In the future a Wifi adapter will also be needed to fulfill the same role of communication over another protocol
  • Implemented in native code

bloodPressureBluetoothAdapter

  • Adapter to allow medical device objects to interact with specific medical peripherals
  • These will be needed for each type of medical peripheral
  • Implemented in native code

Native Bluetooth API

  • Libraries on the mobile devices SDK that allows programmable interaction with Bluetooth devices

Blood Pressure Device

  • Physical medical device peripheral

Flaws

  • Should we be concerned about managing the instances of medicalDevice or will the rest of the solution
    • Rest of the application: It becomes more of a Medical device factory
    • This Project: Another layer should be added to represent a device manager
  • bloodPressureBluetoothAdapter should know about specific device communication without relying on any specific communication protocol, otherwise it will need be reimplemented per communication adapter(eg. BluetoothAdapter, WifiAdapter)

Mobile Device Libraries

iOS

Wifi

  • Unknown at this time

Bluetooth

  • CBCentralManager entry point to Bluetooth communication
    • Allows querying of devices
    • Can list connected devices
    • Can connect to devices, creating CBPreripheral Objects
  • CBPeripheral's allows reading and writing of CBCharacteristic Objects
    • Can listen for changes to characteristics
    • Writing and reading is event driven programing via callback parameters
  • CBCharacteristic's represent a piece of data from a device along with semantic data

Android

Wifi

  • WifiP2pManager is the starting point for all peer to peer communication
    • Upon initialization devices connections can be established
    • Peers can be queried

Bluetooth

Comparison

Requirements

  • Querying of devices
    • Supported by both platforms on both communication mediums
  • The ability to fetch data from devices
    • Supported by both platforms on both communication mediums
    • Assuming connections have been created with medical devices, this requires a known address to be cross referenced with current devices from the query functionality above
  • Optional The ability to push data to devices
    • See above

Assumptions

  • NexJ's spec dictates that devices can be assumed paired
  • Any semantic information required will be provided upon initialization