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.