graph TD
title["<u>e-IDSR system architecture</u>"]

    OffsiteBackup["<img src='https://icons.iconarchive.com/icons/icons8/windows-8/256/Database-Backup-icon.png' height='40' width='40'/><br/>Secure offsite backup"]
    OpenELIS["<img src='https://images.squarespace-cdn.com/content/v1/59bc3457ccc5c5890fe7cacd/1593041170321-QXQH87RYT3V6181U7JTL/ELIS.png' width='200' height='40'/><br/>OpenELIS LIMS"]
    OpenFN["<img src='https://docs.openfn.org/img/logo.svg' width='40' height='40'/><br/>OpenFN integration platform"]
    OpenHIE["<img src='https://wiki.ohie.org/download/attachments/8945721/logoHD.fw.png' height='40' width='180'/><br/>Link to wider HMIS integration"]
    OpenMRS["<img src='https://i0.wp.com/openmrs.org/wp-content/uploads/2025/07/OpenMRS-logo-transparent-1.png' width='160' height='60'/><br/>OpenMRS electronic health record"]
    RapidPro["<img src='https://app.rapidpro.io/sitestatic/images/logo-dark.svg' height='40' width='160'/><br/>RapidPro SMS gateway"]
    SMS["<img src='https://img.icons8.com/color/512/sms.png' height='40' width='40'/><br/>SMS"]
    WHONET["<img src='https://community.whonet.org/uploads/default/original/1X/a60e8f43ec439ae6868e82b90a5fd6f5146826f5.png' height='40' width='100'/><br/>WHONET AMR surveillance"]
    analysis["<img src='https://www.reshot.com/preview-assets/icons/BA3SEYLHU9/charts-BA3SEYLHU9.svg' width='40' height='40'/><br/>Surveillance analysis"]
    dhis1["<img src='https://raw.githubusercontent.com/dhis2/dhis2-icons/master/icons/dhis2_logo_positive.svg' width='40' height='40'/><br/>DHIS 2 cluster: aggregated data"]
    dhis2["<img src='https://raw.githubusercontent.com/dhis2/dhis2-icons/master/icons/dhis2_logo_positive.svg' width='40' height='40'/><br/>DHIS 2 Case-based surveillance"]
    dhis3["<img src='https://raw.githubusercontent.com/dhis2/dhis2-icons/master/icons/dhis2_logo_positive.svg' width='40' height='40'/><br/>DHIS 2 Vertical programme"]
    dhis4["<img src='https://raw.githubusercontent.com/dhis2/dhis2-icons/master/icons/dhis2_logo_positive.svg' width='40' height='40'/><br/>DHIS 2 Provincial instance"]
    dhis5["<img src='https://raw.githubusercontent.com/dhis2/dhis2-icons/master/icons/dhis2_logo_positive.svg' width='40' height='40'/><br/>DHIS 2 AMR instance"]
    fileserver["<img src='https://symbols.getvecta.com/stencil_240/79_fileserver.c500813aaa.svg' width='40' height='40'/><br/>File server"]
    postgres1["<img src='https://www.vectorlogo.zone/logos/postgresql/postgresql-ar21.svg' width='60' height='40'/><br/>PostgreSQL backend database"]
    postgres2["<img src='https://www.vectorlogo.zone/logos/postgresql/postgresql-ar21.svg' width='60' height='40'/><br/>PostgreSQL read-only replica"]
    redis["<img src='https://www.vectorlogo.zone/logos/redis/redis-ar21.svg' width='60' height='40'/><br/>Redis DB"]

    subgraph "National public health organisation"
        subgraph "Data centre"
            direction LR
            OpenELIS
            OpenFN
            OpenHIE
            OpenMRS
            RapidPro
            dhis1
            dhis2
            dhis3
            dhis5
            subgraph "Data"
                direction RL
                fileserver
                postgres1
                postgres2
                redis
                OffsiteBackup
            end
        end
        analysis
        WHONET
    end
    subgraph "Province"
        dhis4
    end

    OpenELIS --- OpenMRS
    OpenFN --- dhis1
    OpenMRS --- dhis1
    RapidPro --- OpenFN
    SMS --- RapidPro
    analysis --- postgres2
    dhis1 --- OpenHIE
    dhis1 ---|"<img src='https://apps.dhis2.org/api/v1/apps/media/dhis2/08012f21-0061-4e96-b49b-286e2743a8b4/a78021d9-1e89-4adf-af29-2142f5601a9b' width='40' height='40'/><br/>Data Exchange"| dhis2
    dhis1 ---|"<img src='https://apps.dhis2.org/api/v1/apps/media/dhis2/08012f21-0061-4e96-b49b-286e2743a8b4/a78021d9-1e89-4adf-af29-2142f5601a9b' width='40' height='40'/><br/>Data Exchange"| dhis3
    dhis4 --- OpenFN
    dhis5 ---|"manual"| WHONET
    dhis5 ---|"<img src='https://apps.dhis2.org/api/v1/apps/media/dhis2/08012f21-0061-4e96-b49b-286e2743a8b4/a78021d9-1e89-4adf-af29-2142f5601a9b' width='40' height='40'/><br/>Data Exchange"| dhis1
    fileserver --- dhis1
    postgres1 --- OffsiteBackup
    postgres1 --- dhis1
    postgres1 --- postgres2
    redis --- dhis1

Source code


graph TD
title["<u>e-IDSR system architecture</u>"]

    OffsiteBackup["<img src='https://icons.iconarchive.com/icons/icons8/windows-8/256/Database-Backup-icon.png' height='40' width='40'/><br/>Secure offsite backup"]
    OpenELIS["<img src='https://images.squarespace-cdn.com/content/v1/59bc3457ccc5c5890fe7cacd/1593041170321-QXQH87RYT3V6181U7JTL/ELIS.png' width='200' height='40'/><br/>OpenELIS LIMS"]
    OpenFN["<img src='https://docs.openfn.org/img/logo.svg' width='40' height='40'/><br/>OpenFN integration platform"]
    OpenHIE["<img src='https://wiki.ohie.org/download/attachments/8945721/logoHD.fw.png' height='40' width='180'/><br/>Link to wider HMIS integration"]
    OpenMRS["<img src='https://i0.wp.com/openmrs.org/wp-content/uploads/2025/07/OpenMRS-logo-transparent-1.png' width='160' height='60'/><br/>OpenMRS electronic health record"]
    RapidPro["<img src='https://app.rapidpro.io/sitestatic/images/logo-dark.svg' height='40' width='160'/><br/>RapidPro SMS gateway"]
    SMS["<img src='https://img.icons8.com/color/512/sms.png' height='40' width='40'/><br/>SMS"]
    WHONET["<img src='https://community.whonet.org/uploads/default/original/1X/a60e8f43ec439ae6868e82b90a5fd6f5146826f5.png' height='40' width='100'/><br/>WHONET AMR surveillance"]
    analysis["<img src='https://www.reshot.com/preview-assets/icons/BA3SEYLHU9/charts-BA3SEYLHU9.svg' width='40' height='40'/><br/>Surveillance analysis"]
    dhis1["<img src='https://raw.githubusercontent.com/dhis2/dhis2-icons/master/icons/dhis2_logo_positive.svg' width='40' height='40'/><br/>DHIS 2 cluster: aggregated data"]
    dhis2["<img src='https://raw.githubusercontent.com/dhis2/dhis2-icons/master/icons/dhis2_logo_positive.svg' width='40' height='40'/><br/>DHIS 2 Case-based surveillance"]
    dhis3["<img src='https://raw.githubusercontent.com/dhis2/dhis2-icons/master/icons/dhis2_logo_positive.svg' width='40' height='40'/><br/>DHIS 2 Vertical programme"]
    dhis4["<img src='https://raw.githubusercontent.com/dhis2/dhis2-icons/master/icons/dhis2_logo_positive.svg' width='40' height='40'/><br/>DHIS 2 Provincial instance"]
    dhis5["<img src='https://raw.githubusercontent.com/dhis2/dhis2-icons/master/icons/dhis2_logo_positive.svg' width='40' height='40'/><br/>DHIS 2 AMR instance"]
    fileserver["<img src='https://symbols.getvecta.com/stencil_240/79_fileserver.c500813aaa.svg' width='40' height='40'/><br/>File server"]
    postgres1["<img src='https://www.vectorlogo.zone/logos/postgresql/postgresql-ar21.svg' width='60' height='40'/><br/>PostgreSQL backend database"]
    postgres2["<img src='https://www.vectorlogo.zone/logos/postgresql/postgresql-ar21.svg' width='60' height='40'/><br/>PostgreSQL read-only replica"]
    redis["<img src='https://www.vectorlogo.zone/logos/redis/redis-ar21.svg' width='60' height='40'/><br/>Redis DB"]

    subgraph "National public health organisation"
        subgraph "Data centre"
            direction LR
            OpenELIS
            OpenFN
            OpenHIE
            OpenMRS
            RapidPro
            dhis1
            dhis2
            dhis3
            dhis5
            subgraph "Data"
                direction RL
                fileserver
                postgres1
                postgres2
                redis
                OffsiteBackup
            end
        end
        analysis
        WHONET
    end
    subgraph "Province"
        dhis4
    end

    OpenELIS --- OpenMRS
    OpenFN --- dhis1
    OpenMRS --- dhis1
    RapidPro --- OpenFN
    SMS --- RapidPro
    analysis --- postgres2
    dhis1 --- OpenHIE
    dhis1 ---|"<img src='https://apps.dhis2.org/api/v1/apps/media/dhis2/08012f21-0061-4e96-b49b-286e2743a8b4/a78021d9-1e89-4adf-af29-2142f5601a9b' width='40' height='40'/><br/>Data Exchange"| dhis2
    dhis1 ---|"<img src='https://apps.dhis2.org/api/v1/apps/media/dhis2/08012f21-0061-4e96-b49b-286e2743a8b4/a78021d9-1e89-4adf-af29-2142f5601a9b' width='40' height='40'/><br/>Data Exchange"| dhis3
    dhis4 --- OpenFN
    dhis5 ---|"manual"| WHONET
    dhis5 ---|"<img src='https://apps.dhis2.org/api/v1/apps/media/dhis2/08012f21-0061-4e96-b49b-286e2743a8b4/a78021d9-1e89-4adf-af29-2142f5601a9b' width='40' height='40'/><br/>Data Exchange"| dhis1
    fileserver --- dhis1
    postgres1 --- OffsiteBackup
    postgres1 --- dhis1
    postgres1 --- postgres2
    redis --- dhis1