OpenICE Community Support Forum

Welcome to the OpenICE community support forum. Use this forum for submitting bugs, asking for help, and solving problems you are having with OpenICE software. For ideas, general questions, and conversation please use the discussion forum.
0
Under review
Bradford Needham 2 years ago in OpenICE • updated by Jeff Plourde 2 years ago 6
I'm writing an OpenICE app designed to report the on/off state of various Devices. So far I've successfully modified Hello OpenICE code to Subscribe to HeartBeat and DeviceIdentity Topics. The HeartBeat data seems to arrive fine, but the DeviceIdentity data has problems.

In the received DeviceIdentity, the model name is blank, rather than being something like "Pulse Ox (simulated)". I've seen some symptoms that suggest that the model string gets filled in later, but I'm not certain of that.

I wanted to double-check with you that I'm using the correct pattern to read the DeviceIdentity data: I substituted class names in Hello OpenICE code based on some guesswork, so something may be incorrect. Based on the symptom I'm wondering whether I'm not properly telling DDS that I want to read the data contents. I haven't found an example of reading DeviceIdentity in the mdpnp git.

Here is the relevant code (adapted from HelloICE.java) - I apologize for the formatting. Note that on reception of a Pulse Ox (simulated) DeviceIdentity, the model field is blank.

Thanks for your help,
Brad
---------------------------------

public void on_data_available(DataReader reader) {
ice.DeviceIdentitySeq deviceIdentitySeq = new ice.DeviceIdentitySeq();
SampleInfoSeq infoSeq = new SampleInfoSeq();
DeviceIdentityDataReader diReader = (DeviceIdentityDataReader) reader;
try {
diReader.read(deviceIdentitySeq, infoSeq, ResourceLimitsQosPolicy.LENGTH_UNLIMITED, SampleStateKind.NOT_READ_SAMPLE_STATE, ViewStateKind.ANY_VIEW_STATE, InstanceStateKind.ALIVE_INSTANCE_STATE);
/*
* Bug: the model number info seems blank. Example output:
* 2015-09-24 13:50:11 DEBUG IceQos:50 - Loaded default ice_library QoS
* 2015-09-24 13:51:30 ERROR DeviceIdentityListener:75 - Empty model in received DeviceIdentity
* 2015-09-24 13:51:30 INFO HelloIce:75 - ON: manuf: , model: , serial:
* 2015-09-24 13:51:47 INFO HelloIce:75 - OFF: manuf: , model: , serial:
*/
Date now = new Date();
for(int i = 0; i < infoSeq.size(); i++) {
SampleInfo si = (SampleInfo) infoSeq.get(i);
ice.DeviceIdentity data = (ice.DeviceIdentity) deviceIdentitySeq.get(i);
if(si.valid_data) {
if (data.model.length() == 0) {
logger.error("Empty model in received DeviceIdentity");
}

tracker.sawIdentity(data, now);
}

}
} catch (RETCODE_NO_DATA noData) {
// No Data was available to the read call
} finally {
// the objects provided by "read" are owned by the reader and we must return them
// so the reader can control their lifecycle
diReader.return_loan(deviceIdentitySeq, infoSeq);
}

}



OpenICE
0
Under review
Bradford Needham 2 years ago in OpenICE • updated by Jeff Plourde 2 years ago 3
I'm writing an OpenICE application to keep track of what Devices are running, and note (on a UI) when they come and go.

So far, I've successfully written code to Subscribe to and Read HeartBeatTopic data, and filtered out the Supervisor data vs. Devices' data. Now that I have unique device IDs from the HeartBeat, I want to ask the model number (and more if I can) of the Device that sent the HeartBeat.

How do I do that?

Thanks,
Brad
0
Answered
Hyungi Kim 2 years ago in OpenICE • updated by zhangtan 2 years ago 22
Hi, guys!

I was installed Revision C Disk Image and gradle-2.4 and sync to a NTP clock on BBB.
but, jdk 8u33 in Rev.C disk image is not build OpenICE source on BBB. (./gradlew)
The reason is 8u33 is not supported JavaFx. so I reinstalled jdk 8u6.
but OpenICE source is not build on BBB....
I want to build OpenICE source on BBB.
help me how to build OpenICE source on BBB or build reference.

p.s - Your device adapter(BBB) have a rs-232 serial port. my BBB don't have a serial port. T.T


thanks
Hyungi
OpenICE device-adapter
0
Under review
Bradford Needham 2 years ago • updated 2 years ago 2
When I try to login to community.openice.info from our corporate network, the login doesn't fail, but doesn't seem to authenticate - it's as if I'm not logged in.

Logging in from my phone-as-hotspot (no proxy or firewall) works fine.

So I need to find what about or corporate proxy or firewall is preventing my logging into the community site. More info as I find it.
ICE
0
Under review
Tav Pritesh Sethi 2 years ago • updated by Jeff Peterson 2 years ago 1
Hello, can we expect support for Mindray Beneview series of Patient monitors anytime soon?
OpenICE
0
Answered
Rado 2 years ago in OpenICE • updated by Jeff Peterson 2 years ago 6
Hi everyone,

Sorry to keep asking questions, but this one has actually bugged us for a while now. Do you know how to make the Puritan Bennett 840 ventilator output waveform data?

We have tried all ports but all we get is the miscf message with numeric data only. We can't see any options on the ventilator itself either. As far as I understand from the code, the PB demo is also only set up to ask for numeric data.

Any insight you might have will be appreciated.

Thanks!

Rado
OpenICE demo-apps
+1
Under review
Rado 2 years ago in OpenICE • updated by Tim 2 years ago 3
Do you guys have any experience with Alaris pumps? We have one in the lab but I can't get it to export data. The manuals are not very helpful either - apparently there is some software (also developed by Alaris) that seems to be the only way to export data.

Thanks,
Rado
0
Answered
Jegan Kunniya 2 years ago in OpenICE • updated by Alejandro Figar 2 years ago 6
Hi,
I have cloned the OpenICU (master) branch on my Win-7 and hosted it on IIS7.5. When I visit the OpenICU Webdemo page of hosted website (http://localhost/openice/demo.html), the 'Connecting..' status never changes.

Upon debugging, figured out that the generated 'openice.info.js' file is needed under the build folder. Downloaded the same from the OpenICE website (https://www.openice.info/demo.html) and then I started getting the following 404 error trace

http://localhost/socket.io/?EIO=3&transport=polling&t=1427954861373-0

I don't have NodeJs server running on my machine as I presently don't have any insights on how to use it for OpenICE locally.

Any help is highly appreciated.

Thanks.

0
Answered
Hank Jiang 2 years ago in OpenICE • updated by Jeff Plourde 2 years ago 1
Hi,
I would like to use Android App,but I can not build it.

NOTE: To build with OpenSplice compatibility please set the OSPL_HOME and SPLICE_TARGET environment variables.
Defining custom ‘build’ task is deprecated when using standard lifecycle plugin has been deprecated and is scheduled to be removed in Gradle 3.0

FAILURE: Build failed with an exception.

* What went wrong:
Project 'android-apps' not found in project ':interop-lab'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 9.311 secs
---------------------------------------------------
How could I build it?

Best regards.

Answer
Jeff Plourde 2 years ago
Hi Hank

The "android-apps" project was a simple demonstration of connecting directly to the Nonin Bluetooth Pulse Oximeter from an Android device. The project is no longer part of the build since 19-June-2013. It remains in the repo for reference but it has been deprecated since that time.

https://github.com/mdpnp/mdpnp/commit/3ca61af431974744813a0c735b8d16104e16c6cc

Thank you
Jeff Plourde
0
Answered
Hyungi Kim 2 years ago in DDS • updated by Jeff Peterson 2 years ago 3
Hi, guys!

What are RTI-dds & OpenSplice for? on OpenICE.
I think RTI using the transform of idl to java.
that's right?

I want to know the exact usage.

Thanks,
Hyungi

DDS OpenICE
Answer
Jeff Peterson 2 years ago
Hi Hyungi,

DDS is a distributed system abstraction layer that passes messages between the OpenICE nodes. DDS is technically a standard with commercial implementations distributed by RTI and PrismTech (OpenSplice). OpenICE is distributed with a community edition of RTI DDS.

More information about how we use DDS in OpenICE can be found in the working-draft of OpenICE App Architecture Description.

Thanks,
Jeff
+3
Jeff Plourde 2 years ago in DDS • updated 2 years ago 0
The OpenICE systems need to track the presence and availability of various devices in the system. There are a lot of possible ways to maintain the known "liveliness" of remote participants. Here are some of the ways we have tried in the past and the solution which we have converged upon during OpenICE development.

  • Participant Liveliness
    • Our first mechanism was to use DDS metadata to track the liveliness of remote participants. In principle this worked but it had several drawbacks and unmet requirements...
      • It may not always be desirable to maintain a 1:1 correspondence between participant and device. For instance a participant accepting connections from bluetooth devices might actually communicate data for a number of such devices through one DDS Participant.
      • Participant meta-data does not usually get relayed between DDS networks. Further, when data is relayed to a remote network (perhaps at the central monitoring or data center scope) it is presented to that network through a new participant local to that network.
      • Configuration of discovery-related parameters is vendor-specific so establishing compatible settings can be difficult.
  • DeviceIdentity instance Liveliness
    • Our next attempt was at using the Liveliness of DeviceIdentity instances to track remote device liveliness.
      • This successfully breaks the undesirable 1:1 correspondence participant and device.
      • The problem here is that DeviceIdentity is not frequently republished. Meaning that once a reader has received a DeviceIdentity instance sample it *will* properly mark that instance "NOT ALIVE" when it fails to communicate a heartbeat; but later when the connection is re-established there is no new sample to communicate and the state of the instance will not become ALIVE until a new sample is produced.
  • A distinct HeartBeat topic
    • To meet our requirements we created a Topic in the system expressly for the purpose of discerning liveliness.
    • By contract devices all must publish a new sample of Heartbeat every two seconds. The sample size is deliberately kept very small; including only UDI and a device type.
    • Because this is "user" level data (and not metadata) from the DDS perspective it will "properly" traverse routes and links between DDS systems.
    • This topic is described in our IDL. Our QoS settings are in a profile called "heartbeat" within ice_library.xml.
    • You can view realtime Heartbeats from devices in our lab on our diagnostics page.
DDS OpenICE demo-apps
0
Answered
Hyungi Kim 2 years ago in OpenICE • updated 2 years ago 3
I want to know about the data format received from device.
Although, i saw the Open Source and Standard Document(ISO/IEEE 11073-10101).
But, i didn't found about that.
What should i reference to?

please help me

Thanks
Hyungi Kim

OpenICE device-adapter
0
Answered
Thomas Drake-Brockman 2 years ago in OpenICE • updated by Jeff Peterson 2 years ago 11
Hey,

Since getting our Philips MX800 to connunicate correct with OpenICE, I've noticed that some numerics are not being transmitted.

In particular Respiratory Rate, and Exhaled Carbon Dioxide. Neither of these display when viewing the device through the demo apps, although the EtCO2 waveform does come across:




I did notice that the RR values does seem to be present in the messaged produced when I run hello-openice, such as follows:

unique_device_identifier: OC2rcpaYQdOQnLgTvRH0ZCYya91i71pPsxjK
metric_id: MDC_VENT_RESP_RATE
vendor_metric_id: NOM_VENT_RESP_RATE
instance_id: 34628
unit_id: MDC_DIM_RESP_PER_MIN
value: 22.0
device_time :
    sec: 1432600653
    nanosec: 643000000
presentation_time :
    sec: 1432600562
    nanosec: 0
It's currious that these values don't display in the device adapter view. Also, I definately can't find any references to a EtCO2 numeric in the output. Is this cponsistent with your experience with the MX800?

I noticed that intellivue.map appears to define the numerics and waves that are collected from the monitor. Is it simply a case of modifying this file to include the numerics I require? Or do I have to 'teach' OpenICE or the device adapter about these parameters elsewhere also?

In particular, I'm looking to access NOM_AWAY_CO2_ET (from the Philips Data Export Manual) I'd be most appreciative if you could provide some guidance on how to do so.
demo-apps device-adapter
0
Answered
Kai N 2 years ago in OpenICE • updated by Jeff Peterson 2 years ago 4
Hi,

I was looking into your system and already managed to compile the code and run the demo-apps. Now I am wondering, if there is a way to control parameters as a supervisor?
For example: I am running the supervisor app, connect to a (simulated) infusion pump and I want to change a parameter, e.g. the drug (name) or the drug mass.

Are such actions possible within your system?

Best regards,
Kai
OpenICE demo-apps
+1
Searching answer
NathanS 2 years ago in OpenICE • updated by Jeff Peterson 2 years ago 2
Hi,

I noticed that at least one other user has had difficulties using OpenICE with Philips Rev K devices.

I have been able to successfully connect to Philips MP70 and MP50 devices with Rev G (and I believe the MD PnP lab has Rev J).

I recently had the opportunity to test OpenICE on a Philips X2, Rev K.2. The X2 does not have a serial port, so I used the LAN port on the external battery pack, and ran the monitor in demo mode. OpenICE was able to successfully connect, and is able to extract the numerics alright, but there are problems with the waveforms. Initial waveforms appear in the GUI, but then stop (I was using version 0.6.3 of OpenICE).

The log file shows that the waveforms have "no new samples to emit", and that the physioId of one of the signals is being read in as 0. There is also a DDS error indicating that the participant information was not available for device identity publication (see log file excerpt below).

Initially, and occasionally afterwards, there is valid waveform data in the sample array updates (viewed in the debugger). However, very quickly after starting, the updates start coming back empty. I have written code to export the numerics/waveform data to csv; the numerics data is written fine, but not even the first packet of waveform data is recorded.

I remember seeing the flags INVALID | QUESTIONABLE | UNAVAILABLE in the debugger for the MeasurementState of SampleArrayObservedValue objects (with physioId = 0).

I later tried testing on an X2 with rev J, and the software worked without problems. So there does seem to be a problem with rev K (and possibly newer) devices.

I have compared the export interface manuals for both Rev H and Rev K, and the differences between the two appear to be minimal (a few new objects have been defined).

Unfortunately I have had to send back the X2 rev K I had on loan, so I am unable to do much more hands-on troubleshooting myself at the moment. I do still have log files, and I did spend some time with a java debugger stepping through the code (mostly in AbstractDemoIntellivue and AbstractDevice), so I might be able to answer some questions... But hopefully the above information will be helpful when one of you needs to troubleshoot rev K or higher devices!

Regards,
Nathan

---------------------------------------------------

2015-05-26 14:38:23,524 | WARN | Bean with key 'timeManager' has been registered as an MBean but has no exposed attributes or operations | org.springframework.jmx.export.MBeanExporter | JavaFX Application Thread
2015-05-26 14:38:23,576 | ERROR | [D0000|Reader(80000807)|T=DeviceIdentity|GET_MATCHED Participant DATA]DDS_DataReader_get_matched_publication_participant_data:ERROR: Failed to get discovered_participant_data | com.rti.dds | EventLoopHandler
2015-05-26 14:38:23,576 | WARN | Unable to get participant information for DeviceIdentity publication | org.mdpnp.apps.testapp.DeviceListModelImpl | EventLoopHandler
2015-05-26 14:38:23,617 | INFO | Connecting to >126.3.145.100< | org.mdpnp.devices.DeviceDriverProvider$SpringLoadedDriver | Thread-15
2015-05-26 14:38:23,849 | INFO | Start emit fast data for period 2000ms | org.mdpnp.devices.philips.intellivue.DemoEthernetIntellivue | Network Loop
2015-05-26 14:38:24,375 | INFO | ProductionSpecification | org.mdpnp.devices.philips.intellivue.AbstractDemoIntellivue$IntellivueExt | Network Loop
2015-05-26 14:38:24,376 | INFO | [[specType=SERIAL_NUMBER,componentId=ID_COMP_PRODUCT,prodSpec=DE037A8036], [specType=PART_NUMBER,componentId=ID_COMP_PRODUCT,prodSpec=M3002A], [specType=PART_NUMBER,componentId=ID_COMP_APPL_SW,prodSpec=S-M8102-1501A ], [specType=SW_REVISION,componentId=ID_COMP_APPL_SW,prodSpec=K.21.39 ], [specType=PART_NUMBER,componentId=ID_COMP_CONFIG,prodSpec=S-M8102-1401A ], [specType=SW_REVISION,componentId=ID_COMP_CONFIG,prodSpec=K.21.39 ], [specType=PART_NUMBER,componentId=ID_COMP_BOOT,prodSpec=S-M8000-1301A ], [specType=SW_REVISION,componentId=ID_COMP_BOOT,prodSpec=A.16.24]] | org.mdpnp.devices.philips.intellivue.AbstractDemoIntellivue$IntellivueExt | Network Loop
2015-05-26 14:38:24,378 | ERROR | [D0000|Reader(80000807)|T=DeviceIdentity|GET_MATCHED Participant DATA]DDS_DataReader_get_matched_publication_participant_data:ERROR: Failed to get discovered_participant_data | com.rti.dds | EventLoopHandler
2015-05-26 14:38:24,379 | WARN | Unable to get participant information for DeviceIdentity publication | org.mdpnp.apps.testapp.DeviceListModelImpl | EventLoopHandler
2015-05-26 14:38:24,382 | ERROR | [D0000|Reader(80000807)|T=DeviceIdentity|GET_MATCHED Participant DATA]DDS_DataReader_get_matched_publication_participant_data:ERROR: Failed to get discovered_participant_data | com.rti.dds | EventLoopHandler
2015-05-26 14:38:24,382 | WARN | Unable to get participant information for DeviceIdentity publication | org.mdpnp.apps.testapp.DeviceListModelImpl | EventLoopHandler
2015-05-26 14:38:27,442 | WARN | No ObservedValue for 0 | org.mdpnp.devices.philips.intellivue.AbstractDemoIntellivue$IntellivueExt | Network Loop
2015-05-26 14:38:27,443 | WARN | No ObservedValue for 0 | org.mdpnp.devices.philips.intellivue.AbstractDemoIntellivue$IntellivueExt | Network Loop
2015-05-26 14:38:27,444 | WARN | No ObservedValue for 0 | org.mdpnp.devices.philips.intellivue.AbstractDemoIntellivue$IntellivueExt | Network Loop
2015-05-26 14:38:27,469 | WARN | No SampleArraySpecification or RelativeTime for handle=2006 rt=null sas=null sar=null unitCode=null | org.mdpnp.devices.philips.intellivue.AbstractDemoIntellivue$IntellivueExt | Network Loop
2015-05-26 14:38:28,002 | WARN | MDC_IMPED_TTHOR 1827 will repeat 109 old samples to make up a shortfall | org.mdpnp.devices.philips.intellivue.DemoEthernetIntellivue | taskExecutor-1
2015-05-26 14:38:28,002 | WARN | MDC_IMPED_TTHOR 1827 filling in 109 zeros; this should not continue happening | org.mdpnp.devices.philips.intellivue.DemoEthernetIntellivue | taskExecutor-1
2015-05-26 14:38:28,006 | WARN | MDC_ECG_LEAD_III 1817 will repeat 872 old samples to make up a shortfall | org.mdpnp.devices.philips.intellivue.DemoEthernetIntellivue | taskExecutor-1
2015-05-26 14:38:28,006 | WARN | MDC_ECG_LEAD_III 1817 filling in 872 zeros; this should not continue happening | org.mdpnp.devices.philips.intellivue.DemoEthernetIntellivue | taskExecutor-1
2015-05-26 14:38:28,020 | WARN | MDC_ECG_LEAD_II 1817 will repeat 872 old samples to make up a shortfall | org.mdpnp.devices.philips.intellivue.DemoEthernetIntellivue | taskExecutor-1
2015-05-26 14:38:28,020 | WARN | MDC_ECG_LEAD_II 1817 filling in 872 zeros; this should not continue happening | org.mdpnp.devices.philips.intellivue.DemoEthernetIntellivue | taskExecutor-1
2015-05-26 14:38:28,034 | WARN | MDC_ECG_LEAD_I 1817 will repeat 872 old samples to make up a shortfall | org.mdpnp.devices.philips.intellivue.DemoEthernetIntellivue | taskExecutor-1
2015-05-26 14:38:28,034 | WARN | MDC_ECG_LEAD_I 1817 filling in 872 zeros; this should not continue happening | org.mdpnp.devices.philips.intellivue.DemoEthernetIntellivue | taskExecutor-1
2015-05-26 14:38:28,464 | WARN | No ObservedValue for 0 | org.mdpnp.devices.philips.intellivue.AbstractDemoIntellivue$IntellivueExt | Network Loop
2015-05-26 14:38:28,466 | WARN | No ObservedValue for 0 | org.mdpnp.devices.philips.intellivue.AbstractDemoIntellivue$IntellivueExt | Network Loop
...
org.mdpnp.devices.philips.intellivue.AbstractDemoIntellivue$IntellivueExt | Network Loop
2015-05-26 14:38:30,001 | WARN | MDC_IMPED_TTHOR 1827 no new samples to emit | org.mdpnp.devices.philips.intellivue.DemoEthernetIntellivue | taskExecutor-1
2015-05-26 14:38:30,002 | WARN | MDC_ECG_LEAD_III 1817 no new samples to emit | org.mdpnp.devices.philips.intellivue.DemoEthernetIntellivue | taskExecutor-1
2015-05-26 14:38:30,002 | WARN | MDC_ECG_LEAD_II 1817 no new samples to emit | org.mdpnp.devices.philips.intellivue.DemoEthernetIntellivue | taskExecutor-1
2015-05-26 14:38:30,002 | WARN | MDC_ECG_LEAD_I 1817 no new samples to emit | org.mdpnp.devices.philips.intellivue.DemoEthernetIntellivue | taskExecutor-1
2015-05-26 14:38:30,516 | WARN | No ObservedValue for 0 | org.mdpnp.devices.philips.intellivue.AbstractDemoIntellivue$IntellivueExt | Network Loop
2015-05-26 14:38:30,518 | WARN | No ObservedValue for 0 | org.mdpnp.devices.philips.intellivue.AbstractDemoIntellivue$IntellivueExt | Network Loop
2015-05-26 14:38:30,518 | WARN | No ObservedValue for 0 |
...
2015-05-26 14:38:33,593 | ERROR | [D0000|Reader(80000807)|T=DeviceIdentity|GET_MATCHED Participant DATA]DDS_DataReader_get_matched_publication_participant_data:ERROR: Failed to get discovered_participant_data | com.rti.dds | EventLoopHandler
2015-05-26 14:38:33,593 | WARN | Unable to get participant information for DeviceIdentity publication | org.mdpnp.apps.testapp.DeviceListModelImpl | EventLoopHandler


-----------------------------------------------



OpenICE demo-apps device-adapter