0

Missing Fields on Puritan Bennet 840

Achilleas 9 years ago in OpenICE updated by Paul Ourada 9 years ago 3

Hallo,


We are currently trying to export data from a local ICU, some of the medical devices that are available to us are supported by openICE. We are experiencing some problems regarding the Puritan Bennett 840 ventilator. When we directly communicate with the ventilator using the SNDF command we get the expected number of fields responce (171). But when the openICE was used only a fraction of the fields were captured (39). We tested it on 3 different ventilators, all of which yielded the same result.
The ventillators were not connected to anyone at that time, is it possible that that was the problem or we should look for something else? The operating system that runs the application is Windows 10.


One note regarding the PB840.
The PB840 has several versions, some of them have a single serial port while others have three ports. The latest openICE version requires two ports for the PB840, connecting it to a machine with only one port leads to an error message that there is no device found on the second port and thus the connection is terminated. We temporary bypassed this issue by building two different versions for the demo apps, the first using the source code as it is, and the second one with a minor change on the PB840Provider.java file:
return new DeviceType(ice.ConnectionType.Serial, "Puritan Bennett", "840", "PB840", 2);
we changed the number of devices from 2 to 1, so that only one port will be requested. Doing so we limit ourselves in capturing only the PB parameters since the DemoPB840.java uses the first port created for the PB parameters and the second for the waveforms ( if i understand it correctly ), but since we are interested only in the parameters, at least for the time being, we are fine with that.


One bug i noticed, though irrelevant to the openICE application.
On the CSVPersister.java the date used to create a testing file was hard coded using the American eastern time zone ( -05:00 ) , that resulted in an error when trying to built the whole project ( i thought it was nessessary at the time) in a different timezone ( +02:00 ).I made the following alteration, which is nothing fancy since my Java knowledge is pretty basic.On the CSVPersister.java file, i added the following library:
import java.time.ZonedDateTime;
and changed the testCVSLine() function to the following:
public void testCVSLine() throws Exception {
SimpleDateFormat dateFormat = DataCollector.dateFormats.get();
ZonedDateTime timeZone = ZonedDateTime.now();
String timeZoneString=timeZone.getOffset().toString();
timeZoneString=timeZoneString.replace(":", "");

Date d0 = dateFormat.parse("20150203.235809.985"+timeZoneString);
Value v = DataCollector.toValue("DEVICE0", "METRIC0", 0, d0.getTime(), 13.31);

String line = CSVPersister.toCSVLine(v);
Assert.assertEquals("Invalid csv line", "DEVICE0,METRIC0,0,20150203235809"+timeZoneString+",13.31", line);
}
The same issue also appears in the DataCollectorTest.java file.


Thanks,

Achilleas

OpenICE demo-apps

Hi Achilleas,


Where are you getting the 39 fields? Are you talking about the logger app provided by OpenICE? I believe if you inspect the actual message received on the serial port (e.g., using a minicom) you will see all variables. We had a similar problem but noticed that OpenICE only keeps track of a small number of variables.


Hope this helps.


Rado

Hi Rado,


Thank you for your answer. That is correct, i was talking about the logger app. The serial port responce indeed includes all the variables and we have created a script that extracts the data. But it has to be started manually on each pc connected to each ventilator which is not optimal and so we were looking for a more centralized solution via the OpenICE.


Achilleas

Seems that you could clone the source PB840 classes and modify them to read all the parameters and publish them. I'm thinking that this would entail the serial driver and the DDS writer, including the IDL for the DDS.