CPAP Data Viewer for Respironics System One

My CPAP data viewer now includes Pulse/Ox data, the pink panel, and 3-axis accelerometer data to show body position. These coupled with Zeo sleep phase allow me to say the obstructive apnea the machine scored doesn't count. Zeo says I was awake, the blue bar between the green in the peach panel. The blue line in the green panel says I am in the process of repositioning. My AHI is better than I thought.
For more on these latest additons see PulseOX_Position

I find myself a user of CPAP. Like many others I wanted to know how well the machine is doing at keeping my airway open and what my AHI is on a nightly basis. I found out about EncoreViewer software available from Philips, the maker of the equipment. It sell for about $100. I also found out about SleepyHead and Onkor on, a forum devoted to CPAP issues. But I also found enough info on the aforementioned forum to allow me to build my own application. I was looking for a a vehicle to learn C#, Visual Studio and .net. Coincidence dropped the project into my lap.

This is not medical software. It should not even be considered to be even beta software. There is NO warranty of any kind associated with the use of this software. .net 4 is required to use this software!

Click here to download a Zip file containing the executable and some sample data. Unzip to an empty folder and double click on cpapViewer.exe to run. When the initial form opens you may click File on the main menu or type Alt-F. There is only one option on the File menu. It is to load the 002 files. This will prompt for a path before actually loading the 002 data, then will prompt for the path to load the Zeo Sleep data. Use the provided cpap files and sleep file folders respectively. If loading your own data navigate the the P0 folder containing the 001, .002, and .005 files. If you do not have ZEO data click cancel when prompted to load Sleep data.

If all goes well you should have a grid with 7 rows of data. You may click on the grid (except the empty row, bug just stumbled onto) and see condensed displays near the bottom of the form. The top bar displays the CPAP event data. The lower bar shows the ZEO sleep data. You double click the grid, type Alt-D, or click the Details button to get a detail form showing more information on the night.


The detail form opens with a time span of 2 hours showing and all CPAP event types displayed in the Event types control. The events are time stamped with the number of seconds since the start of the session. During “normal” breathing there will be one event record every two minutes or 120 seconds. The control displays 5 “events”. Any “event” that shows simultaneously in the event types control and in the breathing events panel will be displayed with matching color codes. These colors can be changed via a preferences option on the main menu on the initial form. The events may be scrolled. When scrolled to before or after the events displayed on the breathing panel the events in the event type scroll box will not be color coded. You may click on an event in the scroll box and the display below will center at the beginning of the event. The scroll box will try to center itself on the event just clicked.

There are a number of check boxes associated with the Event types control. They may be used to filter the events to be shown in the scroll box making it easier to zoom to a particular event. When the All box is check all others become unchecked. Any combination of the other events may be check simultaneously.

Right clicking in the scroll box gives the option to sort the events in time stamp (natural order) or sorted by duration order. The third option has not been implemented.


To the left of the Event Types are a group of largely self explanatory time related controls and labels.


The center part of the display slows time based information about breathing and sleeping events. The expansion of the condensed bars shown on the initial form are also shown here, with a legend for each. The first bar, labeled Breathing events has its legend on the left. The Sleep phase, shown second, has its legend to the right. Below them is a pressure graph and a leakage graph. The pressure line misrepresenting reality slightly. I have exaggerated the pulse amplitude so it will show better.

The time base may be altered with mouse events, in addition to the Time Stuff controls. Similar to clicking in the scroll box, you may click in the panel and the event clicked on will zoom to the left edge. You ay also swipe (left click and drag) a region to condense the time base and center at the center of the swipe. You may right click and drag to shift the display forward or back in time. (Not really time travel.)


The lower panel shows a breathing waveform. The time base altering mouse events are available here as well. Additionally you may use the mouse scroll wheel to expand and contract the time base. If you have extra mouse buttons X1 and X2 they also manipulate the time base.

Sleep Skew

The ZEO sleep monitor is also an alarm clock The the user can set the time on. The CPAP machine does not have a user alterable time setting. So, 12AM on each machine may not represent the same time. To allow for this I included a control to shift the sleep bar forward and back through time. I'm thinking something about -90 is closer to reality than 0 is. Find an area where the machine says I'm dreaming and look for the modulated waveform.