Skip to content

nickmmark/icu-ghg-calculator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

39 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

icu-ghg-calculator

An app to estimate intensive care unit greenhouse gas emissions and motivate change!

Estimate your ICU's baseline CO2 footprint and see how much you can decrease it with changes:

demo of the ICU GHG calculator v0.3

โ™ป๏ธ ICU Greenhouse Gas Footprint Calculator

  • The carbon footprint of intensive care units (ICUs) is massive.
  • The US healthcare system produces 8-9% of all greenhouse gas (GHG) emissions in the US - more than the entire economy of Japan.
  • ICUs are particularly carbon intensive; one day of ICU treatment for septic shock (~140-170 kg CO2 equivalent) is equivalent to driving an ICE vehicle >400 miles or using electricity for 2 months in a typical home.
  • Through relatively small changes in practice and equipment, individual clinicians and hospitals can realize large reductions in the overall carbon footprint.
  • This calculator provides a transparent, literature-based estimate of an ICUโ€™s carbon footprint, localized for energy mix and adjustable for clinical practices.
  • This tool is intended to help clinicians and hospitals identify and realize practice improvements to meaningfully reduce GHG emissions and make their ICU more sustainable.

Try the calculator out here

๐ŸŒฟ Design

  • Two-tab interface:
    • Baseline โ€” Estimate current emissions by entering ICU size, occupancy, and location.
    • Interventions โ€” Toggle or adjust sustainability practices and instantly see reductions.
  • Dynamic COโ‚‚ bar: Live updates for total, savings %, and โ€œequivalentsโ€ (e.g., cars, homes, trees).
  • Expandable details: Each intervention shows assumptions, formula, and references.
  • Modular JSON architecture: Non-technical users can edit assumptions and interventions without touching code.

Strategies to reduce ICU GHG consumption

ICU OnePager infographic

id group title
switch_iv_to_oral pharmacy Switch eligible IV medications to oral
reduce_overuse_prophylaxis pharmacy Avoid routine prophylaxis (e.g., PPIs) for low-risk patients
avoid_aggressive_electrolyte_repletion pharmacy Avoid aggressive electrolyte replacement when not indicated
antibiotic_stewardship pharmacy Antibiotic stewardship and early de-escalation
eliminate_n2o pharmacy Eliminate Nโ‚‚O use
eliminate_desflurane pharmacy Eliminate desflurane
mdi_to_nebulizer respiratory Switch MDI to nebulizer whenever clinically appropriate
reusable_bronchoscopy respiratory Shift to reusable bronchoscopes
disposable_stethoscopes respiratory Eliminate disposable stethoscopes (clean reusable stethoscopes instead)
avoid_overoxygenation_fine respiratory Titrate oxygen to target range (avoid over-oxygenation)
abcde_bundle low_value_care Implement ABCDEF (ICU Liberation) bundle
reduce_unnecessary_admissions low_value_care Avoid unnecessary ICU admissions through accurate triage
goals_of_care_discussion low_value_care Discuss goals of care on all admissions
peripheral_vasopressors low_value_care Use peripheral vasopressors when safe instead of central lines
avoid_overdiagnosis low_value_care Avoid over-investigation and routine testing (e.g. daily CXR)
crrt_stewardship low_value_care CRRT stewardship (reduce unnecessary hours)
early_palliative_care low_value_care Early palliative care consults for high-risk ICU patients
telepresence_transport low_value_care Use telepresence for meetings and follow-up when possible
plant_based_foods nutrition Increase plant-based foods for patients and staff
seasonal_menu_planning nutrition Seasonal menu planning (local & in-season foods)
local_sustainable_food_sourcing nutrition Increase local/sustainable food sourcing
use_natural_daylight infrastructure Use natural daylight (e.g. shades up) during the day
lights_night_dimming infrastructure Dim ICU lighting at night
switch_to_led infrastructure Upgrade from incandescent/halogen to modern LED lighting
reduce_paper_printing infrastructure Reduce paper printouts and forms
staff_commute_low_carbon infrastructure Incentivize lowโ€‘carbon staff commuting (carpool, bike, transit)
low_emission_deliveries infrastructure Low-emission deliveries (EV, bike, consolidated routes)
onsite_solar_offset infrastructure Offset electricity with onsite renewables (e.g., solar)
demand_control_ventilation infrastructure HVAC: Demand-controlled or variable-air-volume ventilation
moderate_temp_setpoint infrastructure HVAC: Relax temperature set-point by 1โ€“3ยฐC
high_efficiency_equipment infrastructure HVAC: High-efficiency plant equipment upgrades
heat_recovery_system infrastructure HVAC: Heat recovery for ventilation/chilled-water (ERV/HRCH)
improved_insulation infrastructure Improve hospital insulation
segregate_biohazard_waste waste_removal Use biohazard waste only for visibly blood-soiled items
plastics_recycling_program waste_removal Plastics recycling program (clinical & non-clinical)
stock_items_outside_room waste_removal Stock fewer single-use items inside patient rooms
reusable_gowns laundry Switch to reusable isolation gowns
reduce_linen_par_levels laundry Reduce default linen and towel par levels
extend_equipment_lifespan laundry Repair/maintain washers/dryers/blanket warmers

๐Ÿงฎ Calculations

The app uses kg COโ‚‚e per ICU patient-day as a core metric and converts using:

Annual_tCO2e = Beds ร— Occupancy ร— 365 ร— (Intensity_kgCO2e_per_patient_day / 1000)
Parameter Value Source
Reference ICU intensity 140 kg COโ‚‚e / patient-day McGain et al., 2018; range 88โ€“178
Category shares Energy 0.65 โ€ข Procurement 0.18 โ€ข Pharma 0.10 โ€ข Gases 0.03 โ€ข Waste 0.02 โ€ข Water 0.02 Literature mean

Interventions fall into several categories:

  • percent_of_category which refers to lighting, energy_hvac, procurement, waste, crrt, pharma, medical gasses,
  • direct_savings
  • per_patient_day_delta
  • intensity_per_hour
  • kwh_reduction

Equivalency factors

Metric Conversion per t COโ‚‚e
Cars removed (1 yr) 0.217
Homesโ€™ electricity (1 yr) 0.141
Acres of forest preserved 1.19
Tree seedlings grown 10 yrs 16.5

Energy and HVAC consumption

The app adjusts the baseline based on the ICU size/occupancy and location, to capture variations in local temperatures (HVAC costs) and the carbon footprint of local energy sources:

Energy_kgCO2e/pd = kWh_ref/pd ร— (Grid_factor_local / Grid_factor_ref) ร— Climate_multiplier

Reference grid factor (US mean): 827.520 lb/MWh = 0.3755 kg COโ‚‚e/kWh ZIP-specific factors: from EPA eGRID (2022โ€“24) Climate multiplier: derived from HDD/CDD vs. reference site (Kansas City); capped ยฑ30 %.

Adjusting for baseline ICU practices & Interventions

Each intervention is also used as part of a baseline assessment (e.g. determining if anesthetic gasses like Nโ‚‚O and Desflurane are used) and as a potential opportunity for improvemnet (e.g. how much GHG would be mitigated by eliminating Desflurane)

Each intervention includes:

  • Calculation formula
  • Assumption references
  • Markdown details and citations

CRRT

Placeholder coefficient (from dialysis LCA): 2.0 kg COโ‚‚e / hour of CRRT runtime. Users can adjust in assumptions.json when site-specific data are available.

Anesthetic gasses

Gas GWPโ‚โ‚€โ‚€ Notes
Nโ‚‚O 273 High-impact; easily eliminated outside ORs
Desflurane 2540 Avoid entirely if possible
Sevoflurane 130 Lower GWP; minimal ICU use
Isoflurane 510 Moderate GWP

Units and Conventions

  • All greenhouse gas (GHG) emissions in this calculator are expressed in metric tons of COโ‚‚ equivalent (t COโ‚‚e) per year unless otherwise specified.
    • Metric ton = 1,000 kg (โ‰ˆ 2,204.6 lb).
  • The โ€œCOโ‚‚ equivalentโ€ unit converts non-COโ‚‚ gases (e.g., CHโ‚„, Nโ‚‚O, anesthetic gases) into their equivalent impact based on their 100-year Global Warming Potential (GWPโ‚โ‚€โ‚€) as defined by the Intergovernmental Panel on Climate Change (IPCC AR6).
  • Energy use is normalized to kilowatt-hours (kWh) and multiplied by a location-specific grid emission factor (kg COโ‚‚e per kWh).
  • Per-patient or per-bed values are scaled to annual totals using user-provided ICU size and occupancy assumptions.
  • All calculations are approximate and intended for educational and quality-improvement purposes, not for regulatory carbon accounting.
    • Users should adapt grid factors and GWP values to their own jurisdiction and reference year when possible.

โš™๏ธ Implementation

Files/Structure

/ (project root)
โ”œโ”€ index.html                     # Minimal HTML shell. Loads styles & JS modules in order.
โ”œโ”€ styles.css                     # Defines appearance of website
โ”œโ”€ /data
โ”‚  โ”œโ”€ assumptions.json
โ”‚  โ”œโ”€ interventions.json
โ”‚  โ”œโ”€ zip_CO2_annotated.csv
โ”‚  โ””โ”€ subregion_emissions_annotated.csv
โ”œโ”€ /js
โ”‚  โ”œโ”€ config.js                   # App constants (paths, color tokens, category ordering)
โ”‚  โ”œโ”€ utils.js                    # Helpers (fmt, clamp, parseCSV, zfill, svgEl, tooltip)
โ”‚  โ”œโ”€ state.js                    # Central state container; default inputs; safe mutators
โ”‚  โ”œโ”€ data.js                     # Fetch & validate data files; JSON schema checks; fallbacks
โ”‚  โ”œโ”€ ui.js                       # Init controls, tabs, drawer, buttons; updateTopBar()
โ”‚  โ”œโ”€ baseline.js                 # Grid lookup + baseline math; recalcBaseline()
โ”‚  โ”œโ”€ interventions.js            # Build baseline practices + interventions UI; applyInterventions()
โ”‚  โ”œโ”€ charts.js                   # drawStack() + drawCompare() with safe guards & tooltips
โ”‚  โ”œโ”€ exports.js                  # Export CSV/JSON
โ”‚  โ”œโ”€ router.js                   # URL encode/decode of state; updateURLState(), applyURLState()
โ”‚  โ””โ”€ main.js                     # Boot sequence (load data โ†’ init UI โ†’ baseline โ†’ render โ†’ apply)
โ””โ”€ /schemas
   โ””โ”€ interventions.schema.json   # Lightweight runtime validator for interventions.json (optional)
                                                                                                     
                               โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                                                           
                               โ”‚         โ”‚                                                           
                               โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                      
                               โ”‚ โ”‚         โ”‚                        โ”‚         โ”‚                      
                               โ”‚ โ”‚         โ”‚    build BASELINE      โ”‚         โ”‚                      
                               โ”‚ โ”‚         โ”‚    tCO2e estimate      โ”‚         โ”‚  display ฮ”tCO2       
                               โ”‚ โ”‚         โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บ   โ”‚charts.jsโ”‚  opportunities       
                               โ”‚ โ”‚         โ”‚                        โ”‚         โ”‚                      
                               โ”‚ โ”‚         โ”‚                        โ”‚         โ”‚                      
                               โ””โ”€โ”‚         โ”‚                        โ”‚         โ”‚                      
                                 โ”‚         โ”‚                        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                      
                                 โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                             โ–ฒ                           
                          subregion_emissions.csv                        โ”‚                           
                               & zip_CO2.csv                             โ”‚                           
                                                                         โ”‚                           
                                                                         โ”‚                           
   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                 โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                               โ”‚                           
   โ”‚         โ”‚                 โ”‚         โ”‚                               โ”‚                           
   โ”‚         โ”‚                 โ”‚         โ”‚                               โ”‚                           
   โ”‚         โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บ โ”‚         โ”‚                               โ”‚                           
   โ”‚         โ”‚ โ—„โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚         โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                       โ”‚                           
   โ”‚         โ”‚   converter.py  โ”‚         โ”‚       โ”‚                       โ”‚                           
   โ”‚         โ”‚                 โ”‚         โ”‚       โ”‚                                                   
   โ”‚         โ”‚                 โ”‚         โ”‚       โ”‚                  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                      
   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                 โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜       โ”‚  build list of   โ”‚         โ”‚                      
                                                 โ”‚  INTERVENTIONS   โ”‚         โ”‚                      
 interventions.csv          interventions.json   โ”‚                  โ”‚         โ”‚   calculate ฮ”tCO2    
                                                 โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บ  โ”‚         โ”‚  with INTERVENTIONS  
                                                 โ”‚                  โ”‚         โ”‚                      
                               โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”       โ”‚                  โ”‚         โ”‚                      
                               โ”‚         โ”‚       โ”‚                  โ”‚         โ”‚                      
                               โ”‚         โ”‚       โ”‚                  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                      
                               โ”‚         โ”‚       โ”‚                                                   
                               โ”‚         โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                interventions.js                   
                               โ”‚         โ”‚                                                           
                               โ”‚         โ”‚                                                           
                               โ”‚         โ”‚                                                           
                               โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                                                           
                                                                                                     
                               groups.json                                                           
                                                                                                     

Functions

  • state.js - state (object): { assumptions, interventions, zipTable, subregionTable, inputs, baselinePractices, derived }
  • data.js - loadAllData() โ†’ loads all four files; normalizes interventions (defaults OFF/0); validates shapes
  • ui.js - initUI(), updateTopBar()
  • baseline.js - lookupGridFactor(), recalcBaseline()
  • interventions.js - renderBaselinePractices(), renderInterventions(), applyInterventions()
  • charts.js - drawStack(containerId, categories, title), drawCompare()
  • exports.js - exportCSV(), exportJSON(), renderAssumptionsHTML()
  • router.js - updateURLState(), applyURLState()
  • main.js - orchestrates boot order

Creating/updating interventions.json

Use the helper script converter.py

  1. Convert JSON -> CSV (for editing)
python3 converter.py json-to-csv --json interventions.json \
  --groups-out groups.csv \
  --interventions-out interventions.csv
  1. Edit groups.csv and interventions.csv in Excel/Google Sheets
  2. Convert CSVs -> JSON (to feed back into the app)
python3 converter.py csv-to-json \
  --groups groups.csv \
  --interventions interventions.csv \
  --json-out interventions.json

What this does

  • Identity & grouping: id, group, title, type, impact_category
  • Slider range (if type=slider): range_min, range_max, range_step, range_unit
  • Baseline control: baseline_label, baseline_type, baseline_default_enabled, baseline_default_value, baseline_min, baseline_max, baseline_step, baseline_unit
  • Calculation: calc_method, calc_formula_note
  • Params (fill only what you use):
    • param_kwh_per_hour_per_bed, param_grid_factor_source, param_annual_usage_kg, param_gwp100, param_annual_agent_minutes, param_agent_consumption_ml_per_min, param_density_g_per_ml, param_percent_reduction, param_category, param_scale_with_value_pct, param_kg_per_hour, param_kg_co2e_per_puff
  • UI: ui_icon, ui_summary, ui_details_markdown, ui_references (use Label|URL;Another Label|URL2)

Versioning

  • Current Version: 0.3.5
  • Schema: x.y.z where
    • x is release
    • y is major code changes (e.g. adding new js files)
    • z is minor code changes (e.g. updating the calculation or UX)

๐Ÿ’พ Data sources

Uses the EPA eGRID dataset to estimate regional CO2 production.

๐Ÿชช License

ยฉ 2025 Nick Mark, MD Please credit ICU GHG Calculator and cite underlying research when reproducing or extending the tool.

This is provided "as is" without warranty of any kind with under an MIT License.

๐Ÿ“š๏ธ References

About

a webapp to estimate intensive care unit greenhouse gas emissions and motivate chage

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors