ClinImpact

Methods

The text the application ships with (docs/methods.md, version 2.11.1). Every statement here is also printed on the “Methods & sources” page of every report export.

What a paper needs in order to cite a figure from this application, in one place. Every statement here is also in the database (factor_catalogue) and is printed on the "Methods & sources" sheet of every Excel export and on the last page of every PDF, so a report carries its own methods section.

Written 2026-09-04 after Alain Kalmar's review of 2.3.0: everywhere external data is used, the exact source has to be described.

The factor database

Database Life Cycle Inventory database of the Swiss Federal Administration, BAFU:2026, version 1
Publisher Federal Office for the Environment (FOEN / BAFU), Division Economics and Innovation, Section Consumption and Products, Bern
Obtained 2026-07-27, from openLCA Nexus, as the openLCA database BAFU-2026 v1 (also delivered in ecoSpold v1)
System model Attributional, cut-off at end-of-waste. Not stated in the documentation shipped with the download (Context and Content; Terms of Use, 23.06.2026); inferred from the Swiss federal LCI rules v8.1 §9.3, which BAFU datasets follow (no recycling credits, economic or physical allocation, boundary at the end-of-waste point), and from the ecoinvent v2.2 lineage ecobau states for them. The catalogue row says both the convention and that BAFU itself is silent
Builds on Not documented in the same documentation
Data quality Datasets follow the guideline BAFU DQRv2:2023; most were critically reviewed for ISO 14040 compatibility (per Context and Content)
Extent Roughly 11,000 inventories in 176 categories (2025 edition, per BAFU). This application's catalogue carries 7,551 of them — 6,630 materials and products and 922 disposal and treatment processes for the disposal pickers (821 since 2.5.0, 101 more since 2.9.2) — selected as described in tools/factor-extraction/catalog-categories.md
Citation Federal Office for the Environment (FOEN). Life Cycle Inventory database of the Swiss Federal Administration, BAFU:2026, version 1 [dataset]. Bern: FOEN; 2026. Downloaded from openLCA Nexus, 2026-07-27.
Required quotation The Terms of Use (§2.3) require: "Life Cycle Inventory database of the Swiss Federal Administration, BAFU:2026". German form: "Datenbank der Schweizer Bundesverwaltung, BAFU:2026, Bundesamt für Umwelt".
Licence Data may be used and reused, including in a calculator, but not sold or redistributed as a database. Reports shipped with the data are the authors' copyright.

How a factor is computed and frozen

Impact figures are not taken from BAFU's pre-aggregated results. Each process a clinician actually uses is solved once with openLCA's own engine against the full database — a matrix roughly the size of the database — and the single figure per impact category is stored in material_impact (tools/factor-extraction/README.md).

LCA software openLCA 2.6.1 (olca-core, MKL solver), driven headless
Impact methods EF 3.1 — openLCA's EF 3.1 Method (adapted), 25 categories; IPCC 2021 at two horizons, GWP 100 and GWP 20 (AR6 characterisation factors as shipped in openLCA's method pack)
Extraction runs 2026-08-14 (EF 3.1 climate categories; IPCC 2021, both horizons), 2026-08-31 (EF 3.1, all 25 categories, superseding the first) and 2026-09-29 (the waste-management datasets, both methods). Each factor row carries the date of the run that produced it
Geography Per dataset, as the BAFU process name states it — CH, RER, GLO, BE, ENTSO-E … — stored on the material and on every frozen report line

A published report is frozen: its lines are copied into report_line with the factor value, method, category, dataset name and UUID, catalogue edition, geography and extraction date they were computed with. Loading a newer factor edition supersedes rather than overwrites (is_current), so a figure quoted in a paper stays reproducible after the catalogue moves on. Nothing published is ever recomputed; a version found to be wrong is withdrawn, with its reason, and its lines stay as the record.

Factors from the literature

Medications carry their own emission factor and a free-text reference in drug.source_primary, written in Vancouver notation, with an optional URL. The reference appears on every report line for that medication, in the PDF and in both Excel sheets. A medication marked as a proxy says what it stands in for and why.

What a medication costs

Since 2.4.0 a medication costs the whole container opened: the number of units opened in an operation times the content of one unit as sold, converted to mass through the drug's density where the content is a volume. An opened ampoule is consumed whether the rest is given or discarded, and splitting one across patients is rare and mostly forbidden. The dose given is kept on the record and checked against the units opened; a medication whose content per unit is not recorded is shown and not counted. The container's own glass, cap and stopper are costed through the item's components. Volatile anaesthetic agents are metered by the vaporiser and costed as delivered.

Anaesthetic gases

An anaesthesia record describes one operation; the report multiplies it by the number of procedures recorded on the project, the way the disposables are summed over them.

Agent Recorded as Mass
Volatile liquid (sevoflurane, isoflurane, desflurane) a liquid volume in mL, or fresh gas flow × vaporiser setting × duration volume × density; or flow [L/min] × setting/100 × duration [min] → litres of vapour → ÷ vapour ratio → mL of liquid → × density → kg
Gas (nitrous oxide) fresh gas flow × share of the fresh gas × duration flow × share/100 × duration → litres of gas → × gas density [g/L] → kg

The vapour ratio (mL of vapour per mL of liquid) and the gas density are derived at 20 °C and 1 atm, molar volume 24.04 L/mol, from the agent's own stored density and its molar mass: sevoflurane 200.05 g/mol, isoflurane 184.49, desflurane 168.04, nitrous oxide 44.013. The derivation is written next to each value on the agent (lci_profile.vapour_ratio_basis, gas_density_basis). A recorded volume wins over a derivation: one is an observation, the other an estimate of it. An agent whose density or ratio is missing produces no figure and a note, never a default.

The mass is multiplied by the exhaled fraction when the factor is per kg emitted (sevoflurane 0.95, isoflurane 0.998, desflurane 0.9998, nitrous oxide 1), then by the agent's GWP for the horizon the report is computed under:

Agent GWP100 GWP20
Sevoflurane 195 702
Isoflurane 539 1930
Desflurane 2590 7020
Nitrous oxide 273 273

IPCC (2021), AR6 WG1 Chapter 7 Supplementary Material, Table 7.SM.7; summarised for anaesthetic agents in Coburn et al., Eur J Anaesthesiol 2026;43:291-4. Until 2.4.2 sevoflurane carried 144 and desflurane 2540 (Sulbaek Andersen et al. 2012); 2.5.0 moved to AR6, so its figures are not comparable with earlier versions. The same GWP100 is applied under EF 3.1 Climate change and under IPCC 2021 GWP 100; GWP20 under IPCC 2021 GWP 20; under any other indicator the agent line carries no figure and says so. The production and transport of the agents themselves (scope 3) are not costed.

The anaesthesia's own materials (tubing, glassware) are costed as any component material — quantity × unit conversion × BAFU factor — times the number of procedures; an electricity dataset is re-pointed to the hospital's grid. Intravenous drugs given under the anaesthesia are ordinary medication lines (above), summed over the procedures and not multiplied again. Not modelled: scavenging or capture, soda lime, oxygen and medical air, the machine's electricity, drug disposal (docs/method-review.md, §4).

Sterilisation

Per hospital, for the washer, the cart washer and the autoclave: the tap water, RO water and electricity of one cycle or charge and the instrument sets (DIN) it carries. Per project: the DIN used, once.

Line Formula Dataset
Tap water Σ machines (L per cycle ÷ DIN per cycle) × DIN used, 1 L = 1 kg Tap water, at user {CH}
RO water the same with RO litres Water, deionised, water balance according to MoeK 2013, at plant {CH}
Electricity Σ machines (kWh per cycle ÷ DIN per cycle) × DIN used Electricity, low voltage, at grid {hospital country}

Lines exist only when the hospital has sterilisation switched on; "no sterilisation needed" or "no reusable set used" sets DIN to 0. RO water is costed with the deionised-water dataset, not as tap water times the RO input multiplier (that would count the feed water twice); the multiplier, the STU capacity and the cost per DIN take no part in the figure. The settings are frozen with each published report and printed as the "Sterilisation calculation". The DIN is recorded once per project and is not multiplied by the number of procedures; the per-patient figure divides it by them — so it is read as the project total (put to the clinical team, method-review.md §5). Not modelled: detergent and chemicals, steam and compressed air separately, wrap and containers, instrument wear and the set's manufacture, transport to the sterilisation department, standby energy.

Products and room use

A product is its components and their materials: quantity × unit conversion × the counts down the component tree × units consumed over the recorded procedures × the BAFU factor; a material without a factor under the chosen indicator is shown and not counted. Room use is Σ procedure minutes ÷ 60 × the room type's kWh per hour × the low-voltage grid factor of the hospital's country; a procedure without a room or a duration is named on a "not counted" line. The full account of every section, with worked examples, assumptions and what is not modelled, is docs/method-review.md.

Waste

Since 2.5.0 an operation's waste is weighed and costed, one stream (all bags together). Per procedure: the weight in kg. Per hospital: one BAFU disposal dataset (the waste-management datasets are in the catalogue for that picker only) and the distance by road to the processor, with where both came from.

Line Formula
Disposal mean kg over the weighed, non-excluded procedures × number of procedures × factor per kg of the disposal dataset
Transport to processor that mass / 1000 × km → t·km × factor of Transport, freight, lorry, fleet average {CH}

The mean is applied to every procedure so that the per-procedure figure is the mean of the weighed ones; the line says how many were not weighed and which weighings were excluded, with the reason given. Until the hospital has recorded its route, the report carries one line saying waste is not counted.

Waste per product (2.8.0), a second method beside the first. A component can be marked "disposed as" a per-kg disposal dataset. Its own mass lines (mass units only; since 2.10.0 not the process steps, see below), times its effective count down the product's tree, times the units consumed, go to that dataset; the disposed mass then travels the hospital's distance to the processor, as above. Components of consumed products with a mass but no disposal are named on a "not covered" line. The two methods describe the same waste and are never added. Since 2.11.0 the headline takes one basis per project (project_waste_basis): the weighed bin when any procedure was weighed — the report then shows, beside it, the waste per product, the total with it in place of the weighed waste, and the difference (per product minus weighed, in the unit and as a share of the weighed) — and otherwise the waste per product itself. Each published version records its basis (report_publication.waste_basis). Jack, 2026-10-05: a project that weighs nothing left end of life out entirely; the study expects weighing to come close to the full calculation at far less effort, and the difference is the measure of that. The catalogue has no latex, textile or infectious-waste dataset; rubber and plastics are assigned to Disposal, plastics, mixture … to municipal incineration, and infectious waste to Disposal, hazardous waste … to hazardous waste incineration, as proxies.

Transport

Every consumed product travels from where it is made to the hospital. The product records its manufacturer's country and place, the hospital its own, both resolved to coordinates (OpenStreetMap Nominatim, or typed) and stored with the text they were resolved from.

Case Legs
Same continent road: great-circle distance × 1.3, Transport, freight, lorry, fleet average {CH}
Different continent, or (2.9.0) either end in a country without a road link — GB, IE, IS, MT, CY — and the two in different countries sea: great-circle distance to Antwerp (51.2213 N, 4.4051 E), Transport, transoceanic freight ship {OCE}; then road from Antwerp × 1.3

Shipped mass = the mass lines of the product's component tree, compounded through the counts, plus a medication's content; × units consumed. Process steps weigh nothing (2.10.0): a processing dataset per kg of product — injection moulding, extrusion, rolling, turning, metal working, glass tempering, 48 in all, material.is_process — counts for its impact but adds no mass, here or in the mass sent to disposal. Until 2.10.0 a strap entered as 8.08 g silicone and 8.08 g injection moulding weighed 16.16 g. Since 2.7.0 a product with a manufacturer country but no place is costed from the capital of that country (iso_country.capital_lat/lng): the line is labelled "(estimated)" and its note names the capital. A product without even a country is named on one "not counted" line; a product that already carries a hand-entered transport component is flagged as a possible double count rather than added silently. Since 2.9.0 the island countries (iso_country.sea_only) go by sea through Antwerp, the port everything for Belgium arrives in (Arne, 2026-10-04); the catalogue has no short-sea ferry, so the transoceanic ship stands in for it, and the line's note says so. The 15 study hospitals were located the same day (Nominatim, from their addresses); a hospital without a location is an open item under Before you publish. The constants (1.3, Antwerp) are printed in every trace. The place lookup runs through the application's own geocode function (Nominatim behind it, one request a second, the application named in the User-Agent).

Spread between procedures

Since 2.7.0 the comparison gives, per project, the standard deviation and the median with the first and third quartile between the project's own procedures (project_procedure_totals, project_spread). Each line of the project is apportioned to its procedures:

Lines Share of a procedure
products, drugs with a product, their transport its units of the product ÷ units consumed
room use its minutes × the room's kWh/h ÷ the project's kWh
waste (disposal and transport to the processor) its weighed kg (the mean where not weighed or excluded) ÷ the project's kg
anaesthesia, sterilisation 1 ÷ number of procedures (the DIN count is per project)

The procedures add up to the project total by construction; one procedure gives no standard deviation. A published comparison freezes each arm's spread under its published indicator at the moment of publishing, and says when more procedures were recorded after the arm's report.

Costs

A product can carry several prices, one per label (hospital contract, online, list). The cost per procedure on a project and in the comparison is units consumed × the price under the chosen label, or the earliest price recorded, with the number of unpriced products beside it. A cost is not an impact and is frozen in no report.

Versioning

A MINOR version means the figures are not comparable with the previous one, because an emission factor or the report arithmetic changed. A PATCH means they are. Every report and export carries the software version, the catalogue edition and the method beside the figures.