mirror of
https://github.com/DIGI-UW/HaitiHealthBox.git
synced 2026-10-27 09:56:08 +00:00
Compare commits
11
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4f8cfe86c9 | ||
|
|
fb91d5dd90 | ||
|
|
7def1d9dda | ||
|
|
5b392ded8a | ||
|
|
e8fdec42ff | ||
|
|
650ce61800 | ||
|
|
401338f63c | ||
|
|
8740a8590d | ||
|
|
8f61cc7544 | ||
|
|
567d61448e | ||
|
|
c29df81fe8 |
No files matched your search
@@ -0,0 +1,34 @@
|
||||
ISANTEPLUS_VERSION=v2.3.7
|
||||
ISANTEPLUS_DB_VERSION=v2.2.1
|
||||
|
||||
# Global
|
||||
TZ=America/Los_Angeles
|
||||
RESTART=unless-stopped
|
||||
# COMPOSE_PROJECT_NAME="hie-botswana"
|
||||
ROOT_URL=uwdigi.org
|
||||
|
||||
# Traefik
|
||||
VERSION=latest
|
||||
LOG=DEBUG
|
||||
|
||||
# ACME DNS-01 challenge
|
||||
PROVIDER=route53
|
||||
RESOLVER=1.1.1.1:53,8.8.8.8:53
|
||||
EMAIL=pmanko@uw.edu
|
||||
|
||||
# ISANTEPLUS
|
||||
ADMIN_PASSWORD=Admin123
|
||||
|
||||
#ISANTEPLUS_DB
|
||||
DB_SERVER_NAME=isanteplus-mysql
|
||||
DB_HOST_NAME=isanteplus-mysql
|
||||
DB_PORT=3306
|
||||
DB_ROOT_USER=root
|
||||
DB_ROOT_PASSWORD=debezium
|
||||
DB_USER=mysqluser
|
||||
DB_PASSWORD=mysqlpw
|
||||
DB_NAME=openmrs
|
||||
DB_BINLOG_SERVER_ID=223344
|
||||
DB_BINLOG_EXPIRE_DAYS=1
|
||||
|
||||
#
|
||||
@@ -0,0 +1,61 @@
|
||||
name: CI
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
release:
|
||||
types: [published]
|
||||
workflow_dispatch:
|
||||
env:
|
||||
IPLUS_DB_PW: mysqlpw
|
||||
jobs:
|
||||
CI:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v1
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v1
|
||||
|
||||
- name: Pull containers
|
||||
run: docker-compose pull
|
||||
|
||||
- name: Cache containers
|
||||
uses: satackey/action-docker-layer-caching@v0.0.11
|
||||
continue-on-error: true
|
||||
|
||||
- name: Start all containers
|
||||
run: docker-compose up -d
|
||||
|
||||
- name: Sleep for 120 seconds
|
||||
run: sleep 120
|
||||
shell: bash
|
||||
|
||||
- name: Display docker logs for openhim config
|
||||
run: docker-compose logs openhim-config
|
||||
|
||||
- name: Show docker logs for isanteplus
|
||||
run: docker logs isanteplus
|
||||
|
||||
- name: Wait For OpenMRS
|
||||
run: docker-compose -f test.docker-compose.yml up --exit-code-from wait wait
|
||||
|
||||
- name: Restart streaming pipeline
|
||||
run: docker-compose up -d --force-recreate streaming-pipeline
|
||||
|
||||
- name: Sleep for 30 seconds
|
||||
run: sleep 30
|
||||
shell: bash
|
||||
|
||||
- name: Run Basic API Tests (https://www.postman.com/itechuw/workspace/haiti-sedish/collection/1525496-192e3c9f-caea-4056-8077-b67af442f01c)
|
||||
env:
|
||||
POSTMAN_COLLECTION: https://www.getpostman.com/collections/22647ce67595a103f9c1
|
||||
run: docker-compose -f test.docker-compose.yml up --exit-code-from newman newman
|
||||
|
||||
- name: Run iSantePlus QA Framework (https://github.com/IsantePlus/isanteplus-qaframework)
|
||||
run: docker-compose -f test.docker-compose.yml up --exit-code-from qa qa
|
||||
continue-on-error: false
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "ci",
|
||||
"values": [
|
||||
{
|
||||
"key": "isanteplus-url",
|
||||
"value": "http://isanteplus:8080",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"_postman_variable_scope": "environment"
|
||||
}
|
||||
@@ -1,2 +1,48 @@
|
||||
# HaitiHealthBox
|
||||
An all-inclusive health information system setup for health facilities in Haiti
|
||||
|
||||
# Setup Instructions
|
||||
|
||||
## Step One: Install Docker
|
||||
See https://docs.docker.com/engine/install/
|
||||
|
||||
Test to make sure both of these commands work:
|
||||
```sh
|
||||
docker -v
|
||||
docker compose version
|
||||
```
|
||||
|
||||
**Note: If your docker version does not support the `docker compose` syntax,
|
||||
install `docker-compose` using the instructions here: https://docs.docker.com/compose/install/**
|
||||
|
||||
|
||||
## Step Two: Get HaitiHealthBox from GitHub
|
||||
|
||||
Run the following command:
|
||||
```sh
|
||||
git clone https://github.com/I-TECH-UW/HaitiHealthBox.git
|
||||
```
|
||||
|
||||
If you want to use a specific version from the [version list](https://github.com/I-TECH-UW/HaitiHealthBox/releases), you can check out the corresponding tag. For example, to use version `0.0.0-alpha`, run:
|
||||
```sh
|
||||
git checkout v0.0.0-alpha
|
||||
```
|
||||
|
||||
Otherwise, you can use the latest `main` branch that is the default.
|
||||
|
||||
## Step Three: Set some configurations
|
||||
Set some temporary variables to store your desired iSantePlus Database and iSantePlus admin passwords:
|
||||
|
||||
```sh
|
||||
export IPLUS_ADMIN_PW=<your-password>
|
||||
export IPLUS_DB_PW=<your-password>
|
||||
```
|
||||
## Step Four: Boot up Docker Enviornment
|
||||
Navigate to the `HaitiHealthBox` directory on your machine and run the following command:
|
||||
```sh
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
## Step Five: Register instance in Sedish
|
||||
|
||||
## Step Six: test SHR pipe
|
||||
+247
-31
@@ -5,39 +5,91 @@ services:
|
||||
# reverse proxy
|
||||
###
|
||||
traefik:
|
||||
image: traefik:v2.6.1
|
||||
image: traefik:${VERSION}
|
||||
container_name: traefik
|
||||
restart: ${RESTART}
|
||||
ports:
|
||||
- '80:80'
|
||||
- '443:443'
|
||||
- '8080:8080'
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
volumes:
|
||||
- ./certs/:/etc/certs/
|
||||
- ./volume/networking/certs.yml:/etc/traefik/dynamic_conf/certs.yml
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- ./configs/conf.yaml:/conf/conf.yaml
|
||||
- ./configs/traefik.yaml:/etc/traefik/traefik.yaml
|
||||
|
||||
- certs:/etc/certs
|
||||
command:
|
||||
- --api.insecure=false
|
||||
- --api.dashboard=true
|
||||
- --providers.docker=true
|
||||
- --providers.docker.exposedbydefault=false
|
||||
- --providers.file.watch=true
|
||||
- --providers.file.directory=/etc/traefik/dynamic_conf
|
||||
- --log.level=${LOG}
|
||||
- --entrypoints.web.address=:80
|
||||
- --entrypoints.web-secure.address=:443
|
||||
- --entrypoints.web.http.redirections.entrypoint.to=web-secure
|
||||
- --entrypoints.web.http.redirections.entrypoint.scheme=https
|
||||
- --serversTransport.insecureSkipVerify=true
|
||||
|
||||
labels:
|
||||
- 'traefik.enable=true'
|
||||
- 'traefik.docker.network=haitihealthbox_local_facility'
|
||||
- "traefik.http.routers.api.rule=Host(`traefik.${ROOT_URL}`)"
|
||||
- "traefik.http.routers.api.service=api@internal"
|
||||
- 'traefik.http.routers.api.tls=true'
|
||||
- 'traefik.http.routers.api.entrypoints=web-secure'
|
||||
networks:
|
||||
- local_facility
|
||||
environment:
|
||||
- TZ
|
||||
|
||||
###
|
||||
# Certs
|
||||
###
|
||||
certbot:
|
||||
image: ghcr.io/i-tech-uw/certbot-route53-cron:pr-2
|
||||
container_name: certbot
|
||||
environment:
|
||||
- AWS_ACCESS_KEY_ID
|
||||
- AWS_SECRET_ACCESS_KEY
|
||||
- ROOT_URL=${ROOT_URL-localhost}
|
||||
- EMAIL=${EMAIL-example@email.org}
|
||||
volumes:
|
||||
- certs:/etc/letsencrypt/
|
||||
- letsencrypt:/var/lib/letsencrypt
|
||||
networks:
|
||||
- local_facility
|
||||
|
||||
###
|
||||
# iSantePlus Server
|
||||
###
|
||||
isanteplus:
|
||||
container_name: isanteplus
|
||||
hostname: isanteplus
|
||||
image: ghcr.io/isanteplus/docker-isanteplus-server:v2.3.0
|
||||
image: ghcr.io/isanteplus/docker-isanteplus-server:${ISANTEPLUS_VERSION-latest}
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- ./isanteplus.env
|
||||
environment:
|
||||
- OMRS_CONFIG_CREATE_TABLES=false
|
||||
- OMRS_CONFIG_ADD_DEMO_DATA=false
|
||||
- OMRS_CONFIG_CONNECTION_URL=jdbc:mysql://${DB_HOST_NAME-isanteplus-mysql}:${DB_PORT-3306}/openmrs?autoReconnect=true
|
||||
- OMRS_CONFIG_HAS_CURRENT_OPENMRS_DATABASE=true
|
||||
- OMRS_JAVA_SERVER_OPTS="-Dfile.encoding=UTF-8 -server -Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -Djava.awt.headlesslib=true"
|
||||
- OMRS_CONFIG_CONNECTION_USERNAME=${DB_USER-mysqluser}
|
||||
- OMRS_CONFIG_CONNECTION_PASSWORD=${DB_PASSWORD-mysqlpw}
|
||||
- OMRS_CONFIG_CONNECTION_SERVER=isanteplus-mysql
|
||||
- OMRS_DEV_DEBUG_PORT=1044
|
||||
volumes:
|
||||
- /openmrs/data
|
||||
- ./custom_modules:/custom_modules
|
||||
- ./dist:/openmrs/data/frontend
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "10m"
|
||||
ports:
|
||||
- 8080:8080
|
||||
networks:
|
||||
- local_facility
|
||||
|
||||
isanteplus-mysql:
|
||||
image: ghcr.io/isanteplus/docker-isanteplus-db:v2.2.1
|
||||
image: ghcr.io/isanteplus/docker-isanteplus-db:${ISANTEPLUS_DB_VERSION-latest}
|
||||
command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci --sql_mode=""
|
||||
restart: unless-stopped
|
||||
container_name: isanteplus-mysql
|
||||
@@ -45,17 +97,40 @@ services:
|
||||
healthcheck:
|
||||
test: "exit 0"
|
||||
environment:
|
||||
- MYSQL_DATABASE=openmrs
|
||||
- MYSQL_ROOT_PASSWORD=debezium
|
||||
- MYSQL_USER=mysqluser
|
||||
- MYSQL_PASSWORD=mysqlpw
|
||||
- MYSQL_DATABASE=${DB_NAME-openmrs}
|
||||
- MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD-debezium}
|
||||
- MYSQL_USER=${DB_USER-mysqluser}
|
||||
- MYSQL_PASSWORD=${DB_PASSWORD-mysqlpw}
|
||||
- MYSQL_ROOT_HOST=% # Allow docker containers to connect to mysql
|
||||
volumes:
|
||||
- ./mysql.cnf:/etc/mysql/conf.d/custom.cnf # mysql config preconfigured to allow binlog/debezium
|
||||
- ./volume/database/isanteplus/mysql.cnf:/etc/mysql/conf.d/custom.cnf # mysql config preconfigured to allow binlog/debezium
|
||||
- /var/lib/mysql
|
||||
ports:
|
||||
- "3306:3306"
|
||||
|
||||
networks:
|
||||
- local_facility
|
||||
|
||||
streaming-pipeline:
|
||||
image: ghcr.io/i-tech-uw/openmrs-fhir-analytics/streaming-binlog:latest
|
||||
container_name: streaming-pipeline
|
||||
healthcheck:
|
||||
test: "exit 0"
|
||||
volumes:
|
||||
- ./configs/streaming-pipeline/config.json:/deployments/config.json
|
||||
# data is the directory which you want to persist the generated parquet files
|
||||
- ./tmp:/tmp
|
||||
environment:
|
||||
- OPENMRS_URL=http://isanteplus:8080/openmrs
|
||||
- OPENMRS_USERNAME=admin
|
||||
- OPENMRS_PASSWORD=${IPLUS_ADMIN_PW-Admin123}
|
||||
- SINK_URL=https://openhim.sedish-haiti.org/SHR/fhir
|
||||
- SINK_USERNAME=${OPENHIM_STREAMING_CLIENT-streaming}
|
||||
- SINK_PASSWORD=${OPENHIM_STREAMING_PW-streaming}
|
||||
- JDBC_FETCH_SIZE=10000
|
||||
- JDBC_MAX_POOL_SIZE=50
|
||||
- JDBC_INITIAL_POOL_SIZE=10
|
||||
- JDBC_DRIVER_CLASS=com.mysql.cj.jdbc.Driver
|
||||
# the 2 variable below should be same as volume mappings above
|
||||
- PARQUET_PATH=/tmp
|
||||
- FHIR_DEBEZIUM_CONFIG_PATH=/deployments/config.json
|
||||
###
|
||||
# OpenHIM
|
||||
###
|
||||
@@ -73,10 +148,47 @@ services:
|
||||
interval: 20s
|
||||
timeout: 20s
|
||||
retries: 2
|
||||
networks:
|
||||
- hie
|
||||
volumes:
|
||||
- ./configs/openhim/healthcheck.js:/healthcheck.js
|
||||
- ./volume/openhim/healthcheck.js:/healthcheck.js
|
||||
- ./volume/openhim/config.json:/app/config/default.json
|
||||
- certs:/etc/certs
|
||||
networks:
|
||||
- local_facility
|
||||
ports:
|
||||
- 8090:8080
|
||||
- 5000:5000
|
||||
- 5001:5001
|
||||
labels:
|
||||
- 'traefik.enable=true'
|
||||
- 'traefik.docker.network=haitihealthbox_local_facility'
|
||||
|
||||
- 'traefik.http.services.openhim-api.loadbalancer.server.port=8080'
|
||||
- 'traefik.http.services.openhim-api.loadbalancer.server.scheme=https'
|
||||
- 'traefik.http.routers.openhim-api.service=openhim-api'
|
||||
- 'traefik.http.routers.openhim-api.tls=true'
|
||||
- 'traefik.http.routers.openhim-api.entrypoints=web-secure'
|
||||
- 'traefik.http.routers.openhim-api.rule=Host(`openhim-api.${ROOT_URL}`)'
|
||||
|
||||
- 'traefik.http.services.openhim-ssl.loadbalancer.server.port=5000'
|
||||
- 'traefik.http.services.openhim-ssl.loadbalancer.server.scheme=https'
|
||||
- 'traefik.http.routers.openhim-ssl.service=openhim-ssl'
|
||||
- 'traefik.http.routers.openhim-ssl.tls=true'
|
||||
- 'traefik.http.routers.openhim-ssl.entrypoints=web-secure'
|
||||
- 'traefik.http.routers.openhim-ssl.rule=Host(`${ROOT_URL}`) && PathPrefix(`/openhim-ssl`)'
|
||||
- 'traefik.http.routers.openhim-ssl.middlewares=openhim-ssl'
|
||||
- 'traefik.http.middlewares.openhim-ssl.stripprefix.prefixes=/openhim-ssl'
|
||||
- 'traefik.http.middlewares.openhim-ssl.stripprefix.forceSlash=false'
|
||||
|
||||
- 'traefik.http.services.openhim-http.loadbalancer.server.port=5001'
|
||||
- 'traefik.http.services.openhim-http.loadbalancer.server.scheme=http'
|
||||
- 'traefik.http.routers.openhim-http.service=openhim-http'
|
||||
- 'traefik.http.routers.openhim-http.tls=false'
|
||||
- 'traefik.http.routers.openhim-http.entrypoints=web'
|
||||
- 'traefik.http.routers.openhim-http.rule=Host(`${ROOT_URL}`) && PathPrefix(`/openhim-http`)'
|
||||
- 'traefik.http.routers.openhim-http.middlewares=openhim-http'
|
||||
- 'traefik.http.middlewares.openhim-http.stripprefix.prefixes=/openhim-http'
|
||||
- 'traefik.http.middlewares.openhim-http.stripprefix.forceSlash=false'
|
||||
|
||||
|
||||
openhim-console:
|
||||
container_name: openhim-console
|
||||
@@ -84,24 +196,30 @@ services:
|
||||
image: jembi/openhim-console:latest
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./configs/openhim-console/default.json:/usr/share/nginx/html/config/default.json
|
||||
- ./volume/openhim/console.json:/usr/share/nginx/html/config/default.json
|
||||
healthcheck:
|
||||
test: "curl -sS http://openhim-console || exit 1"
|
||||
interval: 10s
|
||||
timeout: 60s
|
||||
retries: 3
|
||||
ports:
|
||||
- 3000:80
|
||||
networks:
|
||||
- hie
|
||||
|
||||
- local_facility
|
||||
labels:
|
||||
- 'traefik.enable=true'
|
||||
- 'traefik.docker.network=haitihealthbox_local_facility'
|
||||
- 'traefik.http.routers.openhim-console.tls=true'
|
||||
- 'traefik.http.routers.openhim-console.entrypoints=web-secure'
|
||||
- 'traefik.http.routers.openhim-console.rule=Host(`${ROOT_URL}`)'
|
||||
# Loads Default OpenHIM Config
|
||||
openhim-config:
|
||||
container_name: openhim-config
|
||||
image: ghcr.io/i-tech-uw/openhim-config:v0.0.0
|
||||
volumes:
|
||||
- ./configs/openhim/test-openhim-config.json:/app/test-openhim-config.json
|
||||
- ./volume/openhim/initial-config.json:/app/test-openhim-config.json
|
||||
networks:
|
||||
- hie
|
||||
|
||||
- local_facility
|
||||
mongo-db:
|
||||
container_name: mongo-db
|
||||
image: mongo:3.4
|
||||
@@ -109,4 +227,102 @@ services:
|
||||
- /data/db
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- hie
|
||||
- local_facility
|
||||
####
|
||||
# OpenELIS
|
||||
####
|
||||
certs:
|
||||
container_name: oe-certs
|
||||
image: ghcr.io/i-tech-uw/certgen:main
|
||||
restart: always
|
||||
environment:
|
||||
- KEYSTORE_PW="kspass"
|
||||
- TRUSTSTORE_PW="tspass"
|
||||
volumes:
|
||||
- cert-volume:/etc/openelis-global
|
||||
networks:
|
||||
- local_facility
|
||||
database:
|
||||
container_name: openelisglobal-database
|
||||
image: postgres:9.5
|
||||
ports:
|
||||
- "15432:5432"
|
||||
restart: always
|
||||
env_file:
|
||||
- ./volume/database/database.env
|
||||
volumes:
|
||||
# preserves the database between containers
|
||||
- db-data:/var/lib/postgresql/data
|
||||
# files here will run on install
|
||||
- ./volume/database/dbInit:/docker-entrypoint-initdb.d
|
||||
networks:
|
||||
- local_facility
|
||||
healthcheck:
|
||||
test: ["CMD", "pg_isready", "-q", "-d", "clinlims", "-U", "clinlims"]
|
||||
timeout: 45s
|
||||
interval: 10s
|
||||
retries: 10
|
||||
|
||||
oe.openelis.org:
|
||||
container_name: openelisglobal-webapp
|
||||
image: ghcr.io/i-tech-uw/openelis-global-2@sha256:abc0916a3c61176571eb2e771cfeb399d0f29c9e02857879d0e12471d3ebf8f3
|
||||
depends_on:
|
||||
- database
|
||||
ports:
|
||||
#- "8095:8080"
|
||||
- "8443:8443"
|
||||
restart: always
|
||||
environment:
|
||||
- TZ=Africa/Nairobi
|
||||
# context.xml doesn't seem to be able to pick up environment variables directly, so we are passing them in as CATALINA_OPTS
|
||||
- CATALINA_OPTS= -Ddatasource.url=jdbc:postgresql://database:5432/clinlims -Ddatasource.username=clinlims -Ddatasource.password=clinlims
|
||||
volumes:
|
||||
- cert-volume:/etc/openelis-global
|
||||
# - openelis-plugins-data:/var/lib/openelis-global/plugins
|
||||
- ./volume/tomcat/oe_server.xml:/usr/local/tomcat/conf/server.xml
|
||||
secrets:
|
||||
- source: datasource.password
|
||||
- source: common.properties
|
||||
networks:
|
||||
- local_facility
|
||||
|
||||
fhir.openelis.org:
|
||||
container_name: external-fhir-api
|
||||
image: hapiproject/hapi:v5.5.1
|
||||
# ports:
|
||||
# - "8081:8080"
|
||||
restart: always
|
||||
environment:
|
||||
- hapi.fhir.auto_create_placeholder_reference_targets=true
|
||||
- hapi.fhir.allow_placeholder_references=true
|
||||
- hapi.fhir.allow_external_references=true
|
||||
networks:
|
||||
- local_facility
|
||||
|
||||
fhir.openelis.org.remote:
|
||||
container_name: openelis-remote-source
|
||||
image: hapiproject/hapi:v5.5.1
|
||||
ports:
|
||||
- "8081:8080"
|
||||
restart: always
|
||||
environment:
|
||||
- hapi.fhir.auto_create_placeholder_reference_targets=true
|
||||
- hapi.fhir.allow_placeholder_references=true
|
||||
- hapi.fhir.allow_external_references=true
|
||||
networks:
|
||||
- local_facility
|
||||
|
||||
secrets:
|
||||
datasource.password:
|
||||
file: ./volume/properties/datasource.password
|
||||
common.properties:
|
||||
file: ./volume/properties/common.properties
|
||||
|
||||
volumes:
|
||||
db-data:
|
||||
cert-volume:
|
||||
certs:
|
||||
letsencrypt:
|
||||
|
||||
networks:
|
||||
local_facility:
|
||||
@@ -0,0 +1,48 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
# QA Framework
|
||||
qa:
|
||||
image: ghcr.io/isanteplus/isanteplus-qaframework:latest
|
||||
container_name: qa
|
||||
environment:
|
||||
- ISANTEPLUS_URL=http://isanteplus:8080/openmrs
|
||||
- ISANTEPLUS_USER=admin
|
||||
- ISANTEPLUS_PW=Admin123
|
||||
- REMOTE_URL_CHROME=http://chrome:4444/wd/hub
|
||||
- TEST_OPTIONS="-Dcucumber.filter.tags=@login"
|
||||
networks:
|
||||
- local_facility
|
||||
|
||||
chrome:
|
||||
image: selenium/standalone-chrome:latest
|
||||
hostname: chrome
|
||||
container_name: chrome
|
||||
ports:
|
||||
- "4444:4444"
|
||||
- "7900:7900"
|
||||
networks:
|
||||
- local_facility
|
||||
# Newman Tests
|
||||
newman:
|
||||
image: postman/newman
|
||||
volumes:
|
||||
- ./.postman:/.postman
|
||||
entrypoint: newman run $POSTMAN_COLLECTION -e /.postman/env.json --insecure --timeout-request 20000 --delay-request 1000
|
||||
networks:
|
||||
- local_facility
|
||||
|
||||
wait:
|
||||
container_name: wait
|
||||
image: ghcr.io/i-tech-uw/wait-for-openmrs-action:v0.4.0
|
||||
command:
|
||||
- "http://isanteplus:8080/openmrs"
|
||||
- "20"
|
||||
- "10000"
|
||||
networks:
|
||||
- local_facility
|
||||
|
||||
networks:
|
||||
local_facility:
|
||||
external: true
|
||||
name: haitihealthbox_local_facility
|
||||
@@ -0,0 +1,4 @@
|
||||
POSTGRES_USER=postgres
|
||||
POSTGRES_PASSWORD=admin
|
||||
POSTGRES_DB=clinlims
|
||||
POSTGRES_INITDB_ARGS="--auth-host=md5"
|
||||
@@ -0,0 +1,4 @@
|
||||
|
||||
CREATE USER clinlims PASSWORD 'clinlims';
|
||||
CREATE USER admin SUPERUSER PASSWORD 'cPATaahXJlSj';
|
||||
ALTER DATABASE clinlims OWNER TO clinlims;
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,6 @@
|
||||
DELETE from clinlims.site_information where name = 'siteNumber';
|
||||
INSERT INTO clinlims.site_information( id, lastupdated, "name", description, "value") VALUES ( nextval('clinlims.site_information_seq'), now(), 'siteNumber', 'The site number of the this lab', 'DEV01' );
|
||||
|
||||
DELETE from clinlims.site_information where name = 'Accession number prefix';
|
||||
INSERT INTO clinlims.site_information( id, lastupdated, "name", description, "value") VALUES ( nextval('clinlims.site_information_seq'), now(), 'Accession number prefix', 'Prefix for SITEYEARNUM format. Can not be changed if there are samples', 'DEV01' );
|
||||
|
||||
@@ -0,0 +1,246 @@
|
||||
{
|
||||
"debeziumConfigurations": {
|
||||
"databaseServerName" : "$DB_SERVER_NAME",
|
||||
"databaseHostName" : "$DB_HOST_NAME",
|
||||
"databaseServerId" : "$DB_SERVER_ID",
|
||||
"databasePort" : "$DB_PORT",
|
||||
"databaseUser" : "$DB_USER",
|
||||
"databasePassword" : "$DB_PASSWORD",
|
||||
"databaseName" : "$DB_NAME",
|
||||
"databaseOffsetStorage" : "data/offset.dat",
|
||||
"databaseHistory" : "data/dbhistory.dat",
|
||||
"snapshotMode" : "schema_only"
|
||||
},
|
||||
"eventConfigurations": {
|
||||
"location": {
|
||||
"enabled": "false",
|
||||
"title": "Location",
|
||||
"parentTable": "location",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/location/{uuid}?v=full",
|
||||
"fhir": "/Location/{uuid}"
|
||||
}
|
||||
},
|
||||
"concept": {
|
||||
"enabled": "false",
|
||||
"title": "Concept",
|
||||
"parentTable": "concept",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/concept/{uuid}?v=full"
|
||||
}
|
||||
},
|
||||
"cohort": {
|
||||
"enabled": "true",
|
||||
"title": "Cohort",
|
||||
"parentTable": "cohort",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/cohort/{uuid}?v=full",
|
||||
"fhir": "/Group/{uuid}"
|
||||
}
|
||||
},
|
||||
"visittype": {
|
||||
"enabled": "false",
|
||||
"title": "Visit Type",
|
||||
"parentTable": "visittype",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/visittype/{uuid}?v=full"
|
||||
}
|
||||
},
|
||||
"person_address": {
|
||||
"enabled": "false",
|
||||
"title": "PersonAddress",
|
||||
"parentTable": "person_address",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/person/{parent-uuid}/address/{uuid}?v=full"
|
||||
}
|
||||
},
|
||||
"person_name": {
|
||||
"enabled": "false",
|
||||
"title": "PersonName",
|
||||
"parentTable": "person_name",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/person/{parent-uuid}/name/{uuid}?v=full"
|
||||
}
|
||||
},
|
||||
"patient_identifier": {
|
||||
"enabled": "false",
|
||||
"title": "PatientIdentifier",
|
||||
"parentTable": "patient_identifier",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/patient/{parent-uuid}/identifier/{uuid}?v=full"
|
||||
}
|
||||
},
|
||||
"person_attribute": {
|
||||
"enabled": "false",
|
||||
"title": "PersonAttribute",
|
||||
"parentTable": "person_attribute",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/person/{parent-uuid}/attribute/{uuid}?v=full"
|
||||
}
|
||||
},
|
||||
"person": {
|
||||
"enabled": "true",
|
||||
"title": "Person",
|
||||
"parentTable": "person",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/person/{uuid}?v=full",
|
||||
"fhir": "/Person/{uuid}"
|
||||
}
|
||||
},
|
||||
"provider": {
|
||||
"enabled": "true",
|
||||
"title": "Provider",
|
||||
"parentTable": "provider",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/provider/{uuid}?v=full",
|
||||
"fhir": "/Provider/{uuid}"
|
||||
}
|
||||
},
|
||||
"user": {
|
||||
"enabled": "false",
|
||||
"title": "User",
|
||||
"parentTable": "user",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/user/{uuid}?v=full"
|
||||
}
|
||||
},
|
||||
"patient": {
|
||||
"enabled": "true",
|
||||
"title": "Patient",
|
||||
"parentTable": "person",
|
||||
"parentForeignKey": "person_id",
|
||||
"childPrimaryKey":"patient_id",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/patient/{uuid}?v=full",
|
||||
"fhir": "/Patient/{uuid}"
|
||||
}
|
||||
},
|
||||
"relationship": {
|
||||
"enabled": "true",
|
||||
"title": "Relationship",
|
||||
"parentTable": "relationship",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/relationship/{uuid}?v=full",
|
||||
"fhir": "/Relationship/{uuid}"
|
||||
}
|
||||
},
|
||||
"drug": {
|
||||
"enabled": "true",
|
||||
"title": "Drug",
|
||||
"parentTable": "drug",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/drug/{uuid}?v=full",
|
||||
"fhir": "/Drug/{uuid}"
|
||||
}
|
||||
},
|
||||
"allergy": {
|
||||
"enabled": "true",
|
||||
"title": "Allergy",
|
||||
"parentTable": "allergy",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/allergy/{uuid}?v=full",
|
||||
"fhir": "/AllergyIntolerance/{uuid}"
|
||||
}
|
||||
},
|
||||
"form":{
|
||||
"enabled": "true",
|
||||
"title": "Form",
|
||||
"parentTable": "form",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/form/{uuid}?v=full"
|
||||
}
|
||||
},
|
||||
"order": {
|
||||
"enabled": "true",
|
||||
"title": "Order",
|
||||
"parentTable": "order",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/order/{uuid}?v=full",
|
||||
"fhir": "/Order/{uuid}"
|
||||
}
|
||||
},
|
||||
"drug_order":{
|
||||
"enabled": "true",
|
||||
"title": "DrugOrder",
|
||||
"parentTable": "drug_order",
|
||||
"parentForeignKey": "order_id",
|
||||
"childPrimaryKey":"order_id",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/drug_order/{uuid}?v=full",
|
||||
"fhir": "/MedicationRequest/{uuid}"
|
||||
}
|
||||
},
|
||||
"test_order": {
|
||||
"enabled": "true",
|
||||
"title": "TestOrder",
|
||||
"parentTable": "test_order",
|
||||
"parentForeignKey": "order_id",
|
||||
"childPrimaryKey":"order_id",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/test_order/{uuid}?v=full",
|
||||
"fhir": "/ProcedureRequest/{uuid}"
|
||||
}
|
||||
},
|
||||
"obs": {
|
||||
"enabled": "true",
|
||||
"title": "Observation",
|
||||
"parentTable": "obs",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/obs/{uuid}?v=full",
|
||||
"fhir": "/Observation/{uuid}"
|
||||
}
|
||||
},
|
||||
"encounter":{
|
||||
"enabled": "true",
|
||||
"title": "Encounter",
|
||||
"parentTable": "encounter",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/encounter/{uuid}?v=full",
|
||||
"fhir": "/Encounter/{uuid}"
|
||||
}
|
||||
},
|
||||
"visit":{
|
||||
"enabled": "false",
|
||||
"title": "Visit",
|
||||
"parentTable": "visit",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/visit/{uuid}?v=full",
|
||||
"fhir": "/Encounter/{uuid}"
|
||||
}
|
||||
},
|
||||
"program":{
|
||||
"enabled": "true",
|
||||
"title": "Program",
|
||||
"parentTable": "program",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/program/{uuid}?v=full",
|
||||
"fhir": "/Program/{uuid}"
|
||||
}
|
||||
},
|
||||
"programenrollment":{
|
||||
"enabled": "true",
|
||||
"title": "Program Enrollment",
|
||||
"parentTable": "programenrollment",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/programenrollment/{uuid}?v=full",
|
||||
"fhir": "/Programenrollment/{uuid}"
|
||||
}
|
||||
},
|
||||
"privilege":{
|
||||
"enabled": "true",
|
||||
"title": "Privilege",
|
||||
"parentTable": "privilege",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/v1/privilege/{uuid}?v=full"
|
||||
}
|
||||
},
|
||||
"audit_message":{
|
||||
"enabled": "true",
|
||||
"title": "AuditMessage",
|
||||
"parentTable": "audit_message",
|
||||
"linkTemplates": {
|
||||
"rest": "/ws/rest/sync2/messages/{uuid}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
# Copyright 2020 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# This is a pre-configuration for Docker MySQL to allow BinLog and replication necessary configurations for Debezium to work
|
||||
# see ./openmrs-compose.yaml
|
||||
# REF: https://github.com/debezium/debezium/blob/master/debezium-connector-mysql/src/test/docker/server-gtids/my.cnf
|
||||
|
||||
# For advice on how to change settings please see
|
||||
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
|
||||
|
||||
[mysqld]
|
||||
#
|
||||
# Remove leading # and set to the amount of RAM for the most important data
|
||||
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
|
||||
# innodb_buffer_pool_size = 128M
|
||||
#
|
||||
# Remove leading # to turn on a very important data integrity option: logging
|
||||
# changes to the binary log between backups.
|
||||
# log_bin
|
||||
#
|
||||
# Remove leading # to set options mainly useful for reporting servers.
|
||||
# The server defaults are faster for transactions and fast SELECTs.
|
||||
# Adjust sizes as needed, experiment to find the optimal values.
|
||||
# join_buffer_size = 128M
|
||||
# sort_buffer_size = 2M
|
||||
# read_rnd_buffer_size = 2M
|
||||
skip-host-cache
|
||||
skip-name-resolve
|
||||
#datadir=/var/lib/mysql
|
||||
#socket=/var/lib/mysql/mysql.sock
|
||||
#secure-file-priv=/var/lib/mysql-files
|
||||
user=mysql
|
||||
|
||||
# Disabling symbolic-links is recommended to prevent assorted security risks
|
||||
symbolic-links=0
|
||||
|
||||
#log-error=/var/log/mysqld.log
|
||||
#pid-file=/var/run/mysqld/mysqld.pid
|
||||
|
||||
# ----------------------------------------------
|
||||
# Enable the binlog for replication & CDC
|
||||
# ----------------------------------------------
|
||||
|
||||
# Enable binary replication log and set the prefix, expiration, and log format.
|
||||
# The prefix is arbitrary, expiration can be short for integration tests but would
|
||||
# be longer on a production system. Row-level info is required for ingest to work.
|
||||
# Server ID is required, but this will vary on production systems
|
||||
server-id = $DB_BINLOG_SERVER_ID
|
||||
log_bin = mysql-bin
|
||||
expire_logs_days = $DB_BINLOG_EXPIRE_DAYS
|
||||
binlog_format = row
|
||||
@@ -0,0 +1,11 @@
|
||||
tls:
|
||||
certificates:
|
||||
- certFile: /etc/certs/live/default/fullchain.pem
|
||||
keyFile: /etc/certs/live/default/privkey.pem
|
||||
stores:
|
||||
- default
|
||||
stores:
|
||||
default:
|
||||
defaultCertificate:
|
||||
certFile: /etc/certs/live/default/fullchain.pem
|
||||
keyFile: /etc/certs/live/default/privkey.pem
|
||||
@@ -0,0 +1,155 @@
|
||||
{
|
||||
"bindAddress": "0.0.0.0",
|
||||
"mongo": {
|
||||
"url": "mongodb://localhost/openhim",
|
||||
"atnaUrl": "mongodb://localhost/openhim",
|
||||
"connectionOptions": {},
|
||||
"openHIMApiReadPreference": "primaryPreferred",
|
||||
"openHIMApiWriteConcern": 1,
|
||||
"openHIMApiReadConcern": "local"
|
||||
},
|
||||
"logger": {
|
||||
"level": "info",
|
||||
"logToDB": true,
|
||||
"capDBLogs": true,
|
||||
"capSize": 10000000
|
||||
},
|
||||
"mongoLogger": {
|
||||
"options": {
|
||||
"w": 0,
|
||||
"useNewUrlParser": true
|
||||
}
|
||||
},
|
||||
"router": {
|
||||
"externalHostname": "uwdigi.org",
|
||||
"httpPort": 5001,
|
||||
"httpsPort": 5000,
|
||||
"timeout": 60000
|
||||
},
|
||||
"bodyCull":{
|
||||
"enabled":true,
|
||||
"pollPeriodMins": 60
|
||||
},
|
||||
"api": {
|
||||
"enabled": true,
|
||||
"protocol": "https",
|
||||
"port": 8080,
|
||||
"authWindowSeconds": 10,
|
||||
"maxBodiesSizeMB": 15,
|
||||
"maxPayloadSizeMB": 50,
|
||||
"truncateSize": 15000,
|
||||
"truncateAppend": "\n[truncated ...]",
|
||||
"authenticationTypes": ["basic", "token"]
|
||||
},
|
||||
"rerun": {
|
||||
"httpPort": 7786,
|
||||
"host": "localhost",
|
||||
"processor": {
|
||||
"enabled": false,
|
||||
"pollPeriodMillis": 2000
|
||||
},
|
||||
"taskTransactionsLength": 50,
|
||||
"activeConcurrentTasks": 3
|
||||
},
|
||||
"tcpAdapter": {
|
||||
"httpReceiver": {
|
||||
"httpPort": 7787,
|
||||
"host": "localhost"
|
||||
}
|
||||
},
|
||||
"polling": {
|
||||
"enabled": false,
|
||||
"pollingPort": 7788,
|
||||
"host": "localhost"
|
||||
},
|
||||
"authentication": {
|
||||
"enableMutualTLSAuthentication": true,
|
||||
"enableBasicAuthentication": true,
|
||||
"enableCustomTokenAuthentication": true,
|
||||
"enableJWTAuthentication": false,
|
||||
"jwt": {
|
||||
"secretOrPublicKey": "",
|
||||
"algorithms": "",
|
||||
"audience": "",
|
||||
"issuer": ""
|
||||
}
|
||||
},
|
||||
"email": {
|
||||
"fromAddress": "address@example.com",
|
||||
"nodemailer": {
|
||||
"service": "Gmail",
|
||||
"auth": {
|
||||
"user": "user@gmail.com",
|
||||
"pass": "password"
|
||||
}
|
||||
}
|
||||
},
|
||||
"smsGateway": {
|
||||
"provider": "clickatell",
|
||||
"config": {
|
||||
"user": "user",
|
||||
"pass": "pass",
|
||||
"apiID": "apiID"
|
||||
}
|
||||
},
|
||||
"alerts": {
|
||||
"enableAlerts": true,
|
||||
"pollPeriodMinutes": 1,
|
||||
"himInstance": "Haiti Health Box OpenHIM",
|
||||
"consoleURL": "http://localhost:9000"
|
||||
},
|
||||
"reports": {
|
||||
"enableReports": false,
|
||||
"dailyReportAt": "0 7 * * *",
|
||||
"weeklyReportAt": "0 7 * * 1",
|
||||
"utcOffset": null
|
||||
},
|
||||
"events": {
|
||||
"enableTSNormalization": true
|
||||
},
|
||||
"newUserExpiry": {
|
||||
"duration": 7,
|
||||
"durationType": "days"
|
||||
},
|
||||
"userPasswordResetExpiry": {
|
||||
"duration": 1,
|
||||
"durationType": "hours"
|
||||
},
|
||||
"auditing": {
|
||||
"servers": {
|
||||
"udp": {
|
||||
"enabled": false,
|
||||
"port": 5050
|
||||
},
|
||||
"tls": {
|
||||
"enabled": false,
|
||||
"port": 5051
|
||||
},
|
||||
"tcp": {
|
||||
"enabled": false,
|
||||
"port": 5052
|
||||
}
|
||||
},
|
||||
"auditEvents": {
|
||||
"interface": "internal",
|
||||
"host": "localhost",
|
||||
"port": 5051,
|
||||
"auditSourceID": "OpenHIM"
|
||||
}
|
||||
},
|
||||
"caching": {
|
||||
"enabled": true,
|
||||
"refreshMillis": 1000
|
||||
},
|
||||
"tlsClientLookup": {
|
||||
"type": "in-chain"
|
||||
},
|
||||
"agenda": {
|
||||
"startupDelay": 500
|
||||
},
|
||||
"certificateManagement": {
|
||||
"watchFSForCert": true,
|
||||
"certPath": "/etc/certs/live/default/fullchain.pem",
|
||||
"keyPath": "/etc/certs/live/default/privkey.pem"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"version": "1.14.4",
|
||||
"minimumCoreVersion": "5.0.0",
|
||||
"protocol": "https",
|
||||
"host": "52.11.216.56",
|
||||
"hostPath": "",
|
||||
"port": 8090,
|
||||
"title": "Haiti Health Box Console",
|
||||
"footerTitle": "Haiti Health Box Console",
|
||||
"footerPoweredBy": "<a href='http://openhim.org/' target='_blank'>Powered by OpenHIM</a>",
|
||||
"loginBanner": "",
|
||||
"mediatorLastHeartbeatWarningSeconds": 60,
|
||||
"mediatorLastHeartbeatDangerSeconds": 120
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
var http = require("https");
|
||||
|
||||
var options = {
|
||||
host : "0.0.0.0",
|
||||
port : "8080",
|
||||
timeout : 1000,
|
||||
rejectUnauthorized: false
|
||||
};
|
||||
|
||||
var request = http.request(options, (res) => {
|
||||
console.log(`STATUS: ${res.statusCode}`);
|
||||
if (res.statusCode == 200 || res.statusCode == 401) {
|
||||
process.exit(0);
|
||||
}
|
||||
else {
|
||||
process.exit(1);
|
||||
}
|
||||
});
|
||||
|
||||
request.on('error', function(err) {
|
||||
console.log('ERROR');
|
||||
process.exit(1);
|
||||
});
|
||||
|
||||
request.end();
|
||||
@@ -0,0 +1,85 @@
|
||||
{
|
||||
"Users": [
|
||||
{
|
||||
"groups": [
|
||||
"admin"
|
||||
],
|
||||
"firstname": "Super",
|
||||
"surname": "User",
|
||||
"email": "root@openhim.org",
|
||||
"passwordAlgorithm": "sha512",
|
||||
"passwordHash": "e12ea7a5468925ab2b6d839e5b0566c8d8e68d9dd48241282ec1c448c0b11386b499be64011c88060b241ed5a143fea90992dabb0d91a334daecd96e20156c24",
|
||||
"passwordSalt": "5f49ab7df7fac0fd7860d3b1be95cbf4",
|
||||
"expiry": null,
|
||||
"locked": false,
|
||||
"tokenType": null,
|
||||
"token": null
|
||||
}
|
||||
],
|
||||
"Clients": [],
|
||||
"Channels": [
|
||||
{
|
||||
"methods": [
|
||||
"GET",
|
||||
"POST",
|
||||
"DELETE",
|
||||
"PUT",
|
||||
"OPTIONS",
|
||||
"HEAD",
|
||||
"TRACE",
|
||||
"CONNECT",
|
||||
"PATCH"
|
||||
],
|
||||
"type": "http",
|
||||
"allow": [],
|
||||
"whitelist": [],
|
||||
"authType": "public",
|
||||
"matchContentTypes": [],
|
||||
"properties": [],
|
||||
"txViewAcl": [],
|
||||
"txViewFullAcl": [],
|
||||
"txRerunAcl": [],
|
||||
"status": "enabled",
|
||||
"rewriteUrls": false,
|
||||
"addAutoRewriteRules": true,
|
||||
"autoRetryEnabled": false,
|
||||
"autoRetryPeriodMinutes": 60,
|
||||
"routes": [
|
||||
{
|
||||
"type": "http",
|
||||
"status": "enabled",
|
||||
"forwardAuthHeader": false,
|
||||
"name": "Central FHIR server",
|
||||
"secured": false,
|
||||
"host": "52.11.216.56",
|
||||
"port": 8081,
|
||||
"path": "",
|
||||
"pathTransform": "",
|
||||
"primary": true,
|
||||
"username": "",
|
||||
"password": ""
|
||||
}
|
||||
],
|
||||
"requestBody": true,
|
||||
"responseBody": true,
|
||||
"rewriteUrlsConfig": [],
|
||||
"name": "central fhir server",
|
||||
"description": "Access to the central FHIR server",
|
||||
"pollingSchedule": null,
|
||||
"matchContentRegex": null,
|
||||
"matchContentXpath": null,
|
||||
"matchContentValue": null,
|
||||
"matchContentJson": null,
|
||||
"urlPattern": "^/fhir/.*$",
|
||||
"tcpHost": null,
|
||||
"tcpPort": null,
|
||||
"updatedBy": {
|
||||
"id": "6374bbabba26d10013784480",
|
||||
"name": "Super User"
|
||||
},
|
||||
"alerts": []
|
||||
}
|
||||
],
|
||||
"Mediators": [],
|
||||
"ContactGroups": []
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
server.ssl.key-store = file:/etc/openelis-global/keystore
|
||||
server.ssl.key-store-password = kspass
|
||||
server.ssl.key-password = kspass
|
||||
server.ssl.trust-store= file:/etc/openelis-global/truststore
|
||||
server.ssl.trust-store-password=tspass
|
||||
|
||||
#/usr/local/tomcat/webapps/OpenELIS-Global/certs
|
||||
encryption.general.password=kspass
|
||||
|
||||
spring.datasource.driver=org.postgresql.Driver
|
||||
spring.datasource.url= jdbc:postgresql://172.17.0.1:5432/clinlims?currentSchema=clinlims
|
||||
spring.datasource.username=clinlims
|
||||
spring.datasource.password=MIvfOkcLgzPA
|
||||
spring.jpa.hibernate.ddl-auto=update
|
||||
|
||||
org.openelisglobal.fhirstore.uri=http://fhir.openelis.org:8080/fhir/
|
||||
|
||||
org.openelisglobal.remote.source.uri=http://52.11.216.56:5001/fhir/
|
||||
org.openelisglobal.remote.source.updateStatus=true
|
||||
org.openelisglobal.remote.source.identifier=Practitioner/f9badd80-ab76-11e2-9e96-0800200c9a66
|
||||
org.openelisglobal.task.useBasedOn=true
|
||||
|
||||
org.openelisglobal.fhir.subscriber=http://52.11.216.56:5001/fhir/
|
||||
org.openelisglobal.fhir.subscriber.resources=Task,Patient,ServiceRequest,DiagnosticReport,Observation,Specimen,Practitioner,Encounter
|
||||
|
||||
#org.openelisglobal.facilitylist.fhirstore = http://localhost:4000/fhir/DEFAULT
|
||||
# org.openelisglobal.facilitylist.authurl= http://localhost:4000/auth/token
|
||||
# org.openelisglobal.facilitylist.username= root@gofr.org
|
||||
# org.openelisglobal.facilitylist.password= gofr
|
||||
# org.openelisglobal.facilitylist.auth= token
|
||||
facilitylist.schedule.fixedRate=864000000
|
||||
|
||||
#provider List
|
||||
org.openelisglobal.providerlist.fhirstore=http://52.11.216.56:5001/fhir/
|
||||
org.openelisglobal.requester.identifier=Practitioner/f9badd80-ab76-11e2-9e96-0800200c9a66
|
||||
Executable
+1
@@ -0,0 +1 @@
|
||||
clinlims
|
||||
@@ -0,0 +1,167 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<!-- Note: A "Server" is not itself a "Container", so you may not
|
||||
define subcomponents such as "Valves" at this level.
|
||||
Documentation at /docs/config/server.html
|
||||
-->
|
||||
<Server port="-1" shutdown="SHUTDOWN">
|
||||
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
|
||||
<!-- Security listener. Documentation at /docs/config/listeners.html
|
||||
<Listener className="org.apache.catalina.security.SecurityListener" />
|
||||
-->
|
||||
<!--APR library loader. Documentation at /docs/apr.html -->
|
||||
<!--<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />-->
|
||||
<!-- Prevent memory leaks due to use of particular java/javax APIs-->
|
||||
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
|
||||
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
|
||||
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
|
||||
|
||||
<!-- Global JNDI resources
|
||||
Documentation at /docs/jndi-resources-howto.html
|
||||
-->
|
||||
<GlobalNamingResources>
|
||||
<!-- Editable user database that can also be used by
|
||||
UserDatabaseRealm to authenticate users
|
||||
-->
|
||||
<Resource name="UserDatabase" auth="Container"
|
||||
type="org.apache.catalina.UserDatabase"
|
||||
description="User database that can be updated and saved"
|
||||
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
|
||||
pathname="conf/tomcat-users.xml" />
|
||||
</GlobalNamingResources>
|
||||
|
||||
<!-- A "Service" is a collection of one or more "Connectors" that share
|
||||
a single "Container" Note: A "Service" is not itself a "Container",
|
||||
so you may not define subcomponents such as "Valves" at this level.
|
||||
Documentation at /docs/config/service.html
|
||||
-->
|
||||
<Service name="Catalina">
|
||||
|
||||
<!--The connectors can use a shared executor, you can define one or more named thread pools-->
|
||||
<!--
|
||||
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
|
||||
maxThreads="150" minSpareThreads="4"/>
|
||||
-->
|
||||
|
||||
|
||||
<Connector port="8443" minProcessors="5" maxProcessors="75"
|
||||
enableLookups="true" disableUploadTimeout="true"
|
||||
acceptCount="100" debug="0" scheme="https" secure="true"
|
||||
sslProtocol="TLS" SSLEnabled="true"
|
||||
keystoreFile="/etc/openelis-global/keystore" keystoreType="PKCS12" keystorePass="kspass"
|
||||
truststoreFile="/etc/openelis-global/truststore" truststoreType="PKCS12" truststorePass="tspass"
|
||||
URIEncoding="UTF-8" />
|
||||
|
||||
<!-- A "Connector" using the shared thread pool-->
|
||||
<!--
|
||||
<Connector executor="tomcatThreadPool"
|
||||
port="8080" protocol="HTTP/1.1"
|
||||
connectionTimeout="20000"
|
||||
redirectPort="8443" />
|
||||
-->
|
||||
<!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443
|
||||
This connector uses the NIO implementation. The default
|
||||
SSLImplementation will depend on the presence of the APR/native
|
||||
library and the useOpenSSL attribute of the
|
||||
AprLifecycleListener.
|
||||
Either JSSE or OpenSSL style configuration may be used regardless of
|
||||
the SSLImplementation selected. JSSE style configuration is used below.
|
||||
-->
|
||||
<!--
|
||||
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
|
||||
maxThreads="150" SSLEnabled="true">
|
||||
<SSLHostConfig>
|
||||
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
|
||||
type="RSA" />
|
||||
</SSLHostConfig>
|
||||
</Connector>
|
||||
-->
|
||||
<!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2
|
||||
This connector uses the APR/native implementation which always uses
|
||||
OpenSSL for TLS.
|
||||
Either JSSE or OpenSSL style configuration may be used. OpenSSL style
|
||||
configuration is used below.
|
||||
-->
|
||||
<!--
|
||||
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
|
||||
maxThreads="150" SSLEnabled="true" >
|
||||
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
|
||||
<SSLHostConfig>
|
||||
<Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
|
||||
certificateFile="conf/localhost-rsa-cert.pem"
|
||||
certificateChainFile="conf/localhost-rsa-chain.pem"
|
||||
type="RSA" />
|
||||
</SSLHostConfig>
|
||||
</Connector>
|
||||
-->
|
||||
|
||||
<!-- Define an AJP 1.3 Connector on port 8009 -->
|
||||
<!--
|
||||
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
|
||||
-->
|
||||
|
||||
|
||||
<!-- An Engine represents the entry point (within Catalina) that processes
|
||||
every request. The Engine implementation for Tomcat stand alone
|
||||
analyzes the HTTP headers included with the request, and passes them
|
||||
on to the appropriate Host (virtual host).
|
||||
Documentation at /docs/config/engine.html -->
|
||||
|
||||
<!-- You should set jvmRoute to support load-balancing via AJP ie :
|
||||
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
|
||||
-->
|
||||
<Engine name="Catalina" defaultHost="localhost">
|
||||
|
||||
<!--For clustering, please take a look at documentation at:
|
||||
/docs/cluster-howto.html (simple how to)
|
||||
/docs/config/cluster.html (reference documentation) -->
|
||||
<!--
|
||||
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
|
||||
-->
|
||||
|
||||
<!-- Use the LockOutRealm to prevent attempts to guess user passwords
|
||||
via a brute-force attack -->
|
||||
<!-- <Realm className="org.apache.catalina.realm.LockOutRealm"> -->
|
||||
<!-- This Realm uses the UserDatabase configured in the global JNDI
|
||||
resources under the key "UserDatabase". Any edits
|
||||
that are performed against this UserDatabase are immediately
|
||||
available for use by the Realm. -->
|
||||
<!-- <Realm className="org.apache.catalina.realm.UserDatabaseRealm" -->
|
||||
<!-- resourceName="UserDatabase"/> -->
|
||||
<!-- </Realm> -->
|
||||
|
||||
<Host name="localhost" appBase="webapps"
|
||||
unpackWARs="true" autoDeploy="true">
|
||||
|
||||
<!-- SingleSignOn valve, share authentication between web applications
|
||||
Documentation at: /docs/config/valve.html -->
|
||||
<!--
|
||||
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
|
||||
-->
|
||||
|
||||
<!-- Access log processes all example.
|
||||
Documentation at: /docs/config/valve.html
|
||||
Note: The pattern used is equivalent to using pattern="common" -->
|
||||
<!-- <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" -->
|
||||
<!-- prefix="localhost_access_log" suffix=".txt" -->
|
||||
<!-- pattern="%h %l %u %t "%r" %s %b" /> -->
|
||||
|
||||
</Host>
|
||||
</Engine>
|
||||
</Service>
|
||||
</Server>
|
||||
Reference in new issue
Block a user