Repository files navigation

DOI

Vent Display

A Ventilator Display that consumes PIRDS data and performs most clinical respiration calculations

This is an important part of the Public Invention's goal of creating an open source ventilator ecosystem. This is a stand-alone .html file with about a thousand lines of JavaScript that implements a clinical display that doctors want to see of an operating ventilator. It includes live data trace plots of pressure and flow, as well as calculated values such as tidal volume.

Screen Shot 2020-06-18 at 5 07 25 AM

You can see the vent-display from our public data lake, where you can find both live and static displays.

For a hands on demonstration of Vent Display and in-depth explanation of VentMon watch our screen cast (demonstration of Vent Display occurs at 10:56). VentMon ScreenCast

The Control Interface

Public Invention, with help from the VentOS project from Helpful Engineering, is building Respireco, a complete, modular, composable respiration ecosystem. In March 2021, we added a (collapsible) "control interface" to VentDisplay which controls the parameters of a mechanical ventilator. This outputs the resulting commands in the Public Invention Respiration Control Standard (PIRCS) to a webserver via Ajax. The primary use case is for this information to be transmitted to a microcontroller running the VentOS ventilation Open Source Operating System platform, a project of Helpful Engineering.

The program serialserver.js (see below) is such a webserver written in Express which make serial port transmissions of the PIRCS messages.

Serialserver.js

Note: you may have to execute

npm install in order to load the packages used by serialserver.js

Although it may be moved in the future, this repo is the current home of serialserver.js. This program combines two functions:

  1. It accepts [PIRCS] commands via webrequest and sends them to a serial port, and
  2. It accepts [PIRDS] data via the serial port and tranmsits it via UDP requests to a UDP address and port combination.

It does both of these simultaneously while running.

A typical usage on a Mac looks like this:

node serialserver.js --uaddress=127.0.0.1 --sport=/dev/cu.usbserial-01D97104 --uport=6111

On a Windows machine, the serial port is likely named "COM4" or something similar. The parameters are:

  1. sport is the name of the serial port
  2. uport is the UDP port number (the PIRDS_logger users 6111 conventionally.)
  3. uaddress is the ip address or url of the UDP port.

A typical use case for serialserver.js is to log the action of the VentMon. A second use is to log data (either real or mock data) produced by the VentOS system, independent of the VentMon. These two use cases are an example of composability of the PubInv Respireco system.

Volunteer Needed

This is a project with a rich set of features that need to be added involving respiration calculations. Additionally, there are GUI features such as the ability to scroll back in time that need to be added. Please contact read.robert@gmail.com if you would like to volunteer.

About

A Ventilator Display that consumes PIRDS data and performs most clinical respiration calculations

Resources

Stars

6 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

DOI

Vent Display

A Ventilator Display that consumes PIRDS data and performs most clinical respiration calculations

This is an important part of the Public Invention's goal of creating an open source ventilator ecosystem. This is a stand-alone .html file with about a thousand lines of JavaScript that implements a clinical display that doctors want to see of an operating ventilator. It includes live data trace plots of pressure and flow, as well as calculated values such as tidal volume.

Screen Shot 2020-06-18 at 5 07 25 AM

You can see the vent-display from our public data lake, where you can find both live and static displays.

For a hands on demonstration of Vent Display and in-depth explanation of VentMon watch our screen cast (demonstration of Vent Display occurs at 10:56). VentMon ScreenCast

The Control Interface

Public Invention, with help from the VentOS project from Helpful Engineering, is building Respireco, a complete, modular, composable respiration ecosystem. In March 2021, we added a (collapsible) "control interface" to VentDisplay which controls the parameters of a mechanical ventilator. This outputs the resulting commands in the Public Invention Respiration Control Standard (PIRCS) to a webserver via Ajax. The primary use case is for this information to be transmitted to a microcontroller running the VentOS ventilation Open Source Operating System platform, a project of Helpful Engineering.

The program serialserver.js (see below) is such a webserver written in Express which make serial port transmissions of the PIRCS messages.

Serialserver.js

Note: you may have to execute

npm install in order to load the packages used by serialserver.js

Although it may be moved in the future, this repo is the current home of serialserver.js. This program combines two functions:

  1. It accepts [PIRCS] commands via webrequest and sends them to a serial port, and
  2. It accepts [PIRDS] data via the serial port and tranmsits it via UDP requests to a UDP address and port combination.

It does both of these simultaneously while running.

A typical usage on a Mac looks like this:

node serialserver.js --uaddress=127.0.0.1 --sport=/dev/cu.usbserial-01D97104 --uport=6111

On a Windows machine, the serial port is likely named "COM4" or something similar. The parameters are:

  1. sport is the name of the serial port
  2. uport is the UDP port number (the PIRDS_logger users 6111 conventionally.)
  3. uaddress is the ip address or url of the UDP port.

A typical use case for serialserver.js is to log the action of the VentMon. A second use is to log data (either real or mock data) produced by the VentOS system, independent of the VentMon. These two use cases are an example of composability of the PubInv Respireco system.

Volunteer Needed

This is a project with a rich set of features that need to be added involving respiration calculations. Additionally, there are GUI features such as the ability to scroll back in time that need to be added. Please contact read.robert@gmail.com if you would like to volunteer.

About

A Ventilator Display that consumes PIRDS data and performs most clinical respiration calculations

Resources

Stars

6 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DOI

Vent Display

A Ventilator Display that consumes PIRDS data and performs most clinical respiration calculations

This is an important part of the Public Invention's goal of creating an open source ventilator ecosystem. This is a stand-alone .html file with about a thousand lines of JavaScript that implements a clinical display that doctors want to see of an operating ventilator. It includes live data trace plots of pressure and flow, as well as calculated values such as tidal volume.

Screen Shot 2020-06-18 at 5 07 25 AM

You can see the vent-display from our public data lake, where you can find both live and static displays.

For a hands on demonstration of Vent Display and in-depth explanation of VentMon watch our screen cast (demonstration of Vent Display occurs at 10:56). VentMon ScreenCast

The Control Interface

Public Invention, with help from the VentOS project from Helpful Engineering, is building Respireco, a complete, modular, composable respiration ecosystem. In March 2021, we added a (collapsible) "control interface" to VentDisplay which controls the parameters of a mechanical ventilator. This outputs the resulting commands in the Public Invention Respiration Control Standard (PIRCS) to a webserver via Ajax. The primary use case is for this information to be transmitted to a microcontroller running the VentOS ventilation Open Source Operating System platform, a project of Helpful Engineering.

The program serialserver.js (see below) is such a webserver written in Express which make serial port transmissions of the PIRCS messages.

Serialserver.js

Note: you may have to execute

npm install in order to load the packages used by serialserver.js

Although it may be moved in the future, this repo is the current home of serialserver.js. This program combines two functions:

  1. It accepts [PIRCS] commands via webrequest and sends them to a serial port, and
  2. It accepts [PIRDS] data via the serial port and tranmsits it via UDP requests to a UDP address and port combination.

It does both of these simultaneously while running.

A typical usage on a Mac looks like this:

node serialserver.js --uaddress=127.0.0.1 --sport=/dev/cu.usbserial-01D97104 --uport=6111

On a Windows machine, the serial port is likely named "COM4" or something similar. The parameters are:

  1. sport is the name of the serial port
  2. uport is the UDP port number (the PIRDS_logger users 6111 conventionally.)
  3. uaddress is the ip address or url of the UDP port.

A typical use case for serialserver.js is to log the action of the VentMon. A second use is to log data (either real or mock data) produced by the VentOS system, independent of the VentMon. These two use cases are an example of composability of the PubInv Respireco system.

Volunteer Needed

This is a project with a rich set of features that need to be added involving respiration calculations. Additionally, there are GUI features such as the ability to scroll back in time that need to be added. Please contact read.robert@gmail.com if you would like to volunteer.

About

A Ventilator Display that consumes PIRDS data and performs most clinical respiration calculations

Resources

Stars

6 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DOI

Vent Display

A Ventilator Display that consumes PIRDS data and performs most clinical respiration calculations

This is an important part of the Public Invention's goal of creating an open source ventilator ecosystem. This is a stand-alone .html file with about a thousand lines of JavaScript that implements a clinical display that doctors want to see of an operating ventilator. It includes live data trace plots of pressure and flow, as well as calculated values such as tidal volume.

Screen Shot 2020-06-18 at 5 07 25 AM

You can see the vent-display from our public data lake, where you can find both live and static displays.

For a hands on demonstration of Vent Display and in-depth explanation of VentMon watch our screen cast (demonstration of Vent Display occurs at 10:56). VentMon ScreenCast

The Control Interface

Public Invention, with help from the VentOS project from Helpful Engineering, is building Respireco, a complete, modular, composable respiration ecosystem. In March 2021, we added a (collapsible) "control interface" to VentDisplay which controls the parameters of a mechanical ventilator. This outputs the resulting commands in the Public Invention Respiration Control Standard (PIRCS) to a webserver via Ajax. The primary use case is for this information to be transmitted to a microcontroller running the VentOS ventilation Open Source Operating System platform, a project of Helpful Engineering.

The program serialserver.js (see below) is such a webserver written in Express which make serial port transmissions of the PIRCS messages.

Serialserver.js

Note: you may have to execute

npm install in order to load the packages used by serialserver.js

Although it may be moved in the future, this repo is the current home of serialserver.js. This program combines two functions:

  1. It accepts [PIRCS] commands via webrequest and sends them to a serial port, and
  2. It accepts [PIRDS] data via the serial port and tranmsits it via UDP requests to a UDP address and port combination.

It does both of these simultaneously while running.

A typical usage on a Mac looks like this:

node serialserver.js --uaddress=127.0.0.1 --sport=/dev/cu.usbserial-01D97104 --uport=6111

On a Windows machine, the serial port is likely named "COM4" or something similar. The parameters are:

  1. sport is the name of the serial port
  2. uport is the UDP port number (the PIRDS_logger users 6111 conventionally.)
  3. uaddress is the ip address or url of the UDP port.

A typical use case for serialserver.js is to log the action of the VentMon. A second use is to log data (either real or mock data) produced by the VentOS system, independent of the VentMon. These two use cases are an example of composability of the PubInv Respireco system.

Volunteer Needed

This is a project with a rich set of features that need to be added involving respiration calculations. Additionally, there are GUI features such as the ability to scroll back in time that need to be added. Please contact read.robert@gmail.com if you would like to volunteer.

About

A Ventilator Display that consumes PIRDS data and performs most clinical respiration calculations

Resources

Stars

6 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

DOI

Vent Display

A Ventilator Display that consumes PIRDS data and performs most clinical respiration calculations

This is an important part of the Public Invention's goal of creating an open source ventilator ecosystem. This is a stand-alone .html file with about a thousand lines of JavaScript that implements a clinical display that doctors want to see of an operating ventilator. It includes live data trace plots of pressure and flow, as well as calculated values such as tidal volume.

Screen Shot 2020-06-18 at 5 07 25 AM

You can see the vent-display from our public data lake, where you can find both live and static displays.

For a hands on demonstration of Vent Display and in-depth explanation of VentMon watch our screen cast (demonstration of Vent Display occurs at 10:56). VentMon ScreenCast

The Control Interface

Public Invention, with help from the VentOS project from Helpful Engineering, is building Respireco, a complete, modular, composable respiration ecosystem. In March 2021, we added a (collapsible) "control interface" to VentDisplay which controls the parameters of a mechanical ventilator. This outputs the resulting commands in the Public Invention Respiration Control Standard (PIRCS) to a webserver via Ajax. The primary use case is for this information to be transmitted to a microcontroller running the VentOS ventilation Open Source Operating System platform, a project of Helpful Engineering.

The program serialserver.js (see below) is such a webserver written in Express which make serial port transmissions of the PIRCS messages.

Serialserver.js

Note: you may have to execute

npm install in order to load the packages used by serialserver.js

Although it may be moved in the future, this repo is the current home of serialserver.js. This program combines two functions:

  1. It accepts [PIRCS] commands via webrequest and sends them to a serial port, and
  2. It accepts [PIRDS] data via the serial port and tranmsits it via UDP requests to a UDP address and port combination.

It does both of these simultaneously while running.

A typical usage on a Mac looks like this:

node serialserver.js --uaddress=127.0.0.1 --sport=/dev/cu.usbserial-01D97104 --uport=6111

On a Windows machine, the serial port is likely named "COM4" or something similar. The parameters are:

  1. sport is the name of the serial port
  2. uport is the UDP port number (the PIRDS_logger users 6111 conventionally.)
  3. uaddress is the ip address or url of the UDP port.

A typical use case for serialserver.js is to log the action of the VentMon. A second use is to log data (either real or mock data) produced by the VentOS system, independent of the VentMon. These two use cases are an example of composability of the PubInv Respireco system.

Volunteer Needed

This is a project with a rich set of features that need to be added involving respiration calculations. Additionally, there are GUI features such as the ability to scroll back in time that need to be added. Please contact read.robert@gmail.com if you would like to volunteer.

About

A Ventilator Display that consumes PIRDS data and performs most clinical respiration calculations

Resources

Stars

6 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DOI

Vent Display

A Ventilator Display that consumes PIRDS data and performs most clinical respiration calculations

This is an important part of the Public Invention's goal of creating an open source ventilator ecosystem. This is a stand-alone .html file with about a thousand lines of JavaScript that implements a clinical display that doctors want to see of an operating ventilator. It includes live data trace plots of pressure and flow, as well as calculated values such as tidal volume.

Screen Shot 2020-06-18 at 5 07 25 AM

You can see the vent-display from our public data lake, where you can find both live and static displays.

For a hands on demonstration of Vent Display and in-depth explanation of VentMon watch our screen cast (demonstration of Vent Display occurs at 10:56). VentMon ScreenCast

The Control Interface

Public Invention, with help from the VentOS project from Helpful Engineering, is building Respireco, a complete, modular, composable respiration ecosystem. In March 2021, we added a (collapsible) "control interface" to VentDisplay which controls the parameters of a mechanical ventilator. This outputs the resulting commands in the Public Invention Respiration Control Standard (PIRCS) to a webserver via Ajax. The primary use case is for this information to be transmitted to a microcontroller running the VentOS ventilation Open Source Operating System platform, a project of Helpful Engineering.

The program serialserver.js (see below) is such a webserver written in Express which make serial port transmissions of the PIRCS messages.

Serialserver.js

Note: you may have to execute

npm install in order to load the packages used by serialserver.js

Although it may be moved in the future, this repo is the current home of serialserver.js. This program combines two functions:

  1. It accepts [PIRCS] commands via webrequest and sends them to a serial port, and
  2. It accepts [PIRDS] data via the serial port and tranmsits it via UDP requests to a UDP address and port combination.

It does both of these simultaneously while running.

A typical usage on a Mac looks like this:

node serialserver.js --uaddress=127.0.0.1 --sport=/dev/cu.usbserial-01D97104 --uport=6111

On a Windows machine, the serial port is likely named "COM4" or something similar. The parameters are:

  1. sport is the name of the serial port
  2. uport is the UDP port number (the PIRDS_logger users 6111 conventionally.)
  3. uaddress is the ip address or url of the UDP port.

A typical use case for serialserver.js is to log the action of the VentMon. A second use is to log data (either real or mock data) produced by the VentOS system, independent of the VentMon. These two use cases are an example of composability of the PubInv Respireco system.

Volunteer Needed

This is a project with a rich set of features that need to be added involving respiration calculations. Additionally, there are GUI features such as the ability to scroll back in time that need to be added. Please contact read.robert@gmail.com if you would like to volunteer.

About

A Ventilator Display that consumes PIRDS data and performs most clinical respiration calculations

Resources

Stars

6 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DOI

Vent Display

A Ventilator Display that consumes PIRDS data and performs most clinical respiration calculations

This is an important part of the Public Invention's goal of creating an open source ventilator ecosystem. This is a stand-alone .html file with about a thousand lines of JavaScript that implements a clinical display that doctors want to see of an operating ventilator. It includes live data trace plots of pressure and flow, as well as calculated values such as tidal volume.

Screen Shot 2020-06-18 at 5 07 25 AM

You can see the vent-display from our public data lake, where you can find both live and static displays.

For a hands on demonstration of Vent Display and in-depth explanation of VentMon watch our screen cast (demonstration of Vent Display occurs at 10:56). VentMon ScreenCast

The Control Interface

Public Invention, with help from the VentOS project from Helpful Engineering, is building Respireco, a complete, modular, composable respiration ecosystem. In March 2021, we added a (collapsible) "control interface" to VentDisplay which controls the parameters of a mechanical ventilator. This outputs the resulting commands in the Public Invention Respiration Control Standard (PIRCS) to a webserver via Ajax. The primary use case is for this information to be transmitted to a microcontroller running the VentOS ventilation Open Source Operating System platform, a project of Helpful Engineering.

The program serialserver.js (see below) is such a webserver written in Express which make serial port transmissions of the PIRCS messages.

Serialserver.js

Note: you may have to execute

npm install in order to load the packages used by serialserver.js

Although it may be moved in the future, this repo is the current home of serialserver.js. This program combines two functions:

  1. It accepts [PIRCS] commands via webrequest and sends them to a serial port, and
  2. It accepts [PIRDS] data via the serial port and tranmsits it via UDP requests to a UDP address and port combination.

It does both of these simultaneously while running.

A typical usage on a Mac looks like this:

node serialserver.js --uaddress=127.0.0.1 --sport=/dev/cu.usbserial-01D97104 --uport=6111

On a Windows machine, the serial port is likely named "COM4" or something similar. The parameters are:

  1. sport is the name of the serial port
  2. uport is the UDP port number (the PIRDS_logger users 6111 conventionally.)
  3. uaddress is the ip address or url of the UDP port.

A typical use case for serialserver.js is to log the action of the VentMon. A second use is to log data (either real or mock data) produced by the VentOS system, independent of the VentMon. These two use cases are an example of composability of the PubInv Respireco system.

Volunteer Needed

This is a project with a rich set of features that need to be added involving respiration calculations. Additionally, there are GUI features such as the ability to scroll back in time that need to be added. Please contact read.robert@gmail.com if you would like to volunteer.

About

A Ventilator Display that consumes PIRDS data and performs most clinical respiration calculations

Resources

Stars

6 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

DOI

Vent Display

A Ventilator Display that consumes PIRDS data and performs most clinical respiration calculations

This is an important part of the Public Invention's goal of creating an open source ventilator ecosystem. This is a stand-alone .html file with about a thousand lines of JavaScript that implements a clinical display that doctors want to see of an operating ventilator. It includes live data trace plots of pressure and flow, as well as calculated values such as tidal volume.

Screen Shot 2020-06-18 at 5 07 25 AM

You can see the vent-display from our public data lake, where you can find both live and static displays.

For a hands on demonstration of Vent Display and in-depth explanation of VentMon watch our screen cast (demonstration of Vent Display occurs at 10:56). VentMon ScreenCast

The Control Interface

Public Invention, with help from the VentOS project from Helpful Engineering, is building Respireco, a complete, modular, composable respiration ecosystem. In March 2021, we added a (collapsible) "control interface" to VentDisplay which controls the parameters of a mechanical ventilator. This outputs the resulting commands in the Public Invention Respiration Control Standard (PIRCS) to a webserver via Ajax. The primary use case is for this information to be transmitted to a microcontroller running the VentOS ventilation Open Source Operating System platform, a project of Helpful Engineering.

The program serialserver.js (see below) is such a webserver written in Express which make serial port transmissions of the PIRCS messages.

Serialserver.js

Note: you may have to execute

npm install in order to load the packages used by serialserver.js

Although it may be moved in the future, this repo is the current home of serialserver.js. This program combines two functions:

  1. It accepts [PIRCS] commands via webrequest and sends them to a serial port, and
  2. It accepts [PIRDS] data via the serial port and tranmsits it via UDP requests to a UDP address and port combination.

It does both of these simultaneously while running.

A typical usage on a Mac looks like this:

node serialserver.js --uaddress=127.0.0.1 --sport=/dev/cu.usbserial-01D97104 --uport=6111

On a Windows machine, the serial port is likely named "COM4" or something similar. The parameters are:

  1. sport is the name of the serial port
  2. uport is the UDP port number (the PIRDS_logger users 6111 conventionally.)
  3. uaddress is the ip address or url of the UDP port.

A typical use case for serialserver.js is to log the action of the VentMon. A second use is to log data (either real or mock data) produced by the VentOS system, independent of the VentMon. These two use cases are an example of composability of the PubInv Respireco system.

Volunteer Needed

This is a project with a rich set of features that need to be added involving respiration calculations. Additionally, there are GUI features such as the ability to scroll back in time that need to be added. Please contact read.robert@gmail.com if you would like to volunteer.

About

A Ventilator Display that consumes PIRDS data and performs most clinical respiration calculations

Resources

Stars

6 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages