Adding TLS certificates in CHT 4.x | Community Health Toolkit
Adding TLS certificates in CHT 4.x
How to add TLS certificates to your docker hosted CHT 4.x instance
By default, CHT 4.x will create a self-signed certificate for every deployment. These instructions are for changing to either a pre-existing certificate or automatically creating and renewing a Certbot based certificate using ACME, like Let’s Encrypt.
This guide assumes you’ve already met the hosting requirements, specifically around Docker being installed.
Pre-existing certificate
To load your certificates into your CHT instance, we’ll be creating an interstitial container called cht-temp-tls which will enable you to copy your local certificate files into the native docker volume.
Prerequisites
You have two files locally on your workstation in the directory you’re currently in:
key.pem - the private key for your TLS certificate
cert.pem - both the public and any interstitial keys concatenated into one file
Also, be sure you have started your CHT instance once and all your volumes are created.
Loading the certificate
Note
docker compose should work, but you may need to use the older style docker-compose if you get an error docker: 'compose' is not a docker command.
Find the name of your cht-ssl volume with this call:
How to add TLS certificates to your docker hosted CHT 4.x instance
By default, CHT 4.x will create a self-signed certificate for every deployment. These instructions are for changing to either a pre-existing certificate or automatically creating and renewing a Certbot based certificate using ACME, like Let’s Encrypt.
This guide assumes you’ve already met the hosting requirements, specifically around Docker being installed.
Pre-existing certificate
To load your certificates into your CHT instance, we’ll be creating an interstitial container called cht-temp-tls which will enable you to copy your local certificate files into the native docker volume.
Prerequisites
You have two files locally on your workstation in the directory you’re currently in:
key.pem - the private key for your TLS certificate
cert.pem - both the public and any interstitial keys concatenated into one file
Also, be sure you have started your CHT instance once and all your volumes are created.
Loading the certificate
Note
docker compose should work, but you may need to use the older style docker-compose if you get an error docker: 'compose' is not a docker command.
Find the name of your cht-ssl volume with this call:
docker volume ls --filter "name=cht-ssl"
It is very likely that cht_cht-ssl is the name of our cht-ssl volume.
Using the volume name found in step 1, start a container called temp which allow us to copy files into the docker volume:
When proxying to HTTPS from HTTP (for example where an ingress does TLS termination in an SNI environment and then the traffic is proxied to an HTTPS service (eg, haproxy)), not including a servername for a request to the HTTPS server (eg, def.org) produces the following error:
'ERR_TLS_CERT_ALTNAME_INVALID'
+"RequestError: Error [ERR_TLS_CERT_ALTNAME_INVALID]: Hostname/IP does not match certificate's altnames:
+Host: abc.com. is not in the cert's altnames: DNS:def.org"
+
The addition of servername resolves this error by providing routing information. See docs for tls.connect(options[, callback])’ (https://nodejs.org/api/tls.html): “Server name for the SNI (Server Name Indication) TLS extension. It is the name of the host being connected to, and must be a host name, and not an IP address.”.
A servername parameter may be added to all requests to the haproxy/couchdb by setting the environment variable ADD_SERVERNAME_TO_HTTP_AGENT to true.
A similar change can be made for the http clients used in the application by setting PROXY_CHANGE_ORIGIN to true. This sets the changeOrigin parameter of all the http-proxy clients to true, which “changes the origin of the host header to the target URL”. See http-proxy: options.
\ No newline at end of file
diff --git a/apps/guides/hosting/4.x/index.xml b/apps/guides/hosting/4.x/index.xml
index fb3049e25..b7b9f30bf 100644
--- a/apps/guides/hosting/4.x/index.xml
+++ b/apps/guides/hosting/4.x/index.xml
@@ -558,7 +558,17 @@ docker cp cert.pem temp:/etc/nginx/private/.
<li>Attempt to renew your certificates once a week by adding this cronjob via <code>crontab -e</code>. Certbot will only renew them as needed:
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">0</span> <span style="color:#0000cf;font-weight:bold">0</span> * * <span style="color:#0000cf;font-weight:bold">0</span> <span style="color:#204a87">cd</span> /home/ubuntu/cht/certbot<span style="color:#ce5c00;font-weight:bold">&&</span>docker compose up
</span></span></code></pre></div></li>
-</ol>Apps: Viewing server logs in CHT 4.xhttps://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/logs/Mon, 01 Jan 0001 00:00:00 +0000https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/logs/
+</ol>
+<h2 id="troubleshooting">Troubleshooting</h2>
+<h3 id="proxying">Proxying</h3>
+<h4 id="err_tls_cert_altname_invalid">ERR_TLS_CERT_ALTNAME_INVALID</h4>
+<p>When proxying to HTTPS from HTTP (for example where an ingress does TLS termination in an SNI environment and then the traffic is proxied to an HTTPS service (eg, haproxy)), not including a <code>servername</code> for a request to the HTTPS server (eg, def.org) produces the following error:</p>
+<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#4e9a06">'ERR_TLS_CERT_ALTNAME_INVALID'</span>
+</span></span><span style="display:flex;"><span><span style="color:#4e9a06">"RequestError: Error [ERR_TLS_CERT_ALTNAME_INVALID]: Hostname/IP does not match certificate's altnames:
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">Host: abc.com. is not in the cert's altnames: DNS:def.org"</span>
+</span></span></code></pre></div><p>The addition of <code>servername</code> resolves this error by providing routing information. See docs for <code>tls.connect(options[, callback])</code>’ (<a href="https://nodejs.org/api/tls.html)">https://nodejs.org/api/tls.html)</a>: “Server name for the SNI (Server Name Indication) TLS extension. It is the name of the host being connected to, and must be a host name, and not an IP address.”.</p>
+<p>A <code>servername</code> parameter may be added to all requests to the haproxy/couchdb by setting the environment variable <code>ADD_SERVERNAME_TO_HTTP_AGENT</code> to <code>true</code>.</p>
+<p>A similar change can be made for the http clients used in the application by setting <code>PROXY_CHANGE_ORIGIN</code> to <code>true</code>. This sets the <code>changeOrigin</code> parameter of all the <code>http-proxy</code> clients to <code>true</code>, which “changes the origin of the host header to the target URL”. See <a href="https://www.npmjs.com/package/http-proxy#options">http-proxy: options</a>.</p>Apps: Viewing server logs in CHT 4.xhttps://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/logs/Mon, 01 Jan 0001 00:00:00 +0000https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/logs/
<p>CHT 4.x has the following services running via Docker and each can have its logs queried:</p>
<ul>
<li>nginx</li>
diff --git a/apps/guides/hosting/4.x/self-hosting/index.xml b/apps/guides/hosting/4.x/self-hosting/index.xml
index 61002f964..d5f21c448 100644
--- a/apps/guides/hosting/4.x/self-hosting/index.xml
+++ b/apps/guides/hosting/4.x/self-hosting/index.xml
@@ -27,21 +27,26 @@
</span></span><span style="display:flex;"><span>curl -s -o ./upgrade-service/docker-compose.yml https://raw.githubusercontent.com/medic/cht-upgrade-service/main/docker-compose.yml
</span></span></code></pre></div><h2 id="prepare-environment-variables-file">Prepare Environment Variables file</h2>
<p>Prepare a <code>.env</code> file by running this code:</p>
-<pre tabindex="0"><code>sudo apt install wamerican
-uuid=$(uuidgen)
-couchdb_secret=$(shuf -n7 /usr/share/dict/words --random-source=/dev/random | tr '\n' '-' | tr -d "'" | cut -d'-' -f1,2,3,4,5,6,7)
-couchdb_password=$(shuf -n7 /usr/share/dict/words --random-source=/dev/random | tr '\n' '-' | tr -d "'" | cut -d'-' -f1,2,3,4,5,6,7)
-cat > /home/ubuntu/cht/upgrade-service/.env << EOF
-CHT_COMPOSE_PROJECT_NAME=cht
-COUCHDB_SECRET=${couchdb_secret}
-DOCKER_CONFIG_PATH=/home/ubuntu/cht/upgrade-service
-COUCHDB_DATA=/home/ubuntu/cht/couchdb
-CHT_COMPOSE_PATH=/home/ubuntu/cht/compose
-COUCHDB_USER=medic
-COUCHDB_PASSWORD=${couchdb_password}
-COUCHDB_UUID=${uuid}
-EOF
-</code></pre><p>Note that secure passwords and UUIDs were generated on the first four calls and saved in the resulting <code>.env</code> file.</p>
+<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>sudo apt install wamerican
+</span></span><span style="display:flex;"><span><span style="color:#000">uuid</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#204a87;font-weight:bold">$(</span>uuidgen<span style="color:#204a87;font-weight:bold">)</span>
+</span></span><span style="display:flex;"><span><span style="color:#000">couchdb_secret</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#204a87;font-weight:bold">$(</span>shuf -n7 /usr/share/dict/words --random-source<span style="color:#ce5c00;font-weight:bold">=</span>/dev/random <span style="color:#000;font-weight:bold">|</span> tr <span style="color:#4e9a06">'\n'</span> <span style="color:#4e9a06">'-'</span> <span style="color:#000;font-weight:bold">|</span> tr -d <span style="color:#4e9a06">"'"</span> <span style="color:#000;font-weight:bold">|</span> cut -d<span style="color:#4e9a06">'-'</span> -f1,2,3,4,5,6,7<span style="color:#204a87;font-weight:bold">)</span>
+</span></span><span style="display:flex;"><span><span style="color:#000">couchdb_password</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#204a87;font-weight:bold">$(</span>shuf -n7 /usr/share/dict/words --random-source<span style="color:#ce5c00;font-weight:bold">=</span>/dev/random <span style="color:#000;font-weight:bold">|</span> tr <span style="color:#4e9a06">'\n'</span> <span style="color:#4e9a06">'-'</span> <span style="color:#000;font-weight:bold">|</span> tr -d <span style="color:#4e9a06">"'"</span> <span style="color:#000;font-weight:bold">|</span> cut -d<span style="color:#4e9a06">'-'</span> -f1,2,3,4,5,6,7<span style="color:#204a87;font-weight:bold">)</span>
+</span></span><span style="display:flex;"><span>cat > /home/ubuntu/cht/upgrade-service/.env <span style="color:#4e9a06"><< EOF
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">CHT_COMPOSE_PROJECT_NAME=cht
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">COUCHDB_SECRET=${couchdb_secret}
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">DOCKER_CONFIG_PATH=/home/ubuntu/cht/upgrade-service
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">COUCHDB_DATA=/home/ubuntu/cht/couchdb
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">CHT_COMPOSE_PATH=/home/ubuntu/cht/compose
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">COUCHDB_USER=medic
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">COUCHDB_PASSWORD=${couchdb_password}
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">COUCHDB_UUID=${uuid}
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"># <ADD_SERVERNAME_TO_HTTP_AGENT>: (optional, default: false, configures: api) Adds 'servername' to HTTP agent for certificate issues in receiving traffic when proxying HTTPS->HTTP in SNI environments with external TLS termination.
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"># See 'tls.connect(options[, callback])' (https://nodejs.org/api/tls.html). May resolve 'ERR_TLS_CERT_ALTNAME_INVALID' error.
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"># ADD_SERVERNAME_TO_HTTP_AGENT=true
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"># <PROXY_CHANGE_ORIGIN>: (optional, default: false, configures: api) See http-proxy (https://www.npmjs.com/package/http-proxy#options). Sets 'changeOrigin' to 'true' for HTTP clients. For certificate issues in proxying HTTP->HTTPS
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"># PROXY_CHANGE_ORIGIN=true
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">EOF</span>
+</span></span></code></pre></div><p>Note that secure passwords and UUIDs were generated on the first four calls and saved in the resulting <code>.env</code> file. Uncomment optional items if required.</p>
<h2 id="launch-containers">Launch containers</h2>
<div class="alert alert-primary" role="alert">
<h4 class="alert-heading">Note</h4>
@@ -157,19 +162,24 @@ docker compose up --detach
</ol>
<h3 id="prepare-environment-variables-file">Prepare Environment Variables file</h3>
<p>Prepare an <code>.env</code> file by running this code:</p>
-<pre tabindex="0"><code>sudo apt install wamerican
-uuid=$(uuidgen)
-couchdb_secret=$(shuf -n7 /usr/share/dict/words --random-source=/dev/random | tr '\n' '-' | tr -d "'" | cut -d'-' -f1,2,3,4,5,6,7)
-couchdb_password=$(shuf -n7 /usr/share/dict/words --random-source=/dev/random | tr '\n' '-' | tr -d "'" | cut -d'-' -f1,2,3,4,5,6,7)
-cat > /home/ubuntu/cht/upgrade-service/.env << EOF
-CHT_COMPOSE_PROJECT_NAME=cht
-DOCKER_CONFIG_PATH=/home/ubuntu/cht/upgrade-service
-CHT_COMPOSE_PATH=/home/ubuntu/cht/compose
-COUCHDB_USER=medic
-COUCHDB_PASSWORD=${couchdb_password}
-COUCHDB_SERVERS=couchdb-1.local,couchdb-2.local,couchdb-3.local
-EOF
-</code></pre><p>Note that secure passwords and UUIDs were generated on the first four calls and saved in the resulting <code>.env</code> file.</p>
+<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>sudo apt install wamerican
+</span></span><span style="display:flex;"><span><span style="color:#000">uuid</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#204a87;font-weight:bold">$(</span>uuidgen<span style="color:#204a87;font-weight:bold">)</span>
+</span></span><span style="display:flex;"><span><span style="color:#000">couchdb_secret</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#204a87;font-weight:bold">$(</span>shuf -n7 /usr/share/dict/words --random-source<span style="color:#ce5c00;font-weight:bold">=</span>/dev/random <span style="color:#000;font-weight:bold">|</span> tr <span style="color:#4e9a06">'\n'</span> <span style="color:#4e9a06">'-'</span> <span style="color:#000;font-weight:bold">|</span> tr -d <span style="color:#4e9a06">"'"</span> <span style="color:#000;font-weight:bold">|</span> cut -d<span style="color:#4e9a06">'-'</span> -f1,2,3,4,5,6,7<span style="color:#204a87;font-weight:bold">)</span>
+</span></span><span style="display:flex;"><span><span style="color:#000">couchdb_password</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#204a87;font-weight:bold">$(</span>shuf -n7 /usr/share/dict/words --random-source<span style="color:#ce5c00;font-weight:bold">=</span>/dev/random <span style="color:#000;font-weight:bold">|</span> tr <span style="color:#4e9a06">'\n'</span> <span style="color:#4e9a06">'-'</span> <span style="color:#000;font-weight:bold">|</span> tr -d <span style="color:#4e9a06">"'"</span> <span style="color:#000;font-weight:bold">|</span> cut -d<span style="color:#4e9a06">'-'</span> -f1,2,3,4,5,6,7<span style="color:#204a87;font-weight:bold">)</span>
+</span></span><span style="display:flex;"><span>cat > /home/ubuntu/cht/upgrade-service/.env <span style="color:#4e9a06"><< EOF
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">CHT_COMPOSE_PROJECT_NAME=cht
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">DOCKER_CONFIG_PATH=/home/ubuntu/cht/upgrade-service
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">CHT_COMPOSE_PATH=/home/ubuntu/cht/compose
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">COUCHDB_USER=medic
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">COUCHDB_PASSWORD=${couchdb_password}
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">COUCHDB_SERVERS=couchdb-1.local,couchdb-2.local,couchdb-3.local
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"># <ADD_SERVERNAME_TO_HTTP_AGENT>: (optional, default: false, configures: api) Adds 'servername' to HTTP agent for certificate issues in receiving traffic when proxying HTTPS->HTTP in SNI environments with external TLS termination.
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"># See 'tls.connect(options[, callback])' (https://nodejs.org/api/tls.html). May resolve 'ERR_TLS_CERT_ALTNAME_INVALID' error.
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"># ADD_SERVERNAME_TO_HTTP_AGENT=true
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"># <PROXY_CHANGE_ORIGIN>: (optional, default: false, configures: api) See http-proxy (https://www.npmjs.com/package/http-proxy#options). Sets 'changeOrigin' to 'true' for HTTP clients. For certificate issues in proxying HTTP->HTTPS
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"># PROXY_CHANGE_ORIGIN=true
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">EOF</span>
+</span></span></code></pre></div><p>Note that secure passwords and UUIDs were generated on the first four calls and saved in the resulting <code>.env</code> file. Uncomment optional items if required.</p>
<h3 id="download-compose-files">Download compose files</h3>
<p>The following 2 <code>curl</code> commands download CHT version <code>4.0.1</code> compose files, which you can change as needed. Otherwise, call:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#204a87">cd</span> /home/ubuntu/cht/
@@ -201,19 +211,19 @@ This section has the first use of <code>docker compose</code>. This should
<p>First, <strong>on the CHT Core node</strong>, get your CouchDB password with this command:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>grep COUCHDB_PASSWORD /home/ubuntu/cht/upgrade-service/.env <span style="color:#000;font-weight:bold">|</span> cut -d<span style="color:#4e9a06">'='</span> -f2
</span></span></code></pre></div><p>Now, <strong>on all 3 CouchDB nodes</strong>, create an <code>.env</code> file by running this code. You’ll need to replace <code>PASSWORD-FROM-ABOVE</code> so it is the same on all three nodes:</p>
-<pre tabindex="0"><code>sudo apt install wamerican
-mkdir -p /home/ubuntu/cht/srv
-uuid=$(uuidgen)
-couchdb_secret=$(shuf -n7 /usr/share/dict/words --random-source=/dev/random | tr '\n' '-' | tr -d "'" | cut -d'-' -f1,2,3,4,5,6,7)
-cat > /home/ubuntu/cht/.env << EOF
-CHT_COMPOSE_PROJECT_NAME=cht
-COUCHDB_SECRET=${couchdb_secret}
-COUCHDB_DATA=/home/ubuntu/cht/couchdb
-COUCHDB_USER=medic
-COUCHDB_PASSWORD=PASSWORD-FROM-ABOVE
-COUCHDB_UUID=${uuid}
-EOF
-</code></pre><p>Note that secure passwords and UUIDs were generated and saved in the resulting <code>.env</code> file.</p>
+<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>sudo apt install wamerican
+</span></span><span style="display:flex;"><span>mkdir -p /home/ubuntu/cht/srv
+</span></span><span style="display:flex;"><span><span style="color:#000">uuid</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#204a87;font-weight:bold">$(</span>uuidgen<span style="color:#204a87;font-weight:bold">)</span>
+</span></span><span style="display:flex;"><span><span style="color:#000">couchdb_secret</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#204a87;font-weight:bold">$(</span>shuf -n7 /usr/share/dict/words --random-source<span style="color:#ce5c00;font-weight:bold">=</span>/dev/random <span style="color:#000;font-weight:bold">|</span> tr <span style="color:#4e9a06">'\n'</span> <span style="color:#4e9a06">'-'</span> <span style="color:#000;font-weight:bold">|</span> tr -d <span style="color:#4e9a06">"'"</span> <span style="color:#000;font-weight:bold">|</span> cut -d<span style="color:#4e9a06">'-'</span> -f1,2,3,4,5,6,7<span style="color:#204a87;font-weight:bold">)</span>
+</span></span><span style="display:flex;"><span>cat > /home/ubuntu/cht/.env <span style="color:#4e9a06"><< EOF
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">CHT_COMPOSE_PROJECT_NAME=cht
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">COUCHDB_SECRET=${couchdb_secret}
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">COUCHDB_DATA=/home/ubuntu/cht/couchdb
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">COUCHDB_USER=medic
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">COUCHDB_PASSWORD=PASSWORD-FROM-ABOVE
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">COUCHDB_UUID=${uuid}
+</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">EOF</span>
+</span></span></code></pre></div><p>Note that secure passwords and UUIDs were generated and saved in the resulting <code>.env</code> file.</p>
<h4 id="couchdb-node-1">CouchDB Node 1</h4>
<p>Create <code>/home/ubuntu/cht/docker-compose.yml</code> on Node 1 by running this code:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#204a87">cd</span> /home/ubuntu/cht/
diff --git a/apps/guides/hosting/4.x/self-hosting/multiple-nodes/index.html b/apps/guides/hosting/4.x/self-hosting/multiple-nodes/index.html
index 40faf57e8..9c5839028 100644
--- a/apps/guides/hosting/4.x/self-hosting/multiple-nodes/index.html
+++ b/apps/guides/hosting/4.x/self-hosting/multiple-nodes/index.html
@@ -1,8 +1,8 @@
Self Hosting in CHT 4.x - Multiple CouchDB Nodes on Docker Swarm | Community Health Toolkit
Self Hosting in CHT 4.x - Multiple CouchDB Nodes on Docker Swarm
Hosting the CHT on self run infrastructure with horizontally scaled CouchDB nodes
The clustered multi-node hosting described below is recommended for deployments that need increased performance gains. These gains will increase the complexity of troubleshooting and decrease the ease ongoing maintenance.
In a clustered CHT setup, there are multiple CouchDB nodes responding to users. The ability to horizontally scale a CHT instance was added in version CHT 4.0.0. In this document we set up a three node CouchDB cluster. We require all three CouchDB nodes to be running and healthy before installing the CHT. Our healthcheck service determines the health of the CouchDB nodes and turns off the CHT if any single node is not functional.
Nodes
CHT Core (1x) - Core functionality of the CHT including API and sentinel
CouchDB (3x) - 3 node CouchDB cluster
Prerequisites
Servers
Provision four Ubuntu servers (22.04 as of this writing) that meet our hosting requirements including installing Docker and Docker Compose on all of them. This guide assumes you’re using the ubuntu user, with a home directory of /home/ubuntu and that it has sudo-less access to Docker.
Network
Make sure the following ports are open for all nodes:
7946 TCP/UDP - For Docker communication amongst nodes
2377 TCP - Docker cluster management communication
4789 UDP - Docker overlay network traffic
ICMP - For ping
As a security measure, be sure to restrict the IP addresses of the four nodes only to be able to connect to these ports.
Create an Overlay Network
To set up a private network that only the four nodes can use, we’ll use docker swarm’s overlay network feature. You’ll first need to initialize the swarm on the CHT Core node and then join the swarm on each of the three CouchDB nodes.
Note that secure passwords and UUIDs were generated on the first four calls and saved in the resulting .env file.
Download compose files
The following 2 curl commands download CHT version 4.0.1 compose files, which you can change as needed. Otherwise, call:
cd /home/ubuntu/cht/
+
compose - docker-compose files for cht-core and CouchDB
certs - TLS certificates directory
upgrade-service - where docker-compose file for the upgrade-service
couchdb - the path for the docker-compose file of the upgrade-service (not used in multi-node)
Prepare Environment Variables file
Prepare an .env file by running this code:
sudo apt install wamerican
+uuid=$(uuidgen)
+couchdb_secret=$(shuf -n7 /usr/share/dict/words --random-source=/dev/random | tr '\n''-'| tr -d "'"| cut -d'-' -f1,2,3,4,5,6,7)
+couchdb_password=$(shuf -n7 /usr/share/dict/words --random-source=/dev/random | tr '\n''-'| tr -d "'"| cut -d'-' -f1,2,3,4,5,6,7)
+cat > /home/ubuntu/cht/upgrade-service/.env << EOF
+CHT_COMPOSE_PROJECT_NAME=cht
+DOCKER_CONFIG_PATH=/home/ubuntu/cht/upgrade-service
+CHT_COMPOSE_PATH=/home/ubuntu/cht/compose
+COUCHDB_USER=medic
+COUCHDB_PASSWORD=${couchdb_password}
+COUCHDB_SERVERS=couchdb-1.local,couchdb-2.local,couchdb-3.local
+# <ADD_SERVERNAME_TO_HTTP_AGENT>: (optional, default: false, configures: api) Adds 'servername' to HTTP agent for certificate issues in receiving traffic when proxying HTTPS->HTTP in SNI environments with external TLS termination.
+# See 'tls.connect(options[, callback])' (https://nodejs.org/api/tls.html). May resolve 'ERR_TLS_CERT_ALTNAME_INVALID' error.
+# ADD_SERVERNAME_TO_HTTP_AGENT=true
+# <PROXY_CHANGE_ORIGIN>: (optional, default: false, configures: api) See http-proxy (https://www.npmjs.com/package/http-proxy#options). Sets 'changeOrigin' to 'true' for HTTP clients. For certificate issues in proxying HTTP->HTTPS
+# PROXY_CHANGE_ORIGIN=true
+EOF
+
Note that secure passwords and UUIDs were generated on the first four calls and saved in the resulting .env file. Uncomment optional items if required.
Download compose files
The following 2 curl commands download CHT version 4.0.1 compose files, which you can change as needed. Otherwise, call:
Now, on all 3 CouchDB nodes, create an .env file by running this code. You’ll need to replace PASSWORD-FROM-ABOVE so it is the same on all three nodes:
Note that secure passwords and UUIDs were generated and saved in the resulting .env file.
CouchDB Node 1
Create /home/ubuntu/cht/docker-compose.yml on Node 1 by running this code:
cd /home/ubuntu/cht/
+
Now, on all 3 CouchDB nodes, create an .env file by running this code. You’ll need to replace PASSWORD-FROM-ABOVE so it is the same on all three nodes:
This should show related to the CHT core are running
cht_nginx
cht_api
cht_sentinel
cht_healthcheck
cht_haproxy
cht-upgrade-service
Take note of the STATUS column and make sure no errors are displayed. If any container is restarting or mentioning any other error, check the logs using the docker logs <container-name> command.
If all has gone well, nginx should now be listening at both port 80 and port 443. Port 80 has a permanent redirect to port 443, so you can only access the CHT using https.
To login as the medic user in the web app, you can find your password with this command:
Upgrades are completely manual for the clustered setup right now. You have to go into each of the docker compose files and modify the image tag and take containers down and restart them.
\ No newline at end of file
diff --git a/apps/guides/hosting/4.x/self-hosting/single-node/index.html b/apps/guides/hosting/4.x/self-hosting/single-node/index.html
index a33d3a6b9..708ac32fa 100644
--- a/apps/guides/hosting/4.x/self-hosting/single-node/index.html
+++ b/apps/guides/hosting/4.x/self-hosting/single-node/index.html
@@ -1,8 +1,8 @@
Self Hosting in CHT 4.x - Single CouchDB Node | Community Health Toolkit
Self Hosting in CHT 4.x - Single CouchDB Node
Self Hosting in CHT 4.x - Single CouchDB Node
This for a single node CHT 4.x instance and is the recommended solution for small deployments. If you want a more powerful setup, check out the 4.x multi-node install docs.
Note that secure passwords and UUIDs were generated on the first four calls and saved in the resulting .env file.
Launch containers
Note
This section has the first use of docker compose. This should work, but you may need to use the older style docker-compose if you get an error docker: 'compose' is not a docker command..
To start your CHT instance, run the following
cd /home/ubuntu/cht/upgrade-service
+
Prepare Environment Variables file
Prepare a .env file by running this code:
sudo apt install wamerican
+uuid=$(uuidgen)
+couchdb_secret=$(shuf -n7 /usr/share/dict/words --random-source=/dev/random | tr '\n''-'| tr -d "'"| cut -d'-' -f1,2,3,4,5,6,7)
+couchdb_password=$(shuf -n7 /usr/share/dict/words --random-source=/dev/random | tr '\n''-'| tr -d "'"| cut -d'-' -f1,2,3,4,5,6,7)
+cat > /home/ubuntu/cht/upgrade-service/.env << EOF
+CHT_COMPOSE_PROJECT_NAME=cht
+COUCHDB_SECRET=${couchdb_secret}
+DOCKER_CONFIG_PATH=/home/ubuntu/cht/upgrade-service
+COUCHDB_DATA=/home/ubuntu/cht/couchdb
+CHT_COMPOSE_PATH=/home/ubuntu/cht/compose
+COUCHDB_USER=medic
+COUCHDB_PASSWORD=${couchdb_password}
+COUCHDB_UUID=${uuid}
+# <ADD_SERVERNAME_TO_HTTP_AGENT>: (optional, default: false, configures: api) Adds 'servername' to HTTP agent for certificate issues in receiving traffic when proxying HTTPS->HTTP in SNI environments with external TLS termination.
+# See 'tls.connect(options[, callback])' (https://nodejs.org/api/tls.html). May resolve 'ERR_TLS_CERT_ALTNAME_INVALID' error.
+# ADD_SERVERNAME_TO_HTTP_AGENT=true
+# <PROXY_CHANGE_ORIGIN>: (optional, default: false, configures: api) See http-proxy (https://www.npmjs.com/package/http-proxy#options). Sets 'changeOrigin' to 'true' for HTTP clients. For certificate issues in proxying HTTP->HTTPS
+# PROXY_CHANGE_ORIGIN=true
+EOF
+
Note that secure passwords and UUIDs were generated on the first four calls and saved in the resulting .env file. Uncomment optional items if required.
Launch containers
Note
This section has the first use of docker compose. This should work, but you may need to use the older style docker-compose if you get an error docker: 'compose' is not a docker command..
To start your CHT instance, run the following
cd /home/ubuntu/cht/upgrade-service
docker compose up --detach
Docker will start the upgrade service, which in turn pulls the required images and starts all the services as defined by the compose files in /home/ubuntu/cht/compose.
To follow the progress tail the log of the upgrade service container by running this:
To make sure everything is running correctly, call docker ps and make sure that 7 CHT containers show:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8c1c22d526f3 public.ecr.aws/s5s3h4s7/cht-nginx:4.0.1-4.0.1 "/docker-entrypoint.…"17 minutes ago Up 8 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp cht_nginx_1
@@ -326,7 +331,7 @@
d01343658f3f public.ecr.aws/s5s3h4s7/cht-upgrade-service:latest "node /app/src/index…"17 minutes ago Up 8 minutes upgrade-service-cht-upgrade-service-1
This should show related to the CHT core are running
cht_nginx
cht_api
cht_sentinel
cht_couchdb
cht_healthcheck
cht_haproxy
cht-upgrade-service
Take note of the STATUS column and make sure no errors are displayed there. If any container is restarting or mentioning any other error, check the logs using the docker logs <container-name> command.
If all has gone well, nginx should now be listening at both port 80 and port 443. Port 80 has a permanent redirect to port 443, so you can only access the CHT using https.
To login as the medic user in the web app, you can find your password with this command:
During upgrades, the CHT upgrade service updates the docker-compose files located in /home/ubuntu/cht/compose/. This means that any and all changes made to the docker-compose files will be overwritten. If there is ever a need to make any changes to the docker-compose files, be sure to re-do them post upgrades or should consider implementing them outside of those docker-compose files.
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
index d80b0efe8..d88c275fe 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1 +1 @@
-https://docs.communityhealthtoolkit.org/apps/concepts/access/2024-02-07T09:01:15-08:00https://docs.communityhealthtoolkit.org/apps/features/integrations/android/2021-11-08T18:53:31-03:00https://docs.communityhealthtoolkit.org/apps/reference/api/2024-04-23T14:08:51-05:00https://docs.communityhealthtoolkit.org/core/overview/architecture/2024-03-08T16:16:00+00:00https://docs.communityhealthtoolkit.org/contribute/code/core/dev-environment/2024-03-20T14:16:45-07:00https://docs.communityhealthtoolkit.org/core/overview/watchdog/2024-03-08T16:16:00+00:00https://docs.communityhealthtoolkit.org/design/personas/chw-janet/2020-10-09T16:17:31-07:00https://docs.communityhealthtoolkit.org/contribute/code/2022-12-13T09:17:47+13:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/continuous-discovery-overview/2023-02-22T11:12:03+00:00https://docs.communityhealthtoolkit.org/apps/features/integrations/custom/2022-01-13T15:14:41-05:00https://docs.communityhealthtoolkit.org/apps/features/integrations/dhis2/2021-04-19T17:24:37-04:00https://docs.communityhealthtoolkit.org/2024-04-17T08:14:28+01:00https://docs.communityhealthtoolkit.org/contribute/docs/2020-06-22T21:46:00-04:00https://docs.communityhealthtoolkit.org/contribute/code/releasing/feature_releases/2023-06-02T12:58:08-07:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/focused-groups/2023-11-01T13:43:59-04:00https://docs.communityhealthtoolkit.org/design/icons/forms_tasks_targets/2020-05-30T19:36:05-04:00https://docs.communityhealthtoolkit.org/apps/tutorials/local-setup/2023-11-19T22:00:28-08:00https://docs.communityhealthtoolkit.org/design/personas/partners/implementers/2020-06-01T11:01:54-07:00https://docs.communityhealthtoolkit.org/apps/guides/data/analytics/introduction/2024-03-08T16:16:00+00:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/ux-research-repo/key-concepts/2023-05-16T13:11:09-07:00https://docs.communityhealthtoolkit.org/apps/examples/anc/2023-04-12T17:35:29+00:00https://docs.communityhealthtoolkit.org/design/icons/people_and_places/2020-05-30T19:36:05-04:00https://docs.communityhealthtoolkit.org/design/personas/2020-05-30T19:36:05-04:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/2023-02-22T11:12:03+00:00https://docs.communityhealthtoolkit.org/contribute/medic/onboarding/product-team/2024-01-12T18:57:07+02:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/product-trio/product-trio-activities/2023-02-22T11:12:03+00:00https://docs.communityhealthtoolkit.org/running-programs/training/2024-03-28T02:15:04-07:00https://docs.communityhealthtoolkit.org/design/guides/designing-interviews/2022-04-28T12:11:31+03:00https://docs.communityhealthtoolkit.org/why-the-cht/2022-12-02T21:41:51-05:00https://docs.communityhealthtoolkit.org/contribute/docs/workflow/2023-04-12T10:00:06+00:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/ux-research-repo/about-interviews/2023-05-16T13:11:09-07:00https://docs.communityhealthtoolkit.org/contribute/medic/onboarding/all-the-things/2024-02-16T14:56:32+00:00https://docs.communityhealthtoolkit.org/contribute/code/android/development-setup/2024-03-18T10:03:08-05:00https://docs.communityhealthtoolkit.org/design/best-practices/2023-12-13T07:55:15+03:00https://docs.communityhealthtoolkit.org/contribute/code/core/build-commands/2023-11-28T15:41:06-06:00https://docs.communityhealthtoolkit.org/running-programs/2023-11-21T01:04:00-08:00https://docs.communityhealthtoolkit.org/core/overview/cht-sync/2024-04-03T15:51:38+00:00https://docs.communityhealthtoolkit.org/design/personas/chw-supervisor-ann/2020-05-30T19:36:05-04:00https://docs.communityhealthtoolkit.org/apps/concepts/2020-12-15T09:40:02-06:00https://docs.communityhealthtoolkit.org/apps/tutorials/couch2pg-setup/2023-10-12T08:47:28+13:00https://docs.communityhealthtoolkit.org/core/overview/db-schema/2023-08-07T01:42:44-07:00https://docs.communityhealthtoolkit.org/contribute/code/core/deploy-on-eks/2024-04-16T07:12:57-07:00https://docs.communityhealthtoolkit.org/apps/guides/data/hydration/2021-03-24T06:41:04+02:00https://docs.communityhealthtoolkit.org/apps/reference/forms/2020-10-19T08:47:55-07:00https://docs.communityhealthtoolkit.org/apps/guides/data/analytics/setup/2024-03-08T16:16:00+00:00https://docs.communityhealthtoolkit.org/design/personas/partners/local-governments/2020-06-01T11:01:54-07:00https://docs.communityhealthtoolkit.org/apps/concepts/navigation/2023-12-04T10:15:05+03:00https://docs.communityhealthtoolkit.org/core/overview/offline-first/2022-02-24T07:18:33+13:00https://docs.communityhealthtoolkit.org/apps/features/integrations/openmrs/2022-02-04T18:14:48-05:00https://docs.communityhealthtoolkit.org/core/overview/2020-05-30T19:36:05-04:00https://docs.communityhealthtoolkit.org/contribute/medic/product-core-competencies/2023-05-03T09:56:16+00:00https://docs.communityhealthtoolkit.org/core/overview/pwa/2022-04-08T10:38:39+12:00https://docs.communityhealthtoolkit.org/core/releases/2024-03-20T14:13:08-05:00https://docs.communityhealthtoolkit.org/apps/reference/resources/2021-07-16T08:15:33-05:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/schedule-of-events/2023-02-22T11:12:03+00:00https://docs.communityhealthtoolkit.org/apps/reference/translations/2023-05-16T17:55:12+02:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/ux-research-repo/adding-nuggets/2023-05-16T13:11:09-07:00https://docs.communityhealthtoolkit.org/apps/2023-11-21T01:04:00-08:00https://docs.communityhealthtoolkit.org/design/components/2023-05-19T14:14:18+00:00https://docs.communityhealthtoolkit.org/apps/tutorials/contact-and-users-1/2023-03-29T07:55:19-05:00https://docs.communityhealthtoolkit.org/core/overview/data-flows-for-analytics/2024-03-08T16:16:00+00:00https://docs.communityhealthtoolkit.org/design/guides/empathy-map/2022-04-19T07:42:28+03:00https://docs.communityhealthtoolkit.org/apps/features/2020-05-30T19:36:05-04:00https://docs.communityhealthtoolkit.org/apps/concepts/forms/2021-07-16T08:15:33-05:00https://docs.communityhealthtoolkit.org/design/personas/partners/national-governments/2020-06-01T11:01:54-07:00https://docs.communityhealthtoolkit.org/contribute/medic/onboarding/2023-05-03T09:56:16+00:00https://docs.communityhealthtoolkit.org/apps/features/integrations/oppia/2020-12-17T15:05:43-08:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/product-trio/2023-02-22T11:12:03+00:00https://docs.communityhealthtoolkit.org/apps/guides/data/analytics/production/2024-04-01T15:02:08+00:00https://docs.communityhealthtoolkit.org/apps/features/integrations/rapidpro/2020-08-20T16:45:11-04:00https://docs.communityhealthtoolkit.org/design/personas/regional-manager-christina/2023-02-19T20:45:44+03:00https://docs.communityhealthtoolkit.org/contribute/code/android/releasing/2022-12-13T09:17:47+13:00https://docs.communityhealthtoolkit.org/contribute/tech-radar/2024-01-25T08:20:26+00:00https://docs.communityhealthtoolkit.org/contribute/medic/onboarding/technical-resources/2024-01-17T17:16:27+02:00https://docs.communityhealthtoolkit.org/apps/concepts/care-guides/2020-09-16T20:06:56-07:00https://docs.communityhealthtoolkit.org/core/2023-11-21T01:04:00-08:00https://docs.communityhealthtoolkit.org/contribute/code-of-conduct/2023-09-27T11:58:54+03:00https://docs.communityhealthtoolkit.org/apps/features/contacts/2022-09-15T09:07:15+07:00https://docs.communityhealthtoolkit.org/apps/tutorials/contact-and-users-2/2023-03-29T07:55:19-05:00https://docs.communityhealthtoolkit.org/apps/guides/data/analytics/environment-variables/2024-04-04T08:57:05+00:00https://docs.communityhealthtoolkit.org/apps/examples/2020-09-22T16:00:38-05:00https://docs.communityhealthtoolkit.org/design/icons/2021-07-16T08:15:33-05:00https://docs.communityhealthtoolkit.org/design/personas/nurse-mary/2020-05-30T19:36:05-04:00https://docs.communityhealthtoolkit.org/design/guides/problem-statement/2022-04-19T07:42:28+03:00https://docs.communityhealthtoolkit.org/apps/guides/android/publishing/2022-12-13T09:17:47+13:00https://docs.communityhealthtoolkit.org/contribute/code/releasing/publish-docker-image/2023-05-16T10:46:37-05:00https://docs.communityhealthtoolkit.org/core/overview/transitions/2023-06-14T09:53:43+03:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/ux-research-repo/synthesizing-nuggets/2023-05-16T13:11:09-07:00https://docs.communityhealthtoolkit.org/contribute/medic/onboarding/team-meetings/2024-04-16T10:19:29+00:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/ux-research-repo/2023-02-22T11:12:03+00:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/accept_case_reports/2020-06-27T01:28:28-04:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/hierarchy/2022-06-17T14:30:45-05:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/dhis2/2020-07-09T16:39:14-07:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/forms/2022-05-03T07:56:17+05:45https://docs.communityhealthtoolkit.org/apps/reference/app-settings/header_tabs/2020-07-03T11:25:34+03:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/outbound/2024-01-22T11:08:37+03:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/patient_reports/2021-03-24T06:41:04+02:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/user-permissions/2023-08-14T19:41:47+07:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/registrations/2021-11-24T07:30:29+05:45https://docs.communityhealthtoolkit.org/apps/reference/app-settings/reminders/2020-07-14T15:02:10+12:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/replication_depth/2020-07-13T16:54:46+03:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/replications/2020-10-02T12:20:59-04:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/user-roles/2020-06-04T15:06:42-04:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/schedules/2023-10-25T18:04:48-04:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/sms/2022-11-24T11:08:37+13:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/token_login/2020-07-28T02:48:35+03:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/transitions/2023-04-03T21:22:37-04:00https://docs.communityhealthtoolkit.org/apps/reference/forms/app/2024-04-15T14:37:43+08:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/2023-08-31T09:59:32+05:45https://docs.communityhealthtoolkit.org/contribute/medic/2023-09-27T11:58:54+03:00https://docs.communityhealthtoolkit.org/contribute/code/repository-checklist/2023-05-08T14:34:53+00:00https://docs.communityhealthtoolkit.org/apps/reference/forms/collect/2021-10-05T16:38:24-04:00https://docs.communityhealthtoolkit.org/apps/reference/forms/contact/2024-01-15T13:28:55+02:00https://docs.communityhealthtoolkit.org/apps/reference/contact-page/2024-04-24T13:18:24+03:00https://docs.communityhealthtoolkit.org/contribute/medic/onboarding/daily-updates/2024-04-24T13:18:24+03:00https://docs.communityhealthtoolkit.org/design/personas/data-manager-paul/2020-05-30T19:36:05-04:00https://docs.communityhealthtoolkit.org/design/2020-06-01T11:16:07-07:00https://docs.communityhealthtoolkit.org/apps/reference/extension-libs/2023-05-08T06:38:08+12:00https://docs.communityhealthtoolkit.org/design/guides/mapping-hierarchy/2022-04-19T07:42:28+03:00https://docs.communityhealthtoolkit.org/apps/features/messaging/2020-09-21T15:56:39-07:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/ux-research-repo/publishing-insights/2023-05-16T13:11:09-07:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/quality-assistance/2023-02-22T11:12:03+00:00https://docs.communityhealthtoolkit.org/design/guides/2021-04-15T13:04:40+03:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/requirements/2023-10-06T16:32:03+02:00https://docs.communityhealthtoolkit.org/apps/tutorials/sms-forms/2021-07-16T08:15:33-05:00https://docs.communityhealthtoolkit.org/apps/reference/targets/2022-12-06T01:01:56-05:00https://docs.communityhealthtoolkit.org/apps/reference/tasks/2023-04-20T11:51:49+12:00https://docs.communityhealthtoolkit.org/core/overview/translations/2022-12-22T19:50:08+05:45https://docs.communityhealthtoolkit.org/apps/tutorials/2020-06-03T10:27:10-07:00https://docs.communityhealthtoolkit.org/apps/guides/forms/uhc-mode/2022-01-13T14:48:44-05:00https://docs.communityhealthtoolkit.org/apps/concepts/workflows/2020-12-10T15:03:59-05:00https://docs.communityhealthtoolkit.org/design/personas/app-builder/2020-05-30T19:36:05-04:00https://docs.communityhealthtoolkit.org/apps/tutorials/application-settings/2024-03-28T18:22:13+00:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/code-health/2023-04-04T10:38:58+12:00https://docs.communityhealthtoolkit.org/apps/concepts/hierarchy/2023-05-18T15:48:07-07:00https://docs.communityhealthtoolkit.org/apps/guides/2020-06-03T14:28:04-04:00https://docs.communityhealthtoolkit.org/apps/features/reports/2023-04-12T17:35:29+00:00https://docs.communityhealthtoolkit.org/apps/tutorials/sms-schedules/2021-07-16T08:15:33-05:00https://docs.communityhealthtoolkit.org/contribute/code/workflow/2024-04-17T07:37:21-05:00https://docs.communityhealthtoolkit.org/apps/tutorials/app-forms/2024-01-10T20:47:25+07:00https://docs.communityhealthtoolkit.org/apps/reference/2024-04-17T08:14:28+01:00https://docs.communityhealthtoolkit.org/contribute/code/releasing/2023-04-18T12:42:52+00:00https://docs.communityhealthtoolkit.org/apps/features/supervision/2023-06-26T07:18:05+03:00https://docs.communityhealthtoolkit.org/apps/features/tasks/2022-07-19T14:00:29-04:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/transparency-accountability/2024-03-29T17:47:52-04:00https://docs.communityhealthtoolkit.org/apps/concepts/users/2022-01-13T15:14:41-05:00https://docs.communityhealthtoolkit.org/contribute/2023-02-22T11:12:03+00:00https://docs.communityhealthtoolkit.org/apps/tutorials/form-properties/2021-07-16T08:15:33-05:00https://docs.communityhealthtoolkit.org/apps/concepts/interoperability/2024-01-15T13:28:55+02:00https://docs.communityhealthtoolkit.org/design/personas/partners/2020-06-01T11:16:07-07:00https://docs.communityhealthtoolkit.org/apps/features/targets/2023-12-13T07:55:15+03:00https://docs.communityhealthtoolkit.org/contribute/code/core/update-dependencies/2023-11-03T05:23:42+13:00https://docs.communityhealthtoolkit.org/apps/concepts/prerequisites/2023-05-14T21:33:28+03:00https://docs.communityhealthtoolkit.org/contribute/code/static-analysis/2024-02-09T11:50:30+01:00https://docs.communityhealthtoolkit.org/contribute/code/style-guide/2023-11-28T15:41:06-06:00https://docs.communityhealthtoolkit.org/apps/tutorials/tasks-1/2022-04-25T14:22:54+12:00https://docs.communityhealthtoolkit.org/apps/features/training/2023-04-11T06:24:09+07:00https://docs.communityhealthtoolkit.org/contribute/code/using-npm/2022-12-13T09:17:47+13:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/3.x/ec2-setup-guide/2023-03-27T11:25:13-07:00https://docs.communityhealthtoolkit.org/contribute/code/core/2022-12-13T09:17:47+13:00https://docs.communityhealthtoolkit.org/apps/guides/messaging/gateways/gateway/2021-11-08T18:53:31-03:00https://docs.communityhealthtoolkit.org/apps/guides/messaging/gateways/gateway/configuration/2022-12-13T09:17:47+13:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/data-migration/2024-01-25T11:43:17+02:00https://docs.communityhealthtoolkit.org/glossary/2023-09-06T01:29:21-07:00https://docs.communityhealthtoolkit.org/apps/features/muting/2023-03-09T15:46:54+07:00https://docs.communityhealthtoolkit.org/core/overview/roadmap/2023-05-14T14:06:36-07:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/self-hosting/2023-10-06T16:32:03+02:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/self-hosting/single-node/2023-12-07T07:04:43-08:00https://docs.communityhealthtoolkit.org/contribute/docs/style-guide/2023-10-09T09:09:53+02:00https://docs.communityhealthtoolkit.org/apps/tutorials/targets/2022-02-08T10:50:49+03:00https://docs.communityhealthtoolkit.org/apps/tutorials/contact-summary/2021-07-16T08:15:33-05:00https://docs.communityhealthtoolkit.org/apps/tutorials/death-reporting/2021-11-29T11:05:14-08:00https://docs.communityhealthtoolkit.org/apps/features/uhc-mode/2023-03-09T15:46:54+07:00https://docs.communityhealthtoolkit.org/apps/features/admin/2023-03-09T15:46:54+07:00https://docs.communityhealthtoolkit.org/contribute/code/core/automated-tests/2023-12-05T05:31:23+09:00https://docs.communityhealthtoolkit.org/apps/tutorials/condition-cards/2023-03-09T11:48:26+03:00https://docs.communityhealthtoolkit.org/apps/guides/android/branding/2024-04-23T09:23:45+05:45https://docs.communityhealthtoolkit.org/apps/tutorials/localizing-cht/2024-01-15T13:28:55+02:00https://docs.communityhealthtoolkit.org/apps/tutorials/application-graphics/2022-07-13T02:44:45+00:00https://docs.communityhealthtoolkit.org/apps/tutorials/application-tests/2023-04-12T10:00:06+00:00https://docs.communityhealthtoolkit.org/apps/guides/data/users-bulk-load/2024-01-22T12:03:58+03:00https://docs.communityhealthtoolkit.org/apps/guides/data/impact-metrics/2024-03-08T16:16:00+00:00https://docs.communityhealthtoolkit.org/apps/guides/training/onboarding/2023-03-09T15:46:54+07:00https://docs.communityhealthtoolkit.org/apps/guides/training/training-cards/2023-04-11T06:24:09+07:00https://docs.communityhealthtoolkit.org/apps/guides/training/training-cards-resources/2023-05-12T08:24:25+07:00https://docs.communityhealthtoolkit.org/apps/guides/data/training-instance/2023-03-09T15:46:54+07:00https://docs.communityhealthtoolkit.org/contribute/code/core/using-windows/2023-08-21T14:01:53+12:00https://docs.communityhealthtoolkit.org/apps/guides/data/invalid-reports/2024-03-08T16:16:00+00:00https://docs.communityhealthtoolkit.org/contribute/code/core/run-multiple-chrome-versions/2023-09-07T14:16:27-04:00https://docs.communityhealthtoolkit.org/apps/guides/data/csv-to-docs/2024-03-08T16:16:00+00:00https://docs.communityhealthtoolkit.org/apps/guides/messaging/gateways/africas-talking/2022-07-22T08:43:15+12:00https://docs.communityhealthtoolkit.org/contribute/code/android/2022-12-13T09:17:47+13:00https://docs.communityhealthtoolkit.org/apps/guides/messaging/gateways/2021-05-18T17:45:42-04:00https://docs.communityhealthtoolkit.org/apps/features/integrations/2023-03-09T15:46:54+07:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/self-hosting/multiple-nodes/2023-12-07T07:04:43-08:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/self-hosting/self-hosting-k3s-multinode/2023-12-07T07:04:43-08:00https://docs.communityhealthtoolkit.org/apps/guides/messaging/gateways/gateway/phones/2021-11-08T18:53:31-03:00https://docs.communityhealthtoolkit.org/apps/guides/messaging/gateways/rapidpro/2022-12-08T13:31:35+01:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/3.x/self-hosting/2023-04-12T17:35:29+00:00https://docs.communityhealthtoolkit.org/apps/guides/messaging/sms-states/2021-11-08T18:53:31-03:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/vertical-vs-horizontal/2023-12-21T11:56:09+03:00https://docs.communityhealthtoolkit.org/apps/guides/messaging/shortcodes/2021-05-18T17:45:42-04:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/3.x/app-developer/2023-06-02T12:58:08-07:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/app-developer/2024-02-05T17:31:34+00:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/3.x/ssl-cert-install/2022-10-31T14:34:56-07:00https://docs.communityhealthtoolkit.org/apps/guides/messaging/message-loops/2021-05-18T17:45:42-04:00https://docs.communityhealthtoolkit.org/apps/guides/messaging/gateways/gateway/troubleshooting/2023-03-10T04:36:47+05:45https://docs.communityhealthtoolkit.org/apps/guides/hosting/3.x/2023-03-27T11:25:13-07:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/2023-10-06T16:32:03+02:00https://docs.communityhealthtoolkit.org/apps/guides/privacy/privacy-policy/2022-10-10T16:14:15-07:00https://docs.communityhealthtoolkit.org/apps/guides/data/2020-06-05T14:27:01-04:00https://docs.communityhealthtoolkit.org/apps/guides/database/2024-04-18T13:46:39+01:00https://docs.communityhealthtoolkit.org/apps/guides/debugging/2022-02-16T12:15:00+13:00https://docs.communityhealthtoolkit.org/apps/guides/forms/2020-06-05T14:27:01-04:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/2023-03-27T11:25:13-07:00https://docs.communityhealthtoolkit.org/apps/guides/integrations/2022-07-05T04:16:58+03:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/monitoring/introduction/2023-05-23T09:47:40-05:00https://docs.communityhealthtoolkit.org/apps/guides/messaging/2020-06-05T14:27:01-04:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/monitoring/2023-05-03T16:27:47-07:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/3.x/offline/2023-11-27T10:41:21+02:00https://docs.communityhealthtoolkit.org/apps/guides/performance/2020-06-05T14:27:01-04:00https://docs.communityhealthtoolkit.org/apps/guides/privacy/2021-04-19T17:19:45-07:00https://docs.communityhealthtoolkit.org/apps/guides/security/2020-06-05T14:27:01-04:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/monitoring/setup/2023-09-19T08:44:27-05:00https://docs.communityhealthtoolkit.org/apps/guides/tasks/2022-01-07T17:06:14-05:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/adding-tls-certificates/2023-12-18T16:12:45+01:00https://docs.communityhealthtoolkit.org/apps/guides/training/2023-03-09T15:46:54+07:00https://docs.communityhealthtoolkit.org/apps/guides/updates/2020-06-05T14:27:01-04:00https://docs.communityhealthtoolkit.org/apps/guides/android/2022-12-13T09:17:47+13:00https://docs.communityhealthtoolkit.org/apps/guides/data/analytics/2024-03-08T16:16:00+00:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/monitoring/production/2023-05-23T09:47:40-05:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/logs/2023-06-02T12:58:08-07:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/backups/2023-10-06T16:32:03+02:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/monitoring/postgres-ingest/2023-09-06T13:24:27-07:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/monitoring/integration/2023-10-06T16:32:03+02:00https://docs.communityhealthtoolkit.org/search/2022-07-27T20:41:57-05:00https://docs.communityhealthtoolkit.org/core/releases/0.4.15-and-earlier/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.10.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.10.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.10.2/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.10.3/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.11.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.11.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.11.2/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.11.3/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.12.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.12.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.12.2/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.12.3/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.12.4/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.12.5/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.13.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.13.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.13.2/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.13.3/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.13.4/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.13.5/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.13.6/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.13.7/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.14.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.14.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.14.2/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.14.3/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.15.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.16.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.16.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.17.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.18.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.18.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.6.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.6.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.6.2/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.6.3/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.7.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.7.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.7.2/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.7.3/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.8.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.8.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.8.2/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.8.3/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.8.4/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.8.5/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.9.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.9.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/3.0.0/2022-02-21T09:32:58-06:00https://docs.communityhealthtoolkit.org/core/releases/3.1.0/2022-02-21T09:32:58-06:00https://docs.communityhealthtoolkit.org/core/releases/3.10.0/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.10.1/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.10.2/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.10.3/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.10.4/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.10.5/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.11.0/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.11.1/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.11.2/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.11.3/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.12.0/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.12.1/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.13.0/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.14.0/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.14.1/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.14.2/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.15.0/2022-05-05T09:06:44+12:00https://docs.communityhealthtoolkit.org/core/releases/3.16.0/2022-08-10T08:20:54-05:00https://docs.communityhealthtoolkit.org/core/releases/3.16.1/2022-12-02T09:34:55+02:00https://docs.communityhealthtoolkit.org/core/releases/3.17.0/2022-10-11T09:43:26+07:00https://docs.communityhealthtoolkit.org/core/releases/3.17.1/2022-12-02T09:35:08+02:00https://docs.communityhealthtoolkit.org/core/releases/3.17.2/2023-10-10T19:56:20+13:00https://docs.communityhealthtoolkit.org/core/releases/3.2.0/2022-10-31T16:02:09-04:00https://docs.communityhealthtoolkit.org/core/releases/3.2.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/3.3.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/3.4.0/2022-01-14T11:19:07-05:00https://docs.communityhealthtoolkit.org/core/releases/3.4.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/3.5.0/2022-01-14T11:19:07-05:00https://docs.communityhealthtoolkit.org/core/releases/3.6.0/2022-01-14T11:19:07-05:00https://docs.communityhealthtoolkit.org/core/releases/3.6.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/3.6.2/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/3.7.0/2022-08-01T16:02:39+12:00https://docs.communityhealthtoolkit.org/core/releases/3.7.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/3.8.0/2022-02-21T09:32:58-06:00https://docs.communityhealthtoolkit.org/core/releases/3.8.1/2022-01-14T11:19:07-05:00https://docs.communityhealthtoolkit.org/core/releases/3.8.2/2022-01-14T11:19:07-05:00https://docs.communityhealthtoolkit.org/core/releases/3.9.0/2022-01-14T11:19:07-05:00https://docs.communityhealthtoolkit.org/core/releases/3.9.1/2022-01-14T11:19:07-05:00https://docs.communityhealthtoolkit.org/core/releases/3.9.2/2022-01-14T11:19:07-05:00https://docs.communityhealthtoolkit.org/core/releases/4.0.0/2022-12-13T11:43:27+13:00https://docs.communityhealthtoolkit.org/core/releases/4.0.1/2022-12-01T17:04:46+02:00https://docs.communityhealthtoolkit.org/core/releases/4.1.0/2022-12-13T10:21:02+01:00https://docs.communityhealthtoolkit.org/core/releases/4.1.1/2023-03-21T13:03:08+00:00https://docs.communityhealthtoolkit.org/core/releases/4.1.2/2023-06-21T07:36:02+12:00https://docs.communityhealthtoolkit.org/core/releases/4.2.0/2023-05-25T10:01:43+07:00https://docs.communityhealthtoolkit.org/core/releases/4.2.1/2023-06-10T09:20:32+03:00https://docs.communityhealthtoolkit.org/core/releases/4.2.2/2023-07-07T21:11:26+03:00https://docs.communityhealthtoolkit.org/core/releases/4.2.3/2023-09-25T14:17:56+02:00https://docs.communityhealthtoolkit.org/core/releases/4.2.4/2023-10-10T19:56:20+13:00https://docs.communityhealthtoolkit.org/core/releases/4.3.0/2023-08-18T11:58:28+03:00https://docs.communityhealthtoolkit.org/core/releases/4.3.1/2023-08-30T15:37:03+12:00https://docs.communityhealthtoolkit.org/core/releases/4.3.2/2023-10-10T19:56:20+13:00https://docs.communityhealthtoolkit.org/core/releases/4.4.0/2023-11-06T18:07:13-08:00https://docs.communityhealthtoolkit.org/core/releases/4.4.1/2023-10-10T19:56:20+13:00https://docs.communityhealthtoolkit.org/core/releases/4.4.2/2023-12-12T12:39:34+02:00https://docs.communityhealthtoolkit.org/core/releases/4.5.0/2023-11-20T09:25:50-05:00https://docs.communityhealthtoolkit.org/core/releases/4.5.1/2023-12-12T12:39:34+02:00https://docs.communityhealthtoolkit.org/core/releases/4.5.2/2024-02-09T15:11:30+07:00https://docs.communityhealthtoolkit.org/core/releases/4.6.0/2024-03-28T10:51:13-05:00https://docs.communityhealthtoolkit.org/apps/guides/forms/additional-docs/2022-06-17T14:30:45-05:00https://docs.communityhealthtoolkit.org/apps/guides/forms/app-form-sms/2023-06-27T05:11:38+05:45https://docs.communityhealthtoolkit.org/apps/guides/debugging/obtaining-logs/2023-05-16T09:10:36-05:00https://docs.communityhealthtoolkit.org/apps/reference/_partial_cht_api/2023-04-06T14:38:13-04:00https://docs.communityhealthtoolkit.org/apps/tutorials/tasks-2/2023-04-06T14:38:13-04:00https://docs.communityhealthtoolkit.org/apps/guides/database/muting_in_dashboards/2021-10-08T08:43:53+03:00https://docs.communityhealthtoolkit.org/apps/examples/contact-tracing/2020-09-23T18:04:11-04:00https://docs.communityhealthtoolkit.org/apps/guides/database/couch2pg-oom-errors/2022-10-31T14:34:56-07:00https://docs.communityhealthtoolkit.org/apps/guides/database/couchdb-authentication/2022-11-22T08:13:16+13:00https://docs.communityhealthtoolkit.org/apps/examples/phc-covid/2020-09-23T18:04:11-04:00https://docs.communityhealthtoolkit.org/apps/examples/covid-education/2021-01-11T16:12:16-05:00https://docs.communityhealthtoolkit.org/apps/examples/covid-rdt-reference-app/2021-09-27T06:46:22-07:00https://docs.communityhealthtoolkit.org/apps/guides/database/database-conflicts/2022-11-22T08:13:16+13:00https://docs.communityhealthtoolkit.org/apps/guides/integrations/dhis2-aggregate/2020-07-09T16:39:14-07:00https://docs.communityhealthtoolkit.org/apps/examples/direct-to-client/2024-03-26T10:51:24+05:45https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/_partial_docker_directories/2023-04-06T14:38:13-04:00https://docs.communityhealthtoolkit.org/apps/examples/ebs/2020-09-23T18:04:11-04:00https://docs.communityhealthtoolkit.org/apps/guides/updates/feature-flags/2023-05-04T10:39:42-04:00https://docs.communityhealthtoolkit.org/apps/guides/forms/google-drive/2021-07-16T08:15:33-05:00https://docs.communityhealthtoolkit.org/apps/guides/forms/form-inputs/2024-04-09T09:47:10-05:00https://docs.communityhealthtoolkit.org/apps/examples/learning-care/2021-03-03T16:27:50-05:00https://docs.communityhealthtoolkit.org/apps/tutorials/_partial_docker_setup/2023-10-06T16:32:03+02:00https://docs.communityhealthtoolkit.org/apps/examples/interoperability/2023-05-31T18:07:44+03:00https://docs.communityhealthtoolkit.org/apps/guides/privacy/policy/2023-06-29T09:58:29+12:00https://docs.communityhealthtoolkit.org/design/mockups/2023-03-10T03:00:38+03:00https://docs.communityhealthtoolkit.org/apps/guides/updates/moving-contacts/2021-10-22T17:25:03-04:00https://docs.communityhealthtoolkit.org/apps/guides/forms/multimedia/2022-06-17T14:30:45-05:00https://docs.communityhealthtoolkit.org/apps/guides/integrations/openmrs/2023-04-12T17:35:29+00:00https://docs.communityhealthtoolkit.org/apps/guides/integrations/oppia/2021-07-16T08:15:33-05:00https://docs.communityhealthtoolkit.org/apps/guides/tasks/pass-data-to-form/2023-04-06T14:38:13-04:00https://docs.communityhealthtoolkit.org/apps/examples/pharmacovigilance-reference-app/2024-01-16T12:23:53+03:00https://docs.communityhealthtoolkit.org/apps/examples/pih/2024-01-17T10:19:37+03:00https://docs.communityhealthtoolkit.org/apps/guides/updates/preparing-for-4/2023-04-18T12:42:52+00:00https://docs.communityhealthtoolkit.org/apps/guides/debugging/replicating-production-data-locally/2023-08-21T14:01:53+12:00https://docs.communityhealthtoolkit.org/apps/guides/performance/purging/2023-08-17T01:04:57+03:00https://docs.communityhealthtoolkit.org/apps/guides/database/querying_apdex_telemetry/2024-03-29T11:37:33+07:00https://docs.communityhealthtoolkit.org/apps/guides/tasks/query-task-data/2021-11-29T11:05:14-08:00https://docs.communityhealthtoolkit.org/apps/guides/forms/wealth-quintiles/2020-12-16T14:58:49-05:00https://docs.communityhealthtoolkit.org/apps/guides/integrations/rapidpro/2024-03-25T13:57:13-07:00https://docs.communityhealthtoolkit.org/apps/guides/database/rdbms-from-mac/2024-01-25T09:05:05+03:00https://docs.communityhealthtoolkit.org/apps/guides/database/rdbms-from-windows/2020-08-18T10:29:41-07:00https://docs.communityhealthtoolkit.org/apps/guides/updates/collect-forms-update/2021-07-16T08:15:33-05:00https://docs.communityhealthtoolkit.org/apps/examples/training/2023-03-09T15:46:54+07:00https://docs.communityhealthtoolkit.org/apps/guides/performance/replication/2020-08-19T12:19:51-07:00https://docs.communityhealthtoolkit.org/apps/guides/forms/report-titles/2020-06-05T14:27:01-04:00https://docs.communityhealthtoolkit.org/apps/guides/security/securely-onboarding-users-at-scale/2024-02-09T13:26:28-08:00https://docs.communityhealthtoolkit.org/apps/guides/debugging/secure-sharing-of-developer-instance/2022-12-13T09:17:47+13:00https://docs.communityhealthtoolkit.org/apps/guides/security/securing-android/2022-12-13T09:17:47+13:00https://docs.communityhealthtoolkit.org/apps/guides/debugging/sharing-4x-logs/2023-10-23T14:21:45-07:00https://docs.communityhealthtoolkit.org/apps/examples/stock-monitoring/2022-08-31T13:55:06-07:00https://docs.communityhealthtoolkit.org/apps/examples/supervisor-reference-app/2023-03-18T15:29:21+03:00https://docs.communityhealthtoolkit.org/apps/guides/tasks/task-schema-parameters/2021-11-29T11:05:14-08:00https://docs.communityhealthtoolkit.org/apps/guides/performance/telemetry/2024-03-18T22:18:10+07:00https://docs.communityhealthtoolkit.org/apps/reference/_partial_utils/2023-04-06T14:38:13-04:00https://docs.communityhealthtoolkit.org/apps/guides/forms/versioning/2022-08-05T10:25:51+12:00
\ No newline at end of file
+https://docs.communityhealthtoolkit.org/apps/concepts/access/2024-02-07T09:01:15-08:00https://docs.communityhealthtoolkit.org/apps/features/integrations/android/2021-11-08T18:53:31-03:00https://docs.communityhealthtoolkit.org/apps/reference/api/2024-04-23T14:08:51-05:00https://docs.communityhealthtoolkit.org/core/overview/architecture/2024-03-08T16:16:00+00:00https://docs.communityhealthtoolkit.org/contribute/code/core/dev-environment/2024-03-20T14:16:45-07:00https://docs.communityhealthtoolkit.org/core/overview/watchdog/2024-03-08T16:16:00+00:00https://docs.communityhealthtoolkit.org/design/personas/chw-janet/2020-10-09T16:17:31-07:00https://docs.communityhealthtoolkit.org/contribute/code/2022-12-13T09:17:47+13:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/continuous-discovery-overview/2023-02-22T11:12:03+00:00https://docs.communityhealthtoolkit.org/apps/features/integrations/custom/2022-01-13T15:14:41-05:00https://docs.communityhealthtoolkit.org/apps/features/integrations/dhis2/2021-04-19T17:24:37-04:00https://docs.communityhealthtoolkit.org/2024-04-17T08:14:28+01:00https://docs.communityhealthtoolkit.org/contribute/docs/2020-06-22T21:46:00-04:00https://docs.communityhealthtoolkit.org/contribute/code/releasing/feature_releases/2023-06-02T12:58:08-07:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/focused-groups/2023-11-01T13:43:59-04:00https://docs.communityhealthtoolkit.org/design/icons/forms_tasks_targets/2020-05-30T19:36:05-04:00https://docs.communityhealthtoolkit.org/apps/tutorials/local-setup/2023-11-19T22:00:28-08:00https://docs.communityhealthtoolkit.org/design/personas/partners/implementers/2020-06-01T11:01:54-07:00https://docs.communityhealthtoolkit.org/apps/guides/data/analytics/introduction/2024-03-08T16:16:00+00:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/ux-research-repo/key-concepts/2023-05-16T13:11:09-07:00https://docs.communityhealthtoolkit.org/apps/examples/anc/2023-04-12T17:35:29+00:00https://docs.communityhealthtoolkit.org/design/icons/people_and_places/2020-05-30T19:36:05-04:00https://docs.communityhealthtoolkit.org/design/personas/2020-05-30T19:36:05-04:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/2023-02-22T11:12:03+00:00https://docs.communityhealthtoolkit.org/contribute/medic/onboarding/product-team/2024-01-12T18:57:07+02:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/product-trio/product-trio-activities/2023-02-22T11:12:03+00:00https://docs.communityhealthtoolkit.org/running-programs/training/2024-03-28T02:15:04-07:00https://docs.communityhealthtoolkit.org/design/guides/designing-interviews/2022-04-28T12:11:31+03:00https://docs.communityhealthtoolkit.org/why-the-cht/2022-12-02T21:41:51-05:00https://docs.communityhealthtoolkit.org/contribute/docs/workflow/2023-04-12T10:00:06+00:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/ux-research-repo/about-interviews/2023-05-16T13:11:09-07:00https://docs.communityhealthtoolkit.org/contribute/medic/onboarding/all-the-things/2024-02-16T14:56:32+00:00https://docs.communityhealthtoolkit.org/contribute/code/android/development-setup/2024-03-18T10:03:08-05:00https://docs.communityhealthtoolkit.org/design/best-practices/2023-12-13T07:55:15+03:00https://docs.communityhealthtoolkit.org/contribute/code/core/build-commands/2023-11-28T15:41:06-06:00https://docs.communityhealthtoolkit.org/running-programs/2023-11-21T01:04:00-08:00https://docs.communityhealthtoolkit.org/core/overview/cht-sync/2024-04-03T15:51:38+00:00https://docs.communityhealthtoolkit.org/design/personas/chw-supervisor-ann/2020-05-30T19:36:05-04:00https://docs.communityhealthtoolkit.org/apps/concepts/2020-12-15T09:40:02-06:00https://docs.communityhealthtoolkit.org/apps/tutorials/couch2pg-setup/2023-10-12T08:47:28+13:00https://docs.communityhealthtoolkit.org/core/overview/db-schema/2023-08-07T01:42:44-07:00https://docs.communityhealthtoolkit.org/contribute/code/core/deploy-on-eks/2024-04-16T07:12:57-07:00https://docs.communityhealthtoolkit.org/apps/guides/data/hydration/2021-03-24T06:41:04+02:00https://docs.communityhealthtoolkit.org/apps/reference/forms/2020-10-19T08:47:55-07:00https://docs.communityhealthtoolkit.org/apps/guides/data/analytics/setup/2024-03-08T16:16:00+00:00https://docs.communityhealthtoolkit.org/design/personas/partners/local-governments/2020-06-01T11:01:54-07:00https://docs.communityhealthtoolkit.org/apps/concepts/navigation/2023-12-04T10:15:05+03:00https://docs.communityhealthtoolkit.org/core/overview/offline-first/2022-02-24T07:18:33+13:00https://docs.communityhealthtoolkit.org/apps/features/integrations/openmrs/2022-02-04T18:14:48-05:00https://docs.communityhealthtoolkit.org/core/overview/2020-05-30T19:36:05-04:00https://docs.communityhealthtoolkit.org/contribute/medic/product-core-competencies/2023-05-03T09:56:16+00:00https://docs.communityhealthtoolkit.org/core/overview/pwa/2022-04-08T10:38:39+12:00https://docs.communityhealthtoolkit.org/core/releases/2024-03-20T14:13:08-05:00https://docs.communityhealthtoolkit.org/apps/reference/resources/2021-07-16T08:15:33-05:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/schedule-of-events/2023-02-22T11:12:03+00:00https://docs.communityhealthtoolkit.org/apps/reference/translations/2023-05-16T17:55:12+02:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/ux-research-repo/adding-nuggets/2023-05-16T13:11:09-07:00https://docs.communityhealthtoolkit.org/apps/2023-11-21T01:04:00-08:00https://docs.communityhealthtoolkit.org/design/components/2023-05-19T14:14:18+00:00https://docs.communityhealthtoolkit.org/apps/tutorials/contact-and-users-1/2023-03-29T07:55:19-05:00https://docs.communityhealthtoolkit.org/core/overview/data-flows-for-analytics/2024-03-08T16:16:00+00:00https://docs.communityhealthtoolkit.org/design/guides/empathy-map/2022-04-19T07:42:28+03:00https://docs.communityhealthtoolkit.org/apps/features/2020-05-30T19:36:05-04:00https://docs.communityhealthtoolkit.org/apps/concepts/forms/2021-07-16T08:15:33-05:00https://docs.communityhealthtoolkit.org/design/personas/partners/national-governments/2020-06-01T11:01:54-07:00https://docs.communityhealthtoolkit.org/contribute/medic/onboarding/2023-05-03T09:56:16+00:00https://docs.communityhealthtoolkit.org/apps/features/integrations/oppia/2020-12-17T15:05:43-08:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/product-trio/2023-02-22T11:12:03+00:00https://docs.communityhealthtoolkit.org/apps/guides/data/analytics/production/2024-04-01T15:02:08+00:00https://docs.communityhealthtoolkit.org/apps/features/integrations/rapidpro/2020-08-20T16:45:11-04:00https://docs.communityhealthtoolkit.org/design/personas/regional-manager-christina/2023-02-19T20:45:44+03:00https://docs.communityhealthtoolkit.org/contribute/code/android/releasing/2022-12-13T09:17:47+13:00https://docs.communityhealthtoolkit.org/contribute/tech-radar/2024-01-25T08:20:26+00:00https://docs.communityhealthtoolkit.org/contribute/medic/onboarding/technical-resources/2024-01-17T17:16:27+02:00https://docs.communityhealthtoolkit.org/apps/concepts/care-guides/2020-09-16T20:06:56-07:00https://docs.communityhealthtoolkit.org/core/2023-11-21T01:04:00-08:00https://docs.communityhealthtoolkit.org/contribute/code-of-conduct/2023-09-27T11:58:54+03:00https://docs.communityhealthtoolkit.org/apps/features/contacts/2022-09-15T09:07:15+07:00https://docs.communityhealthtoolkit.org/apps/tutorials/contact-and-users-2/2023-03-29T07:55:19-05:00https://docs.communityhealthtoolkit.org/apps/guides/data/analytics/environment-variables/2024-04-04T08:57:05+00:00https://docs.communityhealthtoolkit.org/apps/examples/2020-09-22T16:00:38-05:00https://docs.communityhealthtoolkit.org/design/icons/2021-07-16T08:15:33-05:00https://docs.communityhealthtoolkit.org/design/personas/nurse-mary/2020-05-30T19:36:05-04:00https://docs.communityhealthtoolkit.org/design/guides/problem-statement/2022-04-19T07:42:28+03:00https://docs.communityhealthtoolkit.org/apps/guides/android/publishing/2022-12-13T09:17:47+13:00https://docs.communityhealthtoolkit.org/contribute/code/releasing/publish-docker-image/2023-05-16T10:46:37-05:00https://docs.communityhealthtoolkit.org/core/overview/transitions/2023-06-14T09:53:43+03:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/ux-research-repo/synthesizing-nuggets/2023-05-16T13:11:09-07:00https://docs.communityhealthtoolkit.org/contribute/medic/onboarding/team-meetings/2024-04-16T10:19:29+00:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/ux-research-repo/2023-02-22T11:12:03+00:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/accept_case_reports/2020-06-27T01:28:28-04:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/hierarchy/2022-06-17T14:30:45-05:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/dhis2/2020-07-09T16:39:14-07:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/forms/2022-05-03T07:56:17+05:45https://docs.communityhealthtoolkit.org/apps/reference/app-settings/header_tabs/2020-07-03T11:25:34+03:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/outbound/2024-01-22T11:08:37+03:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/patient_reports/2021-03-24T06:41:04+02:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/user-permissions/2023-08-14T19:41:47+07:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/registrations/2021-11-24T07:30:29+05:45https://docs.communityhealthtoolkit.org/apps/reference/app-settings/reminders/2020-07-14T15:02:10+12:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/replication_depth/2020-07-13T16:54:46+03:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/replications/2020-10-02T12:20:59-04:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/user-roles/2020-06-04T15:06:42-04:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/schedules/2023-10-25T18:04:48-04:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/sms/2022-11-24T11:08:37+13:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/token_login/2020-07-28T02:48:35+03:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/transitions/2023-04-03T21:22:37-04:00https://docs.communityhealthtoolkit.org/apps/reference/forms/app/2024-04-15T14:37:43+08:00https://docs.communityhealthtoolkit.org/apps/reference/app-settings/2023-08-31T09:59:32+05:45https://docs.communityhealthtoolkit.org/contribute/medic/2023-09-27T11:58:54+03:00https://docs.communityhealthtoolkit.org/contribute/code/repository-checklist/2023-05-08T14:34:53+00:00https://docs.communityhealthtoolkit.org/apps/reference/forms/collect/2021-10-05T16:38:24-04:00https://docs.communityhealthtoolkit.org/apps/reference/forms/contact/2024-01-15T13:28:55+02:00https://docs.communityhealthtoolkit.org/apps/reference/contact-page/2024-04-24T13:18:24+03:00https://docs.communityhealthtoolkit.org/contribute/medic/onboarding/daily-updates/2024-04-24T13:18:24+03:00https://docs.communityhealthtoolkit.org/design/personas/data-manager-paul/2020-05-30T19:36:05-04:00https://docs.communityhealthtoolkit.org/design/2020-06-01T11:16:07-07:00https://docs.communityhealthtoolkit.org/apps/reference/extension-libs/2023-05-08T06:38:08+12:00https://docs.communityhealthtoolkit.org/design/guides/mapping-hierarchy/2022-04-19T07:42:28+03:00https://docs.communityhealthtoolkit.org/apps/features/messaging/2020-09-21T15:56:39-07:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/ux-research-repo/publishing-insights/2023-05-16T13:11:09-07:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/quality-assistance/2023-02-22T11:12:03+00:00https://docs.communityhealthtoolkit.org/design/guides/2021-04-15T13:04:40+03:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/requirements/2023-10-06T16:32:03+02:00https://docs.communityhealthtoolkit.org/apps/tutorials/sms-forms/2021-07-16T08:15:33-05:00https://docs.communityhealthtoolkit.org/apps/reference/targets/2022-12-06T01:01:56-05:00https://docs.communityhealthtoolkit.org/apps/reference/tasks/2023-04-20T11:51:49+12:00https://docs.communityhealthtoolkit.org/core/overview/translations/2022-12-22T19:50:08+05:45https://docs.communityhealthtoolkit.org/apps/tutorials/2020-06-03T10:27:10-07:00https://docs.communityhealthtoolkit.org/apps/guides/forms/uhc-mode/2022-01-13T14:48:44-05:00https://docs.communityhealthtoolkit.org/apps/concepts/workflows/2020-12-10T15:03:59-05:00https://docs.communityhealthtoolkit.org/design/personas/app-builder/2020-05-30T19:36:05-04:00https://docs.communityhealthtoolkit.org/apps/tutorials/application-settings/2024-03-28T18:22:13+00:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/code-health/2023-04-04T10:38:58+12:00https://docs.communityhealthtoolkit.org/apps/concepts/hierarchy/2023-05-18T15:48:07-07:00https://docs.communityhealthtoolkit.org/apps/guides/2020-06-03T14:28:04-04:00https://docs.communityhealthtoolkit.org/apps/features/reports/2023-04-12T17:35:29+00:00https://docs.communityhealthtoolkit.org/apps/tutorials/sms-schedules/2021-07-16T08:15:33-05:00https://docs.communityhealthtoolkit.org/contribute/code/workflow/2024-04-17T07:37:21-05:00https://docs.communityhealthtoolkit.org/apps/tutorials/app-forms/2024-01-10T20:47:25+07:00https://docs.communityhealthtoolkit.org/apps/reference/2024-04-17T08:14:28+01:00https://docs.communityhealthtoolkit.org/contribute/code/releasing/2023-04-18T12:42:52+00:00https://docs.communityhealthtoolkit.org/apps/features/supervision/2023-06-26T07:18:05+03:00https://docs.communityhealthtoolkit.org/apps/features/tasks/2022-07-19T14:00:29-04:00https://docs.communityhealthtoolkit.org/contribute/medic/product-development-process/transparency-accountability/2024-03-29T17:47:52-04:00https://docs.communityhealthtoolkit.org/apps/concepts/users/2022-01-13T15:14:41-05:00https://docs.communityhealthtoolkit.org/contribute/2023-02-22T11:12:03+00:00https://docs.communityhealthtoolkit.org/apps/tutorials/form-properties/2021-07-16T08:15:33-05:00https://docs.communityhealthtoolkit.org/apps/concepts/interoperability/2024-01-15T13:28:55+02:00https://docs.communityhealthtoolkit.org/design/personas/partners/2020-06-01T11:16:07-07:00https://docs.communityhealthtoolkit.org/apps/features/targets/2023-12-13T07:55:15+03:00https://docs.communityhealthtoolkit.org/contribute/code/core/update-dependencies/2023-11-03T05:23:42+13:00https://docs.communityhealthtoolkit.org/apps/concepts/prerequisites/2023-05-14T21:33:28+03:00https://docs.communityhealthtoolkit.org/contribute/code/static-analysis/2024-02-09T11:50:30+01:00https://docs.communityhealthtoolkit.org/contribute/code/style-guide/2023-11-28T15:41:06-06:00https://docs.communityhealthtoolkit.org/apps/tutorials/tasks-1/2022-04-25T14:22:54+12:00https://docs.communityhealthtoolkit.org/apps/features/training/2023-04-11T06:24:09+07:00https://docs.communityhealthtoolkit.org/contribute/code/using-npm/2022-12-13T09:17:47+13:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/3.x/ec2-setup-guide/2023-03-27T11:25:13-07:00https://docs.communityhealthtoolkit.org/contribute/code/core/2022-12-13T09:17:47+13:00https://docs.communityhealthtoolkit.org/apps/guides/messaging/gateways/gateway/2021-11-08T18:53:31-03:00https://docs.communityhealthtoolkit.org/apps/guides/messaging/gateways/gateway/configuration/2022-12-13T09:17:47+13:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/data-migration/2024-01-25T11:43:17+02:00https://docs.communityhealthtoolkit.org/glossary/2023-09-06T01:29:21-07:00https://docs.communityhealthtoolkit.org/apps/features/muting/2023-03-09T15:46:54+07:00https://docs.communityhealthtoolkit.org/core/overview/roadmap/2023-05-14T14:06:36-07:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/self-hosting/2023-10-06T16:32:03+02:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/self-hosting/single-node/2024-04-25T10:28:20+02:00https://docs.communityhealthtoolkit.org/contribute/docs/style-guide/2023-10-09T09:09:53+02:00https://docs.communityhealthtoolkit.org/apps/tutorials/targets/2022-02-08T10:50:49+03:00https://docs.communityhealthtoolkit.org/apps/tutorials/contact-summary/2021-07-16T08:15:33-05:00https://docs.communityhealthtoolkit.org/apps/tutorials/death-reporting/2021-11-29T11:05:14-08:00https://docs.communityhealthtoolkit.org/apps/features/uhc-mode/2023-03-09T15:46:54+07:00https://docs.communityhealthtoolkit.org/apps/features/admin/2023-03-09T15:46:54+07:00https://docs.communityhealthtoolkit.org/contribute/code/core/automated-tests/2023-12-05T05:31:23+09:00https://docs.communityhealthtoolkit.org/apps/tutorials/condition-cards/2023-03-09T11:48:26+03:00https://docs.communityhealthtoolkit.org/apps/guides/android/branding/2024-04-23T09:23:45+05:45https://docs.communityhealthtoolkit.org/apps/tutorials/localizing-cht/2024-01-15T13:28:55+02:00https://docs.communityhealthtoolkit.org/apps/tutorials/application-graphics/2022-07-13T02:44:45+00:00https://docs.communityhealthtoolkit.org/apps/tutorials/application-tests/2023-04-12T10:00:06+00:00https://docs.communityhealthtoolkit.org/apps/guides/data/users-bulk-load/2024-01-22T12:03:58+03:00https://docs.communityhealthtoolkit.org/apps/guides/data/impact-metrics/2024-03-08T16:16:00+00:00https://docs.communityhealthtoolkit.org/apps/guides/training/onboarding/2023-03-09T15:46:54+07:00https://docs.communityhealthtoolkit.org/apps/guides/training/training-cards/2023-04-11T06:24:09+07:00https://docs.communityhealthtoolkit.org/apps/guides/training/training-cards-resources/2023-05-12T08:24:25+07:00https://docs.communityhealthtoolkit.org/apps/guides/data/training-instance/2023-03-09T15:46:54+07:00https://docs.communityhealthtoolkit.org/contribute/code/core/using-windows/2023-08-21T14:01:53+12:00https://docs.communityhealthtoolkit.org/apps/guides/data/invalid-reports/2024-03-08T16:16:00+00:00https://docs.communityhealthtoolkit.org/contribute/code/core/run-multiple-chrome-versions/2023-09-07T14:16:27-04:00https://docs.communityhealthtoolkit.org/apps/guides/data/csv-to-docs/2024-03-08T16:16:00+00:00https://docs.communityhealthtoolkit.org/apps/guides/messaging/gateways/africas-talking/2022-07-22T08:43:15+12:00https://docs.communityhealthtoolkit.org/contribute/code/android/2022-12-13T09:17:47+13:00https://docs.communityhealthtoolkit.org/apps/guides/messaging/gateways/2021-05-18T17:45:42-04:00https://docs.communityhealthtoolkit.org/apps/features/integrations/2023-03-09T15:46:54+07:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/self-hosting/multiple-nodes/2024-04-25T10:28:20+02:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/self-hosting/self-hosting-k3s-multinode/2023-12-07T07:04:43-08:00https://docs.communityhealthtoolkit.org/apps/guides/messaging/gateways/gateway/phones/2021-11-08T18:53:31-03:00https://docs.communityhealthtoolkit.org/apps/guides/messaging/gateways/rapidpro/2022-12-08T13:31:35+01:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/3.x/self-hosting/2023-04-12T17:35:29+00:00https://docs.communityhealthtoolkit.org/apps/guides/messaging/sms-states/2021-11-08T18:53:31-03:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/vertical-vs-horizontal/2023-12-21T11:56:09+03:00https://docs.communityhealthtoolkit.org/apps/guides/messaging/shortcodes/2021-05-18T17:45:42-04:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/3.x/app-developer/2023-06-02T12:58:08-07:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/app-developer/2024-02-05T17:31:34+00:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/3.x/ssl-cert-install/2022-10-31T14:34:56-07:00https://docs.communityhealthtoolkit.org/apps/guides/messaging/message-loops/2021-05-18T17:45:42-04:00https://docs.communityhealthtoolkit.org/apps/guides/messaging/gateways/gateway/troubleshooting/2023-03-10T04:36:47+05:45https://docs.communityhealthtoolkit.org/apps/guides/hosting/3.x/2023-03-27T11:25:13-07:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/2023-10-06T16:32:03+02:00https://docs.communityhealthtoolkit.org/apps/guides/privacy/privacy-policy/2022-10-10T16:14:15-07:00https://docs.communityhealthtoolkit.org/apps/guides/data/2020-06-05T14:27:01-04:00https://docs.communityhealthtoolkit.org/apps/guides/database/2024-04-18T13:46:39+01:00https://docs.communityhealthtoolkit.org/apps/guides/debugging/2022-02-16T12:15:00+13:00https://docs.communityhealthtoolkit.org/apps/guides/forms/2020-06-05T14:27:01-04:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/2023-03-27T11:25:13-07:00https://docs.communityhealthtoolkit.org/apps/guides/integrations/2022-07-05T04:16:58+03:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/monitoring/introduction/2023-05-23T09:47:40-05:00https://docs.communityhealthtoolkit.org/apps/guides/messaging/2020-06-05T14:27:01-04:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/monitoring/2023-05-03T16:27:47-07:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/3.x/offline/2023-11-27T10:41:21+02:00https://docs.communityhealthtoolkit.org/apps/guides/performance/2020-06-05T14:27:01-04:00https://docs.communityhealthtoolkit.org/apps/guides/privacy/2021-04-19T17:19:45-07:00https://docs.communityhealthtoolkit.org/apps/guides/security/2020-06-05T14:27:01-04:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/monitoring/setup/2023-09-19T08:44:27-05:00https://docs.communityhealthtoolkit.org/apps/guides/tasks/2022-01-07T17:06:14-05:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/adding-tls-certificates/2024-04-25T10:28:20+02:00https://docs.communityhealthtoolkit.org/apps/guides/training/2023-03-09T15:46:54+07:00https://docs.communityhealthtoolkit.org/apps/guides/updates/2020-06-05T14:27:01-04:00https://docs.communityhealthtoolkit.org/apps/guides/android/2022-12-13T09:17:47+13:00https://docs.communityhealthtoolkit.org/apps/guides/data/analytics/2024-03-08T16:16:00+00:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/monitoring/production/2023-05-23T09:47:40-05:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/logs/2023-06-02T12:58:08-07:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/backups/2023-10-06T16:32:03+02:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/monitoring/postgres-ingest/2023-09-06T13:24:27-07:00https://docs.communityhealthtoolkit.org/apps/guides/hosting/monitoring/integration/2023-10-06T16:32:03+02:00https://docs.communityhealthtoolkit.org/search/2022-07-27T20:41:57-05:00https://docs.communityhealthtoolkit.org/core/releases/0.4.15-and-earlier/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.10.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.10.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.10.2/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.10.3/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.11.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.11.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.11.2/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.11.3/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.12.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.12.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.12.2/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.12.3/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.12.4/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.12.5/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.13.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.13.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.13.2/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.13.3/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.13.4/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.13.5/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.13.6/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.13.7/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.14.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.14.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.14.2/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.14.3/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.15.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.16.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.16.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.17.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.18.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.18.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.6.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.6.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.6.2/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.6.3/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.7.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.7.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.7.2/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.7.3/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.8.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.8.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.8.2/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.8.3/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.8.4/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.8.5/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.9.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/2.9.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/3.0.0/2022-02-21T09:32:58-06:00https://docs.communityhealthtoolkit.org/core/releases/3.1.0/2022-02-21T09:32:58-06:00https://docs.communityhealthtoolkit.org/core/releases/3.10.0/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.10.1/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.10.2/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.10.3/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.10.4/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.10.5/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.11.0/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.11.1/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.11.2/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.11.3/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.12.0/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.12.1/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.13.0/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.14.0/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.14.1/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.14.2/2022-11-04T11:12:06-07:00https://docs.communityhealthtoolkit.org/core/releases/3.15.0/2022-05-05T09:06:44+12:00https://docs.communityhealthtoolkit.org/core/releases/3.16.0/2022-08-10T08:20:54-05:00https://docs.communityhealthtoolkit.org/core/releases/3.16.1/2022-12-02T09:34:55+02:00https://docs.communityhealthtoolkit.org/core/releases/3.17.0/2022-10-11T09:43:26+07:00https://docs.communityhealthtoolkit.org/core/releases/3.17.1/2022-12-02T09:35:08+02:00https://docs.communityhealthtoolkit.org/core/releases/3.17.2/2023-10-10T19:56:20+13:00https://docs.communityhealthtoolkit.org/core/releases/3.2.0/2022-10-31T16:02:09-04:00https://docs.communityhealthtoolkit.org/core/releases/3.2.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/3.3.0/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/3.4.0/2022-01-14T11:19:07-05:00https://docs.communityhealthtoolkit.org/core/releases/3.4.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/3.5.0/2022-01-14T11:19:07-05:00https://docs.communityhealthtoolkit.org/core/releases/3.6.0/2022-01-14T11:19:07-05:00https://docs.communityhealthtoolkit.org/core/releases/3.6.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/3.6.2/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/3.7.0/2022-08-01T16:02:39+12:00https://docs.communityhealthtoolkit.org/core/releases/3.7.1/2021-11-24T11:32:41+13:00https://docs.communityhealthtoolkit.org/core/releases/3.8.0/2022-02-21T09:32:58-06:00https://docs.communityhealthtoolkit.org/core/releases/3.8.1/2022-01-14T11:19:07-05:00https://docs.communityhealthtoolkit.org/core/releases/3.8.2/2022-01-14T11:19:07-05:00https://docs.communityhealthtoolkit.org/core/releases/3.9.0/2022-01-14T11:19:07-05:00https://docs.communityhealthtoolkit.org/core/releases/3.9.1/2022-01-14T11:19:07-05:00https://docs.communityhealthtoolkit.org/core/releases/3.9.2/2022-01-14T11:19:07-05:00https://docs.communityhealthtoolkit.org/core/releases/4.0.0/2022-12-13T11:43:27+13:00https://docs.communityhealthtoolkit.org/core/releases/4.0.1/2022-12-01T17:04:46+02:00https://docs.communityhealthtoolkit.org/core/releases/4.1.0/2022-12-13T10:21:02+01:00https://docs.communityhealthtoolkit.org/core/releases/4.1.1/2023-03-21T13:03:08+00:00https://docs.communityhealthtoolkit.org/core/releases/4.1.2/2023-06-21T07:36:02+12:00https://docs.communityhealthtoolkit.org/core/releases/4.2.0/2023-05-25T10:01:43+07:00https://docs.communityhealthtoolkit.org/core/releases/4.2.1/2023-06-10T09:20:32+03:00https://docs.communityhealthtoolkit.org/core/releases/4.2.2/2023-07-07T21:11:26+03:00https://docs.communityhealthtoolkit.org/core/releases/4.2.3/2023-09-25T14:17:56+02:00https://docs.communityhealthtoolkit.org/core/releases/4.2.4/2023-10-10T19:56:20+13:00https://docs.communityhealthtoolkit.org/core/releases/4.3.0/2023-08-18T11:58:28+03:00https://docs.communityhealthtoolkit.org/core/releases/4.3.1/2023-08-30T15:37:03+12:00https://docs.communityhealthtoolkit.org/core/releases/4.3.2/2023-10-10T19:56:20+13:00https://docs.communityhealthtoolkit.org/core/releases/4.4.0/2023-11-06T18:07:13-08:00https://docs.communityhealthtoolkit.org/core/releases/4.4.1/2023-10-10T19:56:20+13:00https://docs.communityhealthtoolkit.org/core/releases/4.4.2/2023-12-12T12:39:34+02:00https://docs.communityhealthtoolkit.org/core/releases/4.5.0/2023-11-20T09:25:50-05:00https://docs.communityhealthtoolkit.org/core/releases/4.5.1/2023-12-12T12:39:34+02:00https://docs.communityhealthtoolkit.org/core/releases/4.5.2/2024-02-09T15:11:30+07:00https://docs.communityhealthtoolkit.org/core/releases/4.6.0/2024-03-28T10:51:13-05:00https://docs.communityhealthtoolkit.org/apps/guides/forms/additional-docs/2022-06-17T14:30:45-05:00https://docs.communityhealthtoolkit.org/apps/guides/forms/app-form-sms/2023-06-27T05:11:38+05:45https://docs.communityhealthtoolkit.org/apps/guides/debugging/obtaining-logs/2023-05-16T09:10:36-05:00https://docs.communityhealthtoolkit.org/apps/reference/_partial_cht_api/2023-04-06T14:38:13-04:00https://docs.communityhealthtoolkit.org/apps/tutorials/tasks-2/2023-04-06T14:38:13-04:00https://docs.communityhealthtoolkit.org/apps/guides/database/muting_in_dashboards/2021-10-08T08:43:53+03:00https://docs.communityhealthtoolkit.org/apps/examples/contact-tracing/2020-09-23T18:04:11-04:00https://docs.communityhealthtoolkit.org/apps/guides/database/couch2pg-oom-errors/2022-10-31T14:34:56-07:00https://docs.communityhealthtoolkit.org/apps/guides/database/couchdb-authentication/2022-11-22T08:13:16+13:00https://docs.communityhealthtoolkit.org/apps/examples/phc-covid/2020-09-23T18:04:11-04:00https://docs.communityhealthtoolkit.org/apps/examples/covid-education/2021-01-11T16:12:16-05:00https://docs.communityhealthtoolkit.org/apps/examples/covid-rdt-reference-app/2021-09-27T06:46:22-07:00https://docs.communityhealthtoolkit.org/apps/guides/database/database-conflicts/2022-11-22T08:13:16+13:00https://docs.communityhealthtoolkit.org/apps/guides/integrations/dhis2-aggregate/2020-07-09T16:39:14-07:00https://docs.communityhealthtoolkit.org/apps/examples/direct-to-client/2024-03-26T10:51:24+05:45https://docs.communityhealthtoolkit.org/apps/guides/hosting/4.x/_partial_docker_directories/2023-04-06T14:38:13-04:00https://docs.communityhealthtoolkit.org/apps/examples/ebs/2020-09-23T18:04:11-04:00https://docs.communityhealthtoolkit.org/apps/guides/updates/feature-flags/2023-05-04T10:39:42-04:00https://docs.communityhealthtoolkit.org/apps/guides/forms/google-drive/2021-07-16T08:15:33-05:00https://docs.communityhealthtoolkit.org/apps/guides/forms/form-inputs/2024-04-09T09:47:10-05:00https://docs.communityhealthtoolkit.org/apps/examples/learning-care/2021-03-03T16:27:50-05:00https://docs.communityhealthtoolkit.org/apps/tutorials/_partial_docker_setup/2023-10-06T16:32:03+02:00https://docs.communityhealthtoolkit.org/apps/examples/interoperability/2023-05-31T18:07:44+03:00https://docs.communityhealthtoolkit.org/apps/guides/privacy/policy/2023-06-29T09:58:29+12:00https://docs.communityhealthtoolkit.org/design/mockups/2023-03-10T03:00:38+03:00https://docs.communityhealthtoolkit.org/apps/guides/updates/moving-contacts/2021-10-22T17:25:03-04:00https://docs.communityhealthtoolkit.org/apps/guides/forms/multimedia/2022-06-17T14:30:45-05:00https://docs.communityhealthtoolkit.org/apps/guides/integrations/openmrs/2023-04-12T17:35:29+00:00https://docs.communityhealthtoolkit.org/apps/guides/integrations/oppia/2021-07-16T08:15:33-05:00https://docs.communityhealthtoolkit.org/apps/guides/tasks/pass-data-to-form/2023-04-06T14:38:13-04:00https://docs.communityhealthtoolkit.org/apps/examples/pharmacovigilance-reference-app/2024-01-16T12:23:53+03:00https://docs.communityhealthtoolkit.org/apps/examples/pih/2024-01-17T10:19:37+03:00https://docs.communityhealthtoolkit.org/apps/guides/updates/preparing-for-4/2023-04-18T12:42:52+00:00https://docs.communityhealthtoolkit.org/apps/guides/debugging/replicating-production-data-locally/2023-08-21T14:01:53+12:00https://docs.communityhealthtoolkit.org/apps/guides/performance/purging/2023-08-17T01:04:57+03:00https://docs.communityhealthtoolkit.org/apps/guides/database/querying_apdex_telemetry/2024-03-29T11:37:33+07:00https://docs.communityhealthtoolkit.org/apps/guides/tasks/query-task-data/2021-11-29T11:05:14-08:00https://docs.communityhealthtoolkit.org/apps/guides/forms/wealth-quintiles/2020-12-16T14:58:49-05:00https://docs.communityhealthtoolkit.org/apps/guides/integrations/rapidpro/2024-03-25T13:57:13-07:00https://docs.communityhealthtoolkit.org/apps/guides/database/rdbms-from-mac/2024-01-25T09:05:05+03:00https://docs.communityhealthtoolkit.org/apps/guides/database/rdbms-from-windows/2020-08-18T10:29:41-07:00https://docs.communityhealthtoolkit.org/apps/guides/updates/collect-forms-update/2021-07-16T08:15:33-05:00https://docs.communityhealthtoolkit.org/apps/examples/training/2023-03-09T15:46:54+07:00https://docs.communityhealthtoolkit.org/apps/guides/performance/replication/2020-08-19T12:19:51-07:00https://docs.communityhealthtoolkit.org/apps/guides/forms/report-titles/2020-06-05T14:27:01-04:00https://docs.communityhealthtoolkit.org/apps/guides/security/securely-onboarding-users-at-scale/2024-02-09T13:26:28-08:00https://docs.communityhealthtoolkit.org/apps/guides/debugging/secure-sharing-of-developer-instance/2022-12-13T09:17:47+13:00https://docs.communityhealthtoolkit.org/apps/guides/security/securing-android/2022-12-13T09:17:47+13:00https://docs.communityhealthtoolkit.org/apps/guides/debugging/sharing-4x-logs/2023-10-23T14:21:45-07:00https://docs.communityhealthtoolkit.org/apps/examples/stock-monitoring/2022-08-31T13:55:06-07:00https://docs.communityhealthtoolkit.org/apps/examples/supervisor-reference-app/2023-03-18T15:29:21+03:00https://docs.communityhealthtoolkit.org/apps/guides/tasks/task-schema-parameters/2021-11-29T11:05:14-08:00https://docs.communityhealthtoolkit.org/apps/guides/performance/telemetry/2024-03-18T22:18:10+07:00https://docs.communityhealthtoolkit.org/apps/reference/_partial_utils/2023-04-06T14:38:13-04:00https://docs.communityhealthtoolkit.org/apps/guides/forms/versioning/2022-08-05T10:25:51+12:00
\ No newline at end of file