Bsp.: Drinkingwater-Legionella since March 2023 (German Regulation)

The current Drinking Water Ordinance and UBA recommendation include various provisions for calculating the colony count of legionella. The laboratory database can assist you in the calculation. A customer representative will be happy to assist you with implementation and possible adjustments (e.g., incorporating the examination days).
All formulas shown here are examples. The correct functionality of the formulas in your database must be verified by you!


Drinking Water Ordinance as of 2023

The current Drinking Water Ordinance (as of March 2023) provides the following calculation examples for the approaches 2 x 0.5 ml and 1x 50 ml:

| Case studies for the number of evaluable target colonies | Indication on test report [CFU/100 ml] | Conformity assessment |
|--|--|--|
| Case A: No legionella detected on all plates (DA + MF) | < 2 | TMW not reached |
| Case B: Σ DA without detection, MF 1-2 CFU | < 6 | TMW not reached |
| Case C: Σ DA 1-2 CFU, MF 0-2 CFU | < 100 | TMW not reached |
| Case D: Σ DA 0-2 CFU, MF 3 - 49 | 6 - 98 | TMW not reached |
| Case E: Σ DA 0-2 CFU, MF 50 - 80 | 100 - 160 | TMW reached |
| Case F: Σ DA 3 - 600 CFU, MF not relevant for overall assessment | 300 - 60,000 | TMW reached |
| Case G: Σ DA > 600 CFU, MF not relevant for overall assessment | > 60,000 | TMW reached |
| Case H: Σ DA 1-2 CFU or not evaluable, MF > 80 CFU | > 160 | TMW reached |







Example Parameters

Below is an example of calculating legionella according to the current (as of March 2023) Drinking Water Ordinance.
For this, 3 parameters are created, one for direct approaches, one for membrane filtration, and one that calculates the final result.










Configuration Parameter Legionella Direct Approach
For the 1st parameter for the two 0.5 ml approaches, 6 columns are created in this example, which are configured as follows:

| Column | Column Label | Data Type | Purpose |
|--|--|--|--|
| 0 | CFU/100ml | blocked | Here, the CFU/100 ml from Plate 1 and 2 are calculated, manual inputs are blocked |
| 1 | Companion Flora | -,+,++,+++ | Selection of the strength of the companion flora |
| 2 | Confirmed Colonies Plate 1 | /^na$\|^na\\\*$\|^> *300$\|^([0-9]\|[1-9][0-9]\|[1-3][0-9][0-9]\|300)$\|^$/ | Indication of confirmed colonies on Plate 1, possible inputs limited to na, na\*, 0-300, >300 by data type |
| 3 | Confirmed Colonies Plate 2 | /^na$\|^na\\\*$\|^> *300$\|^([0-9]\|[1-9][0-9]\|[1-3][0-9][0-9]\|300)$\|^$/ | Indication of confirmed colonies on Plate 2, possible inputs limited to na, na\*, 0-300, >300 by data type |
| 4 | Suspicious Colonies Plate 1 | | Indication of suspicious colonies on Plate 1 |
| 5 | Suspicious Colonies Plate 2 | | Indication of suspicious colonies on Plate 2 |

In column 0, a formula is entered which calculates the concentration per 100 ml from the confirmed colonies of Plate 1 and 2 from columns 2 and 3. For this purpose, the ifs formula goes through every combination of possible inputs for Plate 1 and 2 and decides what should happen:

| Formula Part | Purpose |
|--|--|
| ifs( | **open ifs formula** |
|istzahl(this(2))&&istzahl(this(3)),(this(2)+this(3))*100, | **if both results are numbers -> add both numbers and multiply by 100** |
| this(2)==='na'&&this(3)==='na','na', | **if both plates are not evaluable -> output 'na'** |
| this(2)==='na'&&this(3)==='na*','na*', | **Plate 1 not evaluable, Plate 2 not evaluable, but legionella found -> output 'na\*'** |
| this(2)==='na*'&&this(3)==='na','na*', | **Plate 2 not evaluable, Plate 1 not evaluable, but legionella found -> output 'na\*'** |
| this(2)==='na*'&&this(3)==='na*','na*', | **both plates not evaluable, but legionella found -> output 'na\*'** |
| istzahl(this(2))&&this(2)==0&&this(3)==='na*','0*', | **Plate 1 has 0 colonies, Plate 2 not evaluable, but legionella found -> output '0\*'** |
| istzahl(this(3))&&this(3)==0&&this(2)==='na*','0*', | **Plate 2 has 0 colonies, Plate 1 not evaluable, but legionella found -> output '0\*'** |
| (this(2)==='na'\|\|this(2)==='na*'\|\|contains(this(2),'>'))&&istzahl(this(3)), 200*this(3), | **Plate 1 not evaluable or >300, Plate 2 had colonies -> multiply Plate 2 by 200** |
| (this(3)==='na'\|\|this(3)==='na*'\|\|contains(this(3),'>'))&&istzahl(this(2)), 200*this(2), | **Plate 2 not evaluable or >300, Plate 1 had colonies -> multiply Plate 1 by 200** |
| '> 60000' | **both plates >300 -> output '> 60000'** |
| ) | **close ifs formula** |







Legionella Membrane Filtration Configuration Parameters

For the 2nd parameter, the 50 ml approach, 4 columns are set up in this example, as follows:

| Column | Column Label | Data Type | Purpose |
|--|--|--|--|
|0| CFU/100ml | blocked | Here, the CFU/100 ml is calculated from the confirmed colonies, manual inputs are blocked |
|1| Accompanying Flora | -,+,++,+++ | Selection of the strength of accompanying flora |
|2| Confirmed Colonies | /^$\|^na$\|^na\\\*$\|^> *80$\|^([0-9]\|[1-7][0-9]\|80)$/ | Specification of confirmed colonies, possible inputs restricted by data type to na, na\*, 0-80, >80 |
|3| Suspect Colonies | | Specification of suspect colonies |

A formula is placed in Column 0, which calculates the concentration per 100 ml from the confirmed colonies in Column 2:


| Formula Component | Purpose |
|--|--|
| ifs( | **open if formula** |
|istzahl(this(2)),this(2)*2, | **if the result is a number -> multiply by 2** |
| contains(this(2),'>'), '> 160', | **if the result is greater than 80 -> output '> 160'** |
| this(2) | **otherwise output result (na, na\*)** |
| ) | **close if formula** |








Legionella Final Result Configuration Parameters
For the 3rd parameter for the final result calculation, 3 columns are set up in this example, as follows:

In Column 0, a formula is placed, which calculates the concentration per 100 ml from direct inoculation and membrane filtration:


| Formula Component | Purpose |
|--|--|
| ifs( | **open if formula** |
|m['Leg_D']['0']>200 \|\| m['Leg_D']['0']==='> 60000', m['Leg_D']['0'], | **if the result of direct inoculation > 200 -> output direct inoculation result** |
|m['Leg_MF']['0']>4 \|\| m['Leg_MF']['0']==='> 160', m['Leg_MF']['0'], | **if the result of membrane filtration > 4 -> output membrane filtration result** |
|m['Leg_D']['0']==='na'&&m['Leg_MF']['0']==='na','na', | **if both results are not evaluable -> output 'na'** |
|m['Leg_D']['0']==='na'&&m['Leg_MF']['0']==='na*','na*', | **if both results are not evaluable, but Legionella were found in membrane filtration -> output 'na\*'** |
|m['Leg_D']['0']==='na*'&&m['Leg_MF']['0']==='na','na*', | **if both results are not evaluable, but Legionella were found in direct inoculation -> output 'na\*'** |
|m['Leg_D']['0']==='na*'&&m['Leg_MF']['0']==='na*','na*', | **if both results are not evaluable, but Legionella were found in both -> output 'na\*'** |
|istzahl(m['Leg_D']['0'])&&m['Leg_D']['0']==0&&m['Leg_MF']['0']==='na','< 100', | **if no Legionella were found in direct inoculation and membrane filtration is not evaluable -> output < 100** |
|istzahl(m['Leg_MF']['0'])&&m['Leg_MF']['0']==0&&m['Leg_D']['0']==='na', '< 2', | **if no Legionella were found in membrane filtration and direct inoculation is not evaluable -> output < 2** |
|istzahl(m['Leg_MF']['0'])&&m['Leg_MF']['0']==0&&istzahl(m['Leg_D']['0'])&&m['Leg_D']['0']==0, '< 2', | **if no Legionella were found in both -> output <2** |
|istzahl(m['Leg_MF']['0'])&&m['Leg_MF']['0']==0&&m['Leg_D']['0']==='na*', '< 2*', | **if no Legionella were found in membrane filtration and direct inoculation is not evaluable, but Legionella were found -> output < 2\*** |
|istzahl(m['Leg_MF']['0'])&&m['Leg_MF']['0']==0&&m['Leg_D']['0']==='0*', '< 2*', | **if no Legionella were found in membrane filtration and one plate was without Legionella in direct inoculation, but not evaluable, and the other with Legionella -> output < 2\*** |
|m['Leg_D']['0']==='na'&&istzahl(m['Leg_MF']['0']), '< 6*', | **if Legionella were found up to 2 in membrane filtration and direct inoculation is not evaluable -> output < 6\*** |
|m['Leg_D']['0']==='na*'&&istzahl(m['Leg_MF']['0']), '< 6*', | **if Legionella were found up to 2 in membrane filtration and direct inoculation is not evaluable, but Legionella were found -> output < 6\*** |
|m['Leg_D']['0']==='0*'&&istzahl(m['Leg_MF']['0']), '< 6*', | **if Legionella were found up to 2 in membrane filtration and one plate was without Legionella in direct inoculation, but not evaluable, and the other with Legionella -> output < 6\*** |
|istzahl(m['Leg_D']['0'])&&m['Leg_D']['0']==0&&istzahl(m['Leg_MF']['0']), '< 6*', | **if Legionella were found up to 2 in membrane filtration and no Legionella were found in direct inoculation-> output < 6\*** |
|'< 100*' | **in all other cases (Legionella were found up to 2 in direct inoculation) -> output <100\*** |
| ) | **close if formula** |



In Column 1, a formula is placed, which selects the relevant accompanying flora from direct inoculation and membrane filtration:
| Formula Component | Purpose |
|--|--|
| ifs( | **open if formula** |
|m['Leg_D']['0']>200 \|\| m['Leg_D']['0']==='> 60000', m['Leg_D']['1'], | **if the result of direct inoculation > 200 -> output accompanying flora of direct inoculation** |
|m['Leg_MF']['0']>4 \|\| m['Leg_MF']['0']==='> 160', m['Leg_MF']['1'], | **if the result of membrane filtration > 4 -> output accompanying flora of membrane filtration** |
|m['Leg_Endresult']['0']==='na' \|\| m['Leg_Endresult']['0']==='na*','-', | **if the final result is na or na\* -> output a -** |
|m['Leg_Endresult']['0']==='< 2'\|\|m['Leg_Endresult']['0']==='< 2*'\|\|m['Leg_Endresult']['0']==='< 6*',m['Leg_MF']['1'], | **if the final result is < 2, <2\* or < 6\* -> output accompanying flora of membrane filtration** |
|m['Leg_D']['1'] | **otherwise output accompanying flora of direct inoculation** |
| ) | **close if formula** |



In Column 2, a formula is placed, which selects the relevant approach from direct inoculation and membrane filtration:

| Formula Component | Purpose |
|--|--|
| ifs( | **open if formula** |
|m['Leg_D']['0']>200 \|\| m['Leg_D']['0']==='> 60000', 'DA', | **if the result of direct inoculation > 200 -> output DA** |
|m['Leg_MF']['0']>4 \|\| m['Leg_MF']['0']==='> 160', 'MF', | **if the result of membrane filtration > 4 -> output MF** |
|m['Leg_Endresult']['0']==='na' \|\| m['Leg_Endresult']['0']==='na*','-', | **if the final result is na or na\* -> output a -** |
|m['Leg_Endresult']['0']==='< 2' \|\| m['Leg_Endresult']['0']==='< 2*' \|\| m['Leg_Endresult']['0']==='< 6*','MF', | **if the final result is < 2, <2\* or < 6\* -> output MF** |
|'DA' | **otherwise output DA** |
| ) | **close if formula** |

Last change: 26.07.2024

Allgemeines

Einführungsphase

Mitarbeiter

Aufträge

Proben

Probenvorlage

Berichte

Berichtstabellen Editor

Kunden

Kundenzone (optional)

Anlagen

Angebote

Rechnungen

Parameter

Rechnen mit Parametern

Schnittstellen

Webservice

Transformationscode

Prüfpläne / Grenzwerte / Spezifikationen

Dokumentenlenkung

Prüfmittel

Material

Mitarbeiterschulungen

8D-Report

Sonstiges

PDF-Vorlagen

Fragen und Antworten

Lieferantenbewertung

Dateiverwaltung

Auswertungen

Prozesse