How Integrator works
- Both Oscar sites periodically push data into Integrator, which stores it into its database.
- Patients have their demographics registered in both Oscar sites and "linked" through Integrator.
- When a patient's chart is opened in one Oscar site, Oscar will contact the integrator and pull his/her chart data from the other site(s).
- Chart data from remote site is shown with special indication.
Get Integrator
Option 1: Get war file
You can download the latest WAR file for the integrator from this url: https://demo.oscarmcmaster.org:11042/job/integratorMaster/lastBuild/org.oscarehr$caisi_integrator/artifact/org.oscarehr/caisi_integrator/0.0-SNAPSHOT/caisi_integrator-0.0-SNAPSHOT.war
Option 2: Get source and build war file
git clone git://oscarmcmaster.git.sourceforge.net/gitroot/oscarmcmaster/integrator cd integrator mvn clean package
Oscar version
Integrator works with Oscar release 12.1
Manual Setup for Oscar/Integrator
Prerequisites
- Java version: openjdk-6 -
(linux command) sudo apt-get install openjdk-6-jre
- Tomcat version: tomcat6 -
(linux command) sudo apt-get install tomcat6
- Tomcat setting -
The following line should be added to tomcat start script at before executing the web service:
export JAVA_OPTS="-Xmx1024M -Dcaisi_integrator_config=/usr/share/tomcat6/integrator_override.xml"
Notes:
1) -Xmx1024M is a suggested value. More memory can be assigned if available.
2) /usr/share/tomcat6/ is a suggested path and can be changed.
3) For the use of integrator_override.xml refer to section - integrator_override.xml -
- integrator_override.xml -
This file makes 2 main settings on Integrator:
1) database info for Integrator
2) url for Oscar sites to access Integrator <https_endpoint_url_base>
In order for this file to function please refer to section - Tomcat setting -
If this file does not exist/function Integrator runs with the default values (<<tomcat_base>>/webapps/caisi_integrator/WEB-INF/classes/config.xml)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <server> <database> <user>root</user> <password>rootpass</password> <url_prefix>jdbc:mysql://10.10.10.1:3306/</url_prefix> <schema>caisi_integrator</schema> <driver>com.mysql.jdbc.Driver</driver> </database> <integrator_server> <https_endpoint_url_base>http://oscarintegrator:8080/caisi_integrator/ws</https_endpoint_url_base> <require_consent_to_read_data>false</require_consent_to_read_data> <require_phi_filter_to_read_data>false</require_phi_filter_to_read_data> <log_performance>false</log_performance> </integrator_server> </server>
- Integrator war file -
1) Rename the above acquired war file to "caisi_integrator.war"
2) If you are running integrator in a dedicated server, put the war file into /var/lib/tomcat6/webapps/
If you are running integrator alongside with Oscar, put the war file together with the Oscar war file.
- Integrator database setup -
1) get sql script from:
2) create database:
(linux commands)
create database caisi_integrator | mysql -uroot -prootpass -h10.10.10.1 -P3306
grant all on caisi_integrator.* to root@localhost identified by "rootpass" | mysql -uroot -prootpass -h10.10.10.1 -P3306 caisi_integrator
Note:
The above commands are only an example. All the databases, users, passwords, hosts, ports can be changed but keep them consistent along all setup. Same thing apply to the following steps.
3) build database:
(linux command) mysql -uroot -prootpass -h10.10.10.1 -P3306 caisi_integrator < create_tables.sql
4) prepare initial data:
Login to mysql and use the caisi_integrator database. Run the following commands:
insert into SiteUser (name,password) values ('admin',unhex(sha1('admin')));
create table CachedProviderRole (caisiItemId varchar(16) not null, integratorFacilityId int(11) not null, providerRole varchar(32) not null);
create table HomelessPopulationReportPrograms (configurationTime datetime not null, index(configurationTime), facilityId int not null, programId int not null);
- oscar.properties -
The following 3 properties must be present:
program=on
INTEGRATOR_UPDATE_PERIOD=1800000
ENABLE_CONFORMANCE_ONLY_FEATURES=true
Note:
1) INTEGRATOR_UPDATE_PERIOD is set in millisecond. OMD requires sync within 30 minutes.
2) If you have a large database the transfer time may exceed INTEGRATOR_UPDATE_PERIOD. In such case the update will be skipped.
3) Change to oscar.properties file requires restarting Oscar to take effect.
--------------------
Run Oscar/Integrator
--------------------
- Integrator 1st startup -
1) Run Integrator by starting tomcat
2) Open a web browser and go to:
(url) http://integrator_server_name:8080/caisi_integrator
Note:
change "integrator_server_name" and port according to your own settings
3) Select "Integrator Site"
4) Login as "admin", password: "admin"
5) Select "Administration"
6) Select "Manage Facilities"
7) Select "Add New Facility", enter name and password and save. The facility name and password will be used in - Oscar 1st startup -
8) Repeat step 7). Each facility represents one Oscar site.
- Oscar 1st startup -
1) Run Oscar (if not already running)
2) Login Oscar with an account which has admin rights
3) Select "Admin" in the top menu
4) Select "Manage Facilities" under "Misc"
5) Select "Edit"
6) Change "Name", "Description" to something of your choice.
7) Enter "http://integrator_server_name:8080/caisi_integrator/ws" into "Integrator Url" (See - Integrator 1st startup - Step 2)
8) Enter "Integrator User" and "Integrator password" with the facility name and password from - Integrator 1st startup - Step 7)
9) Check "Enable Integrator"
10) Save. You will be prompted with "Remove Demographic Identity NOT checked! Is it OK?". Select "OK".
Note:
1) Repeat the above steps for both Oscar sites. Each site should have a different facility name.
2) Oscar will now push data to Integrator once every INTEGRATOR_UPDATE_PERIOD. Note that the update period starts its count on Oscar startup, so you may not see any data push immediately after the above setup.
3) A patients E-Chart Encounter notes do not abide by the syncing period set by 'INTEGRATOR_UPDATE_PERIOD'. Encounter notes update 60 minutes after
the previous Encounter notes sync.
- Integrator Preference -
The purpose of setting this is to allow all patients to be synced, or by default only Rostered patients will be synced.
1) Login Oscar with an account which has admin rights
2) Select "Admin" in the top menu
3) Select "Integrator Preferences"
4) Check "All Patients with Charts Opened Since [never]" and save.
Note:
1) To change the [never] in step 4), login mysql and use the Oscar database, run the following command:
insert into property (name, value) values ("integrator_last_push", "2012-06-14 17:03:30");
* Change the date and time according to your need
2) On 1st push/pull of data to Integrator, Integrator Preference may be reset. Please re-apply the setting if this happens. (Bug to be fixed)
- Add "linked" patient -
Note: Do NOT create the same patient demographic in different Oscar sites. The "linking" does not work this way.
Assume you have a patient named "Linker, Boy" in Oscar site 1. Follow the steps below to create his "linked" counterpart in Oscar site 2:
1) Wait until Oscar site 1 has successfully pushed at least once to Integrator.
2) Login Oscar site 2
3) Select a time-slot to make an appointment.
4) In "Last Name", enter "Linker", select "Search"
5) A list of "Linker"s will be shown, or "No results were found!" will be shown.
Note: If a patient is instantly selected, that means you have 1 "Linker" in Oscar site 2. Enter fewer letters in the "Last Name" entry (e.g. "Li") so that you can stay in the PATIENT'S RECORD window.
6) Check "Incl. Integrated Results" and select "Search" again
Note: If the "Incl. Integrated Results" checkbox is not found. Check that Integrator push is enabled for Oscar site 2.
7) You should now see a "Linker, Boy" with demographic ID "Integrator XXX:X" in the list. Select it.
8) A new demographic "Linker, Boy" has been created in Oscar Site 2. You can cancel the appointment making if you do not intend to make one.
The new "Linker, Boy" is linked to "Linker, Boy" in Oscar site 1. All data created in one site will be shown in another.
------------
Other issues
------------
- integrator_install.sh -
Use integrator_install.sh to do the basic setup for Integrator. Refer to "using_integrator_install.txt" for instructions.
It does most of the work in:
"Get Integrator"
"Setup Oscar/Integrator"
except: - oscar.properties -
- Bug to be fixed -
For newly created Oscar database, please check the "program" table:
select defaultServiceRestrictionDays from program;
If any one of the result is NULL, run the following mysql command:
update program set defaultServiceRestrictionDays=0 where defaultServiceRestrictionDays is NULL;
Otherwise integrator push will fail.