Author SHA1 Message Date
Piotr Mankowski 4f8cfe86c9 Server updates 2023-07-12 16:04:09 +00:00
Piotr Mankowski fb91d5dd90 First pass at config variable consolidation in .env
Fixes
2022-11-08 01:34:22 +00:00
17 changed files with 669 additions and 341 deletions

No files matched your search

+34
View File
@@ -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
#
-3
View File
@@ -1,3 +0,0 @@
volume/.DS_Store
volume/isanteplus/.DS_Store
*/.DS_Store
+2 -27
View File
@@ -43,31 +43,6 @@ Navigate to the `HaitiHealthBox` directory on your machine and run the following
docker-compose up -d
```
## Local setup
Spin up the services
```
docker-compose -f docker-compose.local.yml up -d
```
Acces the services at
| Instance | URL | credentials (user : password)|
|---------- |:-------------:|------: |
| Isanteplus | https://localhost/openmrs/login.htm  | admin : Admin123 |
| OpenHIM | https://localhost/ | root@openhim.org : admin |
| OpenELIS | https://localhost/OpenELIS-Global/ |  admin : adminADMIN!|
## Instructions
1. Add the necesary Lab Unit permisions to the User
Go To `Admin -> User Management -> Select User -> Under "Roles" ,Choose "ALL Lab Units" and select "All Permissions"`
2. Enable Importing electronic orders
Go To `Admin -> Order Entry Configuration -> Select "external orders" -> Click "Modify" -> select "True"`
3. Add the Right Test Catalogue ie tests with `Loinc Codes`
see [more](https://i-tech-uw.github.io/healthinformationexchange/lis-workflows/lis-workflows.html#tutorial-lab-order-communication-between-openmrs-and-openelis) for the EMR-LIS communication
## Step Five: Register instance in Sedish
## Step Six: test SHR pipe
-227
View File
@@ -1,227 +0,0 @@
version: "3.8"
services:
###
# reverse proxy
###
nginx:
image: nginx:latest
container_name: nginx
restart: always
ports:
- 80:80
- 443:443
volumes:
- certs-vol:/etc/nginx/certs/
- keys-vol:/etc/nginx/keys/
- ./volume/nginix/nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- certs
##
#iSantePlus Server
##
isanteplus:
container_name: isanteplus
hostname: isanteplus
image: ghcr.io/isanteplus/docker-isanteplus-server:v2.3.7
restart: unless-stopped
env_file:
- ./isanteplus.env
volumes:
- /openmrs/data
- ./volume/isanteplus/custom_modules:/custom_modules
# ports:
# - 8081:8080
logging:
driver: "json-file"
options:
max-size: "10m"
isanteplus-mysql:
image: ghcr.io/isanteplus/docker-isanteplus-db:v2.2.1
command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci --sql_mode=""
restart: unless-stopped
container_name: isanteplus-mysql
hostname: isanteplus-mysql
healthcheck:
test: "exit 0"
environment:
- MYSQL_DATABASE=openmrs
- MYSQL_ROOT_PASSWORD=debezium
- MYSQL_USER=mysqluser
- MYSQL_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
- /var/lib/mysql
# 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
# # - ./configs/streaming-pipeline/parquet:/tmp
# environment:
# - OPENMRS_URL=http://isanteplus:8080/openmrs
# - OPENMRS_USERNAME=admin
# - OPENMRS_PASSWORD=${IPLUS_ADMIN_PW-Admin123}
# - SINK_URL=https://openhim-ssl.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=
# - FHIR_DEBEZIUM_CONFIG_PATH=/deployments/config.json
###
# OpenHIM
###
openhim-core:
container_name: openhim-core
hostname: openhim-core
image: jembi/openhim-core:v7.1.0
restart: unless-stopped
environment:
mongo_url: "mongodb://mongo-db/openhim"
mongo_atnaUrl: "mongodb://mongo-db/openhim"
NODE_ENV: "development"
ports:
# - 5000
# - 5001
- 8080:8080
openhim-console:
container_name: openhim-console
hostname: openhim-console
image: jembi/openhim-console:v1.15.0
restart: unless-stopped
volumes:
- ./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
# Loads Default OpenHIM Config
openhim-config:
container_name: openhim-config
image: ghcr.io/i-tech-uw/openhim-config:v0.0.0
volumes:
- ./volume/openhim/initial-config.json:/app/test-openhim-config.json
mongo-db:
container_name: mongo-db
image: mongo:3.4
volumes:
- /data/db
restart: unless-stopped
####
# 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
- keys-vol:/etc/ssl/private/
- certs-vol:/etc/ssl/certs/
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
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:2.7.3.2
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
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
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
secrets:
datasource.password:
file: ./volume/properties/datasource.password
common.properties:
file: ./volume/properties/common.properties
volumes:
db-data:
cert-volume:
certs-vol:
keys-vol:
+116 -24
View File
@@ -5,16 +5,58 @@ services:
# reverse proxy
###
traefik:
image: traefik:v2.6.1
image: traefik:${VERSION}
container_name: traefik
restart: ${RESTART}
ports:
- "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
- ./volume/traefik/conf.yaml:/conf/conf.yaml
- ./volume/traefik/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
@@ -22,10 +64,18 @@ services:
isanteplus:
container_name: isanteplus
hostname: isanteplus
image: ghcr.io/isanteplus/docker-isanteplus-server:v2.3.7
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
@@ -39,7 +89,7 @@ services:
- 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
@@ -47,13 +97,13 @@ services:
healthcheck:
test: "exit 0"
environment:
- MYSQL_DATABASE=openmrs
- MYSQL_ROOT_PASSWORD=debezium
- MYSQL_USER=mysqluser
- MYSQL_PASSWORD=${IPLUS_DB_PW-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
networks:
- local_facility
@@ -66,12 +116,12 @@ services:
volumes:
- ./configs/streaming-pipeline/config.json:/deployments/config.json
# data is the directory which you want to persist the generated parquet files
# - ./configs/streaming-pipeline/parquet:/tmp
- ./tmp:/tmp
environment:
- OPENMRS_URL=http://isanteplus:8080/openmrs
- OPENMRS_USERNAME=admin
- OPENMRS_PASSWORD=${IPLUS_ADMIN_PW-Admin123}
- SINK_URL=https://openhim-ssl.sedish-haiti.org/SHR/fhir
- 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
@@ -79,7 +129,7 @@ services:
- 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=
- PARQUET_PATH=/tmp
- FHIR_DEBEZIUM_CONFIG_PATH=/deployments/config.json
###
# OpenHIM
@@ -99,20 +149,54 @@ services:
timeout: 20s
retries: 2
volumes:
- ./configs/openhim/healthcheck.js:/healthcheck.js
ports:
- 5000
- 5001
- 8090:8080
- ./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
hostname: openhim-console
image: jembi/openhim-console:latest
restart: unless-stopped
volumes:
- ./volume/openhim/console.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
@@ -122,6 +206,12 @@ services:
- 3000:80
networks:
- 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
@@ -175,11 +265,11 @@ services:
oe.openelis.org:
container_name: openelisglobal-webapp
image: ghcr.io/i-tech-uw/openelis-global-2:develop
image: ghcr.io/i-tech-uw/openelis-global-2@sha256:abc0916a3c61176571eb2e771cfeb399d0f29c9e02857879d0e12471d3ebf8f3
depends_on:
- database
ports:
- "8095:8080"
#- "8095:8080"
- "8443:8443"
restart: always
environment:
@@ -231,6 +321,8 @@ secrets:
volumes:
db-data:
cert-volume:
certs:
letsencrypt:
networks:
local_facility:
-11
View File
@@ -1,11 +0,0 @@
OMRS_JAVA_MEMORY_OPTS="-Xmx8192m -Xms4096m -XX:NewSize=512m"
OMRS_CONFIG_CONNECTION_SERVER=isanteplus-mysql
OMRS_CONFIG_CREATE_DATABASE_USER=false
OMRS_CONFIG_CREATE_TABLES=false
OMRS_CONFIG_ADD_DEMO_DATA=false
OMRS_CONFIG_CONNECTION_URL=jdbc:mysql://isanteplus-mysql: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=mysqluser
OMRS_CONFIG_CONNECTION_PASSWORD=mysqlpw
OMRS_DEV_DEBUG_PORT=1044
@@ -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
+11
View File
@@ -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
-32
View File
@@ -1,32 +0,0 @@
server {
listen 80;
server_name localhost;
return 301 https://localhost$request_uri;
}
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /etc/nginx/certs/apache-selfsigned.crt;
ssl_certificate_key /etc/nginx/keys/apache-selfsigned.key;
proxy_set_header X-Forwarded-For $proxy_protocol_addr; # To forward the original client's IP address
proxy_set_header X-Forwarded-Proto $scheme; # to forward the original protocol (HTTP or HTTPS)
proxy_set_header Host $host; # to forward the original host requested by the client
absolute_redirect off;
location /openmrs {
proxy_pass http://isanteplus:8080;
}
location /OpenELIS-Global {
proxy_pass https://oe.openelis.org:8443;
}
location / {
proxy_pass http://openhim-console;
}
}
+155
View File
@@ -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"
}
}
+13 -12
View File
@@ -1,13 +1,14 @@
{
"version": "1.10.0",
"minimumCoreVersion": "3.4.0",
"protocol": "https",
"host": "localhost",
"port": 8080,
"title": "Admin Console",
"footerTitle": "OpenHIM Administration Console",
"footerPoweredBy": "<a href='http://openhim.org/' target='_blank'>Powered by OpenHIM</a>",
"loginBanner": "",
"mediatorLastHeartbeatWarningSeconds": 60,
"mediatorLastHeartbeatDangerSeconds": 120
}
"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
}
+25
View File
@@ -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();
+2 -2
View File
@@ -51,8 +51,8 @@
"forwardAuthHeader": false,
"name": "Central FHIR server",
"secured": false,
"host": "fhir.openelis.org.remote",
"port": 8080,
"host": "52.11.216.56",
"port": 8081,
"path": "",
"pathTransform": "",
"primary": true,
+3 -3
View File
@@ -15,12 +15,12 @@ spring.jpa.hibernate.ddl-auto=update
org.openelisglobal.fhirstore.uri=http://fhir.openelis.org:8080/fhir/
org.openelisglobal.remote.source.uri=http://openhim-core:5001/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://openhim-core:5001/fhir/
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
@@ -31,5 +31,5 @@ org.openelisglobal.fhir.subscriber.resources=Task,Patient,ServiceRequest,Diagnos
facilitylist.schedule.fixedRate=864000000
#provider List
org.openelisglobal.providerlist.fhirstore=http://openhim-core:5001/fhir/
org.openelisglobal.providerlist.fhirstore=http://52.11.216.56:5001/fhir/
org.openelisglobal.requester.identifier=Practitioner/f9badd80-ab76-11e2-9e96-0800200c9a66