From 389dad867106a0835e9dd55cfdf46a3112ce7b5a Mon Sep 17 00:00:00 2001 From: adaurat Date: Thu, 15 Jan 2026 14:23:16 +0100 Subject: [PATCH 1/8] add m2m field for QMRAReference in QMRATreatment --- qmra/risk_assessment/admin.py | 6 +++- ...atreatment_bacteria_references_and_more.py | 28 +++++++++++++++++++ .../migrations/0008_auto_20260115_1342.py | 24 ++++++++++++++++ qmra/risk_assessment/qmra_models.py | 5 ++++ 4 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 qmra/risk_assessment/migrations/0007_qmratreatment_bacteria_references_and_more.py create mode 100644 qmra/risk_assessment/migrations/0008_auto_20260115_1342.py diff --git a/qmra/risk_assessment/admin.py b/qmra/risk_assessment/admin.py index e554c13..82ffdcb 100644 --- a/qmra/risk_assessment/admin.py +++ b/qmra/risk_assessment/admin.py @@ -64,10 +64,14 @@ class QMRATreatmentAdmin(admin.ModelAdmin): ("name", "group"), ("bacteria_min", "bacteria_max"), "bacteria_reference", + "bacteria_references", ("viruses_min", "viruses_max"), "viruses_reference", + "viruses_references", ("protozoa_min", "protozoa_max"), - "protozoa_reference" + "protozoa_reference", + "protozoa_references" ] + filter_horizontal = ["bacteria_references", "viruses_references", "protozoa_references"] save_model = save_model diff --git a/qmra/risk_assessment/migrations/0007_qmratreatment_bacteria_references_and_more.py b/qmra/risk_assessment/migrations/0007_qmratreatment_bacteria_references_and_more.py new file mode 100644 index 0000000..6250f5a --- /dev/null +++ b/qmra/risk_assessment/migrations/0007_qmratreatment_bacteria_references_and_more.py @@ -0,0 +1,28 @@ +# Generated by Django 5.0.6 on 2026-01-15 12:42 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('risk_assessment', '0006_qmrapathogen_qmrareference_qmrasource_qmraexposure_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='qmratreatment', + name='bacteria_references', + field=models.ManyToManyField(related_name='bacteria_lrvs', to='risk_assessment.qmrareference'), + ), + migrations.AddField( + model_name='qmratreatment', + name='protozoa_references', + field=models.ManyToManyField(related_name='protozoa_lrvs', to='risk_assessment.qmrareference'), + ), + migrations.AddField( + model_name='qmratreatment', + name='viruses_references', + field=models.ManyToManyField(related_name='viruses_lrvs', to='risk_assessment.qmrareference'), + ), + ] diff --git a/qmra/risk_assessment/migrations/0008_auto_20260115_1342.py b/qmra/risk_assessment/migrations/0008_auto_20260115_1342.py new file mode 100644 index 0000000..81e1096 --- /dev/null +++ b/qmra/risk_assessment/migrations/0008_auto_20260115_1342.py @@ -0,0 +1,24 @@ +# Generated by Django 5.0.6 on 2026-01-15 12:42 + +from django.db import migrations + + +def migrate_references(apps, schema_editor): + + QMRATreatment = apps.get_model("risk_assessment", "QMRATreatment") + for treatment in QMRATreatment.objects.all(): + + treatment.bacteria_references.add(treatment.bacteria_reference) + treatment.viruses_references.add(treatment.viruses_reference) + treatment.protozoa_references.add(treatment.protozoa_reference) + + +class Migration(migrations.Migration): + + dependencies = [ + ('risk_assessment', '0007_qmratreatment_bacteria_references_and_more'), + ] + + operations = [ + migrations.RunPython(migrate_references), + ] diff --git a/qmra/risk_assessment/qmra_models.py b/qmra/risk_assessment/qmra_models.py index 9911bba..0f89ade 100644 --- a/qmra/risk_assessment/qmra_models.py +++ b/qmra/risk_assessment/qmra_models.py @@ -270,14 +270,19 @@ class QMRATreatment(models.Model): bacteria_max: Optional[float] = models.FloatField(blank=True, null=True) bacteria_reference = models.ForeignKey(QMRAReference, blank=True, null=True, on_delete=models.CASCADE, related_name="bacteria_lrv") + bacteria_references = models.ManyToManyField(QMRAReference, related_name="bacteria_lrvs") + viruses_min: Optional[float] = models.FloatField(blank=True, null=True) viruses_max: Optional[float] = models.FloatField(blank=True, null=True) viruses_reference = models.ForeignKey(QMRAReference, blank=True, null=True, on_delete=models.CASCADE, related_name="viruses_lrv") + viruses_references = models.ManyToManyField(QMRAReference, related_name="viruses_lrvs") + protozoa_min: Optional[float] = models.FloatField(blank=True, null=True) protozoa_max: Optional[float] = models.FloatField(blank=True, null=True) protozoa_reference = models.ForeignKey(QMRAReference, blank=True, null=True, on_delete=models.CASCADE, related_name="protozoa_lrv") + protozoa_references = models.ManyToManyField(QMRAReference, related_name="protozoa_lrvs") @classmethod def from_dict(cls, data): From 4757c002ad22f3d8b3ddf992f0ae09c36fa3831e Mon Sep 17 00:00:00 2001 From: adaurat Date: Wed, 21 Jan 2026 13:50:08 +0100 Subject: [PATCH 2/8] update static data from prod and fix tests --- qmra/risk_assessment/tests/test_assess_risk.py | 2 +- qmra/static/data/default-references.json | 2 +- qmra/static/data/default-treatments.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/qmra/risk_assessment/tests/test_assess_risk.py b/qmra/risk_assessment/tests/test_assess_risk.py index cf732de..7ea5848 100644 --- a/qmra/risk_assessment/tests/test_assess_risk.py +++ b/qmra/risk_assessment/tests/test_assess_risk.py @@ -77,7 +77,7 @@ def test_with_all_pathogens(self): ) for p, _ in QMRAPathogens.data.items() ] given_treatments = [ - Treatment.from_default(QMRATreatments.get("Conventional clarification"), given_ra), + Treatment.from_default(QMRATreatments.get("Coagulation, flocculation and media filtration"), given_ra), Treatment.from_default(QMRATreatments.get("Slow sand filtration"), given_ra), ] given_ra.inflows.set(given_inflows, bulk=False) diff --git a/qmra/static/data/default-references.json b/qmra/static/data/default-references.json index 2004c6a..fcb018b 100644 --- a/qmra/static/data/default-references.json +++ b/qmra/static/data/default-references.json @@ -1 +1 @@ -{"1": {"ReferenceID": 1, "ReferenceName": "Adams et al. 1976 & Haggerty and John 1978", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Naegleria_fowleri:_Dose_Response_Models"}, "2": {"ReferenceID": 2, "ReferenceName": "Black et al 1988", "ReferenceLink": "https://qmrawiki.org/experiments/campylobacter-jejuni/108%2B%2B"}, "3": {"ReferenceID": 3, "ReferenceName": "Cliver, 1981", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Enteroviruses:_Dose_Response_Models"}, "4": {"ReferenceID": 4, "ReferenceName": "Cornick & Helgerson (2004)", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Escherichia_coli_enterohemorrhagic_(EHEC):_Dose_Response_Models"}, "5": {"ReferenceID": 5, "ReferenceName": "Couch, Cate et al. 1966", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Adenovirus:_Dose_Response_Models"}, "6": {"ReferenceID": 6, "ReferenceName": "Day and Berendt, 1972", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Francisella_tularensis:_Dose_Response_Models"}, "7": {"ReferenceID": 7, "ReferenceName": "DeDiego et al., 2008 & De Albuquerque et al., 2006", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/SARS:_Dose_Response_Models"}, "8": {"ReferenceID": 8, "ReferenceName": "DEMEAUWARE Deliverable 3.1 (p.18-19): NRMMC-EPHC-AHMC (2006), WHO 2006, Table 3.6)", "ReferenceLink": "https://www.kompetenz-wasser.de/media/pages/forschung/publikationen/843/eb7a40d5d0-1702634140/Seis-2015-843.pdf"}, "9": {"ReferenceID": 9, "ReferenceName": "Druett 1953", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Bacillus_anthracis:_Dose_Response_Models"}, "10": {"ReferenceID": 10, "ReferenceName": "DuPont et al. (1971)", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Escherichia_coli:_Dose_Response_Models"}, "11": {"ReferenceID": 11, "ReferenceName": "DuPont et al. (1972b)", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Shigella:_Dose_Response_Models"}, "12": {"ReferenceID": 12, "ReferenceName": "Golnazarian", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Listeria_monocytogenes_(Infection):_Dose_Response_Models"}, "13": {"ReferenceID": 13, "ReferenceName": "Golnazarian, Donnelly et al. 1989", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Listeria_monocytogenes_(Death_as_response):_Dose_Response_Models"}, "14": {"ReferenceID": 14, "ReferenceName": "Hazlett, Rosen et al. 1978", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Pseudomonas_aeruginosa_(bacterimia):_Dose_Response_Models"}, "15": {"ReferenceID": 15, "ReferenceName": "Hendley et al., 1972", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Rhinovirus:_Dose_Response_Models"}, "16": {"ReferenceID": 16, "ReferenceName": "Hornick et al. (1966),Hornick et al. (1970)", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Salmonella_Typhi:_Dose_Response_Models"}, "17": {"ReferenceID": 17, "ReferenceName": "Hornick et al., (1971)", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Vibrio_cholerae:_Dose_Response_Models"}, "18": {"ReferenceID": 18, "ReferenceName": "Jahrling et al., 1982", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Lassa_virus:_Dose_Response_Models"}, "19": {"ReferenceID": 19, "ReferenceName": "Koprowski", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Poliovirus:_Dose_Response_Models"}, "20": {"ReferenceID": 20, "ReferenceName": "Lathem et al. 2005", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Yersinia_pestis:_Dose_Response_Models"}, "21": {"ReferenceID": 21, "ReferenceName": "Lawin-Brussel et al. (1993)", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Pseudomonas_aeruginosa_(Contact_lens):_Dose_Response_Models"}, "22": {"ReferenceID": 22, "ReferenceName": "Liu, Koo et al. 2002 and Brett and Woods 1996", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Burkholderia_pseudomallei:_Dose_Response_Models"}, "23": {"ReferenceID": 23, "ReferenceName": "McCullough and Eisele 1951,2", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Salmonella_meleagridis:_Dose_Response_Models"}, "24": {"ReferenceID": 24, "ReferenceName": "McCullough and Elsele,1951", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Salmonella_anatum:_Dose_Response_Models"}, "25": {"ReferenceID": 25, "ReferenceName": "McCullough and Elsele,1951", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Salmonella_serotype_newport:_Dose_Response_Models"}, "26": {"ReferenceID": 26, "ReferenceName": "Messner et al. 2001", "ReferenceLink": "https://qmrawiki.org/experiments/cryptosporidium-parvum"}, "27": {"ReferenceID": 27, "ReferenceName": "Meynell and Meynell,1958", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Salmonella_nontyphoid:_Dose_Response_Models"}, "28": {"ReferenceID": 28, "ReferenceName": "Muller et al. (1983)", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Legionella_pneumophila:_Dose_Response_Models"}, "29": {"ReferenceID": 29, "ReferenceName": "Murphy et al., 1984 & Murphy et al., 1985", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Influenza:_Dose_Response_Models"}, "30": {"ReferenceID": 30, "ReferenceName": "O'Brien et al(1976)", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Mycobacterium_avium:_Dose_Response_Models"}, "31": {"ReferenceID": 31, "ReferenceName": "Rendtorff 1954", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Endamoeba_coli:_Dose_Response_Models"}, "32": {"ReferenceID": 32, "ReferenceName": "Rendtorff 1954", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Giardia_duodenalis:_Dose_Response_Models"}, "33": {"ReferenceID": 33, "ReferenceName": "Rose and Haas 1999", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Staphylococcus_aureus:_Dose_Response_Models"}, "34": {"ReferenceID": 34, "ReferenceName": "Saslaw and Carlisle 1966 and Dupont, Hornick et al. 1973", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Rickettsia_rickettsi:_Dose_Response_Models"}, "35": {"ReferenceID": 35, "ReferenceName": "Schiff et al.,1984", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Echovirus:_Dose_Response_Models"}, "36": {"ReferenceID": 36, "ReferenceName": "Smith, Williams2007", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Listeria_monocytogenes_(Stillbirths):_Dose_Response_Models"}, "37": {"ReferenceID": 37, "ReferenceName": "Ward et al, 1986", "ReferenceLink": "https://qmrawiki.org/experiments/rotavirus"}, "38": {"ReferenceID": 38, "ReferenceName": "WHO (2011): Drinking water guideline, Table 7.4", "ReferenceLink": "http://apps.who.int/iris/bitstream/10665/44584/1/9789241548151_eng.pdf#page=155"}, "39": {"ReferenceID": 39, "ReferenceName": "WHO (2011): Drinking water guideline, Table 7.6", "ReferenceLink": "http://apps.who.int/iris/bitstream/10665/44584/1/9789241548151_eng.pdf#page=159"}, "40": {"ReferenceID": 40, "ReferenceName": "WHO (2011): Drinking water guideline, Table 7.7", "ReferenceLink": "http://apps.who.int/iris/bitstream/10665/44584/1/9789241548151_eng.pdf#page=162"}, "41": {"ReferenceID": 41, "ReferenceName": "Williams et al, 1982", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Coxiella_burnetii:_Dose_Response_Models"}, "42": {"ReferenceID": 42, "ReferenceName": "WHO (2006) safe use wastewater V2", "ReferenceLink": "https://www.who.int/publications/i/item/9241546832"}, "43": {"ReferenceID": 43, "ReferenceName": "WHO GDWQ (2004)", "ReferenceLink": "https://www.who.int/publications/i/item/9789241549950"}, "44": {"ReferenceID": 44, "ReferenceName": "KWR 2016.081", "ReferenceLink": "https://library.kwrwater.nl/publication/54026237/"}, "45": {"ReferenceID": 45, "ReferenceName": "Sales Ortells 2015", "ReferenceLink": "https://repository.tudelft.nl/islandora/object/uuid:0e41d07b-9f44-4220-aaac-e22c73c5074a?collection=research"}, "46": {"ReferenceID": 46, "ReferenceName": "MICRORISK final report chapter 4 Table 4.11", "ReferenceLink": "https://www.kwrwater.nl/wp-content/uploads/2016/09/MICRORISK-FINAL-REPORT-Quantitative-microbial-risk-assessment-in-the-Water-Safety-Plan.pdf"}, "47": {"ReferenceID": 47, "ReferenceName": "NSF/ANSI 419 validation", "ReferenceLink": "http://info.nsf.org/Certified/pdwe/Listings.asp"}, "48": {"ReferenceID": 48, "ReferenceName": "EPHC, NRMMC, AHMC (2006)", "ReferenceLink": "https://www.susana.org/en/knowledge-hub/resources-and-publications/library/details/1533"}, "49": {"ReferenceID": 49, "ReferenceName": "WHO 2017", "ReferenceLink": "https://www.who.int/water_sanitation_health/publications/drinking-water-quality-guidelines-4-including-1st-addendum/en/"}, "50": {"ReferenceID": 50, "ReferenceName": "Hijnen et al. (2006)", "ReferenceLink": "https://doi.org/10.1016/j.watres.2005.10.030"}} \ No newline at end of file +{"1": {"ReferenceID": 1, "ReferenceName": "Adams et al. 1976 & Haggerty and John 1978", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Naegleria_fowleri:_Dose_Response_Models"}, "2": {"ReferenceID": 2, "ReferenceName": "Black et al 1988", "ReferenceLink": "https://qmrawiki.org/experiments/campylobacter-jejuni/108%2B%2B"}, "3": {"ReferenceID": 3, "ReferenceName": "Cliver, 1981", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Enteroviruses:_Dose_Response_Models"}, "4": {"ReferenceID": 4, "ReferenceName": "Cornick & Helgerson (2004)", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Escherichia_coli_enterohemorrhagic_(EHEC):_Dose_Response_Models"}, "5": {"ReferenceID": 5, "ReferenceName": "Couch, Cate et al. 1966", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Adenovirus:_Dose_Response_Models"}, "6": {"ReferenceID": 6, "ReferenceName": "Day and Berendt, 1972", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Francisella_tularensis:_Dose_Response_Models"}, "7": {"ReferenceID": 7, "ReferenceName": "DeDiego et al., 2008 & De Albuquerque et al., 2006", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/SARS:_Dose_Response_Models"}, "8": {"ReferenceID": 8, "ReferenceName": "DEMEAUWARE Deliverable 3.1 (p.18-19): NRMMC-EPHC-AHMC (2006), WHO 2006, Table 3.6)", "ReferenceLink": "https://www.kompetenz-wasser.de/media/pages/forschung/publikationen/843/eb7a40d5d0-1702634140/Seis-2015-843.pdf"}, "9": {"ReferenceID": 9, "ReferenceName": "Druett 1953", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Bacillus_anthracis:_Dose_Response_Models"}, "10": {"ReferenceID": 10, "ReferenceName": "DuPont et al. (1971)", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Escherichia_coli:_Dose_Response_Models"}, "11": {"ReferenceID": 11, "ReferenceName": "DuPont et al. (1972b)", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Shigella:_Dose_Response_Models"}, "12": {"ReferenceID": 12, "ReferenceName": "Golnazarian", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Listeria_monocytogenes_(Infection):_Dose_Response_Models"}, "13": {"ReferenceID": 13, "ReferenceName": "Golnazarian, Donnelly et al. 1989", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Listeria_monocytogenes_(Death_as_response):_Dose_Response_Models"}, "14": {"ReferenceID": 14, "ReferenceName": "Hazlett, Rosen et al. 1978", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Pseudomonas_aeruginosa_(bacterimia):_Dose_Response_Models"}, "15": {"ReferenceID": 15, "ReferenceName": "Hendley et al., 1972", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Rhinovirus:_Dose_Response_Models"}, "16": {"ReferenceID": 16, "ReferenceName": "Hornick et al. (1966),Hornick et al. (1970)", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Salmonella_Typhi:_Dose_Response_Models"}, "17": {"ReferenceID": 17, "ReferenceName": "Hornick et al., (1971)", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Vibrio_cholerae:_Dose_Response_Models"}, "18": {"ReferenceID": 18, "ReferenceName": "Jahrling et al., 1982", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Lassa_virus:_Dose_Response_Models"}, "19": {"ReferenceID": 19, "ReferenceName": "Koprowski", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Poliovirus:_Dose_Response_Models"}, "20": {"ReferenceID": 20, "ReferenceName": "Lathem et al. 2005", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Yersinia_pestis:_Dose_Response_Models"}, "21": {"ReferenceID": 21, "ReferenceName": "Lawin-Brussel et al. (1993)", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Pseudomonas_aeruginosa_(Contact_lens):_Dose_Response_Models"}, "22": {"ReferenceID": 22, "ReferenceName": "Liu, Koo et al. 2002 and Brett and Woods 1996", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Burkholderia_pseudomallei:_Dose_Response_Models"}, "23": {"ReferenceID": 23, "ReferenceName": "McCullough and Eisele 1951,2", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Salmonella_meleagridis:_Dose_Response_Models"}, "24": {"ReferenceID": 24, "ReferenceName": "McCullough and Elsele,1951", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Salmonella_anatum:_Dose_Response_Models"}, "25": {"ReferenceID": 25, "ReferenceName": "McCullough and Elsele,1951", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Salmonella_serotype_newport:_Dose_Response_Models"}, "26": {"ReferenceID": 26, "ReferenceName": "Messner et al. 2001", "ReferenceLink": "https://qmrawiki.org/experiments/cryptosporidium-parvum"}, "27": {"ReferenceID": 27, "ReferenceName": "Meynell and Meynell,1958", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Salmonella_nontyphoid:_Dose_Response_Models"}, "28": {"ReferenceID": 28, "ReferenceName": "Muller et al. (1983)", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Legionella_pneumophila:_Dose_Response_Models"}, "29": {"ReferenceID": 29, "ReferenceName": "Murphy et al., 1984 & Murphy et al., 1985", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Influenza:_Dose_Response_Models"}, "30": {"ReferenceID": 30, "ReferenceName": "O'Brien et al(1976)", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Mycobacterium_avium:_Dose_Response_Models"}, "31": {"ReferenceID": 31, "ReferenceName": "Rendtorff 1954", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Endamoeba_coli:_Dose_Response_Models"}, "32": {"ReferenceID": 32, "ReferenceName": "Rendtorff 1954", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Giardia_duodenalis:_Dose_Response_Models"}, "33": {"ReferenceID": 33, "ReferenceName": "Rose and Haas 1999", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Staphylococcus_aureus:_Dose_Response_Models"}, "34": {"ReferenceID": 34, "ReferenceName": "Saslaw and Carlisle 1966 and Dupont, Hornick et al. 1973", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Rickettsia_rickettsi:_Dose_Response_Models"}, "35": {"ReferenceID": 35, "ReferenceName": "Schiff et al.,1984", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Echovirus:_Dose_Response_Models"}, "36": {"ReferenceID": 36, "ReferenceName": "Smith, Williams2007", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Listeria_monocytogenes_(Stillbirths):_Dose_Response_Models"}, "37": {"ReferenceID": 37, "ReferenceName": "Ward et al, 1986", "ReferenceLink": "https://qmrawiki.org/experiments/rotavirus"}, "38": {"ReferenceID": 38, "ReferenceName": "WHO (2011): Drinking water guideline, Table 7.4", "ReferenceLink": "http://apps.who.int/iris/bitstream/10665/44584/1/9789241548151_eng.pdf#page=155"}, "39": {"ReferenceID": 39, "ReferenceName": "WHO (2011): Drinking water guideline, Table 7.6", "ReferenceLink": "http://apps.who.int/iris/bitstream/10665/44584/1/9789241548151_eng.pdf#page=159"}, "40": {"ReferenceID": 40, "ReferenceName": "WHO (2011): Drinking water guideline, Table 7.7", "ReferenceLink": "http://apps.who.int/iris/bitstream/10665/44584/1/9789241548151_eng.pdf#page=162"}, "41": {"ReferenceID": 41, "ReferenceName": "Williams et al, 1982", "ReferenceLink": "http://qmrawiki.canr.msu.edu/index.php/Coxiella_burnetii:_Dose_Response_Models"}, "42": {"ReferenceID": 42, "ReferenceName": "WHO (2006) safe use wastewater V2", "ReferenceLink": "https://www.who.int/publications/i/item/9241546832"}, "43": {"ReferenceID": 43, "ReferenceName": "WHO GDWQ (2004)", "ReferenceLink": "https://www.who.int/publications/i/item/9789241549950"}, "44": {"ReferenceID": 44, "ReferenceName": "KWR 2016.081", "ReferenceLink": "https://library.kwrwater.nl/publication/54026237/"}, "45": {"ReferenceID": 45, "ReferenceName": "Sales Ortells 2015", "ReferenceLink": "https://repository.tudelft.nl/islandora/object/uuid:0e41d07b-9f44-4220-aaac-e22c73c5074a?collection=research"}, "46": {"ReferenceID": 46, "ReferenceName": "MICRORISK final report chapter 4 Table 4.11", "ReferenceLink": "https://www.kwrwater.nl/wp-content/uploads/2016/09/MICRORISK-FINAL-REPORT-Quantitative-microbial-risk-assessment-in-the-Water-Safety-Plan.pdf"}, "47": {"ReferenceID": 47, "ReferenceName": "NSF/ANSI 419 validation", "ReferenceLink": "http://info.nsf.org/Certified/pdwe/Listings.asp"}, "48": {"ReferenceID": 48, "ReferenceName": "EPHC, NRMMC, AHMC (2006)", "ReferenceLink": "https://www.susana.org/en/knowledge-hub/resources-and-publications/library/details/1533"}, "49": {"ReferenceID": 49, "ReferenceName": "WHO 2017", "ReferenceLink": "https://www.who.int/water_sanitation_health/publications/drinking-water-quality-guidelines-4-including-1st-addendum/en/"}, "50": {"ReferenceID": 50, "ReferenceName": "Hijnen et al. (2006)", "ReferenceLink": "https://doi.org/10.1016/j.watres.2005.10.030"}, "51": {"ReferenceID": 51, "ReferenceName": "Australian Guidelines for Water Recycling: Managing Health and Environmental Risks. 2020 Draft of Chapters 1, 2, 3 and 5 and Appendices 2 and 3", "ReferenceLink": "https://qldwater.com.au/public/Australian%20Guidelines%20for%20Water%20Recycling%20Consultation%20Draft%20Revised.docx"}, "52": {"ReferenceID": 52, "ReferenceName": "FlexTreat Abschlussbericht", "ReferenceLink": "https://kompetenz-wasser.de/media/pages/forschung/publikationen/flexible-und-zuverlaessige-konzepte-fuer-eine-nachhaltige-wasserwieder-verwendung-in-der-landwirtschaft-abschlussbericht/8e2b0750bd-1751274868/20250429_flextreat_abschlussbericht.pdf"}, "53": {"ReferenceID": 53, "ReferenceName": "Pecson et al., 2017", "ReferenceLink": "https://www.sciencedirect.com/science/article/pii/S0043135417304888"}} \ No newline at end of file diff --git a/qmra/static/data/default-treatments.json b/qmra/static/data/default-treatments.json index 1703b84..21bbe34 100644 --- a/qmra/static/data/default-treatments.json +++ b/qmra/static/data/default-treatments.json @@ -1 +1 @@ -{"Conventional clarification": {"id": 1, "name": "Conventional clarification", "group": "Coagulation, flocculation and sedimentation", "description": "Consists of coagulant and/or flocculant aid (e.g. polymer) dosing, rapid mixing, slow mixing and sedimentation. Log removal depends on process optimisation. Rapid changes in source water quality such as turbidity increase due to monsoon rainfall or algeal blooms may decrease treatment effect and require adjustment of process settings.", "bacteria_min": 0.2, "bacteria_max": 2.0, "bacteria_reference": "40", "viruses_min": 0.1, "viruses_max": 3.4, "viruses_reference": "40", "protozoa_min": 1.0, "protozoa_max": 2.0, "protozoa_reference": "40"}, "High-rate clarification": {"id": 3, "name": "High-rate clarification", "group": "Coagulation, flocculation and sedimentation", "description": "Consists of coagulant and/or flocculant aid (e.g. polymer) dosing, mixing and enhanced sedimentation by flock blankets, lamellae- or tube settlers. Log removal depends on process optimisation. Rapid changes in source water quality such as turbidity increase due to monsoon rainfall or algeal blooms may decrease treatment effect and require adjustment of process settings.", "bacteria_min": null, "bacteria_max": null, "bacteria_reference": null, "viruses_min": null, "viruses_max": null, "viruses_reference": null, "protozoa_min": 2.0, "protozoa_max": 2.8, "protozoa_reference": "40"}, "Slow sand filtration": {"id": 8, "name": "Slow sand filtration", "group": "Filtration", "description": "Water is filtered through a fixed bed sand operatied down flow with rates of 0.1 to 1 m/h and contact times of 3 to 6 hours. The filter is not backwashed. In weeks to months a 'schmutzdecke' will develop on the filter which enhances log removal. Grain size, flow rate and temperature also affect log removal. Consistent low filtered water turbidity of ? 0.3 NTU (none to exceed 1 NTU) are associated higher log removal of pathogens\r\n\r\nassociated with 1 - 2 log reduction of viruses and 2.5 - 3 log reduction of Cryptosporidiuma", "bacteria_min": 2.0, "bacteria_max": 6.0, "bacteria_reference": "40", "viruses_min": 0.25, "viruses_max": 4.0, "viruses_reference": "40", "protozoa_min": 0.3, "protozoa_max": 5.0, "protozoa_reference": "40"}, "Bank filtration-456": {"id": 9, "name": "Bank filtration-456", "group": "Pretreatment", "description": "Water is abstracted through wells located close to surface water, thus the bank serves as a natural filter. Log removal depends on travel distance and time, soil type (grain size),\r\n and geochemicl conditions (oxygen level, pH)", "bacteria_min": 2.0, "bacteria_max": 6.0, "bacteria_reference": "40", "viruses_min": 2.1, "viruses_max": 8.3, "viruses_reference": "40", "protozoa_min": 1.0, "protozoa_max": 2.0, "protozoa_reference": "40"}, "Storage reservoirs": {"id": 11, "name": "Storage reservoirs", "group": "Pretreatment", "description": "Water is protected from human recontamination in reservoirs, however wildlife and waterfoul may introduce pathogens. Log reduction occurs due to sedimentation, UV radiation from sunlight and die-off in time, depending on construction (mixing) and temperature. Reporded reduction based on residence time > 40 days (bacteria), 160 days (protozoa)", "bacteria_min": 0.7, "bacteria_max": 2.2, "bacteria_reference": "40", "viruses_min": null, "viruses_max": null, "viruses_reference": null, "protozoa_min": 1.4, "protozoa_max": 2.3, "protozoa_reference": "40"}, "Chlorination, wastewater": {"id": 12, "name": "Chlorination, wastewater", "group": "Primary disinfection", "description": "Log inactivation depends on free chlorine concentration and contact time (CT); not effective against Cryptosporidium oocysts, reported protozoan log reduction is mostly for Giardia. Turbidity and chlorine-demanding solutes inhibit this process; hence, effect in wastewater is limited since free chlorine will rapidly decay. \r\n\r\nEffective disinfection. Where this is not practical, turbidities should be kept below 5 NTU with higher chlorine doses or contact times. In addition to initial disinfection, the benefits of maintaining free chlorine residuals throughout distribution systems at or above 0.2 mg/l should be considered", "bacteria_min": 2.0, "bacteria_max": 2.0, "bacteria_reference": "40", "viruses_min": 2.0, "viruses_max": 2.0, "viruses_reference": "40", "protozoa_min": 2.0, "protozoa_max": 2.0, "protozoa_reference": "40"}, "Chlorine dioxide": {"id": 13, "name": "Chlorine dioxide", "group": "Primary disinfection", "description": "Log inactivation depends on chlorine dioxide concentration and contact time (CT); Turbidity and organics inhibit this process; hence, turbidity should be kept below 1 NTU to support\r\n effective disinfection Chlorine dioxide degrades rapidly and doesn't leave a disinfectand residual for distribution.", "bacteria_min": 2.0, "bacteria_max": 2.0, "bacteria_reference": "40", "viruses_min": 2.0, "viruses_max": 2.0, "viruses_reference": "40", "protozoa_min": 2.0, "protozoa_max": 2.0, "protozoa_reference": "40"}, "Ozonation, drinking water": {"id": 14, "name": "Ozonation, drinking water", "group": "Primary disinfection", "description": "Log inactivation depends on dissolved ozone concentration and contact time (CT); Turbidity and organics inhibit this process; hence, turbidity should be kept below 1 NTU to support\r\n\r\n effective disinfection. Ozone degrades rapidly and doesn't leave a disinfectand residual for distribution. Effective mixing and consistent contact time are crucial for disinfection due to the rapid degradation of ozone.\r\n\r\nCryptosporidium varies widely", "bacteria_min": 2.0, "bacteria_max": 2.0, "bacteria_reference": "40", "viruses_min": 2.0, "viruses_max": 2.0, "viruses_reference": "40", "protozoa_min": 2.0, "protozoa_max": 2.0, "protozoa_reference": "40"}, "UV disinfection 20 mJ/cm2, drinking": {"id": 15, "name": "UV disinfection 20 mJ/cm2, drinking", "group": "Primary disinfection", "description": "UV-light is mostly effective at 254 nm where it affects DNA or RNA thus preventing reproduction of the organism (inactivation). Log reduction for drinking water UV is based on closed UV-reactors wich have been validated according to appropriate standards (e.g. USEPA or DVGW). Effectiveness of disinfection depends on delivered fluence (dose in mJ/cm2), which varies with lamp intensity, exposure time (flow rate) and UV-absorption by the water (organics). Excessive turbidity and certain dissolved species inhibit this process; hence, turbidity should be kept below 1 NTU to support effective disinfection.", "bacteria_min": 4.6, "bacteria_max": 6.0, "bacteria_reference": "50", "viruses_min": 2.0, "viruses_max": 3.1, "viruses_reference": "50", "protozoa_min": 2.4, "protozoa_max": 3.0, "protozoa_reference": "50"}, "Primary treatment": {"id": 16, "name": "Primary treatment", "group": "Pretreatment", "description": "Primary treatment consists of temporarily holding the sewage in a quiescent basin where heavy solids can settle to the bottom while oil, grease and lighter solids float to the surface. The settled and floating materials are removed and the remaining liquid may be discharged or subjected to secondary treatment", "bacteria_min": 0.0, "bacteria_max": 0.5, "bacteria_reference": "8", "viruses_min": 0.0, "viruses_max": 0.1, "viruses_reference": "8", "protozoa_min": 0.0, "protozoa_max": 1.0, "protozoa_reference": "8"}, "Secondary treatment": {"id": 17, "name": "Secondary treatment", "group": "Pretreatment", "description": "Secondary treatment consists of an activated sludge process to break down organics in the wastewater and a settling stage to separate the biologiscal sludge from the water.", "bacteria_min": 1.0, "bacteria_max": 3.0, "bacteria_reference": "8", "viruses_min": 0.5, "viruses_max": 2.0, "viruses_reference": "8", "protozoa_min": 0.5, "protozoa_max": 1.5, "protozoa_reference": "8"}, "Dual media filtration": {"id": 18, "name": "Dual media filtration", "group": "Filtration", "description": "Water is filtered through a fixed bed consisting of two layers of granular media (e.g. antracite and sand) generally operatied down flow with rates of 5 to 20 m/h and contact times of 4 to 15 minutes. They are regularly backwashed to remove built up solids in the filter. Log removal depends on filter media and coagulation pretreatment;consistent low filtered water turbidity of ? 0.3 NTU (none to exceed 1 NTU)\r\n are associated higher log removal of pathogens", "bacteria_min": 0.0, "bacteria_max": 1.0, "bacteria_reference": "8", "viruses_min": 0.5, "viruses_max": 3.0, "viruses_reference": "8", "protozoa_min": 1.5, "protozoa_max": 2.5, "protozoa_reference": "8"}, "Chlorination, drinking water": {"id": 20, "name": "Chlorination, drinking water", "group": "Primary disinfection", "description": "Log inactivation depends on free chlorine concentration and contact time (CT); not effective against Cryptosporidium oocysts, reported log reduction is mostly for Giardia. Turbidity and chlorine-demanding solutes inhibit this process; hence, turbidity should be kept below 1 NTU to support\r\n effective disinfection. Where this is not practical, turbidities should be kept below 5 NTU with higher chlorine doses or contact times. In addition to initial disinfection, the benefits of maintaining free chlorine residuals throughout distribution systems at or above 0.2 mg/l should be considered", "bacteria_min": 2.0, "bacteria_max": 6.0, "bacteria_reference": "8", "viruses_min": 1.0, "viruses_max": 3.0, "viruses_reference": "8", "protozoa_min": 0.0, "protozoa_max": 1.5, "protozoa_reference": "8"}, "Reverse osmosis": {"id": 21, "name": "Reverse osmosis", "group": "Filtration", "description": "A reverse osmosis membrane is a thin sheet with small openings that removes solids and most soluble molecules, including salts (< 0,004 \u043f\u0457\u0405m depending on selected membrane) from the water when this is led through the membrane. It can take the form of spiral wound membranes, hollow fibers or sheets. Actual log reduction depends on the selected membrane and is determined by challenge testing.", "bacteria_min": 5.44, "bacteria_max": 6.0, "bacteria_reference": "47", "viruses_min": 5.44, "viruses_max": 6.0, "viruses_reference": "47", "protozoa_min": 5.75, "protozoa_max": 6.32, "protozoa_reference": "47"}, "Ozonation, wastewater": {"id": 22, "name": "Ozonation, wastewater", "group": "Primary disinfection", "description": "Log inactivation depends on dissolved ozone concentration and contact time (CT); Turbidity and organics inhibit this process; Since wastewater is often turbidity and contains high organics that consume ozone, the actual CT cannot be determined accurately and therefore inactivation cannot be determined accurately. Still, effective mixing and consistent contact time are crucial for disinfection due to the rapid degradation of ozone.", "bacteria_min": 2.0, "bacteria_max": 6.0, "bacteria_reference": "8", "viruses_min": 3.0, "viruses_max": 6.0, "viruses_reference": "8", "protozoa_min": null, "protozoa_max": null, "protozoa_reference": null}, "Wetlands, surface flow": {"id": 23, "name": "Wetlands, surface flow", "group": "Wetlands", "description": "An artificial wetland to treat municipal or industrial wastewater, greywater or stormwater runoff by a combination of sedimentation and biological processes including plants. Effect depends on design and climate, especially les log reduction at lower temperatures.", "bacteria_min": 1.5, "bacteria_max": 2.5, "bacteria_reference": "8", "viruses_min": null, "viruses_max": null, "viruses_reference": null, "protozoa_min": 0.5, "protozoa_max": 1.5, "protozoa_reference": "8"}, "Wetlands, subsurface flow": {"id": 24, "name": "Wetlands, subsurface flow", "group": "Wetlands", "description": "An artificial wetland to treat municipal or industrial wastewater, greywater or stormwater runoff by a combination of sedimentation, filtration and biological processes including plants. Effect depends on design, soil/filter media and climate, especially les log reduction at lower temperatures.", "bacteria_min": 0.5, "bacteria_max": 3.0, "bacteria_reference": "8", "viruses_min": null, "viruses_max": null, "viruses_reference": null, "protozoa_min": 0.5, "protozoa_max": 2.0, "protozoa_reference": "8"}, "UV disinfection, wastewater": {"id": 25, "name": "UV disinfection, wastewater", "group": "Primary disinfection", "description": "UV-light is mostly effective at 254 nm where it affects DNA or RNA thus preventing reproduction of the organism (inactivation). Effectiveness of disinfection depends on delivered fluence (dose in mJ/cm2), which varies with lamp intensity, exposure time (flow rate) and UV-absorption by the water (organics). Wastewater UV-reactors are generally open-channel reactors in which UV lamps are placed. Excessive turbidity and certain dissolved species inhibit this process; hence the effect in wastewater highly depends on the water quality an is generally lower than in drinking water at the same dose.", "bacteria_min": 2.0, "bacteria_max": 4.0, "bacteria_reference": "8", "viruses_min": 1.0, "viruses_max": 3.0, "viruses_reference": "8", "protozoa_min": 3.0, "protozoa_max": 3.0, "protozoa_reference": "8"}, "Microfiltration": {"id": 26, "name": "Microfiltration", "group": "Filtration", "description": "A microfiltration membrane is a thin sheet with small openings that removes solids (0.1-10 \u043f\u0457\u0405m depending on selected membrane) from the water when this is led through the membrane. It can take the form of capilary tubes, hollow fibers or sheet membranes. Actual log reduction depends on the selected membrane and is determined by challenge testing.", "bacteria_min": 0.0, "bacteria_max": 4.3, "bacteria_reference": "46", "viruses_min": 0.0, "viruses_max": 3.7, "viruses_reference": "46", "protozoa_min": 2.3, "protozoa_max": 6.0, "protozoa_reference": "46"}, "Ultrafiltration": {"id": 27, "name": "Ultrafiltration", "group": "Filtration", "description": "An ultrafiltration membrane is a thin sheet with small openings that removes solids (0.005-0,2 \u043f\u0457\u0405m depending on selected membrane) from the water when this is led through the membrane. It can take the form of capilary tubes, hollow fibers, spiral wound or sheet membranes. Actual log reduction depends on the selected membrane and is determined by challenge testing.", "bacteria_min": 5.5, "bacteria_max": 6.0, "bacteria_reference": "47", "viruses_min": 2.69, "viruses_max": 5.14, "viruses_reference": "47", "protozoa_min": 5.3, "protozoa_max": 6.5, "protozoa_reference": "47"}, "Nanofiltration": {"id": 28, "name": "Nanofiltration", "group": "Filtration", "description": "An nanofiltration membrane is a thin sheet with small openings that removes solids and larger soluble molecules (0.001-0,03 \u043f\u0457\u0405m depending on selected membrane) from the water when this is led through the membrane. It can take the form of spiral wound or hollow fiber membranes. Actual log reduction depends on the selected membrane and is determined by challenge testing.", "bacteria_min": 5.44, "bacteria_max": 6.0, "bacteria_reference": "47", "viruses_min": 5.44, "viruses_max": 6.0, "viruses_reference": "47", "protozoa_min": 5.75, "protozoa_max": 6.32, "protozoa_reference": "47"}, "UV disinfection 40 mJ/cm2, drinking": {"id": 29, "name": "UV disinfection 40 mJ/cm2, drinking", "group": "Primary disinfection", "description": "UV-light is mostly effective at 254 nm where it affects DNA or RNA thus preventing reproduction of the organism (inactivation). Log reduction for drinking water UV is based on closed UV-reactors wich have been validated according to appropriate standards (e.g. USEPA or DVGW). Effectiveness of disinfection depends on delivered fluence (dose in mJ/cm2), which varies with lamp intensity, exposure time (flow rate) and UV-absorption by the water (organics). Excessive turbidity and certain dissolved species inhibit this process; hence, turbidity should be kept below 1 NTU to support effective disinfection.", "bacteria_min": 4.6, "bacteria_max": 6.0, "bacteria_reference": "50", "viruses_min": 4.1, "viruses_max": 5.9, "viruses_reference": "50", "protozoa_min": 2.5, "protozoa_max": 3.0, "protozoa_reference": "50"}} \ No newline at end of file +{"Coagulation, flocculation and sedimentation": {"id": 1, "name": "Coagulation, flocculation and sedimentation", "group": "Clarification", "description": "Consists of coagulant and/or flocculant aid (e.g. polymer) dosing, rapid mixing, slow mixing and sedimentation. Log removal depends on process optimisation. Rapid changes in source water quality such as turbidity increase due to monsoon rainfall or algeal blooms may decrease treatment effect and require adjustment of process settings.", "bacteria_min": 0.2, "bacteria_max": 2.0, "bacteria_reference": "40", "viruses_min": 0.1, "viruses_max": 2.0, "viruses_reference": "40", "protozoa_min": 1.0, "protozoa_max": 2.0, "protozoa_reference": "40"}, "Slow sand filtration": {"id": 8, "name": "Slow sand filtration", "group": "Filtration", "description": "Water is filtered through a fixed bed sand operatied down flow with rates of 0.1 to 1 m/h and contact times of 3 to 6 hours. The filter is not backwashed. In weeks to months a 'schmutzdecke' will develop on the filter which enhances log removal. Grain size, flow rate and temperature also affect log removal. Consistent low filtered water turbidity of ? 0.3 NTU (none to exceed 1 NTU) are associated higher log removal of pathogens\r\n\r\nassociated with 1 - 2 log reduction of viruses and 2.5 - 3 log reduction of Cryptosporidiuma", "bacteria_min": 2.0, "bacteria_max": 6.0, "bacteria_reference": "40", "viruses_min": 0.25, "viruses_max": 4.0, "viruses_reference": "40", "protozoa_min": 0.3, "protozoa_max": 5.0, "protozoa_reference": "40"}, "Bank filtration": {"id": 9, "name": "Bank filtration", "group": "Pretreatment", "description": "Water is abstracted through wells located close to surface water, thus the bank serves as a natural filter. Log removal depends on travel distance and time, soil type (grain size),\r\n and geochemicl conditions (oxygen level, pH)", "bacteria_min": 2.0, "bacteria_max": 6.0, "bacteria_reference": "51", "viruses_min": 2.0, "viruses_max": 6.0, "viruses_reference": "51", "protozoa_min": 1.0, "protozoa_max": 6.0, "protozoa_reference": "51"}, "UV disinfection 20 mJ/cm2, drinking": {"id": 15, "name": "UV disinfection 20 mJ/cm2, drinking", "group": "Primary disinfection", "description": "UV-light is mostly effective at 254 nm where it affects DNA or RNA thus preventing reproduction of the organism (inactivation). Log reduction for drinking water UV is based on closed UV-reactors wich have been validated according to appropriate standards (e.g. USEPA or DVGW). Effectiveness of disinfection depends on delivered fluence (dose in mJ/cm2), which varies with lamp intensity, exposure time (flow rate) and UV-absorption by the water (organics). Excessive turbidity and certain dissolved species inhibit this process; hence, turbidity should be kept below 1 NTU to support effective disinfection.", "bacteria_min": 4.6, "bacteria_max": 6.0, "bacteria_reference": "50", "viruses_min": 2.0, "viruses_max": 3.1, "viruses_reference": "50", "protozoa_min": 2.4, "protozoa_max": 3.0, "protozoa_reference": "50"}, "Primary treatment": {"id": 16, "name": "Primary treatment", "group": "Pretreatment", "description": "Primary treatment consists of temporarily holding the sewage in a quiescent basin where heavy solids can settle to the bottom while oil, grease and lighter solids float to the surface. The settled and floating materials are removed and the remaining liquid may be discharged or subjected to secondary treatment", "bacteria_min": 0.0, "bacteria_max": 0.5, "bacteria_reference": "8", "viruses_min": 0.0, "viruses_max": 0.1, "viruses_reference": "8", "protozoa_min": 0.0, "protozoa_max": 1.0, "protozoa_reference": "8"}, "Secondary treatment": {"id": 17, "name": "Secondary treatment", "group": "Pretreatment", "description": "Secondary treatment consists of an activated sludge process to break down organics in the wastewater and a settling stage to separate the biologiscal sludge from the water.", "bacteria_min": 1.0, "bacteria_max": 2.0, "bacteria_reference": "51", "viruses_min": 0.5, "viruses_max": 2.0, "viruses_reference": "51", "protozoa_min": 0.5, "protozoa_max": 2.0, "protozoa_reference": "51"}, "Dual media filtration": {"id": 18, "name": "Dual media filtration", "group": "Filtration", "description": "Water is filtered through a fixed bed consisting of two layers of granular media (e.g. antracite and sand) generally operatied down flow with rates of 5 to 20 m/h and contact times of 4 to 15 minutes. They are regularly backwashed to remove built up solids in the filter. Log removal depends on filter media and coagulation pretreatment;consistent low filtered water turbidity of ? 0.3 NTU (none to exceed 1 NTU)\r\n are associated higher log removal of pathogens", "bacteria_min": 0.0, "bacteria_max": 1.0, "bacteria_reference": "8", "viruses_min": 0.5, "viruses_max": 2.0, "viruses_reference": "8", "protozoa_min": 1.5, "protozoa_max": 2.5, "protozoa_reference": "8"}, "Reverse osmosis": {"id": 21, "name": "Reverse osmosis", "group": "Filtration", "description": "A reverse osmosis membrane is a thin sheet with small openings that removes solids and most soluble molecules, including salts (< 0,004 \u043f\u0457\u0405m depending on selected membrane) from the water when this is led through the membrane. It can take the form of spiral wound membranes, hollow fibers or sheets. Actual log reduction depends on the selected membrane and is determined by challenge testing.", "bacteria_min": 5.0, "bacteria_max": 6.0, "bacteria_reference": "47", "viruses_min": 5.0, "viruses_max": 6.0, "viruses_reference": "47", "protozoa_min": 5.0, "protozoa_max": 6.0, "protozoa_reference": "47"}, "Wetlands, surface flow": {"id": 23, "name": "Wetlands, surface flow", "group": "Wetlands", "description": "An artificial wetland to treat municipal or industrial wastewater, greywater or stormwater runoff by a combination of sedimentation and biological processes including plants. Effect depends on design and climate, especially les log reduction at lower temperatures.", "bacteria_min": 1.5, "bacteria_max": 2.5, "bacteria_reference": "8", "viruses_min": null, "viruses_max": null, "viruses_reference": null, "protozoa_min": 0.5, "protozoa_max": 1.5, "protozoa_reference": "8"}, "Wetlands, subsurface flow": {"id": 24, "name": "Wetlands, subsurface flow", "group": "Wetlands", "description": "An artificial wetland to treat municipal or industrial wastewater, greywater or stormwater runoff by a combination of sedimentation, filtration and biological processes including plants. Effect depends on design, soil/filter media and climate, especially les log reduction at lower temperatures.", "bacteria_min": 0.5, "bacteria_max": 3.0, "bacteria_reference": "8", "viruses_min": null, "viruses_max": null, "viruses_reference": null, "protozoa_min": 0.5, "protozoa_max": 2.0, "protozoa_reference": "8"}, "UV disinfection, wastewater": {"id": 25, "name": "UV disinfection, wastewater", "group": "Primary disinfection", "description": "UV-light is mostly effective at 254 nm where it affects DNA or RNA thus preventing reproduction of the organism (inactivation). Effectiveness of disinfection depends on delivered fluence (dose in mJ/cm2), which varies with lamp intensity, exposure time (flow rate) and UV-absorption by the water (organics). Wastewater UV-reactors are generally open-channel reactors in which UV lamps are placed. Excessive turbidity and certain dissolved species inhibit this process; hence the effect in wastewater highly depends on the water quality an is generally lower than in drinking water at the same dose.", "bacteria_min": 2.0, "bacteria_max": 4.0, "bacteria_reference": "8", "viruses_min": 1.0, "viruses_max": 3.0, "viruses_reference": "8", "protozoa_min": 3.0, "protozoa_max": 3.0, "protozoa_reference": "8"}, "Microfiltration": {"id": 26, "name": "Microfiltration", "group": "Filtration", "description": "A microfiltration membrane is a thin sheet with small openings that removes solids (0.1-10 \u043f\u0457\u0405m depending on selected membrane) from the water when this is led through the membrane. It can take the form of capilary tubes, hollow fibers or sheet membranes. Actual log reduction depends on the selected membrane and is determined by challenge testing.", "bacteria_min": 0.0, "bacteria_max": 4.3, "bacteria_reference": "46", "viruses_min": 0.0, "viruses_max": 3.7, "viruses_reference": "46", "protozoa_min": 2.3, "protozoa_max": 6.0, "protozoa_reference": "46"}, "Ultrafiltration (module certification)": {"id": 27, "name": "Ultrafiltration (module certification)", "group": "Filtration", "description": "An ultrafiltration membrane is a thin sheet with small openings that removes solids (0.005-0,2 \u043f\u0457\u0405m depending on selected membrane) from the water when this is led through the membrane. It can take the form of capilary tubes, hollow fibers, spiral wound or sheet membranes. Actual log reduction depends on the selected membrane and is determined by challenge testing.", "bacteria_min": 5.5, "bacteria_max": 6.0, "bacteria_reference": "47", "viruses_min": 1.1, "viruses_max": 5.5, "viruses_reference": "47", "protozoa_min": 0.8, "protozoa_max": 6.0, "protozoa_reference": "47"}, "Nanofiltration": {"id": 28, "name": "Nanofiltration", "group": "Filtration", "description": "An nanofiltration membrane is a thin sheet with small openings that removes solids and larger soluble molecules (0.001-0,03 \u043f\u0457\u0405m depending on selected membrane) from the water when this is led through the membrane. It can take the form of spiral wound or hollow fiber membranes. Actual log reduction depends on the selected membrane and is determined by challenge testing.", "bacteria_min": 5.0, "bacteria_max": 6.0, "bacteria_reference": "47", "viruses_min": 5.0, "viruses_max": 6.0, "viruses_reference": "47", "protozoa_min": 5.0, "protozoa_max": 6.0, "protozoa_reference": "47"}, "UV disinfection 40 mJ/cm2, drinking": {"id": 29, "name": "UV disinfection 40 mJ/cm2, drinking", "group": "Primary disinfection", "description": "UV-light is mostly effective at 254 nm where it affects DNA or RNA thus preventing reproduction of the organism (inactivation). Log reduction for drinking water UV is based on closed UV-reactors wich have been validated according to appropriate standards (e.g. USEPA or DVGW). Effectiveness of disinfection depends on delivered fluence (dose in mJ/cm2), which varies with lamp intensity, exposure time (flow rate) and UV-absorption by the water (organics). Excessive turbidity and certain dissolved species inhibit this process; hence, turbidity should be kept below 1 NTU to support effective disinfection.", "bacteria_min": 4.6, "bacteria_max": 6.0, "bacteria_reference": "50", "viruses_min": 4.1, "viruses_max": 5.9, "viruses_reference": "50", "protozoa_min": 2.5, "protozoa_max": 3.0, "protozoa_reference": "50"}, "Soil aquifer treatment": {"id": 30, "name": "Soil aquifer treatment", "group": "Pretreatment", "description": "", "bacteria_min": 0.0, "bacteria_max": 6.0, "bacteria_reference": "51", "viruses_min": 0.0, "viruses_max": 6.0, "viruses_reference": "51", "protozoa_min": 0.0, "protozoa_max": 6.0, "protozoa_reference": "51"}, "Chlorination": {"id": 31, "name": "Chlorination", "group": "Disinfection", "description": "", "bacteria_min": 2.0, "bacteria_max": 6.0, "bacteria_reference": "51", "viruses_min": 2.0, "viruses_max": 6.0, "viruses_reference": "51", "protozoa_min": 0.0, "protozoa_max": 2.0, "protozoa_reference": "51"}, "Coagulation, flocculation and media filtration": {"id": 32, "name": "Coagulation, flocculation and media filtration", "group": "Clarification", "description": "", "bacteria_min": 1.0, "bacteria_max": 4.0, "bacteria_reference": "51", "viruses_min": 1.0, "viruses_max": 2.0, "viruses_reference": "51", "protozoa_min": 2.5, "protozoa_max": 4.0, "protozoa_reference": "51"}, "Reverse Osmosis (RO, Australian Guidelines)": {"id": 33, "name": "Reverse Osmosis (RO, Australian Guidelines)", "group": "Filtration", "description": "", "bacteria_min": 1.5, "bacteria_max": 6.0, "bacteria_reference": "51", "viruses_min": 1.5, "viruses_max": 6.0, "viruses_reference": "51", "protozoa_min": 1.5, "protozoa_max": 6.0, "protozoa_reference": "51"}, "Ozonation for disinfection >1mgO3/mgDOC": {"id": 34, "name": "Ozonation for disinfection >1mgO3/mgDOC", "group": "Disinfection", "description": "", "bacteria_min": 2.0, "bacteria_max": 4.0, "bacteria_reference": "40", "viruses_min": 2.0, "viruses_max": 4.0, "viruses_reference": "40", "protozoa_min": 2.0, "protozoa_max": 3.0, "protozoa_reference": "40"}, "Ozonation for organic micropollutant removal (0.4-0.6 mgO3/mgDOC)": {"id": 35, "name": "Ozonation for organic micropollutant removal (0.4-0.6 mgO3/mgDOC)", "group": "Organic micropollutant removal", "description": "", "bacteria_min": 1.0, "bacteria_max": 3.0, "bacteria_reference": "52", "viruses_min": 1.0, "viruses_max": 2.5, "viruses_reference": "52", "protozoa_min": 0.0, "protozoa_max": 1.0, "protozoa_reference": "52"}, "UV AOP": {"id": 36, "name": "UV AOP", "group": "Disinfection", "description": "", "bacteria_min": 6.0, "bacteria_max": 6.0, "bacteria_reference": "53", "viruses_min": 6.0, "viruses_max": 6.0, "viruses_reference": "53", "protozoa_min": 6.0, "protozoa_max": 6.0, "protozoa_reference": "53"}} \ No newline at end of file From 00b4452a7da28791893962dc49d68b43dba5d8a4 Mon Sep 17 00:00:00 2001 From: adaurat Date: Wed, 21 Jan 2026 14:21:17 +0100 Subject: [PATCH 3/8] run migrate_references only on the qmra db --- .gitignore | 3 ++- qmra/risk_assessment/migrations/0008_auto_20260115_1342.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 0241599..cd37399 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ qmra-prod.db dump* prod-migrations/ *.tar -.vscode \ No newline at end of file +.vscode +test.zip \ No newline at end of file diff --git a/qmra/risk_assessment/migrations/0008_auto_20260115_1342.py b/qmra/risk_assessment/migrations/0008_auto_20260115_1342.py index 81e1096..0509230 100644 --- a/qmra/risk_assessment/migrations/0008_auto_20260115_1342.py +++ b/qmra/risk_assessment/migrations/0008_auto_20260115_1342.py @@ -4,7 +4,8 @@ def migrate_references(apps, schema_editor): - + if schema_editor.connection.alias != "qmra": + return QMRATreatment = apps.get_model("risk_assessment", "QMRATreatment") for treatment in QMRATreatment.objects.all(): From 76ee051acbd169d1bb97fa30ede1bc0049da26d3 Mon Sep 17 00:00:00 2001 From: adaurat Date: Wed, 21 Jan 2026 14:56:44 +0100 Subject: [PATCH 4/8] fix migrate_reference --- qmra/risk_assessment/dbrouter.py | 3 +- .../migrations/0009_auto_20260121_1454.py | 30 +++++++++++++++++++ qmra/risk_assessment/qmra_models.py | 3 ++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 qmra/risk_assessment/migrations/0009_auto_20260121_1454.py diff --git a/qmra/risk_assessment/dbrouter.py b/qmra/risk_assessment/dbrouter.py index ad17999..b167bdf 100644 --- a/qmra/risk_assessment/dbrouter.py +++ b/qmra/risk_assessment/dbrouter.py @@ -17,4 +17,5 @@ def allow_migrate(self, db, app_label, model_name=None, **hints): """ if model_name is not None and "qmra" in model_name: return db == "qmra" - return db == "default" + # model_name is None when the migration is a RunPython or a RunSQL + return db == "default" or model_name is None diff --git a/qmra/risk_assessment/migrations/0009_auto_20260121_1454.py b/qmra/risk_assessment/migrations/0009_auto_20260121_1454.py new file mode 100644 index 0000000..53f5473 --- /dev/null +++ b/qmra/risk_assessment/migrations/0009_auto_20260121_1454.py @@ -0,0 +1,30 @@ +# Generated by Django 5.0.6 on 2026-01-15 12:42 +from django.core.management import call_command +from django.db import migrations + + +def migrate_references(apps, schema_editor): + if schema_editor.connection.alias != "qmra": + return + QMRATreatment = apps.get_model("risk_assessment", "QMRATreatment") + all_treatments = QMRATreatment.objects.all() + if len(all_treatments) == 0: + call_command("seed_default_db") + all_treatments = QMRATreatment.objects.all() + for treatment in all_treatments: + + treatment.bacteria_references.add(treatment.bacteria_reference) + treatment.viruses_references.add(treatment.viruses_reference) + treatment.protozoa_references.add(treatment.protozoa_reference) + treatment.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('risk_assessment', '0008_auto_20260115_1342'), + ] + + operations = [ + migrations.RunPython(migrate_references), + ] diff --git a/qmra/risk_assessment/qmra_models.py b/qmra/risk_assessment/qmra_models.py index 0f89ade..361b235 100644 --- a/qmra/risk_assessment/qmra_models.py +++ b/qmra/risk_assessment/qmra_models.py @@ -308,8 +308,11 @@ def from_dict(cls, data): def to_dict(self): data = model_to_dict(self) data["bacteria_reference"] = str(self.bacteria_reference.pk) if self.bacteria_reference is not None else None + data["bacteria_references"] = [ref.pk for ref in self.bacteria_references.all()] data["viruses_reference"] = str(self.viruses_reference.pk) if self.viruses_reference is not None else None + data["viruses_references"] = [ref.pk for ref in self.viruses_references.all()] data["protozoa_reference"] = str(self.protozoa_reference.pk) if self.protozoa_reference is not None else None + data["protozoa_references"] = [ref.pk for ref in self.protozoa_references.all()] return data From 278cf18c0e832583fd3510e666856f5cad871d18 Mon Sep 17 00:00:00 2001 From: adaurat Date: Wed, 21 Jan 2026 15:44:54 +0100 Subject: [PATCH 5/8] display multiple treatment references in configurator --- qmra/risk_assessment/qmra_models.py | 7 +++--- .../templates/treatments-form-js.html | 24 ++++++++++--------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/qmra/risk_assessment/qmra_models.py b/qmra/risk_assessment/qmra_models.py index 361b235..10fd645 100644 --- a/qmra/risk_assessment/qmra_models.py +++ b/qmra/risk_assessment/qmra_models.py @@ -293,6 +293,7 @@ def from_dict(cls, data): description=data['description'], bacteria_min=data['bacteria_min'], bacteria_max=data['bacteria_max'], + # TODO: *_referenceS (m2m fields...) bacteria_reference_id=int(data["bacteria_reference"]) \ if data["bacteria_reference"] is not None else None, viruses_min=data['viruses_min'], @@ -308,11 +309,11 @@ def from_dict(cls, data): def to_dict(self): data = model_to_dict(self) data["bacteria_reference"] = str(self.bacteria_reference.pk) if self.bacteria_reference is not None else None - data["bacteria_references"] = [ref.pk for ref in self.bacteria_references.all()] + data["bacteria_references"] = [str(ref.pk) for ref in self.bacteria_references.all()] data["viruses_reference"] = str(self.viruses_reference.pk) if self.viruses_reference is not None else None - data["viruses_references"] = [ref.pk for ref in self.viruses_references.all()] + data["viruses_references"] = [str(ref.pk) for ref in self.viruses_references.all()] data["protozoa_reference"] = str(self.protozoa_reference.pk) if self.protozoa_reference is not None else None - data["protozoa_references"] = [ref.pk for ref in self.protozoa_references.all()] + data["protozoa_references"] = [str(ref.pk) for ref in self.protozoa_references.all()] return data diff --git a/qmra/risk_assessment/templates/treatments-form-js.html b/qmra/risk_assessment/templates/treatments-form-js.html index 37789c7..516fc65 100644 --- a/qmra/risk_assessment/templates/treatments-form-js.html +++ b/qmra/risk_assessment/templates/treatments-form-js.html @@ -388,22 +388,24 @@ var inner = ""; for (const treatment of this.treatments){ if (!uniques.has(treatment.name)){ - const virus_ref = this.references[treatment.viruses_reference] - const bacteria_ref = this.references[treatment.bacteria_reference] - const protozoa_ref = this.references[treatment.protozoa_reference] + const all_refs_id = new Set(); + for (const r of [...treatment.viruses_references, ...treatment.bacteria_references, ...treatment.protozoa_references]){ + all_refs_id.add(r); + } + const superscripts = [...all_refs_id].map((r, i) => { return `[${i+1}]` }).join(''); + const ref_footnotes = [...all_refs_id].map((r, i) => { + const ref = this.references[r]; + return `
[${i+1}]values taken from ${ref.ReferenceName}
`; + }).join(''); uniques.add(treatment.name) - const ref = virus_ref === undefined ? - bacteria_ref === undefined ? protozoa_ref === undefined ? "#" : protozoa_ref : bacteria_ref : virus_ref - const link = ref.ReferenceLink; - const name = ref.ReferenceName; inner += `
  • -
    ${treatment.name}
    +
    ${treatment.name}${superscripts}
    ${treatment.description}
    - - + + @@ -422,7 +424,7 @@
    ${treatment.name}
    Pathogen groupMinimum LRV[1]Maximum LRV[1]Minimum LRVMaximum LRV
    Viruses
    -
    [1]values taken from ${name}

    + ${ref_footnotes}
  • ` } From 9ff86af44c3aac6723ae6c88ecb3c260a33fe50b Mon Sep 17 00:00:00 2001 From: adaurat Date: Wed, 21 Jan 2026 16:00:12 +0100 Subject: [PATCH 6/8] export_default after migrate_reference --- qmra/risk_assessment/migrations/0009_auto_20260121_1454.py | 1 + 1 file changed, 1 insertion(+) diff --git a/qmra/risk_assessment/migrations/0009_auto_20260121_1454.py b/qmra/risk_assessment/migrations/0009_auto_20260121_1454.py index 53f5473..2f5e73d 100644 --- a/qmra/risk_assessment/migrations/0009_auto_20260121_1454.py +++ b/qmra/risk_assessment/migrations/0009_auto_20260121_1454.py @@ -17,6 +17,7 @@ def migrate_references(apps, schema_editor): treatment.viruses_references.add(treatment.viruses_reference) treatment.protozoa_references.add(treatment.protozoa_reference) treatment.save() + call_command("export_default") class Migration(migrations.Migration): From 9ebe05f076f2f6f4d353773c8f5d2a4a03c0a3a7 Mon Sep 17 00:00:00 2001 From: adaurat Date: Thu, 22 Jan 2026 07:55:27 +0100 Subject: [PATCH 7/8] update default treatments.json to contain multiple references and move collectstatic after the migrations in qmra deployment --- infra/helm/qmra/templates/deployment.yaml | 18 +++++++++--------- qmra/static/data/default-treatments.json | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/infra/helm/qmra/templates/deployment.yaml b/infra/helm/qmra/templates/deployment.yaml index e4b9c81..eda27c1 100644 --- a/infra/helm/qmra/templates/deployment.yaml +++ b/infra/helm/qmra/templates/deployment.yaml @@ -19,15 +19,6 @@ spec: {{- include "app.labels" . | nindent 8 }} spec: initContainers: - - name: move-static - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" - envFrom: - - configMapRef: - name: {{ .Values.configmap_name }} - volumeMounts: - - name: static - mountPath: {{ .Values.static.mount_path }} - command: [ python, manage.py, collectstatic, --noinput ] - name: migrate image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" envFrom: @@ -46,6 +37,15 @@ spec: - name: qmra-default mountPath: {{ .Values.qmra_default.mount_path }} command: [ python, manage.py, migrate, --database, qmra ] + - name: move-static + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + envFrom: + - configMapRef: + name: { { .Values.configmap_name } } + volumeMounts: + - name: static + mountPath: { { .Values.static.mount_path } } + command: [ python, manage.py, collectstatic, --noinput ] containers: - name: {{ .Chart.Name }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" diff --git a/qmra/static/data/default-treatments.json b/qmra/static/data/default-treatments.json index 21bbe34..22668f5 100644 --- a/qmra/static/data/default-treatments.json +++ b/qmra/static/data/default-treatments.json @@ -1 +1 @@ -{"Coagulation, flocculation and sedimentation": {"id": 1, "name": "Coagulation, flocculation and sedimentation", "group": "Clarification", "description": "Consists of coagulant and/or flocculant aid (e.g. polymer) dosing, rapid mixing, slow mixing and sedimentation. Log removal depends on process optimisation. Rapid changes in source water quality such as turbidity increase due to monsoon rainfall or algeal blooms may decrease treatment effect and require adjustment of process settings.", "bacteria_min": 0.2, "bacteria_max": 2.0, "bacteria_reference": "40", "viruses_min": 0.1, "viruses_max": 2.0, "viruses_reference": "40", "protozoa_min": 1.0, "protozoa_max": 2.0, "protozoa_reference": "40"}, "Slow sand filtration": {"id": 8, "name": "Slow sand filtration", "group": "Filtration", "description": "Water is filtered through a fixed bed sand operatied down flow with rates of 0.1 to 1 m/h and contact times of 3 to 6 hours. The filter is not backwashed. In weeks to months a 'schmutzdecke' will develop on the filter which enhances log removal. Grain size, flow rate and temperature also affect log removal. Consistent low filtered water turbidity of ? 0.3 NTU (none to exceed 1 NTU) are associated higher log removal of pathogens\r\n\r\nassociated with 1 - 2 log reduction of viruses and 2.5 - 3 log reduction of Cryptosporidiuma", "bacteria_min": 2.0, "bacteria_max": 6.0, "bacteria_reference": "40", "viruses_min": 0.25, "viruses_max": 4.0, "viruses_reference": "40", "protozoa_min": 0.3, "protozoa_max": 5.0, "protozoa_reference": "40"}, "Bank filtration": {"id": 9, "name": "Bank filtration", "group": "Pretreatment", "description": "Water is abstracted through wells located close to surface water, thus the bank serves as a natural filter. Log removal depends on travel distance and time, soil type (grain size),\r\n and geochemicl conditions (oxygen level, pH)", "bacteria_min": 2.0, "bacteria_max": 6.0, "bacteria_reference": "51", "viruses_min": 2.0, "viruses_max": 6.0, "viruses_reference": "51", "protozoa_min": 1.0, "protozoa_max": 6.0, "protozoa_reference": "51"}, "UV disinfection 20 mJ/cm2, drinking": {"id": 15, "name": "UV disinfection 20 mJ/cm2, drinking", "group": "Primary disinfection", "description": "UV-light is mostly effective at 254 nm where it affects DNA or RNA thus preventing reproduction of the organism (inactivation). Log reduction for drinking water UV is based on closed UV-reactors wich have been validated according to appropriate standards (e.g. USEPA or DVGW). Effectiveness of disinfection depends on delivered fluence (dose in mJ/cm2), which varies with lamp intensity, exposure time (flow rate) and UV-absorption by the water (organics). Excessive turbidity and certain dissolved species inhibit this process; hence, turbidity should be kept below 1 NTU to support effective disinfection.", "bacteria_min": 4.6, "bacteria_max": 6.0, "bacteria_reference": "50", "viruses_min": 2.0, "viruses_max": 3.1, "viruses_reference": "50", "protozoa_min": 2.4, "protozoa_max": 3.0, "protozoa_reference": "50"}, "Primary treatment": {"id": 16, "name": "Primary treatment", "group": "Pretreatment", "description": "Primary treatment consists of temporarily holding the sewage in a quiescent basin where heavy solids can settle to the bottom while oil, grease and lighter solids float to the surface. The settled and floating materials are removed and the remaining liquid may be discharged or subjected to secondary treatment", "bacteria_min": 0.0, "bacteria_max": 0.5, "bacteria_reference": "8", "viruses_min": 0.0, "viruses_max": 0.1, "viruses_reference": "8", "protozoa_min": 0.0, "protozoa_max": 1.0, "protozoa_reference": "8"}, "Secondary treatment": {"id": 17, "name": "Secondary treatment", "group": "Pretreatment", "description": "Secondary treatment consists of an activated sludge process to break down organics in the wastewater and a settling stage to separate the biologiscal sludge from the water.", "bacteria_min": 1.0, "bacteria_max": 2.0, "bacteria_reference": "51", "viruses_min": 0.5, "viruses_max": 2.0, "viruses_reference": "51", "protozoa_min": 0.5, "protozoa_max": 2.0, "protozoa_reference": "51"}, "Dual media filtration": {"id": 18, "name": "Dual media filtration", "group": "Filtration", "description": "Water is filtered through a fixed bed consisting of two layers of granular media (e.g. antracite and sand) generally operatied down flow with rates of 5 to 20 m/h and contact times of 4 to 15 minutes. They are regularly backwashed to remove built up solids in the filter. Log removal depends on filter media and coagulation pretreatment;consistent low filtered water turbidity of ? 0.3 NTU (none to exceed 1 NTU)\r\n are associated higher log removal of pathogens", "bacteria_min": 0.0, "bacteria_max": 1.0, "bacteria_reference": "8", "viruses_min": 0.5, "viruses_max": 2.0, "viruses_reference": "8", "protozoa_min": 1.5, "protozoa_max": 2.5, "protozoa_reference": "8"}, "Reverse osmosis": {"id": 21, "name": "Reverse osmosis", "group": "Filtration", "description": "A reverse osmosis membrane is a thin sheet with small openings that removes solids and most soluble molecules, including salts (< 0,004 \u043f\u0457\u0405m depending on selected membrane) from the water when this is led through the membrane. It can take the form of spiral wound membranes, hollow fibers or sheets. Actual log reduction depends on the selected membrane and is determined by challenge testing.", "bacteria_min": 5.0, "bacteria_max": 6.0, "bacteria_reference": "47", "viruses_min": 5.0, "viruses_max": 6.0, "viruses_reference": "47", "protozoa_min": 5.0, "protozoa_max": 6.0, "protozoa_reference": "47"}, "Wetlands, surface flow": {"id": 23, "name": "Wetlands, surface flow", "group": "Wetlands", "description": "An artificial wetland to treat municipal or industrial wastewater, greywater or stormwater runoff by a combination of sedimentation and biological processes including plants. Effect depends on design and climate, especially les log reduction at lower temperatures.", "bacteria_min": 1.5, "bacteria_max": 2.5, "bacteria_reference": "8", "viruses_min": null, "viruses_max": null, "viruses_reference": null, "protozoa_min": 0.5, "protozoa_max": 1.5, "protozoa_reference": "8"}, "Wetlands, subsurface flow": {"id": 24, "name": "Wetlands, subsurface flow", "group": "Wetlands", "description": "An artificial wetland to treat municipal or industrial wastewater, greywater or stormwater runoff by a combination of sedimentation, filtration and biological processes including plants. Effect depends on design, soil/filter media and climate, especially les log reduction at lower temperatures.", "bacteria_min": 0.5, "bacteria_max": 3.0, "bacteria_reference": "8", "viruses_min": null, "viruses_max": null, "viruses_reference": null, "protozoa_min": 0.5, "protozoa_max": 2.0, "protozoa_reference": "8"}, "UV disinfection, wastewater": {"id": 25, "name": "UV disinfection, wastewater", "group": "Primary disinfection", "description": "UV-light is mostly effective at 254 nm where it affects DNA or RNA thus preventing reproduction of the organism (inactivation). Effectiveness of disinfection depends on delivered fluence (dose in mJ/cm2), which varies with lamp intensity, exposure time (flow rate) and UV-absorption by the water (organics). Wastewater UV-reactors are generally open-channel reactors in which UV lamps are placed. Excessive turbidity and certain dissolved species inhibit this process; hence the effect in wastewater highly depends on the water quality an is generally lower than in drinking water at the same dose.", "bacteria_min": 2.0, "bacteria_max": 4.0, "bacteria_reference": "8", "viruses_min": 1.0, "viruses_max": 3.0, "viruses_reference": "8", "protozoa_min": 3.0, "protozoa_max": 3.0, "protozoa_reference": "8"}, "Microfiltration": {"id": 26, "name": "Microfiltration", "group": "Filtration", "description": "A microfiltration membrane is a thin sheet with small openings that removes solids (0.1-10 \u043f\u0457\u0405m depending on selected membrane) from the water when this is led through the membrane. It can take the form of capilary tubes, hollow fibers or sheet membranes. Actual log reduction depends on the selected membrane and is determined by challenge testing.", "bacteria_min": 0.0, "bacteria_max": 4.3, "bacteria_reference": "46", "viruses_min": 0.0, "viruses_max": 3.7, "viruses_reference": "46", "protozoa_min": 2.3, "protozoa_max": 6.0, "protozoa_reference": "46"}, "Ultrafiltration (module certification)": {"id": 27, "name": "Ultrafiltration (module certification)", "group": "Filtration", "description": "An ultrafiltration membrane is a thin sheet with small openings that removes solids (0.005-0,2 \u043f\u0457\u0405m depending on selected membrane) from the water when this is led through the membrane. It can take the form of capilary tubes, hollow fibers, spiral wound or sheet membranes. Actual log reduction depends on the selected membrane and is determined by challenge testing.", "bacteria_min": 5.5, "bacteria_max": 6.0, "bacteria_reference": "47", "viruses_min": 1.1, "viruses_max": 5.5, "viruses_reference": "47", "protozoa_min": 0.8, "protozoa_max": 6.0, "protozoa_reference": "47"}, "Nanofiltration": {"id": 28, "name": "Nanofiltration", "group": "Filtration", "description": "An nanofiltration membrane is a thin sheet with small openings that removes solids and larger soluble molecules (0.001-0,03 \u043f\u0457\u0405m depending on selected membrane) from the water when this is led through the membrane. It can take the form of spiral wound or hollow fiber membranes. Actual log reduction depends on the selected membrane and is determined by challenge testing.", "bacteria_min": 5.0, "bacteria_max": 6.0, "bacteria_reference": "47", "viruses_min": 5.0, "viruses_max": 6.0, "viruses_reference": "47", "protozoa_min": 5.0, "protozoa_max": 6.0, "protozoa_reference": "47"}, "UV disinfection 40 mJ/cm2, drinking": {"id": 29, "name": "UV disinfection 40 mJ/cm2, drinking", "group": "Primary disinfection", "description": "UV-light is mostly effective at 254 nm where it affects DNA or RNA thus preventing reproduction of the organism (inactivation). Log reduction for drinking water UV is based on closed UV-reactors wich have been validated according to appropriate standards (e.g. USEPA or DVGW). Effectiveness of disinfection depends on delivered fluence (dose in mJ/cm2), which varies with lamp intensity, exposure time (flow rate) and UV-absorption by the water (organics). Excessive turbidity and certain dissolved species inhibit this process; hence, turbidity should be kept below 1 NTU to support effective disinfection.", "bacteria_min": 4.6, "bacteria_max": 6.0, "bacteria_reference": "50", "viruses_min": 4.1, "viruses_max": 5.9, "viruses_reference": "50", "protozoa_min": 2.5, "protozoa_max": 3.0, "protozoa_reference": "50"}, "Soil aquifer treatment": {"id": 30, "name": "Soil aquifer treatment", "group": "Pretreatment", "description": "", "bacteria_min": 0.0, "bacteria_max": 6.0, "bacteria_reference": "51", "viruses_min": 0.0, "viruses_max": 6.0, "viruses_reference": "51", "protozoa_min": 0.0, "protozoa_max": 6.0, "protozoa_reference": "51"}, "Chlorination": {"id": 31, "name": "Chlorination", "group": "Disinfection", "description": "", "bacteria_min": 2.0, "bacteria_max": 6.0, "bacteria_reference": "51", "viruses_min": 2.0, "viruses_max": 6.0, "viruses_reference": "51", "protozoa_min": 0.0, "protozoa_max": 2.0, "protozoa_reference": "51"}, "Coagulation, flocculation and media filtration": {"id": 32, "name": "Coagulation, flocculation and media filtration", "group": "Clarification", "description": "", "bacteria_min": 1.0, "bacteria_max": 4.0, "bacteria_reference": "51", "viruses_min": 1.0, "viruses_max": 2.0, "viruses_reference": "51", "protozoa_min": 2.5, "protozoa_max": 4.0, "protozoa_reference": "51"}, "Reverse Osmosis (RO, Australian Guidelines)": {"id": 33, "name": "Reverse Osmosis (RO, Australian Guidelines)", "group": "Filtration", "description": "", "bacteria_min": 1.5, "bacteria_max": 6.0, "bacteria_reference": "51", "viruses_min": 1.5, "viruses_max": 6.0, "viruses_reference": "51", "protozoa_min": 1.5, "protozoa_max": 6.0, "protozoa_reference": "51"}, "Ozonation for disinfection >1mgO3/mgDOC": {"id": 34, "name": "Ozonation for disinfection >1mgO3/mgDOC", "group": "Disinfection", "description": "", "bacteria_min": 2.0, "bacteria_max": 4.0, "bacteria_reference": "40", "viruses_min": 2.0, "viruses_max": 4.0, "viruses_reference": "40", "protozoa_min": 2.0, "protozoa_max": 3.0, "protozoa_reference": "40"}, "Ozonation for organic micropollutant removal (0.4-0.6 mgO3/mgDOC)": {"id": 35, "name": "Ozonation for organic micropollutant removal (0.4-0.6 mgO3/mgDOC)", "group": "Organic micropollutant removal", "description": "", "bacteria_min": 1.0, "bacteria_max": 3.0, "bacteria_reference": "52", "viruses_min": 1.0, "viruses_max": 2.5, "viruses_reference": "52", "protozoa_min": 0.0, "protozoa_max": 1.0, "protozoa_reference": "52"}, "UV AOP": {"id": 36, "name": "UV AOP", "group": "Disinfection", "description": "", "bacteria_min": 6.0, "bacteria_max": 6.0, "bacteria_reference": "53", "viruses_min": 6.0, "viruses_max": 6.0, "viruses_reference": "53", "protozoa_min": 6.0, "protozoa_max": 6.0, "protozoa_reference": "53"}} \ No newline at end of file +{"Coagulation, flocculation and sedimentation": {"id": 1, "name": "Coagulation, flocculation and sedimentation", "group": "Clarification", "description": "Consists of coagulant and/or flocculant aid (e.g. polymer) dosing, rapid mixing, slow mixing and sedimentation. Log removal depends on process optimisation. Rapid changes in source water quality such as turbidity increase due to monsoon rainfall or algeal blooms may decrease treatment effect and require adjustment of process settings.", "bacteria_min": 0.2, "bacteria_max": 2.0, "bacteria_reference": "40", "viruses_min": 0.1, "viruses_max": 2.0, "viruses_reference": "40", "protozoa_min": 1.0, "protozoa_max": 2.0, "protozoa_reference": "40", "bacteria_references": ["40"], "viruses_references": ["40"], "protozoa_references": ["40"]}, "Slow sand filtration": {"id": 8, "name": "Slow sand filtration", "group": "Filtration", "description": "Water is filtered through a fixed bed sand operatied down flow with rates of 0.1 to 1 m/h and contact times of 3 to 6 hours. The filter is not backwashed. In weeks to months a 'schmutzdecke' will develop on the filter which enhances log removal. Grain size, flow rate and temperature also affect log removal. Consistent low filtered water turbidity of ? 0.3 NTU (none to exceed 1 NTU) are associated higher log removal of pathogens\r\n\r\nassociated with 1 - 2 log reduction of viruses and 2.5 - 3 log reduction of Cryptosporidiuma", "bacteria_min": 2.0, "bacteria_max": 6.0, "bacteria_reference": "40", "viruses_min": 0.25, "viruses_max": 4.0, "viruses_reference": "40", "protozoa_min": 0.3, "protozoa_max": 5.0, "protozoa_reference": "40", "bacteria_references": ["40"], "viruses_references": ["40"], "protozoa_references": ["40"]}, "Bank filtration": {"id": 9, "name": "Bank filtration", "group": "Pretreatment", "description": "Water is abstracted through wells located close to surface water, thus the bank serves as a natural filter. Log removal depends on travel distance and time, soil type (grain size),\r\n and geochemicl conditions (oxygen level, pH)", "bacteria_min": 2.0, "bacteria_max": 6.0, "bacteria_reference": "51", "viruses_min": 2.0, "viruses_max": 6.0, "viruses_reference": "51", "protozoa_min": 1.0, "protozoa_max": 6.0, "protozoa_reference": "51", "bacteria_references": ["51"], "viruses_references": ["51"], "protozoa_references": ["51"]}, "UV disinfection 20 mJ/cm2, drinking": {"id": 15, "name": "UV disinfection 20 mJ/cm2, drinking", "group": "Primary disinfection", "description": "UV-light is mostly effective at 254 nm where it affects DNA or RNA thus preventing reproduction of the organism (inactivation). Log reduction for drinking water UV is based on closed UV-reactors wich have been validated according to appropriate standards (e.g. USEPA or DVGW). Effectiveness of disinfection depends on delivered fluence (dose in mJ/cm2), which varies with lamp intensity, exposure time (flow rate) and UV-absorption by the water (organics). Excessive turbidity and certain dissolved species inhibit this process; hence, turbidity should be kept below 1 NTU to support effective disinfection.", "bacteria_min": 4.6, "bacteria_max": 6.0, "bacteria_reference": "50", "viruses_min": 2.0, "viruses_max": 3.1, "viruses_reference": "50", "protozoa_min": 2.4, "protozoa_max": 3.0, "protozoa_reference": "50", "bacteria_references": ["50"], "viruses_references": ["50"], "protozoa_references": ["50"]}, "Primary treatment": {"id": 16, "name": "Primary treatment", "group": "Pretreatment", "description": "Primary treatment consists of temporarily holding the sewage in a quiescent basin where heavy solids can settle to the bottom while oil, grease and lighter solids float to the surface. The settled and floating materials are removed and the remaining liquid may be discharged or subjected to secondary treatment", "bacteria_min": 0.0, "bacteria_max": 0.5, "bacteria_reference": "8", "viruses_min": 0.0, "viruses_max": 0.1, "viruses_reference": "8", "protozoa_min": 0.0, "protozoa_max": 1.0, "protozoa_reference": "8", "bacteria_references": ["8"], "viruses_references": ["8"], "protozoa_references": ["8"]}, "Secondary treatment": {"id": 17, "name": "Secondary treatment", "group": "Pretreatment", "description": "Secondary treatment consists of an activated sludge process to break down organics in the wastewater and a settling stage to separate the biologiscal sludge from the water.", "bacteria_min": 1.0, "bacteria_max": 2.0, "bacteria_reference": "51", "viruses_min": 0.5, "viruses_max": 2.0, "viruses_reference": "51", "protozoa_min": 0.5, "protozoa_max": 2.0, "protozoa_reference": "51", "bacteria_references": ["51"], "viruses_references": ["51"], "protozoa_references": ["51"]}, "Dual media filtration": {"id": 18, "name": "Dual media filtration", "group": "Filtration", "description": "Water is filtered through a fixed bed consisting of two layers of granular media (e.g. antracite and sand) generally operatied down flow with rates of 5 to 20 m/h and contact times of 4 to 15 minutes. They are regularly backwashed to remove built up solids in the filter. Log removal depends on filter media and coagulation pretreatment;consistent low filtered water turbidity of ? 0.3 NTU (none to exceed 1 NTU)\r\n are associated higher log removal of pathogens", "bacteria_min": 0.0, "bacteria_max": 1.0, "bacteria_reference": "8", "viruses_min": 0.5, "viruses_max": 2.0, "viruses_reference": "8", "protozoa_min": 1.5, "protozoa_max": 2.5, "protozoa_reference": "8", "bacteria_references": ["8"], "viruses_references": ["8"], "protozoa_references": ["8"]}, "Reverse osmosis": {"id": 21, "name": "Reverse osmosis", "group": "Filtration", "description": "A reverse osmosis membrane is a thin sheet with small openings that removes solids and most soluble molecules, including salts (< 0,004 \u043f\u0457\u0405m depending on selected membrane) from the water when this is led through the membrane. It can take the form of spiral wound membranes, hollow fibers or sheets. Actual log reduction depends on the selected membrane and is determined by challenge testing.", "bacteria_min": 5.0, "bacteria_max": 6.0, "bacteria_reference": "47", "viruses_min": 5.0, "viruses_max": 6.0, "viruses_reference": "47", "protozoa_min": 5.0, "protozoa_max": 6.0, "protozoa_reference": "47", "bacteria_references": ["47"], "viruses_references": ["47"], "protozoa_references": ["47"]}, "Wetlands, surface flow": {"id": 23, "name": "Wetlands, surface flow", "group": "Wetlands", "description": "An artificial wetland to treat municipal or industrial wastewater, greywater or stormwater runoff by a combination of sedimentation and biological processes including plants. Effect depends on design and climate, especially les log reduction at lower temperatures.", "bacteria_min": 1.5, "bacteria_max": 2.5, "bacteria_reference": "8", "viruses_min": null, "viruses_max": null, "viruses_reference": null, "protozoa_min": 0.5, "protozoa_max": 1.5, "protozoa_reference": "8", "bacteria_references": ["8"], "viruses_references": [], "protozoa_references": ["8"]}, "Wetlands, subsurface flow": {"id": 24, "name": "Wetlands, subsurface flow", "group": "Wetlands", "description": "An artificial wetland to treat municipal or industrial wastewater, greywater or stormwater runoff by a combination of sedimentation, filtration and biological processes including plants. Effect depends on design, soil/filter media and climate, especially les log reduction at lower temperatures.", "bacteria_min": 0.5, "bacteria_max": 3.0, "bacteria_reference": "8", "viruses_min": null, "viruses_max": null, "viruses_reference": null, "protozoa_min": 0.5, "protozoa_max": 2.0, "protozoa_reference": "8", "bacteria_references": ["8"], "viruses_references": [], "protozoa_references": ["8"]}, "UV disinfection, wastewater": {"id": 25, "name": "UV disinfection, wastewater", "group": "Primary disinfection", "description": "UV-light is mostly effective at 254 nm where it affects DNA or RNA thus preventing reproduction of the organism (inactivation). Effectiveness of disinfection depends on delivered fluence (dose in mJ/cm2), which varies with lamp intensity, exposure time (flow rate) and UV-absorption by the water (organics). Wastewater UV-reactors are generally open-channel reactors in which UV lamps are placed. Excessive turbidity and certain dissolved species inhibit this process; hence the effect in wastewater highly depends on the water quality an is generally lower than in drinking water at the same dose.", "bacteria_min": 2.0, "bacteria_max": 4.0, "bacteria_reference": "8", "viruses_min": 1.0, "viruses_max": 3.0, "viruses_reference": "8", "protozoa_min": 3.0, "protozoa_max": 3.0, "protozoa_reference": "8", "bacteria_references": ["8"], "viruses_references": ["8"], "protozoa_references": ["8"]}, "Microfiltration": {"id": 26, "name": "Microfiltration", "group": "Filtration", "description": "A microfiltration membrane is a thin sheet with small openings that removes solids (0.1-10 \u043f\u0457\u0405m depending on selected membrane) from the water when this is led through the membrane. It can take the form of capilary tubes, hollow fibers or sheet membranes. Actual log reduction depends on the selected membrane and is determined by challenge testing.", "bacteria_min": 0.0, "bacteria_max": 4.3, "bacteria_reference": "46", "viruses_min": 0.0, "viruses_max": 3.7, "viruses_reference": "46", "protozoa_min": 2.3, "protozoa_max": 6.0, "protozoa_reference": "46", "bacteria_references": ["46"], "viruses_references": ["46"], "protozoa_references": ["46"]}, "Ultrafiltration (module certification)": {"id": 27, "name": "Ultrafiltration (module certification)", "group": "Filtration", "description": "An ultrafiltration membrane is a thin sheet with small openings that removes solids (0.005-0,2 \u043f\u0457\u0405m depending on selected membrane) from the water when this is led through the membrane. It can take the form of capilary tubes, hollow fibers, spiral wound or sheet membranes. Actual log reduction depends on the selected membrane and is determined by challenge testing.", "bacteria_min": 5.5, "bacteria_max": 6.0, "bacteria_reference": "47", "viruses_min": 1.1, "viruses_max": 5.5, "viruses_reference": "47", "protozoa_min": 0.8, "protozoa_max": 6.0, "protozoa_reference": "47", "bacteria_references": ["47"], "viruses_references": ["47"], "protozoa_references": ["47"]}, "Nanofiltration": {"id": 28, "name": "Nanofiltration", "group": "Filtration", "description": "An nanofiltration membrane is a thin sheet with small openings that removes solids and larger soluble molecules (0.001-0,03 \u043f\u0457\u0405m depending on selected membrane) from the water when this is led through the membrane. It can take the form of spiral wound or hollow fiber membranes. Actual log reduction depends on the selected membrane and is determined by challenge testing.", "bacteria_min": 5.0, "bacteria_max": 6.0, "bacteria_reference": "47", "viruses_min": 5.0, "viruses_max": 6.0, "viruses_reference": "47", "protozoa_min": 5.0, "protozoa_max": 6.0, "protozoa_reference": "47", "bacteria_references": ["47"], "viruses_references": ["47"], "protozoa_references": ["47"]}, "UV disinfection 40 mJ/cm2, drinking": {"id": 29, "name": "UV disinfection 40 mJ/cm2, drinking", "group": "Primary disinfection", "description": "UV-light is mostly effective at 254 nm where it affects DNA or RNA thus preventing reproduction of the organism (inactivation). Log reduction for drinking water UV is based on closed UV-reactors wich have been validated according to appropriate standards (e.g. USEPA or DVGW). Effectiveness of disinfection depends on delivered fluence (dose in mJ/cm2), which varies with lamp intensity, exposure time (flow rate) and UV-absorption by the water (organics). Excessive turbidity and certain dissolved species inhibit this process; hence, turbidity should be kept below 1 NTU to support effective disinfection.", "bacteria_min": 4.6, "bacteria_max": 6.0, "bacteria_reference": "50", "viruses_min": 4.1, "viruses_max": 5.9, "viruses_reference": "50", "protozoa_min": 2.5, "protozoa_max": 3.0, "protozoa_reference": "50", "bacteria_references": ["50"], "viruses_references": ["50"], "protozoa_references": ["50"]}, "Soil aquifer treatment": {"id": 30, "name": "Soil aquifer treatment", "group": "Pretreatment", "description": "", "bacteria_min": 0.0, "bacteria_max": 6.0, "bacteria_reference": "51", "viruses_min": 0.0, "viruses_max": 6.0, "viruses_reference": "51", "protozoa_min": 0.0, "protozoa_max": 6.0, "protozoa_reference": "51", "bacteria_references": ["51"], "viruses_references": ["51"], "protozoa_references": ["51"]}, "Chlorination": {"id": 31, "name": "Chlorination", "group": "Disinfection", "description": "", "bacteria_min": 2.0, "bacteria_max": 6.0, "bacteria_reference": "51", "viruses_min": 2.0, "viruses_max": 6.0, "viruses_reference": "51", "protozoa_min": 0.0, "protozoa_max": 2.0, "protozoa_reference": "51", "bacteria_references": ["51"], "viruses_references": ["51"], "protozoa_references": ["51"]}, "Coagulation, flocculation and media filtration": {"id": 32, "name": "Coagulation, flocculation and media filtration", "group": "Clarification", "description": "", "bacteria_min": 1.0, "bacteria_max": 4.0, "bacteria_reference": "51", "viruses_min": 1.0, "viruses_max": 2.0, "viruses_reference": "51", "protozoa_min": 2.5, "protozoa_max": 4.0, "protozoa_reference": "51", "bacteria_references": ["51"], "viruses_references": ["51"], "protozoa_references": ["51"]}, "Reverse Osmosis (RO, Australian Guidelines)": {"id": 33, "name": "Reverse Osmosis (RO, Australian Guidelines)", "group": "Filtration", "description": "", "bacteria_min": 1.5, "bacteria_max": 6.0, "bacteria_reference": "51", "viruses_min": 1.5, "viruses_max": 6.0, "viruses_reference": "51", "protozoa_min": 1.5, "protozoa_max": 6.0, "protozoa_reference": "51", "bacteria_references": ["51"], "viruses_references": ["51"], "protozoa_references": ["51"]}, "Ozonation for disinfection >1mgO3/mgDOC": {"id": 34, "name": "Ozonation for disinfection >1mgO3/mgDOC", "group": "Disinfection", "description": "", "bacteria_min": 2.0, "bacteria_max": 4.0, "bacteria_reference": "40", "viruses_min": 2.0, "viruses_max": 4.0, "viruses_reference": "40", "protozoa_min": 2.0, "protozoa_max": 3.0, "protozoa_reference": "40", "bacteria_references": ["40"], "viruses_references": ["40"], "protozoa_references": ["40"]}, "Ozonation for organic micropollutant removal (0.4-0.6 mgO3/mgDOC)": {"id": 35, "name": "Ozonation for organic micropollutant removal (0.4-0.6 mgO3/mgDOC)", "group": "Organic micropollutant removal", "description": "", "bacteria_min": 1.0, "bacteria_max": 3.0, "bacteria_reference": "52", "viruses_min": 1.0, "viruses_max": 2.5, "viruses_reference": "52", "protozoa_min": 0.0, "protozoa_max": 1.0, "protozoa_reference": "52", "bacteria_references": ["52"], "viruses_references": ["52"], "protozoa_references": ["52"]}, "UV AOP": {"id": 36, "name": "UV AOP", "group": "Disinfection", "description": "", "bacteria_min": 6.0, "bacteria_max": 9.0, "bacteria_reference": "53", "viruses_min": 6.0, "viruses_max": 6.0, "viruses_reference": "53", "protozoa_min": 6.0, "protozoa_max": 6.0, "protozoa_reference": "53", "bacteria_references": ["48", "53"], "viruses_references": ["49", "53"], "protozoa_references": ["53"]}} \ No newline at end of file From 55c2a7f351a8846386c7f3ef1ad05d5893c5dc0c Mon Sep 17 00:00:00 2001 From: adaurat Date: Thu, 22 Jan 2026 08:04:21 +0100 Subject: [PATCH 8/8] fix mustaches... --- infra/helm/qmra/templates/deployment.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/helm/qmra/templates/deployment.yaml b/infra/helm/qmra/templates/deployment.yaml index eda27c1..ebba462 100644 --- a/infra/helm/qmra/templates/deployment.yaml +++ b/infra/helm/qmra/templates/deployment.yaml @@ -41,10 +41,10 @@ spec: image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" envFrom: - configMapRef: - name: { { .Values.configmap_name } } + name: {{ .Values.configmap_name }} volumeMounts: - name: static - mountPath: { { .Values.static.mount_path } } + mountPath: {{ .Values.static.mount_path }} command: [ python, manage.py, collectstatic, --noinput ] containers: - name: {{ .Chart.Name }}