mpower server manual...5.now a user opens her web browser to the montage website. after logging in,...

149
mPower Server Manual Release 3.2.3 Nuance Communications, Inc September 25, 2018

Upload: others

Post on 29-Sep-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server ManualRelease 3.2.3

Nuance Communications, Inc

September 25, 2018

Page 2: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the
Page 3: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

CONTENTS

1 Best Practices 3

2 Montage Architecture 52.1 Third Party Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2 Montage Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3 Data Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3 Montage Server Requirements 93.1 System Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.2 Storage Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.3 Supported Operating Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

4 Installation Checklists 114.1 Pre-Install Checklist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114.2 Post-Install Checklist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124.3 Nuance Implementation Checklists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134.4 PowerScribe 360 Data Analysis Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

5 Windows Installation Guide 215.1 Initial Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215.2 Montage Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285.3 Post Installation Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365.4 Initial Crawl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435.5 Windows Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475.6 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485.7 HTTPS Certificate Migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

6 Linux Installation Guide 536.1 Enterprise Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536.2 Ubuntu Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586.3 Post-Install Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636.4 ODBC drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636.5 Local Accounts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646.6 Linux Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

7 Source System Crawlers 657.1 General Crawler Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657.2 Database URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697.3 Nuance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697.4 Montage HL7 Interface Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

i

Page 4: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

7.5 Montage File Format Extract Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

8 Settings 798.1 Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798.2 Crawlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808.3 Email . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808.4 External Launchers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818.5 File Locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838.6 General Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848.7 Group Organizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 858.8 Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 868.9 LDAP / ActiveDirectory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898.10 Analytics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928.11 Purpose of Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928.12 Radimetrics eXposure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 938.13 Schedule Crawling & Analytics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 938.14 Follow-up Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

9 montage Command Line 979.1 Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

10 Backing up Montage 10110.1 Windows PostgreSQL Backup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10110.2 Linux PostgreSQL Backup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

11 Additional Montage Tools 10511.1 Truncate (Wipe) the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

12 Montage Privacy & Security 10712.1 System Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10712.2 Security Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10712.3 Data Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10812.4 Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

13 Firewall 10913.1 ufw on Ubuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10913.2 Windows Firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

14 Working with SSL 111

15 Antivirus Exclusions / Data Loss Prevention (DLP) 113

16 Montage Log Files 11516.1 montage-audit.log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11516.2 montage.log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11516.3 montage-importer.log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11516.4 montage-importer-hl7.log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11516.5 searchd.log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11516.6 Apache Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11516.7 RabbitMQ Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11616.8 Windows Install Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

17 Frequently Asked Questions 11717.1 Can Montage be secured with HTTPS / SSL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11717.2 Can Montage be scaled or clustered? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11817.3 Can Montage crawl our RIS / LIS / HIS / EMR / etc.? . . . . . . . . . . . . . . . . . . . . . . . . . 118

ii

Page 5: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

17.4 Can Montage use a different database or webserver? . . . . . . . . . . . . . . . . . . . . . . . . . . 11817.5 What authentication systems does Montage support? . . . . . . . . . . . . . . . . . . . . . . . . . . 11917.6 How often does Montage crawl / index data? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11917.7 Does Montage perform Backups? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

18 Support 121

19 Montage Glossary 123

20 Changelog 12520.1 3.2 Changelog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12520.2 3.1 Changelog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12820.3 3.0 Changelog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13020.4 2.5 Changelog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13120.5 2.4 Changelog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13420.6 2.3 Changelog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13620.7 2.2 Changelog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13920.8 2.1 Changelog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13920.9 2.0 Changelog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

21 Known Issues 141

Index 143

iii

Page 6: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

iv

Page 7: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

The mPower Server Manual is intended only for people trained to install and manage mPower Servers. This documentshould not be shared with individual customers, since APIs may change and the may not receive notification of thechanges. The mPower Manual, which is distributed as part of the mPower Installation contains a section specificallydesigned for customers on administering the mPower server.

Warning: This document contains intellectual property belonging to Nuance Communications, Inc. Distributionof this document must be authorized by Nuance Communications, Inc. It is intended only for Nuance Support andpartners and may not be shared with customers without Nuance’s authorization.

CONTENTS 1

Page 8: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

2 CONTENTS

Page 9: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

CHAPTER

ONE

BEST PRACTICES

• Nuance recommends following Microsoft best practices as outlined in Microsoft TechNet General SecurityAdvice and Best Practices.

• mPower stores data containing Protected Health Information (PHI) in the product databases as well as in variouslocations throughout the file system. Nuance recommends encrypting mPower at the operating system and/orstorage system levels to ensure that PHI is encrypted consistent with the customer’s data encryption policies.

• mPower is compatible with Windows Server 2012 R2, as listed in the mPower System Specifications.

• Nuance recommend that all mPower network communication be secured and encrypted using Hypertext Trans-fer Protocol Secure (HTTPS). Nuance also recommends that the customer obtain a certificate from a trustedCertificate Authority consistent with the customer security policies. See Can Montage be secured with HTTPS/ SSL? and Working with SSL.

• Nuance fully supports all third-party hardware and software updates related to critical security fixes immedi-ately upon release. Nuance recommends that customers apply third party updates consistent with their internalsecurity policies.

• mPower supports Lightweight Directory Access Protocol (LDAP). Nuance recommends the use of LDAP forend-user authentication to mPower to ensure consistency with the customer’s authentication and password man-agement policies. See LDAP / ActiveDirectory.

• During the mPower installation process an administrative users and associated password need to be created.Nuance recommends that the Customer’s site administer provides the system level passwords consistent withthe customer’s internal password policies. Nuance recommends the use of strong/complex passwords consistentwith the customer’s password management policies.

• Nuance recommends that any Passwords created during mPower installation and configuration only be commu-nicated over secure encrypted channels and/or stored in secure encrypted locations.

• Nuance recommends that customers protect mPower from viruses, malware, data loss, etc. consistent withtheir internal policies. To prevent performance degradation Nuance recommends excluding mPower processesfrom antivirus (AV), data loss prevention (DLP), or similar applications to prevent interference with applicationoperations resulting in latency and or file manipulation. Process exclusion will protect application performancewhile allowing AV, DLP, etc. to monitor file operations initiated by other processes. Specific locations and filetypes are available for AV applications that do not allow process exclusion, see Antivirus Exclusions / Data LossPrevention (DLP) for details.

• The mPower database should be backed-up regularly and back-up copies maintained consistent with the cus-tomer’s Disaster Recovery and Business Continuity policies. Backup-up copies of the “montage” databasecontain PHI, Nuance recommends that the back-ups the montage database be encrypted consistent with thecustomer’s data encryption policies. See Backing up Montage.

3

Page 10: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

4 Chapter 1. Best Practices

Page 11: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

CHAPTER

TWO

MONTAGE ARCHITECTURE

The Montage application is comprised of several components, each with a specific purpose, allowing Montage crawlmultiple vendors’ systems and deliver search and analytics results in milliseconds.

2.1 Third Party Components

2.1.1 Database - PostgreSQL

PostgreSQL is a fast and powerful open-source database server. Montage uses PostgreSQL as its database server tostore user settings, crawled reports, terminologies, and various other data elements.

5

Page 12: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

2.1.2 Web Server - Apache

Apache is an open-source web server. When a user’s browser requests a web page, Apache handles the request. If therequest is for a static resource, such as a javascript or CSS file or an image, Apache will directly serve the file. If therequest is for one of Montage’s dynamic pages, Apache, using the WSGI protocol, hands the request off to one of therunning Montage Server processes.

2.1.3 Task Queue - RabbitMQ

RabbitMQ is an open-source messaging server. Montage uses RabbitMQ to process offline jobs, such as crawlingupstream report systems, analyzing reports, and cleaning up stale data.

2.1.4 Cache Server - Memcache

Memcache is a high performance, in-memory, cache server. Montage will often perform expensive computations thatare frequently requested. Instead of re-computing the computations on every request, Montage caches the result of thecomputation after the first request and delivers the cached result to subsequent requests.

Typically, many results are cached for at least 2 hours, though this value can be tuned in the Settings.

Note: On Windows, Montage uses a file-based cache instead of Memcache, due to Memcache’s dependency on ahigh-performance feature found only on Linux. The cache files are typically stored in C:\montage\data\cache.The file-based cache, while not as performant as Memcache, still dramatically improves the overall speed of Montageas opposed to using no cache at all.

2.2 Montage Components

2.2.1 Crawler

The Montage Crawler provides a framework for interfacing with existing source systems, so that Montage can indexthe report text inside those source systems. Montage provides adapters for each type of source system. The adaptercan be a database connection (via ODBC or similar protocol), API, HL7 stream, or a flat file (XML, CSV, plain text).The Crawler framework has proven extremely flexible to date.

The crawler is designed to be efficient and only process reports in the source system that have been changed or addedsince the last crawling event.

2.2.2 Celeryd

The Montage Celeryd processes provide workers for tasks put on the. RabbitMQ Task Queue. These workers allowdata to be processed asynchronously (when the server has free CPU cycles).

2.2.3 Celerybeat

Montage Celerybeat is a specialized version of Celeryd. Celerybeat kicks off specific tasks at configured intervals.One such task is the scheduled crawling of source systems.

Celerybeat is conceptually similar to cron of Window’s Scheduled Tasks, but allows finer control of tasks.

6 Chapter 2. Montage Architecture

Page 13: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

2.2.4 Indexer

The Indexer is a program that takes the results of the Crawler and generates a set of highly optimized index files.Currently, the indexer rebuilds the entire set of index files once a day. However, it is possible to perform delta-indexingon a much shorter schedule.

2.2.5 Searchd

The Searchd process is a service that loads the index files into memory, efficiently answering queries.

2.2.6 Website / REST API

The Website & REST API handle HTTP requests from the Apache webserver, by performing queries against Searchdand by retreiving data from the cache server and PostgreSQL. The Website is the primary interface for users ofMontage. The REST API provides a programmable method for other applications to internally display the Montageresults.

2.3 Data Flow

For demonstration purposes, we will describe the flow of a single radiology report (a Chest CT) through the compo-nents that comprise the Montage Server. In our example, the report lives in a Nuance PowerScribe 360 database.

1. The Montage Crawler connects to PowerScribe 360’s SQL Server database via ODBC. It finds one new report,our Chest CT. The Crawler normalizes the report, then places it into the PostgreSQL database and also puts itonto the RabbitMQ task queue

2. The copy of the Chest CT that is in the Task Queue will be picked up by one of the Celeryd processes, whichwill perform further offline analysis of the report. If Celeryd finds anything interesting, it will save that fact tothe PostgreSQL database.

3. The Indexer will run according to its schedule. It will find the Chest CT in the PostgreSQL database. Theindexer will perform its natural language processing on the report, saving the results into the Index Files. Whenthe Indexer is finished, it notifies the Searchd service that the Index Files have been updated

4. Searchd will load the updated Index Files into memory, preparing itself to be queried

5. Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”.

6. The Montage website validates the query and passes it onto Searchd. Searchd looks for all reports containing“pneumonia”. It finds our Chest CT report, and responds to the Montage Website with the match.

7. The Montage website wraps the matched report inside an HTML webpage and delivers the result to the user.The Montage website will also cache much of the data to make subsequent results much quicker.

2.3. Data Flow 7

Page 14: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

8 Chapter 2. Montage Architecture

Page 15: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

CHAPTER

THREE

MONTAGE SERVER REQUIREMENTS

3.1 System Requirements

Up to 150,000reports/year

Up To1,000,000reports/year

Up To5,000,000reports/year

CPU 64-bit,two-cores, 2.4GHz minimumper core

64-bit,four-cores, 2.5GHz minimumper core

64-bit,four-cores, 2.5GHz minimumper core

Memory 8GB 16GB 24GBStorage Capacity 1 2 50GB 200GB 400GBNetwork 100 MBps 1000 Mbps 1000 Mbps

3.2 Storage Performance

Montage is data-intensive application that requires the ability to quickly scan and analyze millions of records to deliveranswers to the questions its users ask. The biggest factor in end-user performance of Montage is the underlyingperformance of the storage layer.

Montage recommends Tier-0 storage.

The exact configuration (e.g. SAN vs Local RAID) is up to the customer based upon their storage infrastructure. Butas an example, we recommend 36,000 IOPS, assuming 80% Read / 20% Write, which would be satisfied by a 4-diskRAID10 SSD array, with total array throughput at roughly 281 MB/s.

3.3 Supported Operating Systems 3 4

• Windows Server 2012 R21Assuming 30 years of prior & future data. Can allocate less if storage can be dynamically added later existing partitions (e.g. additional

physical volumes to the same logical volume in LVM). Require 10KB (kilobytes) per report, with a minimum of 50GB usable capacity.2Total useable capacity after any RAID policies are applied, this does not include the Operating System installation use.4 Any new installs of Montage v3.0 or greater, as of October 1st, 2015, will only be supported on the listed supported operating systems.

Prior installations on Windows 2008 R2, Ubuntu 10.04, RHEL 6 are only supported for customers who went live prior to October 1st, 2015, withMontage <=v2.5. Only these existing live customers are eligible for upgrades to Montage v3.0 on Windows 2008 R2, Ubuntu 10.04 or RHEL 6. Asof January 1st, 2017, Windows 2008 R2, Ubuntu 10.04, RHEL 6 will not be supported for any version of the Montage application.

9

Page 16: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

3.4 Notes

• Environments may contain bare metal servers or virtualized environments. The above listed should be consid-ered as minimum to operate the Montage system within either type of environment.

10 Chapter 3. Montage Server Requirements

Page 17: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

CHAPTER

FOUR

INSTALLATION CHECKLISTS

4.1 Pre-Install Checklist

• System Requirements• Database Crawler• HL7 Listener• Montage Configuration• Optional Components

– CPT Searching / RVU Analytics

If applicable, also reference Nuance Implementation Checklists.

4.1.1 System Requirements

• Server hardware meets the Montage Server Requirements

• Network configuration requirements:

• The server must have a static IP assigned to it and configured

• The server must have a domain name, preferably using the montage sub-domain, e.g. montage.example.com.Most likely, this should only be visible inside the customer’s network (via an A record or CNAME).

• The server must be able to connnect outbound to https://stats.montagehealthcare.com

• The server should be able to receive inbound traffic to at least ports 80 (http) and 443 (https). Also if HL7 isenabled, port 6661 (MLLP) should be open for inbound traffic. Other ports should be services which assumethey are running in a safe-environment. RDP, SSH, and other required services are fine to open if needed.

4.1.2 Database Crawler

• What is the source system Montage will crawl?

• Vendor & Version?

• Does Montage already have a crawler for this system? If not, Montage Sales & Support must be consulted priorto a sale to investigate and price the crawler and historical migration.

• Need to collect the following database information:

• Vendor & Version (e.g. MS SQL Server 2008R2)

• Hostname (or IP) of the database server

11

Page 18: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

• Database name (e.g. Comm4)

• Database account (user & password), with privileges to perform read-only queries (i.e. SELECT).

If applicable also reference the PowerScribe 360 Crawler checklist.

4.1.3 HL7 Listener

Note: HL7 interfaces must be approved by Montage Sales & Support prior to a sale, since extra professional servicesare involved.

• What is the sending system?

• Does the site utilize an interface engine, in which they can transform the message?

• Need de-identified sample HL7 messages representing any sending systems and formats.

4.1.4 Montage Configuration

• Has a license been requested from Montage Support? Including montage-modules.json and basicsettings.py for this customer.

• If the customer requires authentication other than Montage’s internal password system, such as LDAP or Ac-tiveDirectory, has the proper Information Required from Customer been collected?

• Who should have user accounts in Montage? Need to have the username, first name, last name, and emailaddress. Note for PowerScribe 360, there are additional requirements that the usernames must be the same inPS360 and Montage.

• Which user accounts should have access to the Montage Admin to set up additional users?

4.1.5 Optional Components

CPT Searching / RVU Analytics

The site must provide a lookup table (aka chargemaster) linking Exam Codes and Descriptions to CPTs. MontageSupport can then create a conversion script to upload the chargemaster into Montage. This file should be a CSV orXLS file, with the Exam Code and Exam Description in the first 2 columns. The CPT should be in the third column.If multiple CPTs map to an individual Exam Code, each additional CPT should be in a separate column.

Montage Support can then assist in loading and configuring the settings.py to display the CPTs and RVUs

4.2 Post-Install Checklist

• User accounts

• Have user accounts been setup? Are users able to log in?

• Does at least one person at the customer site have an admin account to set up additional users?

• Crawler / HL7

• Is the crawler / HL7 set up and working

• After 24-hours, has the crawler successfully run and crawled new reports?

12 Chapter 4. Installation Checklists

Page 19: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

• Is the Montage server accessible to workstations at the customer location?

If applicable, also go through the Nuance post-install checklist.

4.2.1 Checkout Procedure

Log into Montage

Montage Search checkout:

1. Conduct a search (e.g. “pneumonia”). Results should be returned.

2. Date filtering should work and provide data (data should be current for the Last 7 days)

3. Are Modalities display (top bar or in the Advanced Search), do these match what the customer expects?

Montage Analytics checkout:

1. Go to Montage Analytics > Practice Overview. Volume & TAT should be displayed. If CPTs have been config-ured, RVUs should display.

2. Build a Custom Graph, select “Date Interval” as the Concept and “Volume” as the Measurement. View thegraph, should have data from past 30 days. Adjust filters to see graph update

Montage QC checkout. Requires QC to be enabled on the server. Should wait until the nightly has run:

1. Go to Montage QC, are there critical and mismatch events?

4.2.2 Optional

• Has the site requested backups, see Backing up Montage

4.3 Nuance Implementation Checklists

Please references Pre-Install Checklist and Post-Install Checklist for the general checklists. This document addsseveral items to check during Nuance PowerScribe 360 implementations.

• Additional PowerScribe 360 Pre-install Checklist– PowerScribe Crawler Checklist

* Site vs SiteLocation* PatientClass

– Suboptimal Modality Mapping• Additional PowerScribe 360 extra Post-install Checklist

– Launching Montage from PowerScribe 360

4.3.1 Additional PowerScribe 360 Pre-install Checklist

PowerScribe Crawler Checklist

Montage ships with sane defaults for the PowerScribe 360 crawler, but there are several common alterations that siteshave requested.

4.3. Nuance Implementation Checklists 13

Page 20: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

Site vs SiteLocation

Montage by default pulls the PowerScribe 360 Site table into the Organization concept. Ideally in PowerScribe, ifthere are multiple facilities, they would each be set up as a seperate Site in PowerScribe 360.

However, Montage does offer the ability to use PowerScribe 360’s SiteLocation instead of the Site. Note, that at somecustomer sites SiteLocation can be overly specific. Therefore, these queries have been provided to assist in comparingSite and SiteLocation prior to crawling.

Montage Support can assist but the feature is enabled via use_site_location_as_organization.

PatientClass

Montage currently supports 3 patient statuses, Inpatient (I), Outpatient (O), and Emergency (E). However, PowerScribesupports several additional PatientClass values (from the HL7 specification), including Pre-admit (P), RecurringPatient (R), Obstetrics (B), Commercial Account (C), Not Applicable (N), Unknown (U). If these other values areused in ExplorerDistinct.PatientClassID (joined to PatientClass table), the customer can provide a mapping from thesevalues into I/E/O.

Note: PowerScribe 360 itself has a strict definition of acceptable PatientClass values and often the RIS will send anout-of-spec value, which PS360 will store as NULL in ExplorerDistinct.PatientClassID. If this is the case, a modifica-tion must also be made in the PS360 interface to map the non-spec values into valid PS360 PatientClass values.

Before attempting to customize the patient status mapping, it may be useful to list the existing patient statuses. Ifneeded, Montage Support can assist with mapping, which goes into patient_status.

Suboptimal Modality Mapping

Some PowerScribe 360 have too many modalities (duplicates / legacy values).

Montage can disable crawling the modality from PowerScribe 360, but requires the site to provide a mapping betweenExam Codes and Descriptions to Modality.

This can be done with import_modality crawler setting.

4.3.2 Additional PowerScribe 360 extra Post-install Checklist

Launching Montage from PowerScribe 360

Note: Usernames must match between PowerScribe 360 and Montage for the auto-login feature to work.

In RadPortal, 3 settings must be configured to enable the Montage integration with PS360:

Montage Secret Key A secret key generated by Montage Support that allows PS360 to securely authenticate a userwithin Montage. Note, in settings.py, this is stored at NUANCE_AUTH_SECRET_KEY. The Secret Keyshould not have any quotes, nor should it have any leading or trailing spaces.

Montage Patient URL The URL template for showing the Patient Timeline. Change montage.example.com asneeded, but leave the {mrn} / {psuser} / etc as PS360 will use them to substitute the appropriate context atdictation time:

http://montage.example.com/patient?mrn={mrn}&psuser={psuser}&pstime={pstime}&pstoken={pstoken}

14 Chapter 4. Installation Checklists

Page 21: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

Montage Search URL The URL template for conducting queries. Change montage.example.com as needed:

http://montage.example.com/search/rad?q={question}&psuser={psuser}&pstime={pstime}&pstoken={pstoken}

4.4 PowerScribe 360 Data Analysis Script

The following queries have been provided to simplify the decision making process prior to performing a Montageinstallation at a PowerScribe 360 site. These queries will help identify common situations that may require a Montageconfiguration other than default. Involving Montage support or the customer will often still be necessary to determinethe best course of action if a potential problem has been identified.

SQL queries in this section can be executed in Microsoft SQL Server Management Studio. To execute a single query,simply copy and paste the code from this document into Microsoft SQL Server Management Studio. Next click ”!Execute”:

4.4.1 Identical Exam Types with Differing Descriptions

Exam Types imported into Montage consist of a code and a description. By default the code is considered unique foreach Exam Type. In some cases however, while the code for the imported procedure is identical, the description forthat procedure is not. This presents a data inconsistency issue which needs to be accounted for before proceeding witha data import.

A crawler time configuration flag exam-codes-are-unique is provided which dictates how Exam Types are handledduring import. Please review the referenced documentation for further information on whether or not this flag shouldbe set.

For example, an Exam Type has code 904 and may have 2 different procedures associated with it. One with thedescription CT COLONOGRAPHY and the other with the description MRI ANGIO CHEST. In this example, the‘exam-codes-are-unique’ configuration flag explained above should be set to False during the crawl, otherwise, itspossible that reports get the wrong procedures.

Note: In some rare cases there are Exam Types which have identical codes but different descriptions. However, if

4.4. PowerScribe 360 Data Analysis Script 15

Page 22: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

this special case applies, it will still be necessary to evaluate the results from the below query to verify each case.

The below query will list Exam Types with identical codes that do not have identical descriptions. If the query doesnot return any results then no action is needed.

-- Differing Exam Type DescriptionsSELECT DISTINCT(O1.ProcedureCodeList),

O1.ProcedureDescListFROM "Order" O1JOIN "Order" O2 ON O1.ProcedureCodeList = O2.ProcedureCodeListWHERE NOT UPPER(O1.ProcedureDescList) = UPPER(O2.ProcedureDescList)ORDER BY O1.ProcedureCodeList

4.4.2 Listing Sites and SiteLocations

In some cases SiteLocation may be preferred over Site as described in Site Vs SiteLocation. The below query willassist in providing a list from both the Site and SiteLocation to simplify the decision making process.

-- Site Vs SiteLocationSELECT Name AS "Site" FROM Site WITH (NOLOCK);SELECT Name AS "Site Locations" FROM SiteLocation WITH (NOLOCK);

Table 4.1: SQLResults

SiteSite Location 1

Table 4.2: SQL Re-sults

SiteLocationCook HospitalVan ClinicPatient Care Center

In the above SQL Results the Site and SiteLocation customer records are listed. Because Site only contains a singlerecord called Site Location 1, SiteLocation may be a more useful choice.

4.4.3 Patient Status

Montage will need to be configured to map unrecognized patient statuses if any. exist. Please reference Patient Classfor more information. The following query will assist in this decision making processes by listing all the patientstatuses that have at least one reference from in a report followed by the number of times that the status appears in allreports.

-- Patient status name and countSELECT PatientClass.Name AS "Patient Status",

COUNT(PatientClass.Name) AS "Count"FROM PatientClass WITH (NOLOCK)JOIN ExplorerDistinct ON PatientClass.PatientClassID = ExplorerDistinct.PatientClassIDGROUP BY ExplorerDistinct.PatientClassID, PatientClass.Name

16 Chapter 4. Installation Checklists

Page 23: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

Table 4.3: SQL Results

Patient Status CountClinic 2000Discharged 45Emergency 999Inpatient 4001

In the above SQL Results, we find that there two unrecognized patient statuses that need to have a mapping definedfor them.

4.4.4 Modalities

The following queries can assist when making decisions about available modalities and other related configurations.

List Modalities

The following query can be used to identify modalities that are less common and may need to be clarified by thecustomer.

-- Available modalitiesSELECT COUNT(Name) AS "Order Count",

Name AS "Modality Name"FROM ProcedureModality WITH (NOLOCK)JOIN OrderProcedureWITH (NOLOCK) ON OrderProcedure.ProcedureCodeID = ProcedureModality.ProcedureCodeIDGROUP BY ProcedureModality.NameORDER BY ProcedureModality.Name

The above query will return a list of the modalities which are recognized by this customer’s PS360 installation. At thecustomer’s discretion, its possible to map unwanted, legacy, or duplicate modalities to another more common modalitysuch as CR, CT, MR, US, XA, DF, NM, PT, and MG.

In the below SQL results, modalities CT and US are commonly recognized modalities and are according to OrderCount are used more frequently at this customer site. However, US-procedure and US-duplex can be consideredduplicates of the more common US. Since US appears far more frequently, it might make sense to consolidate theother modalities into UT.

Table 4.4: SQL Results

Order Count Modality1000 CT1050 US39 US - Duplex60 US - Procedure

In this next example, MR and MRI both exist as modalities, but its likely that they can merged into a single modality.Since MR appears more frequently, it might be safe to assume MRI can be mapped to MR. The same situation existsfor CTA and Angiography, which in many cases could simply be reduced to CT.

4.4. PowerScribe 360 Data Analysis Script 17

Page 24: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

Table 4.5: SQL Results

Order Count Modality40 Angiography3000 CT500 CTA2040 MR1000 MRI

For assistance with consolidating modalities please contact Montage Support.

Modality to Exam Mappings

For assistance with determining if the existing mappings from “Exam Code” to “Modality” are correct the followingquery can be used.

SELECT ProcedureModality.Name AS "Modality",Explorer.Procedures AS "Exam Code",ProcedureDesc AS "Exam Description"

FROM ExplorerJOIN OrderProcedure ON OrderProcedure.OrderID = Explorer.OrderIDJOIN ProcedureModality ON ProcedureModality.ProcedureCodeID = OrderProcedure.ProcedureCodeIDWHERE Procedures IS NOT NULL AND ProcedureDesc IS NOT NULLGROUP BY ProcedureModality.Name, Explorer.Procedures, Explorer.ProcedureDesc

4.4.5 Duplicate Providers

For both ordering and reporting providers, we want to identify records that are potential duplicates. Since its plausiblethat two or more providers have the same name, its still necessary to work with the customer to verify the possibleredundancy. If a determination is made that the provider has a duplicate entry, it may be necessary to work withMontage Support to clean the data.

The following query will list all ordering and reporting providers.

-- All ordering and reporting providersSELECT PersonalInfo.LastName AS "Last Name",

PersonalInfo.FirstName AS "First Name"FROM "Order" WITH (NOLOCK)JOIN Physician WITH (NOLOCK) ON Physician.PhysicianID = "Order".ProviderPhysIDJOIN PersonalInfo WITH (NOLOCK) ON PersonalInfo.PersonalInfoID = Physician.PersonalInfoIDWHERE "Order".ProviderPhysID IS NOT NULLGROUP BY PersonalInfo.LastName, PersonalInfo.FirstNameORDER BY PersonalInfo.LastName

SELECT SignerLastName AS "Last Name",SignerFirstName AS "First Name"

FROM ExplorerDistinct WITH (NOLOCK)WHERE SignerLastName IS NOT NULLGROUP BY SignerLastName, SignerFirstNameORDER BY SignerLastName

Duplicate Ordering Providers

The following query will list the number of possible duplications for each ordering provider.

18 Chapter 4. Installation Checklists

Page 25: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

-- Possible duplicate ordering providersSELECT COUNT(DISTINCT "Order".ProviderPhysID) - 1 AS "Possible Duplicates",

PersonalInfo.LastName AS "Last Name",PersonalInfo.FirstName AS "First Name"

FROM "Order" WITH (NOLOCK)JOIN Physician WITH (NOLOCK) ON Physician.PhysicianID = "Order".ProviderPhysIDJOIN PersonalInfo WITH (NOLOCK) ON PersonalInfo.PersonalInfoID = Physician.PersonalInfoIDWHERE "Order".ProviderPhysID IS NOT NULLGROUP BY PersonalInfo.LastName, PersonalInfo.FirstNameHAVING COUNT(DISTINCT "Order".ProviderPhysID) > 1ORDER BY PersonalInfo.LastName

Table 4.6: SQL Results

Possible Duplicates Last Name First Name1 Smith John1 Tudor Henry4 White Jessica

The above results tell us that there are 2 ordering providers with a duplicate record and another with 4 duplicaterecords.

Duplicate Reporting Providers

The following query will list the number of possible duplications for each reporting provider referenced from in areport.

-- Possible duplicate reporting providersSELECT COUNT(DISTINCT SignerAcctID) - 1 AS "Possible Duplicates",

SignerLastName AS "Last Name",SignerFirstName AS "First Name"

FROM ExplorerDistinct WITH (NOLOCK)GROUP BY SignerLastName, SignerFirstNameHAVING COUNT(DISTINCT SignerAcctID) > 1ORDER BY SignerLastName

4.4.6 Identify the Primary Active Accounts in PowerScribe

The following script is a data analysis script to identify the primary active accounts in PowerScribe:

Select a.AccountID, a.LoginName,IsNull(api.FirstName, '') 'FirstName',IsNull(api.LastName, '') 'LastName',Case When a.IsAdmin = 0 Then 'No' When a.IsAdmin = 1 Then 'Yes' End As'Admin',Case When a.IsActive = 0 Then 'No' When a.IsActive = 1 Then 'Yes' End As 'Active',IsNull(r.Name, '') 'Role',IsNull(s.Name, '') 'Site',IsNull(sa.Identifier, '') 'RIS_ID'

From Comm4..Account A (Nolock)Left Outer Join Comm4..SiteAccount sa (Nolock) On a.AccountID = sa.AccountIDLeft Outer Join Comm4..Role r (Nolock) On sa.RoleID = r.RoleIDLeft Outer Join Comm4..Site s (Nolock) On s.SiteID = sa.SiteIDLeft Outer Join Comm4..AccountPersonalInfo api (Nolock) On api .AccountID = a.AccountIDAnd a.AccountID != 1

4.4. PowerScribe 360 Data Analysis Script 19

Page 26: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

20 Chapter 4. Installation Checklists

Page 27: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

CHAPTER

FIVE

WINDOWS INSTALLATION GUIDE

montage-VERSION.exe contains all the tools required to install and manage a Montage Server installation onWindows.

The current Montage installer aims to standardize and simplify the installation process. The installer, is not a fully“one-click” process–it does require the administrator to determine specific data file locations and edit several configu-ration files. Future versions of the installer will aim to further simplify this process.

5.1 Initial Configuration

The Montage installer expects a certain level of configuration to exist before it is run, so that it can use these settingsto set up the Montage installation

• Montage Settings & License– montage-modules.json - License– settings.py - Main Config File

• Windows Firewall• Next Steps

5.1.1 Montage Settings & License

During the Montage installer, we will be prompted for the Montage installation path, by default C:\montage (inmost cases, we should not change this location). Before we start the Montage installer, we must create a subfolder,C:\montage\config, and create two files within that folder.

Create C:\montage:

21

Page 28: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

Create C:\montage\config

22 Chapter 5. Windows Installation Guide

Page 29: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

montage-modules.json - License

Note: Do not share or re-use license files.

Montage Healthcare Solutions issues a unique license for each customer. The license file,montage-modules.json, includes the customer’s name, a list of “modules” which that customer has pur-chased access to (at the current time, Montage ships all production-ready modules to all customers), and potentially alicense expiration date. The license file includes cryptographic hashes to prevent manual editing.

The file looks something like:

{"expires": "2011-11-01","format": "1.0","modules": {"montage_accounts": "XXXXX","montage_analytics": "XXXXX",...

},"organization": "Example Customer","signature": "XXXXX"

}

5.1. Initial Configuration 23

Page 30: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

Warning: Do not edit the license file, doing so will likely invalidate the license file. If any changes to the license,contact Montage Healthcare Solutions to issue a new license file. Even editing the customer name will causelicense invalidation.Modifying the SECRET_KEY in settings.py can also invalidate the license.

As part of the Pre-Install Checklist, you should have requested from Montage Healthcare Solutions, a unique licensefile and SECRET_KEY for the customer. Place the montage-modules.json in the config directory (e.g. atC:\montage\config\montage-modules.json).

Ensure that the file extension is .json and not .txt (in case you used Notepad to save the license file).

settings.py - Main Config File

Warning: If custom profiles were configured in the settings file, the installer will detect and alert as informa-tional that these profiles may not be compatible with Montage >=v3.2. These profiles should be resolved beforecontinuing the installation.

Inside the config folder we also store the settings.py, which contains the database connection information, thecustomer’s SECRET_KEY, crawling settings, and various other customer-specific settings. See Settings for a morecomprehensive guide on what settings.py can contain.

To get the installation process started, settings.py should contain a SECRET_KEY, a basic definition of an index,and the email settings:

24 Chapter 5. Windows Installation Guide

Page 31: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

from montage_basesite.settings import *

SECRET_KEY = 'XXXXX'MONTAGE_NUANCE_AUTH_KEY = 'YYYYY'

MONTAGE_INDEXES += (('montage_search.index.default.RadiologyIndex', {

'name': 'rad','display_name': 'Radiology','source_systems': ['Powerscribe360']

}),)

from celery.schedules import crontabfrom datetime import timedeltaimport urllib.parseCELERYBEAT_SCHEDULE['ps360'] = {

'task': 'montage_importer.tasks.import_recent_reports','schedule': crontab(hour=1, minute=0),'kwargs': {

'importer': 'montage_importer.importers.vendor.nuance.Powerscribe360','params': {

'source_system': 'Powerscribe360','db_url': 'mssql+pyodbc:///?odbc_connect=' + urllib.parse.quote_plus('DRIVER={SQL Server};SERVER=10.0.0.50, 1433;DATABASE=Comm4;UID=user;PWD=password'),'timezone': 'US/Eastern'

},'offset': timedelta(days=2),

},}

A basic description of this example:

• The initial from ... import * line uses an existing settings template that allows us to only define theminimal set of configuration values.

• The SECRET_KEY is used to check the license file and to secure content in the Montage application. You shouldobtain the SECRET_KEY from Montage Healthcare Solutions.

• The MONTAGE_NUANCE_AUTH_KEY is used to auto-login users from PowerScribe 360 into Montage. Thiskey is the same one used in the RadPortal as the “Montage Secret Key”

• The MONTAGE_INDEXES defines a single Index, which is connected to. “Powerscribe360” Source Sys-tem. The name and display_name govern what this Index is called within the Montage webpage. Thesource_systems is a mapping to all the systems that are crawled by Montage, which make up this specificindex. In general, this definition of MONTAGE_INDEXES is sufficient. Note the name of the source system,“Powerscribe360” in this case–it must match our crawler definition later.

• In this example, we are configuring the Nuance PowerScribe360 crawler to run every day at 1:00 AM. Referto General Crawler Configuration for specific instructions on setting up the CELERYBEAT_SCHEDULE. Makesure to configure the correct ’timezone’ for the given customer.

If a non-default PostgreSQL database / user / password were set in configure-postgresql, they must be configured now.Likewise, if using a non-standard data directory, it must be configured.

5.1. Initial Configuration 25

Page 32: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

Ensure that the file extension is .py and not .txt (in case you used Notepad to save the file):

26 Chapter 5. Windows Installation Guide

Page 33: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

C:\montage\config should appear so:

5.1. Initial Configuration 27

Page 34: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

5.1.2 Windows Firewall

Montage requires that clients be able to access it via the standard HTTP port 80 (and port 443 if using HTTPS). Thecustomer’s network must have any firewalls set to allow this. Additionally, the installer automatically sets Window’sFirewall to allow Inbound traffic to Montage Apache via port 80 and port 443.

5.1.3 Next Steps

We can now proceed onto the Montage Installation.

5.2 Montage Installation

5.2.1 Montage Installer

Warning: If upgrading must first upgrade to Montage 3.0 before proceeding with installation of Montage 3.1 ornewer

Note: As of Montage 3.1, Python, PostgreSQL, Apache, Erlang, and RabbitMQ installation are now encompassedwith the montage installer. The Montage installer with automatically create a database user, setup the firewall rules. It

28 Chapter 5. Windows Installation Guide

Page 35: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

will also automatically stop the Windows Services related to Montage before the install. There is manual interactionto start the Montage services post-install.

Having finished the Initial Configuration, we are ready to run the Montage installer, montage-VERSION.exe.

The Montage Welcome page is displayed showing contact and support information. Click “Next”:

The Montage License Agreement page is displayed and should be read through to agree with terms of the applicationinstallation. Click “I Agree”:

5.2. Montage Installation 29

Page 36: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

The Montage installation will install all components listed. Checks to determine the system state are encompassedwithin the install components . Click “Next”:

30 Chapter 5. Windows Installation Guide

Page 37: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

New in version 3.2.0.

PostgreSQL

As of Montage 3.2, the montage installer checks for a pre-existing installation of the postgresql service. If the serviceis found, then no option is given for the installation of a different version of postgresql. In the case of a new installation,the only option that is available is to choose the destination location of the data files (the primary consumer of space),anywhere, such as on another drive. However, the default is acceptable.

When postgresql is installed onto a new system where postgresql service was not found, the Postgres program pathhas now been moved to the C:\montage\lib directory.

Note: During the installation process, the postgres user password will be changed to a known password that is notdistributed outside of the montage development team.

The montage-VERSION.exe automatically handles creation of the montage user and montage database as needed bythe Montage application.

The installer displays the option to select a data location when Postgresql is not found to be installed. Click “Browse”to select a new location or another drive. Once the location is decided, Click “Install”.:

5.2. Montage Installation 31

Page 38: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

The installer will take a few minutes

Many command windows and/or powershell windows will popup to run silent installers for the various applications.The montage-setup.py, which creates the tables in the montage database, generates config\searchd.conf,and loads static data into the database (like RadLex terms). Do not press any keys, let the batch file complete andautomatically close (it may take several minutes to complete):

32 Chapter 5. Windows Installation Guide

Page 39: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

When the installation has completed, click “Finish”:

5.2. Montage Installation 33

Page 40: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

The installer will create several directories in the base install directory:

34 Chapter 5. Windows Installation Guide

Page 41: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

After completion of the install or upgrade, please check install.log (located in the installation directory,C:\montage\lib\montage-VERSION\) for any errors and resolve them as appropriate.

Directory Structure

Note: Postgresql versions >=9.5 will be located in the C:\montage\lib\postgresql-VERSION directory,the actual running version of Postgres might be an older version and not have its files located in this directory

• C:\montage

• lib - The libraries that run Montage

• searchd-VERSION - The binaries to run the Searchd server

• montage-VERSION - The Montage Server files (HTML, Python, etc)

• openssl-VERSION - The OpenSSL files for certificate creation

• apache-VERSION - The Apache files for the webserver

• erl-VERSION - The Erlang runtime libraries necessary for RabbitMQ operations

• rabbitmq_server-VERSION - The RabbitMQ files for the service broker

• postgresql-VERSION - The PostgresQL server files.

5.2. Montage Installation 35

Page 42: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

• data - Data files (this directory can live on another partition, but requires customizing file locationsin the settings

• cache - Montage heavily caches data to avoid hitting slower network resources (like the database).Cached fragments sit in this folder.

• index - Files created by the Indexer, which Searchd loads and provides results from

• logs - Application logs, includes usage, audit events, and errors. See Montage Log Files.

• media - Static files uploaded by users to the site

• static - Montage combines and minifies static resources like JS and CSS files, it stores the mini-fied resources in this folder

• rabbitmq - Holds the RabbitMQ persistent data and plugins

• db - Contains the Postgresql data files

Installed Services

Note: Prior to Montage 3.1, Apache service was name Apache 2.2

The Montage installer will create 5 new Windows Services.

• “Montage Searchd” is a server which provides quick access to the index files.

• “Montage Celeryd” is an endpoint for the task queue, RabbitMQ. Essentially, it is the worker that takes tasks onthe queue and executes them asynchronously.

• “Montage Celerybeat” is a specialized version of “Montage Celeryd” that runs periodic tasks.

• “Montage MLLP Server” is an HL7 receiver, turned off by default

• “Montage Apache” is the webserver, formally known as Apache

To verify the service are running, open the Services tool via Start → Administrative Tools → Services.

Indexing Scheduled Task

Changed in version 3.2.0.

The Montage installer will remove Windows Scheduled Tasks, “Montage Indexer”, which was set to run at 2AM daily.The indexing tasks are handled by the internal Montage scheduler.

5.2.2 Next Steps

The Montage installer is complete, we can continue onto the Post Installation Configuration to perform the finalinstallation steps and to start the initial data load.

5.3 Post Installation Configuration

5.3.1 Start Services

We now have Montage installed, but we still need to link it to the Montage Apache webserver, so HTTP requests getrouted into the Montage Server.

36 Chapter 5. Windows Installation Guide

Page 43: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

To apply the Montage Apache changes that occurred during the Montage installation, we must restart Montage Apachevia the Services interface: Start → Administrative Tools → Services.

At this point, we should check that the “Montage Searchd”, “Montage Celeryd”, and “Montage Celerybeat” servicesare running. If they are stopped, we start them. We only should start “Montage MLLP Server” if it Montage isreceiving HL7 messages.

Note: Whenever there is a configuration change (e.g. to C:\montage\config\settings.py), the services(“Montage Apache”, “Montage Celeryd”, “Montage Celerybeat”, and optionally “Montage MLLP Server”) must berestarted to reload the configuration file.

5.3.2 Web Configuration

The Montage server features a web-based process for creating the initial admin account and configuring several vitalsettings. A number of checks will also be run as part of this process to identify common installation problems.

Using the domain we obtained as part of the Pre-Install Checklist, go the URL http://<site’sdomain>/install/:

5.3. Post Installation Configuration 37

Page 44: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

Click the “Start” link. If no admin user has been previous created, we are prompted to create this user. Once theaccount information is completed, click “Create User”:

Warning:• The password entered should be provided by the customer’s site administrator consistent with the customer’s

internal password policies. Nuance recommends the use of strong/complex passwords.• Passwords should only be communicated over secure encrypted channels and/or stored in secure encrypted

locations.

38 Chapter 5. Windows Installation Guide

Page 45: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

We will likely see the Montage EULA. Read the agreement, select “I accept the agreement”, and click “Submit”:

5.3. Post Installation Configuration 39

Page 46: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

We must tell Montage its domain, so that it can properly create links. Enter the correct domain name (we obtained aspart of the Pre-Install Checklist) in the “Montage Domain” and click “Save”.

40 Chapter 5. Windows Installation Guide

Page 47: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

Montage will run through a series of checks (it may take several minutes), to ensure the required services are runningand that Montage is properly configured. If any checks result in errors or warnings, please follow the instructions orwork with Montage Support to resolve the issues:

5.3. Post Installation Configuration 41

Page 48: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

5.3.3 PS360 RadPortal Setup

1. Open the RadPortal.

2. From Setup > System > Configuration > Other settings tab update the Montage fields with the appropriateValues.

The Patient and Search URLs are appended to Montage server FQDN within RadPortal.

• Patient URL: patient?mrn={mrn}&psuser={psuser}&pstime={pstime}&pstoken={pstoken}

• Search URL: search/rad?q={question}&psuser={psuser}&pstime={pstime}&pstoken={pstoken}

• Montage Security key is added and is unique for every customer.

Patient and Search URLs are standard for all installs, enter the Montage FQDN.

3. In SystemPreferences, Workflow tab, check Enable Montage.

42 Chapter 5. Windows Installation Guide

Page 49: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

5.3.4 Next Steps

We have configured the base application at this point, the next step is to perform a historical crawl Initial Crawl.

5.4 Initial Crawl

The Montage Celerybeat service will perform daily crawls of any new or updated reports, but we must manually startthe process to crawl historical data from PowerScribe 360.

Warning: The initial crawl can be taxing on the upstream database server. Ideally the crawl should be againsta mirrored copy of the database, during off-hours, or over a limited time window (using successive runs with--start-date and --end-date). Normal operations will still be possible, but may be slower than normaldue to the increased network and CPU load.

Open a command prompt (cmd.exe), change into the bin directory of the Montage installation(C:\montage\lib\montage-VERSION\bin), e.g.:

5.4. Initial Crawl 43

Page 50: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

If we have properly configured the crawler in the CELERYBEAT_SCHEDULE, we can perform the initial crawl viathe montage run_importer command.

5.4.1 Trial Crawl

It is recommended to run a small, trial crawl against a month or two of data:

montage.exe run_importer --start-date="2012-05-01" --end-date="2012-06-30" ps360

If that succeeds without issue (check montage-importer.log), we can proceed to a full crawl.

5.4.2 Full Crawl

To run the full crawl (to run in smaller batches, remove the --full-import and subsitute with --start-dateand --end-date, working your way back in time), execute:

montage.exe run_importer --full-import ps360

44 Chapter 5. Windows Installation Guide

Page 51: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

The command runs the ps360 crawler, as defined in the CELERYBEAT_SCHEDULE. The --full-import flagindicates that the typical “only grab reports that are new or changed since the last crawl” algorithm does not apply.Instead, all reports should be crawled.

We can monitor the import progress in the looking at montage-importer.log. The crawl speed depends upon thenetwork connection to the SQL Server and the processing power of the Montage server. 10k reports typically onlytake several minutes. Importing a whole RIS can take a day or more.

When completed, we are notified:

5.4. Initial Crawl 45

Page 52: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

It is recommended to check the montage-importer.log after the crawl.

5.4.3 Indexing of Newly Crawled Data

Changed in version 3.2.0.

As of 3.2 with Delta Indexing, the “Montage Indexer” Scheduled Task has been removed.

If a large amount of data was crawled, it is highly recommended to manually run a full re-index to capture all thenewly crawled reports as part of the base “full index” instead of letting them be included in every delta index until thenext index merge operation. To create the full index:

montage.exe run_indexer --full --all

Alternatively, we could just perform for a single index, e.g. rad:

montage.exe run_indexer --full rad

5.4.4 Installation Finished

At this point, we should now have a fully functioning Montage installation. We can begin using and testing the website, as well as creating user accounts for other users (must match usernames in PowerScribe 360 for auto-login towork).

46 Chapter 5. Windows Installation Guide

Page 53: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

5.5 Windows Frequently Asked Questions

Also see Frequently Asked Questions.

• Can Montage be installed on a separate partition?• The disk has become highly fragmented / Montage is running slow• Can Apache log files be located in a different folder?• Can Microsoft IIS be used instead of Apache HTTPD?• The installer fails “Fatal Error has occurred with installation of Apache”

5.5.1 Can Montage be installed on a separate partition?

Yes, but please contact Montage Healthcare Solutions to properly configure using the separate parition. Currently,the installation should still reside on the C:\ drive, but the PostgreSQL data files and the index files (the primaryconsumers of drive space) can live on the separate parition using the correct File Locations.

5.5.2 The disk has become highly fragmented / Montage is running slow

Due to the design of the Windows filesystem and the method in which Montage updates reports and performs re-indexing, it is has been observed at some sites that a high level of disk fragmentation can occur.

Since the Windows OS and hardware is managed by the customer’s IT and since for certain types of hard drives,defragmenting can cause unintended drive wear (e.g. solid state drives), we leave it up to the customer to monitor andperform periodic disk degragmenting.

Using the builtin Disk Defragmenter in Windows, you can check the fragmentation level and set up a scheduled defrag(perhaps weekly during off-peak hours).

5.5.3 Can Apache log files be located in a different folder?

Yes, but the change must happen in C:\montage\config\apache.conf Changing the lines ErrorLog andCustomLog to the new location. The Montage Apache service will need to be restarted for the changes to take effect.In most cases, the default location will work fine if the C:\ has sufficient space allocated for Montage.

5.5.4 Can Microsoft IIS be used instead of Apache HTTPD?

No, Montage only uses the Apache HTTPD webserver. IIS must not be installed on the Montage server, or else it willcause Apache to be unable to bind to port 80 and port 443 to host the Montage application.

5.5.5 The installer fails “Fatal Error has occurred with installation of Apache”

Ensure that the Windows Firewall Framework service is enabled in the Windows Services. The installer is attemptingto create the necessary firewall entries to allow Montage to operate on ports 80 and 443.

5.5. Windows Frequently Asked Questions 47

Page 54: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

5.6 Troubleshooting

5.6.1 Tools for Investigating

Log Files

The Montage Log Files are an excellent source to start debugging, specifically, montage.log and the Apache er-ror log contain tracebacks of errors. The montage.log file contains errors inside Montage, while the Apachemontage-error.log contains errors that prevent Montage from starting.

5.6.2 Common Problems

When I navigate to the web site, I receive a page with black text on a white background, stating “Not Found” or “Server Error”:Check the Apache Logs log file for details, the Montage application is not being loaded by Apache.

As soon as I log in, I get a “Server Error” page Most likely, the searchd service not running. Ensure the “MontageSearchd” service is running in Start → Administrative Tools → Services. If it is not running, start the service. Ifit fails to start, look into the logs (searchd.log and montage.log).

You may attempt to directly launch searchd process to detect the exact error message, for example:

C:\montage\lib\searchd-2.0.1-beta\searchd.exe --config C:\montage\config\searchd.conf

When users receive Password Reset emails, the reset link is incorrect, possible pointing to the example.com domain.The Web Configuration is not properly configured. Ensure that it points to the correct domain, as obtained inthe Pre-Install Checklist

We have updated settings.py, but the changes do not appear to be working The Apache service must berestarted to apply changes, via Start → Administrative Tools → Services. After restarting, if the changes still donot appear, check montage.log for errors.

When I execute montage run_importer I get the following error: (Error) (’08001’, ’[08001][Microsoft][ODBC SQL Server Driver][DBNETLIB]Invalidconnection.(14) (SQLDriverConnectW); [01000] [Microsoft][ODBC SQL ServerDriver][DBNETLIB]ConnectionOpen (Invalid Instance()). (14)’) None None

This problem occurs due to the ODBC library trying to dynamically determine the SQL Server port (typicallyport 1433). Consider adding the port, separated by a comma from the server host or IP in the db_url, e.g.:

'db_url': 'mssql+pyodbc:///?odbc_connect=' + urllib.parse.quote_plus('DRIVER={SQL Server};SERVER=192.168.42.178, 1433;DATABASE=Comm4;UID=montage;PWD=montage'),

Installing Python fails with “Another installation is in progress. You must complete that installation before continuing this one.”:Close the Python installer and check for another “msiexec.exe” in the Task Manager running processes(taskmgr.exe). If you see, it the only solution (KB 236456) is to reboot the server and retry the Python installer.

5.7 HTTPS Certificate Migration

New in version 3.1.0.

Customers may have previously requested that Montage operate over an secure connection. This required the Apacheservice to be enabled with a certificate to encrypt the communications.

The Montage installer now handles the installation of the Apache services and the configuration location is nowchanged to be encompassed with the C:\montage\config location.

48 Chapter 5. Windows Installation Guide

Page 55: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

Previously configured Apache SSL settings are checked to loosely determine if they are enabled. There is no 100%guarantee the installer will find the ssl enablement. As the installer of the application, please verify the use or config-uration of SSL prior to the upgrade of Montage.

5.7.1 Detection of SSL

During the install process, if the installer detects the presence of ssl in use, the following popup will appear.

The installer will not abort the installation process, as it is up to the installer to verify the use of SSL and migrate theappropriate configurations.

The basic enablement of ssl might be as follows and should be consulted first. Installations not matching the belowoutlined steps should result in contacting Montage Healthcare Solutions at [email protected] for furtherassistance.

5.7.2 Moving existing certificates to Montage

Note: In the Apache configuration file a # is used to comment out a particular line so that it is not read by the service.

Previous installation of Apache are located in C:\Program Files (x86)\Apache SoftwareFoundation\Apache2.2 with the Apache main configuration located in conf\httpd.conf, relative tothe Apache root location.

5.7. HTTPS Certificate Migration 49

Page 56: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

• Open conf\httpd.conf with the Notepad text editor.

• Locate the following lines, near the bottom the file

# Secure (SSL/TLS) connectionsInclude conf/extra/httpd-ssl.conf

• Open the file conf\extra\httpd-ssl.conf with the Notepad text editor.

• Find the lines that begin with the following directives SSLCertificateFile, SSLCertificateKeyFile make noteof the file destination to the immediate right of the directive. .

Warning: Be aware that you may also need the SSLCertificateChainFile if it is not beginning with a #

• Navigate to the location for the SSLCertificateFile within a Windows Explorer screen

• Copy the file for the SSLCertificateFile directive to C:\montage\config\ssl This file will most likelyhave an extension of .crt.

• Navigate to the location for the SSLCertificateKeyFile directive within a Windows Explorer screen

• Copy the file for the SSLCertificateKeyFile directive to C:\montage\config\ssl. This file will mostlikely have an extension of .key

Warning: If previously the SSLCertificateChainFile directive was set, that file will need placed in theC:\montage\config\ssl as well. The file extension can vary greatly as there is no standard.

5.7.3 Set Montage for SSL certificates

Apache SSL configurations will be set to use a self-signed certificate that was generated during the install process.We will change the configurations to point to the customer certificates that we copied from the previous Apacheinstallation.

• Open the file C:\montage\config\apache.conf with a Notepad text editor.

• The contents have already been pre-populated during the installation process and should look similar to thefollowing

ErrorLog "C:\montage\data\logs\apache-error.log"CustomLog "C:\montage\data\logs\apache-access.log" common

#<VirtualHost *:80># RewriteEngine On# RewriteCond %{HTTPS} !=on# RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]#</VirtualHost>

<VirtualHost *:443>ServerAlias montage.example.comSSLEngine onSSLCertificateFile "C:/montage/config/ssl/self-signed-montage.crt"SSLCertificateKeyFile "C:/montage/config/ssl/self-signed-montage.key"#SSLCertificateChainFile "C:/montage/config/ssl/cert-chain.crt"

</VirtualHost>

• Change the SSLCertificateFile and SSLCertificateKeyFile to match the names of the files that were previouslycopied to C:\montage\config\ssl, leaving the file path intact.

50 Chapter 5. Windows Installation Guide

Page 57: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

Note: If a SSLCertificateChainFile was copied as well, change this directive as well.

• Change the ServerAlias directive to match the Fully Qualified Name that the customer is using to access Mon-tage. The prepopulated value is a guess by the installer, but might not be correct as to the Fully Qualified Namethat is configured in the certificate file.

Note: Viewing the certificate contents can reveal the Common Name that is used to determine the ServerAliasdirective. See OpenSSL s_client

Customers requesting that all connection must be made across a secure channel, a Apache ReWrite rule must beenabled. The C:\montage\config\apache.conf has the proper configuration in place to enable the ReWriteactions. Remove the # from the lines for the first <VirtualHost *:80> and the next four lines.

Note: Montage Apache must be restarted to enable any configuration changes.

OpenSSL s_client utility

• Launch a PowerShell or command prompt window

• Navigate to C:\montage\libopenssl-VERSION

• Issue the following command

bin\openssl.exe s_client -showcerts -connect localhost:443

• Look for the output similar to the following, the value after /CN= will designate the ServerAlias to use with thessl configurations.

-----END CERTIFICATE--------Server certificatesubject=/CN=montage.example.com/O=Montage Healthcare Solutions, Inc./L=Philadelphia/ST=Pennsylvania/C=USissuer=/CN=montage.example.com/O=Montage Healthcare Solutions, Inc./L=Philadelphia/ST=Pennsylvania/C=US---

OpenSSL generate a Certificate Signing Request

Customer may ask for a Certificate Signing Request (CSR) from the Montage server. The following will outline thesteps to generate a CSR.

A CSR is used to request from a Certificate Authority (CA), an application for use of the certificate tree in a PrivateKey Infrastructure (PKI). This is commonly used to enable trusted certificate exchanges within an organization.

Note: All generated certificates, private keys and CSR files will be located in C:\montage\config\ssl

• Launch a PowerShell or command prompt window.

• Navigate to C:\montage\libopenssl-VERSION

• Issue the following command to generate a private key named server.key with a key strength of 2048 bits and asubsequent CSR named server.csr

bin\openssl.exe req -out c:\montage\config\ssl\server.csr -new -newkey rsa:2048 -nodes -keyout c:\montage\config\ssl\server.key

5.7. HTTPS Certificate Migration 51

Page 58: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

• Various prompts will be asking for input information. The most important ones that are mandatory will be toldby the customer CA administrator. An explanation of the fields can be found at Entrust Certificate Services

Warning: When prompted about setting a challenge password, do not place a value in this field, just press Enter

• Change the necessary Apache directives as listed in Set Montage for SSL certificates

52 Chapter 5. Windows Installation Guide

Page 59: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

CHAPTER

SIX

LINUX INSTALLATION GUIDE

The current Montage installer aims to standardize and simplify the installation process. The installer, is not a fully“one-click” process–it does require the administrator to install several dependent packages.

The current list of support linux systems System Requirements

New in version 3.2.0.

Warning: Customized profiles in regards to the MLLP service may have been added to either the settings.pyor /etc/default/montage-mllp. The profiles should be adjusted to operate with Montage >=3.2.

Manual check for customized profiles for the MLLP service can be done with the following command

/usr/bin/find /etc/montage/settings.py /etc/default/montage-mllp -type f | xargs grep -E 'project.|--profile'

6.1 Enterprise Linux

6.1.1 EL Version 6

Upgrades

Upgrading from 3.0 to the latest version of Montage

Stop services that are used by Montage

sudo service httpd stopsudo service celeryd stopsudo service celerybeat stop

New in version 3.2.0.

Upgrading the sphinxsearch that is used with Montage

sudo service searchd stopwget -O /tmp/sphinx-2.2.8-1.rhel6.x86_64.rpm \https://support.montagehealthcare.com/downloads/sphinxsearch/sphinx-2.2.8-1.rhel6.x86_64.rpmsudo rpm -Uvh /tmp/sphinx-2.2.8-1.rhel6.x86_64.rpm

New in version 3.2.0.

Install the python3.4 interpreter onto the system

sudo yum -y install python34u

53

Page 60: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

Note: This wsgi is built by montage to support the version of the python interpreter used for the Montage application

Ensure the proper wsgi is installed

sudo rpm -Uvh https://support.montagehealthcare.com/downloads/modwsgi-py34-el/python34-mod_wsgi-4.5.3-1.montage.el6.x86_64.rpm

Remove the python2.7 wsgi configuration that is loaded by httpd

sudo rm -rf /etc/httpd/conf.d/python27-mod_wsgi.conf

New in version 3.2.0.

Install mod_ssl as is necessary for enabling https communications

sudo yum -y install mod_ssl

Install the rpm

wget -O /tmp/montage.rpm [URL]sudo rpm -Uvh /tmp/montage.rpm

New Install

New installation of the latest version of Montage

Disable selinx and iptables

sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/configchkconfig iptables offreboot

Ensure wget is installed

yum install -y wget

Ensure the EPEL (Extra Packages for Enterprise Linux) repository is installed

wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

cat > /etc/yum.repos.d/epel.repo << "EOF"[epel]name=Extra Packages for Enterprise Linux 6 - $basearch#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearchmirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearchfailovermethod=priorityenabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

[epel-debuginfo]name=Extra Packages for Enterprise Linux 6 - $basearch - Debug#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch/debugmirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearchfailovermethod=priorityenabled=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6gpgcheck=1

54 Chapter 6. Linux Installation Guide

Page 61: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

[epel-source]name=Extra Packages for Enterprise Linux 6 - $basearch - Source#baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMSmirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearchfailovermethod=priorityenabled=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6gpgcheck=1EOF

Add the IUS repository

wget -O /etc/pki/rpm-gpg/IUS-COMMUNITY-GPG-KEY https://dl.iuscommunity.org/pub/ius/IUS-COMMUNITY-GPG-KEYrpm --import /etc/pki/rpm-gpg/IUS-COMMUNITY-GPG-KEY

cat > /etc/yum.repos.d/ius.repo << "EOF"[ius]name=IUS Community Packages for Enterprise Linux 6 - $basearch#baseurl=https://dl.iuscommunity.org/pub/ius/stable/CentOS/6/$basearchmirrorlist=https://mirrors.iuscommunity.org/mirrorlist?repo=ius-centos6&arch=$basearch&protocol=httpfailovermethod=priorityenabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/IUS-COMMUNITY-GPG-KEY

[ius-debuginfo]name=IUS Community Packages for Enterprise Linux 6 - $basearch - Debug#baseurl=https://dl.iuscommunity.org/pub/ius/stable/CentOS/6/$basearch/debuginfomirrorlist=https://mirrors.iuscommunity.org/mirrorlist?repo=ius-centos6-debuginfo&arch=$basearch&protocol=httpfailovermethod=priorityenabled=0gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/IUS-COMMUNITY-GPG-KEY

[ius-source]name=IUS Community Packages for Enterprise Linux 6 - $basearch - Source#baseurl=https://dl.iuscommunity.org/pub/ius/stable/CentOS/6/SRPMSmirrorlist=https://mirrors.iuscommunity.org/mirrorlist?repo=ius-centos6-source&arch=source&protocol=httpfailovermethod=priorityenabled=0gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/IUS-COMMUNITY-GPG-KEYEOF

New in version 3.2.0.

Install Sphinx search prerequisites

yum -y install unixODBC postgresql-libs

Install Sphinx search

wget -O /tmp/sphinx-2.2.8-1.rhel6.x86_64.rpm \https://support.montagehealthcare.com/downloads/sphinxsearch/sphinx-2.2.8-1.rhel6.x86_64.rpmrpm -Uvh /tmp/sphinx-2.2.8-1.rhel6.x86_64.rpm

New in version 3.2.0.

Install the python3.4 interpreter onto the system

6.1. Enterprise Linux 55

Page 62: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

yum -y install python34u

Note: This wsgi is built by montage to support the version of the python interpreter used for the Montage application

Ensure the proper wsgi is installed

rpm -Uvh https://support.montagehealthcare.com/downloads/modwsgi-py34-el/python34-mod_wsgi-4.5.3-1.montage.el6.x86_64.rpm

Ensure the local account are created linux-local-account-el

Ensure the following dependencies are installed

yum -y install openssh-clients openssh-server memcached \rabbitmq-server postgresql-server httpd mod_ssl \libxml2 libxslt openldap cyrus-sasl openssl \libjpeg zlib freetds blas lapack

Create the montage settings and license files

mkdir -p /etc/montage

Install the rpm

wget -O /tmp/montage.rpm [URL]rpm -Uvh /tmp/montage.rpm

Finish the installation Post-Install Actions

6.1.2 EL Version 7

Upgrades

Upgrading from 3.0 to the latest version of Montage

Stop services that are used by Montage

service httpd stopservice celeryd stopservice celerybeat stop

New in version 3.2.0.

Upgrading the sphinxsearch that is used with Montage

service searchd stopwget -O /tmp/sphinx-2.2.8-1.rhel7.x86_64.rpm \https://support.montagehealthcare.com/downloads/sphinxsearch/sphinx-2.2.8-1.rhel7.x86_64.rpmrpm -Uvh /tmp/sphinx-2.2.8-1.rhel7.x86_64.rpm

New in version 3.2.0.

Install the python3.4 interpreter onto the system

yum -y install python34

Note: This wsgi is built by montage to support the version of the python interpreter used for the Montage application

Ensure the proper wsgi is installed

56 Chapter 6. Linux Installation Guide

Page 63: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

rpm -Uvh https://support.montagehealthcare.com/downloads/modwsgi-py34-el/python34-mod_wsgi-4.5.3-1.montage.el7.x86_64.rpm

Remove the python2.7 wsgi configuration that is loaded by httpd

rm -rf /etc/httpd/conf.modules.d/10-wsgi.conf

New in version 3.2.0.

Install mod_ssl as is necessary for enabling https communications

yum -y install mod_ssl

Install the rpm

wget -O /tmp/montage.rpm [URL]rpm -Uvh /tmp/montage.rpm

New Install

New installation of the latest version of Montage

Disable selinx

sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/configreboot

Ensure wget is installed

yum install -y wget

Ensure the EPEL (Extra Packages for Enterprise Linux) repository is installed

wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

cat > /etc/yum.repos.d/epel.repo << "EOF"[epel]name=Extra Packages for Enterprise Linux 7 - $basearch#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearchmirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearchfailovermethod=priorityenabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

[epel-debuginfo]name=Extra Packages for Enterprise Linux 7 - $basearch - Debug#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch/debugmirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearchfailovermethod=priorityenabled=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7gpgcheck=1

[epel-source]name=Extra Packages for Enterprise Linux 7 - $basearch - Source#baseurl=http://download.fedoraproject.org/pub/epel/7/SRPMSmirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearchfailovermethod=priority

6.1. Enterprise Linux 57

Page 64: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

enabled=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7gpgcheck=1EOF

New in version 3.2.0.

Install Sphinx search prerequisites

yum -y install unixODBC postgresql-libs

Install Sphinx search

wget -O /tmp/sphinx-2.2.8-1.rhel7.x86_64.rpm \https://support.montagehealthcare.com/downloads/sphinxsearch/sphinx-2.2.8-1.rhel7.x86_64.rpmrpm -Uvh /tmp/sphinx-2.2.8-1.rhel7.x86_64.rpm

New in version 3.2.0.

Install the python3.4 interpreter onto the system

yum -y install python34

Note: This wsgi is built by montage to support the version of the python interpreter used for the Montage application

Ensure the proper wsgi is installed

rpm -Uvh https://support.montagehealthcare.com/downloads/modwsgi-py34-el/python34-mod_wsgi-4.5.3-1.montage.el7.x86_64.rpm

Ensure the local account are created Local Accounts

Ensure the following dependencies are installed

yum -y install openssh-clients openssh-server memcached \rabbitmq-server postgresql-server httpd mod_ssl \libxml2 libxslt openldap cyrus-sasl openssl \libjpeg zlib freetds blas lapack

Create the montage settings and license files

mkdir -p /etc/montage

Install the rpm

wget -O /tmp/montage.rpm [URL]rpm -Uvh /tmp/montage.rpm

Finish the installation Post-Install Actions

6.2 Ubuntu Linux

6.2.1 Ubuntu 10.04 (lucid)

Upgrades

Upgrading from 3.0 to the latest version of Montage

Stop services that are used by Montage

58 Chapter 6. Linux Installation Guide

Page 65: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

sudo service apache2 stopsudo service celeryd stopsudo service celerybeat stop

New in version 3.2.0.

Upgrading the sphinxsearch that is used with Montage

sudo service sphinxsearch stopwget -O /tmp/sphinxsearch_2.2.8-release-1montage~lucid_amd64.deb \https://support.montagehealthcare.com/downloads/sphinxsearch/sphinxsearch_2.2.8-release-1montage~lucid_amd64.debsudo dpkg --force-confnew -i /tmp/sphinxsearch_2.2.8-release-1montage~lucid_amd64.deb

New in version 3.2.0.

Download the python 3.4 compatible libapache2 wsgi

wget -O /tmp/libapache2-mod-wsgi-py3-montage_3.4-1_amd64.deb \https://support.montagehealthcare.com/downloads/modwsgi-lucid/libapache2-mod-wsgi-py3-montage_3.4-1_amd64.deb

Download the python 3 compatible freetds & unixodbc:

wget -O /tmp/odbc-lucid1.tgz \https://support.montagehealthcare.com/downloads/odbc/odbc-lucid1.tgztar -xzvf /tmp/odbc-lucid1.tgz -C /tmp

New in version 3.2.0.

Montage, the python2 compatible wsgi, and old freetds/unixodbc must be removed before installing the the Montage>= v3.2. No configuration file will be removed.

sudo apt-get -y remove montage libapache2-mod-wsgi odbcinst odbcinst1debian1 unixodbc freetds-common tdsodbc

Install the supported python language for Montage

sudo apt-get install -y libpython3.4 python3.4 python3.4-minimal

Install the custom compiled freetds & unixodbc to support 10.04:

sudo dpkg -i /tmp/freetds/freetds-common_0.91-1montage1_all.deb \/tmp/freetds/tdsodbc_0.91-1montage1_amd64.deb \/tmp/unixodbc/odbcinst1debian2_2.2.14p2-5ubuntu3montage1_amd64.deb \/tmp/unixodbc/odbcinst_2.2.14p2-5ubuntu3montage1_amd64.deb \/tmp/unixodbc/unixodbc_2.2.14p2-5ubuntu3montage1_amd64.deb \/tmp/unixodbc/libodbc1_2.2.14p2-5ubuntu3montage1_amd64.deb

Ensure the custom compiled mod_wsgi to support 10.04 is installed and configured

sudo dpkg -i /tmp/libapache2-mod-wsgi-py3-montage_3.4-1_amd64.debsudo bash -c 'cat > /etc/apache2/mods-available/mod_wsgi.load << "EOF"LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.soEOF'sudo a2enmod mod_wsgi

Install Montage

wget -O /tmp/montage.deb [URL]sudo dpkg -i /tmp/montage.deb

Bring Montage services online

6.2. Ubuntu Linux 59

Page 66: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

sudo service apache2 restartsudo service celeryd restartsudo service celerybeat restart

New Install

Warning: This is only applicable for internal QA, all installs of Lucid in production are upgrade only

Ensure the apt source list is pointing to old-releases Ubuntu 10.04 LTS is no longer supported

Download necessary packages that are not found in the internet repositories

wget -O /tmp/sphinxsearch_2.2.8-release-1montage~lucid_amd64.deb \https://support.montagehealthcare.com/downloads/sphinxsearch/sphinxsearch_2.2.8-release-1montage~lucid_amd64.debwget -O /tmp/libapache2-mod-wsgi-py3-montage_3.4-1_amd64.deb \https://support.montagehealthcare.com/downloads/modwsgi-lucid/libapache2-mod-wsgi-py3-montage_3.4-1_amd64.debwget -O /tmp/odbc-lucid1.tgz \https://support.montagehealthcare.com/downloads/odbc/odbc-lucid1.tgztar -xzvf /tmp/odbc-lucid1.tgz -C /tmp

Ensure that the proper version of RabbitMQ is installed Upgrade of RabbitMQ to support the latest installation withcelery

Ensure the system is upgraded to the latest available packages and install the following dependencies

export DEBIAN_FRONTEND=noninteractivesudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -ysudo -E apt-get install -y ntp screen postfix postgresql

Install the deadsnakes PPA to get other versions of the python environment as needed to operate Montage

sudo apt-get install -y python-software-propertiessudo apt-add-repository ppa:fkrull/deadsnakessudo apt-get update

Continue installing the appropriate dependencies

sudo apt-get install -y python3.4 libpython3.4 apache2sudo apt-get remove -y imagemagick

Ensure the local account are created Ubuntu

Create the database configurations

sudo -u postgres createuser -D -A -R montagesudo -u postgres psql -c "ALTER USER montage WITH PASSWORD 'montage'"sudo -u postgres createdb -O montage -E UTF8 montage

Ensure the custom compiled mod_wsgi, freetds, and unixodbc to support 10.04 is installed

sudo dpkg -i /tmp/libapache2-mod-wsgi-py3-montage_3.4-1_amd64.debsudo dpkg -i /tmp/freetds/freetds-common_0.91-1montage1_all.deb \/tmp/freetds/tdsodbc_0.91-1montage1_amd64.deb \/tmp/unixodbc/odbcinst1debian2_2.2.14p2-5ubuntu3montage1_amd64.deb \/tmp/unixodbc/odbcinst_2.2.14p2-5ubuntu3montage1_amd64.deb \/tmp/unixodbc/unixodbc_2.2.14p2-5ubuntu3montage1_amd64.deb \/tmp/unixodbc/libodbc1_2.2.14p2-5ubuntu3montage1_amd64.deb

60 Chapter 6. Linux Installation Guide

Page 67: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

Ensure the proper version of sphinx is installed

sudo dpkg -i /tmp/sphinxsearch_2.2.8-release-1montage~lucid_amd64.debsudo apt-get install -y -f

Create the montage configuration files location

sudo mkdir -pv /etc/montage

Place the settings.py and montage-modules.json into the Montage configuration directory/etc/montage/

Install the Montage application

wget -O /tmp/montage.deb [URL]sudo dpkg -i /tmp/montage.debsudo apt-get install -y -f

Finish the installation Post-Install Actions

6.2.2 Ubuntu 14.04 (trusty)

Upgrades

Upgrading from 3.0 to the latest version of Montage

Stop services that are used by Montage

sudo service apache2 stopsudo service celeryd stopsudo service celerybeat stop

New in version 3.2.0.

Upgrading the sphinxsearch that is used with Montage

sudo service sphinxsearch stopwget -O /tmp/sphinxsearch_2.2.8-release-1montage~trusty_amd64.deb \https://support.montagehealthcare.com/downloads/sphinxsearch/sphinxsearch_2.2.8-release-1montage~trusty_amd64.debsudo dpkg --force-confnew -i /tmp/sphinxsearch_2.2.8-release-1montage~trusty_amd64.deb

New in version 3.2.0.

Montage and the python2 compatible wsgi must be removed before installing the the Montage >= v3.2. No configu-ration file will be removed.

sudo apt-get -y remove montage libapache2-mod-wsgi

Install the new packages that are compatible with Montage

sudo apt-get install -y libpython3.4 libatlas3-base libapache2-mod-wsgi-py3

Install Montage

wget -O /tmp/montage.deb [URL]sudo dpkg -i /tmp/montage.deb

Bring Montage services online

6.2. Ubuntu Linux 61

Page 68: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

sudo service apache2 restartsudo service celeryd restartsudo service celerybeat restart

New Install

Ensure the system is updated to the latest packages

sudo apt-get updatesudo apt-get -y upgradesudo rebootsudo apt-get -y dist-upgradesudo reboot

Apply the firewall setting

sudo ufw allow httpsudo ufw allow httpssudo ufw allow sshsudo ufw --force enable

New in version 3.2.0.

Install the proper python packages and wsgi application

sudo apt-get -y install python3.4 libapache2-mod-wsgi-py3 libpython3.4

Install the Montage dependent packages

sudo apt-get -y install python-profiler apache2 libatlas3-base libpq5 \memcached mysql-common python-decorator python-pexpect \python-simplegeneric libjpeg8 zlib1g rabbitmq-serveripython-doc ipython-notebook ipython-qtconsole python-matplotlib \python-numpy python-zmq liblapack3 libblas3 unixodbc tdsodbc

wget -O /tmp/sphinxsearch_2.2.8-release-1montage~trusty_amd64.deb \https://support.montagehealthcare.com/downloads/sphinxsearch/sphinxsearch_2.2.8-release-1montage~trusty_amd64.debsudo dpkg -i /tmp/sphinxsearch_2.2.8-release-1montage~trusty_amd64.debsudo apt-get install -y -f

export DEBIAN_FRONTEND=noninteractivesudo -E apt-get -y install ntp screen postfix postgresql autosshsudo apt-get -y remove -y imagemagick

Ensure the local account are created Ubuntu

Create the Montage database user and Montage database

sudo -u postgres createuser -D -A -R montagesudo -u postgres psql -c "ALTER USER montage WITH PASSWORD 'montage'"sudo -u postgres createdb -O montage -E UTF8 montage

Create the montage configuration files location

sudo mkdir -pv /etc/montage

Place the settings.py and montage-modules.json into the Montage configuration directory/etc/montage/

Install the Montage application

62 Chapter 6. Linux Installation Guide

Page 69: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

wget -O /tmp/montage.deb [URL]sudo dpkg -i /tmp/montage.debsudo apt-get install -y -f

Finish the installation Post-Install Actions

6.3 Post-Install Actions

RadLex Ontology and Yottalook Ontology setup

sudo -u montage /usr/bin/montage loaddata /var/lib/montage/fixtures/initial_data.jsonsudo -u sphinx indexer --all --rotate

The Sphinx search service name differs from Debian based system to EL based systems

6.3.1 Ubuntu systems

Restart sphinx service

sudo sed -i 's/^START=no/START=yes/g' /etc/default/sphinxsearchsudo service sphinxsearch restart

6.3.2 EL systems

Restart sphinx service

sudo service searchd restart

6.4 ODBC drivers

Note: On systems where the install time user is not root, the command will need to be in the form sudo bash -c‘<command>’

If the system will be crawling an external source, the following will need done

cat >> /etc/odbcinst.ini << "EOF"

# Driver for the FreeTDS package[FreeTDS]Description = TDS driver (Sybase/MS SQL)Driver = /usr/lib64/libtdsodbc.so.0Setup = /usr/lib64/libtdsS.so.2CPTimeout =CPReuse =EOF

Continue with crawler configuration in settings.py _commands-run-importer

6.3. Post-Install Actions 63

Page 70: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

6.5 Local Accounts

Creation of local accounts are used for support as well if the customer needs access to the system.

6.5.1 Ubuntu

Create system users for Montage support and the Customer

sudo useradd -d /home/montage-admin -m --shell /bin/bash montage-adminsudo adduser montage-admin sudosudo useradd -d /home/montage-local -m --shell /bin/bash montage-localsudo adduser montage-local sudosudo passwd montage-adminsudo passwd montage-local

6.6 Linux Frequently Asked Questions

Also see Frequently Asked Questions.

• Ubuntu 10.04 LTS is no longer supported• Upgrade of RabbitMQ to support the latest installation with celery

6.6.1 Ubuntu 10.04 LTS is no longer supported

Ubuntu has discontinued updates for packages related to the 10.04 release. Montage is still supporting (only forexisting customer) operating on the Ubuntu Lucid platform. No new installs shall be performed onto Ubuntu Lucid,please see the server Montage Server Requirements to ensure new installs adhere to the latest support versions.

Be sure to update the source list for apt to use the old-releases location

sudo sed -i 's%us.archive.ubuntu.com%old-releases.ubuntu.com%g' /etc/apt/sources.listsudo sed -i 's%deb http://security.ubuntu.com/ubuntu lucid-security%#deb http://security.ubuntu.com/ubuntu lucid-security%g' /etc/apt/sources.listsudo sed -i 's%deb-src http://security.ubuntu.com/ubuntu lucid-security%#deb-src http://security.ubuntu.com/ubuntu lucid-security%g' /etc/apt/sources.listsudo apt-get update

6.6.2 Upgrade of RabbitMQ to support the latest installation with celery

Warning: Installation will state that it failed due to dependencies missing

Prior to installing the RabbitMQ, be sure to update the apt source list Ubuntu 10.04 LTS is no longer supported

Upgrade RabbitMQ server on Ubuntu Lucid to ensure compatibility with Montage and its celery dependency

wget -O /tmp/rabbitmq-server_2.5.1-1_all.deb https://support.montagehealthcare.com/downloads/vmware/rabbitmq-server_2.5.1-1_all.debsudo dpkg -i /tmp/rabbitmq-server_2.5.1-1_all.debsudo apt-get install -y -f

64 Chapter 6. Linux Installation Guide

Page 71: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

CHAPTER

SEVEN

SOURCE SYSTEM CRAWLERS

Montage provides a crawler framework, which contains specific adapters for various vendors’ systems and for bothstandard and custom protocols.

7.1 General Crawler Configuration

Crawlers are defined by adding tasks the the CELERYBEAT_SCHEDULE in settings.py (also see CELERY-BEAT_SCHEDULE).

• Template• Parameters

– Importer Name– task– schedule– importer– offset– params

* source_system

* db_url

* timezone

* detect_qc

* crawl_radimetrics

* import_modality

* exam_codes_are_unique

* ignore_patient_geo• Example• Crawler-specific Options

7.1.1 Template

In settings.py:

from celery.schedules import crontabCELERYBEAT_SCHEDULE[<crawler name>] = {

'task': 'montage_importer.tasks.import_recent_reports','schedule': crontab(hour=1, minute=0),'kwargs': {

'importer': <importer class>,'params': {

65

Page 72: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

'source_system': <source system>,'db_url': <connection string>,'timezone': <timezone>,

# optional'detect_qc': <True|False (default)>,'crawl_radimetrics': <True|False (default)>,'import_modality': <'default' (default)|'off'>,'exam_codes_are_unique': <True (default)|False>,'ignore_patient_geo': <True|False (default)>,

},

# optional'offset': timedelta(days=<number of days>),

},}

7.1.2 Parameters

Importer Name

The crawler name is the key of the CELERYBEAT_SCHEDULE dictionary. It can be any string value. It is used whenperforming the initial data load to identify which crawler is to be run. For example “ris-import”:

CELERYBEAT_SCHEDULE['ris-import'] = {...

}

task

Celerybeat is a generic framework for executing scheduled tasks, when defining a crawler task, we always use themontage_importer.tasks.import_recent_reports task.

schedule

The schedule on which to run the task. Should be a crontab instance.

The crontab can look like:

Example Meaningcrontab(minute=”*/15”) Execute every 15 minutescrontab(minute=0, hour=0) Execute everyday at midnight

The crontab class must be imported prior to the CELERYBEAT_SCHEDULE:

from celery.schedules import crontab

importer

The class name of the specific crawler adapter we will use to connect to the Source System, each vendor typicallyrequires its own adapter.

66 Chapter 7. Source System Crawlers

Page 73: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

offset

The crawler, by default, will crawl only the reports that have been modified since the last successful crawl. We canadd the offset parameter, to expand that range to, for example, one days before the last successful crawl, just tomake sure we get everything.

The offset parameter is more useful in systems that lack “last modified” timestamp. However, most source systemsprovide a last modified timestamp that the crawler will automatically use.

The offset value must be a datetime.timedelta

params

A dictionary of parameters that get passed to importer when the class is initialized.

source_system

The name we give to the Source System, this name must match the index definition in MONTAGE_INDEXES. If thissource_system does not currently exist in the Montage database, it will be created (therefore, the source system shouldlikely not be renamed after reports have already been crawled from the source system).

db_url

The connection string for the Source System’s database. See Database URL for specific details. The type of connectionstring will depend upon which specific importer is used.

timezone

Internally, Montage stores all dates in UTC, converting on-demand to the user’s preferred timezone. However, mostSource Systems store dates in the local time, e.g. dates in PowerScribe 360 at a hospital in Philadelphia, PA, areassumed to be in the US/Eastern local time. In order to store as UTC in Montage, each crawler must define whattimezone the source system stores the dates in. Almost always it is the local timezone. This option is not requiredif the source system’s database stores dates as timezone-aware. However, in practice, almost no source system storestimezone-aware dates, only timezone-naive dates. Therefore, the timezone parameter is almost always required. Validtimezones include:

• UTC

• US/Eastern

• US/Central

• US/Mountain

• US/Arizona

• US/Pacific

• US/Alaska

• US/Hawaii

7.1. General Crawler Configuration 67

Page 74: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

detect_qc

For each report that is imported, run the QC detection algorithms on it to find QC issues. Detection occurs via the taskqueue asynchronously.

The value defaults to False, since Montage QC is being gradually implemented at sites and since it is only availablefor Radiology indexes. To enable QC detection, the value must be set to True.

crawl_radimetrics

For each report that is imported, look up the report via the Radimetrics eXposure API. Lookup occurs asynchronouslyvia the task queue.

The value defaults to False, since many sites do not have Radimetrics and Montage, and since it will only work forRadiology indexes. To enable crawling of the eXposure API, the value must be set to True. The appropriate values insettings.py must also be in place to enable the integration (e.g. eXposure URL and credentials).

import_modality

New in version 2.3.

For many crawlers, Montage will attempt to obtain a mapping from Exam Types to Modality from the source system.If this mapping is not preferred and the site wishes to manage the mapping manually in Montage, this value can be setto “off”.

exam_codes_are_unique

New in version 2.4.5.

For a few customers, multiple exam types may share the same code (this is rare). In this case, Montage can treat theprocedures as separate by making the code and description unique together, when this value is set to False. The defaultvalue, True, keeps one Exam Type per code.

A downside of setting to False is that the Exam Type will no longer receive updates from upstream on spelling changesto the exam description.

ignore_patient_geo

New in version 2.4.

Some crawlers (not all) are able to pull geographic data about patients, such as Zip code, Address, City, & State,which is used in Montage’s Geoanalytics. If the crawler can pull this information, but the customer does not to usethis information, this value can be set to True.

7.1.3 Example

Below is a full example, which crawls a PowerScribe 360 database every night at 1:00 AM. For the connection string,db_url, we connect to the “Comm4” database on the SQL Server at 192.168.42.178, using the “montage” account,which has the password “montage”. (For more details, see ODBC connection string)

Based upon the customer location, we set the timezone to US/Eastern. We are calling the Source System “Power-scribe360” and we have named this specific crawler “ps360”.

68 Chapter 7. Source System Crawlers

Page 75: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

from celery.schedules import crontabfrom datetime import timedeltaimport urllib.parseCELERYBEAT_SCHEDULE['ps360'] = {

'task': 'montage_importer.tasks.import_recent_reports','schedule': crontab(hour=1, minute=0),'kwargs': {

'importer': 'montage_importer.importers.vendor.nuance.Powerscribe360','params': {

'source_system': 'Powerscribe360','db_url': 'mssql+pyodbc:///?odbc_connect=' + urllib.parse.quote_plus('DRIVER={SQL Server};SERVER=192.168.42.178;DATABASE=Comm4;UID=montage;PWD=montage'),'timezone': 'US/Eastern'

},'offset': timedelta(days=1),

},}

7.1.4 Crawler-specific Options

See crawler documentation for specific additional options:

• Nuance

7.2 Database URL

7.2.1 ODBC Connection String

import urllib.parse...'db_url': 'mssql+pyodbc:///?odbc_connect=' + urllib.parse.quote_plus('DRIVER={SQL Server};SERVER=server;DATABASE=database;UID=user;PWD=password'),

7.2.2 MySQL Connection String

...

7.3 Nuance

The Nuance crawlers make use of an ODBC connection to crawl the Microsoft SQL Server.

7.2. Database URL 69

Page 76: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

• Crawler Compatibility• PowerScribe 360

– Additional Parameters* patient_status

* use_site_location_as_organization

* limited_site_names

* excluded_exam_codes

* overwrite_on_imported_addendum• RadWhere• PowerScribe

7.3.1 Crawler Compatibility

Mon-tage

PS 4.x 1 PS 5.x1

Rad-Where

PS3601.x

PS3602.0

2.1 y y2.2 y y2.3 y y y2.4 y y y2.5 y y y3.0+ y y y

7.3.2 PowerScribe 360

Importer Class: montage_importer.importers.vendor.nuance.Powerscribe360

Example configuration:

from celery.schedules import crontabfrom datetime import timedeltaimport urllib.parseCELERYBEAT_SCHEDULE['ps360'] = {

'task': 'montage_importer.tasks.import_recent_reports','schedule': crontab(hour=1, minute=0),'kwargs': {

'importer': 'montage_importer.importers.vendor.nuance.Powerscribe360','params': {

'source_system': 'Powerscribe360','db_url': 'mssql+pyodbc:///?odbc_connect=' + urllib.parse.quote_plus('DRIVER={SQL Server};SERVER=192.168.42.178;DATABASE=Comm4;UID=montage;PWD=montage'),'timezone': 'US/Eastern'

},'offset': timedelta(days=1),

},}

Additional Parameters

This additional parameters can be cnfigured in a [’params’][’powerscribe’] dictionary:

1PowerScribe 4.x and 5.x are supported via HL7

70 Chapter 7. Source System Crawlers

Page 77: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

CELERYBEAT_SCHEDULE['ps360'] = {...'kwargs': {

'importer': 'montage_importer.importers.vendor.nuance.Powerscribe360','params': {

'source_system': 'Powerscribe360',...

'powerscribe': {'use_site_location_as_organization': <True|False (default)>,'patient_status': <mapping dict>,

},},

...},

}

patient_status

Defaults to None, but can be configured with a dict of mappings into the I/E/O structure:

'patient_status': {'C': 'I','P': 'O',

},

use_site_location_as_organization

If set to True, pull the Organization from SiteLocation as opposed to Site.

limited_site_names

New in version 2.4.

If set to a list of names from the Site.Name data in PS360 (e.g. [’Baptist’, ’University’]), the crawlerquery will only pull information from these sites.

excluded_exam_codes

New in version 2.5: # Do not pull over reports with these exam codes. This operation # may not be efficient (TODOlook into a normalized restriction) # Refs #1391 ‘excluded_exam_codes’: None,

overwrite_on_imported_addendum

New in version 2.4.

If set to True, Montage will only use the Addendum text when constructing the full Report Text when Re-port.IsAddendum is true. This is useful mainly when historical HL7 imported into PS360 did not split original reporttext from addendum text.

7.3. Nuance 71

Page 78: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

7.3.3 RadWhere

Importer Class: montage_importer.importers.vendor.nuance.RadWhere

Example configuration:

from celery.schedules import crontabfrom datetime import timedeltaimport urllib.parseCELERYBEAT_SCHEDULE['radwhere-import'] = {

'task': 'montage_importer.tasks.import_recent_reports','schedule': crontab(hour=1, minute=0),'kwargs': {

'importer': 'montage_importer.importers.vendor.nuance.RadWhere','params': {

'source_system': 'RadWhere','db_url': 'mssql+pyodbc:///?odbc_connect=' + urllib.parse.quote_plus('DRIVER={SQL Server};SERVER=192.168.42.178;DATABASE=Comm4;UID=montage;PWD=montage'),'timezone': 'US/Eastern'

},'offset': timedelta(days=1),

},}

7.3.4 PowerScribe

Powerscibe differs significantly from RadWhere and PowerScribe 360. At this time Montage does not provide acrawler for PowerScribe. However, if interest exists, Montage Healthcare Solutions can develop a crawler for Power-Scribe.

7.4 Montage HL7 Interface Specification

Montage can be configured with an HL7 listener based on the Minimal Lower Level Protocol (MLLP), consumingORU^R01 messages that contain the report text and associated metadata. By default, this HL7 listener consumes dataon port 6661.

Montage Support must be involved to assess feasibility, enable the HL7 listener, and validate the data. MontageSupport should be provided with an accurate sampling of de-identified HL7 messages to ensure proper mapping.

The following tables describe the fields and events that Montage is able to consume. Data must be sent according tothis specification. Any deviation, may not be supported (contact Montage Support).

7.4.1 HL7 Fields

Note: Fields represented in bold are required by Montage.

72 Chapter 7. Source System Crawlers

Page 79: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

Field Segment Component Subcomponent CommentsSource System MSH 3 0Organization MSH 6 0Accession Number OBR 3 0 Must uniquely identify a report.Report Text OBX 5 0 Each OBX segment is treated as

one line.Procedure Code OBR 4 0Procedure Description OBR 4 1Modality Disabled by default.Patient MRN PID 3 0 Must uniquely identify a patient.Patient Last Name PID 5 0Patient First Name PID 5 1Patient Date of Birth PID 7 0 Format: YYYY[MM[DD]]Patient Sex PID 8 0Patient Address PID 11 0Patient City PID 11 2Patient State PID 11 3Patient Zip PID 11 4Patient Status PV1 2 0 Format: “I”, “O”, or “E”. If there

are others, must be configured intoI/O/E.

Point of Care PV1 3 0Is Stat ORC 7 6 Format: “S”. Any other character is

considered is Non-Stat.Scheduled Timestamp Disabled by default.Ordered Timestamp Disabled by default.Ordering Provider ID OBR 16 0 2

Ordering Provider Last Name OBR 16 1Ordering Provider First Name OBR 16 2Patient Arrived Timestamp Disabled by default.Exam Started Timestamp Disabled by default.Exam Viewed Timestamp Disabled by default.Exam Completed Timestamp OBR 7 0 Format using standard HL7 TS no-

tation.Result Status OBR 25 0 See Result Status <hl7-result-

status>

7.4.2 HL7 Reporting Events

Montage will consume updates to reports via HL7 according to OBR-25. As the HL7 message is received, Montagewill use OBR-25 to determine whether it represents a Preliminary event, a Finalized event, or an Addendum Event (seeResult Status). Based upon the Result Status value, Montage will associate the Timestamp (OBR-22) and Provider(OBR-32) with this event, as detailed in Reporting Event.

During this process, Montage will update the fields above and the report text with the latest available values.

For example, if a resident authors a preliminary report (first HL7 message, OBR-25 is “P”), Montage will store thereport as it exists, with the resident in OBR-32 as the preliminary author and OBR-22 as the preliminary time. Then,once an attending signs the report (a second HL7 message, OBR-25 is “F”), Montage will update any relevant valuesand store the attending (OBR-32) as the finalizing provider and OBR-22 as the finalized time. If an addendum is later

2By default we assume that the Ordering ID and Reporting ID numbers do not overlap. For example, Ordering ID 3 must not be a differentperson than than Reporting ID 3. If this is not the case, Montage Support must adjust the HL7 profile

7.4. Montage HL7 Interface Specification 73

Page 80: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

issued (third HL7 message, OBR-25 is “C”), Montage will update the report and store the radiologist (OBR-32) asthe addendum provider and OBR-22 as the addendum time.

Result Status

Event Result Status (OBR-25)Preliminary Event “P”Finalized Event “F”Addendum Event “C”

Note: OBR-25 must be set appropriately for all messages.

Reporting Event Definition

Field Seg-ment

Com-po-nent

Sub-com-po-nent

Comments

ReportingTimestamp

OBR 22 0 3

ReportingProvider ID

OBR 32 0 1

ReportingProviderLast Name

OBR 32 1

ReportingProviderFirst Name

OBR 32 2

7.5 Montage File Format Extract Specification

Montage can watch a directory for new files and import any files. Montage’s ability to import both structured andun-structured files make it excellent for searching legacy information systems.

7.5.1 File Format Types

Montage can crawl the following file types:

• Delimited Files

– Comma separated value (CSV)

– Tab separated value (TSV)

– Other delimiters, e.g. piped delimited

• XML Files

• Plain Text Files3Unless otherwise noted, timestamps are expected to be formatted using the notation described in section 2.A.22 of the HL7 V2.5-2003 standard.

YYYY[MM[DD[HH[MM[SS[.S[S[S[S]]]]]]]]][+/-ZZZZ]

74 Chapter 7. Source System Crawlers

Page 81: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

7.5.2 Delimited Files

The files should follow the RFC 4180 specification. This includes:

• Each report must occupy one row in the file

• The first row must be a header.

– Montage keys off the column names, so it is imperative that these names remain constant over time.

– Ordering of the columns does not matter.

– There should be no other header or footer rows

• Fields must be quoted by double quote characters ("), if:

– The field’s content has internal newlines (i.e. the report text)

– The field’s content includes the delimiter character (e.g. comma if CSV, tab if TSV, etc.)

– Fields with internal double quotes, must be escaped by replacing the single double-quote with a pair ofdouble quotes (e.g. he said, "Hello, turns into he said, ""Hello)

• Any delimiter is acceptable, as long as it is properly quoted when that delimiter character appears inside thecontent, as mentioned above.

• Ideally the file will be in UTF-8, with no Byte Order Mark (BOM).

– If not in UTF-8, the exact encoding must be communicated to Montage Support.

– The file should be tested with non-ASCII characters. For example, common non-ASCII characters thathave alternate representation depending upon the encoding include the left double quotation mark, “ (Uni-code: U+201C), and the degree sign ° (Unicode: U+00B0)

• Dates should follow ISO 8601 (e.g. YYYY-MM-DD HH:MM:SS), though Montage can understand most datesMicrosoft Excel parses. Unless specified, it is assumed that the dates are in the local timezone.

• Microsoft Excel must be able to open or import the file and the contents must be displayed in the correct columnsand rows. A common issue is that internal newlines are not properly quoted

If the file does not meet this specification, it is possible that Montage still may be able to crawl it, but it may takesignificant additional resources to properly handle ill-formed data.

Note: In the below explains we use \n to represents an ASCII “LF” (line feed) and \r to represent an ASCII “CR”(carriage return), which are non-visual characters. The files must encode line feeds and carriage returns in as actualthe ASCII values at both the end of the rows as well when inside the cells’ values (e.g. you should not be able to eversee “rn” when opening up in Excel).

CSV File Format Example:

An example that demonstrates proper field quoting with internal newlines, quotes, and commas a CSV formatted file:

Accession,Organization,Exam Code, Exam Description,Exam Date,Report Text\r\n123,Baptist,CT120,CT of Head,2012-04-26 11:00:32,"History:\nInternal newline"\r\n124,Lutheran,CT120,CT of Head,2012-04-26 11:13:00,"Internal comma, and ""quote"" are escaped"\r\n

Pipe-Delimited Example:

The following is an example that demonstrates proper field quoting with internal newlines, quotes, and commas of apipe-delimited file:

7.5. Montage File Format Extract Specification 75

Page 82: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

ACCESSION_NUM|PROCEDURE_ID|PROCEDURE_NAME|MODALITY|PAT_MRN_ID|PAT_LAST_NAME|PAT_FIRST_NAME|PAT_MIDDLE_NAME|BIRTHDATE|GENDER|PATIENT_ADDRESS1|PATIENT_ADDRESS2|PATIENT_CITY|PATIENT_STATE|PATIENT_ZIP_CODE|PATIENT_STATUS|IS_STAT|ORDERING_PROVER_ID|ORDERING_PROVIDER|ORDER_DATE_AND_TIME|COMPLETED_DATE_AND_TIME|PRELIMINARY_PROVER_ID|PRELIMINARY_PROVIDER|PRELIMINARY_DATE_AND_TIME|SIGNED_PROVER_ID|SIGNING_PROVIDER|READING_ DATE_AND_TIME|REPORT_TEXT\n123456789|HEXU|CT HEAD UNENHANCED|CT|55555555|Kidman|Nicole||19650128|Female|123 TEST DRIVE||LOS ANGELES|CALIFORNIA|98765|EMERGENCY|Y|2323|PROVIDER, ORDERING|201109031522|201109040855|1212|PROVIDER, PRELIMINARY|201109040910|1234|PROVIDER, SIGNING|201109040916|"INDICATION:\nFrontal headache.\n\nHEAD: Noncontrast axial images through the brain demonstrate\nno intracranial hemorrhage or mass. The ventricles are normal in size. There is no extraaxial\nfluid collection or midline shift. The osseous structures are intact.\n\nIMPRESSION:\n\n1. No evidence for acute intracranial abnormality.\n\nEND OF IMPRESSION"\n

Common Problems

The file opens in Microsoft Excel, but the report text is spread across multiple rows.

The report text field is not properly escaped by quoting. Ensure the report text fields start and end withdouble quotes and that any internal double quotes are escaped by a pair of double quotes.

If the quoting approach is not feasible for some reason, it may be possible (with additional effort), to con-sume reports where the newline characters have been replaced or escaped by some other means. ContactMontage Support for assistance.

Fields

The following tables list the fields that are either required or suggested to be imported into Montage.

Table 7.1: Required Fields

Field CommentFacilityAccession NumberReport TextProcedure CodeProcedure DescriptionPatient MRNExam Completed Timestamp Format: YYYY-MM-DD HH:MM:SSReporting Provider ID*Reporting Provider Last NameReporting Provider First NameFinalized/Reporting Timestamp Format: YYYY-MM-DD HH:MM:SS

76 Chapter 7. Source System Crawlers

Page 83: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

Table 7.2: Suggested Fields

Field CommentPoint of CareProcedure ModifierModalityIs Stat?Scheduled Timestamp Format: YYYY-MM-DD HH:MM:SSOrdering Provider ID*Ordering Provider Last NameOrdering Provider First NameOrdered Timestamp Format: YYYY-MM-DD HH:MM:SSPatient Arrived Timestamp Format: YYYY-MM-DD HH:MM:SSExam Started Timestamp Format: YYYY-MM-DD HH:MM:SSExam Viewed Timestamp Format: YYYY-MM-DD HH:MM:SSPreliminary Provider ID*Preliminary Provider Last NamePreliminary Provider First NamePreliminary Timestamp Format: YYYY-MM-DD HH:MM:SSAddendum Provider ID*Addendum Provider Last NameAddendum Provider First NameAddendum Timestamp Format: YYYY-MM-DD HH:MM:SSPatient Status Format: “I”, “O”, or “E”. * If there are others, we can map them into I/O/E.Patient Last NamePatient First NamePatient Date of Birth Format: YYYY-MM-DD HH:MM:SSPatient SexPatient AddressPatient CityPatient StatePatient Zip

7.5.3 XML Files

Custom XML file formats can be consumed. Contact Montage Support.

7.5.4 Plain Text Files

Custom plain text (unstructured) files can sometimes crawled. Contact Montage Support for an analysis.

7.5.5 Other

Contact Montage Support for an effort analysis.

Note: It is important to note that the Montage crawler is idempotent, meaning reports can safely be re-importedmultiple times. Before the crawler inserts the report into the Montage database, it checks to see if the report alreadyexists. If the report already exists, the existing record is updated. So Montage only contains the latest informationabout a given report.

7.5. Montage File Format Extract Specification 77

Page 84: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

Montage contains crawlers for a number of additional vendors. Additionally, Montage contains HL7, CSV, and XMLcrawlers. If a customer is interested in interfacing with another Source System, please contact Montage HealthcareSolutions.

78 Chapter 7. Source System Crawlers

Page 85: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

CHAPTER

EIGHT

SETTINGS

The primary location to configure the Montage Server is in settings.py (typically located in /etc/montageon Linux and C:\montage\config on Windows). settings.py is a Python source file, which adds a smallamount of complexity, but allows us to easily define interesting and complicated configurations. There are severaladditional settings that are controllable via the web-interface (thus allowing an admin at a customer site to adjust thesettings). However the settings in settings.py should only be adjusted by someone knowledge in their impact.

Note: On Windows, since Python treats “\” as an escape character, all file and directory paths must use “\\” instead.For example, C:\montage should actually be C:\\montage

To apply changes after settings.py is saved, Apache must be restarted. On Linux service apache2restart will reload the Montage Server. On Windows, restart Apache via the Services tool.

8.1 Authentication

See the related LDAP Settings section.

8.1.1 MONTAGE_AUTH_INTERNAL_IS_PRIMARY

Default: True

If set to False, hides many of the tools for managing internal passwords. Useful for LDAP-only configurations.

8.1.2 MONTAGE_AUTH_ALLOW_RESETS_VIA_EMAIL

Default (on Windows): False Default (on Linux): True

If True, users can request and receive a unique password reset email. If False, a Montage administrator must gointo the Admin, click the “Reset Password” button for the user and manually communicate the unique URL to theuser.

Requires a valid Email configuration. On most Linux installs, a local Postfix install is present and automaticallyconfigured (though using an external SMTP server is still recommended). On all Windows installs, no mail server ispresent and an external EMAIL_HOST (and related settings) must be configured.

8.1.3 MONTAGE_AUTH_ALLOW_PASSWORD_CHANGE

Default: True

If set to False, users can not change their internal password. Useful for LDAP-only authentication configurations.

79

Page 86: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

8.2 Crawlers

Crawlers allow Montage to extract data from external systems. See General Crawler Configuration for details onconfiguring crawlers.

8.3 Email

On Windows, email is disabled by default. On Linux, Montage will try to use a local SMTP mailer (though this methodcan often get marked as spam). Therefore, it is recommended if wishing to use password resets or other outboundemail features of Montage, an appropriate EMAIL_HOST should be configured with valid local email addresses inSERVER_EMAIL and DEFAULT_FROM_EMAIL.

8.3.1 SERVER_EMAIL & DEFAULT_FROM_EMAIL

Default: ’[email protected]

DEFAULT_FROM_EMAIL is the From address for emails sent to users, SERVER_EMAIL is the From address forerror emails sent to ADMINS. Both of these settings should be changed to a valid, customer-specific address.

The email address can be the same for both settings.

Warning: If the default is not changed to a valid, local email address, it is likely that users’ email clients willmark any email coming from the Montage server as spam, since the montagehealthcare.com domain has a specificdefined list of valid SMTP servers that may send email on its behalf.

8.3.2 EMAIL_HOST

Default: ’localhost’

The host to use for sending email.

8.3.3 EMAIL_HOST_PASSWORD

Default: ’’ (Empty string)

Password to use for the SMTP server defined in EMAIL_HOST. This setting is used in conjunction withEMAIL_HOST_USER when authenticating to the SMTP server. If either of these settings is empty, Montage won’tattempt authentication.

8.3.4 EMAIL_HOST_USER

Default: ’’ (Empty string)

Username to use for the SMTP server defined in EMAIL_HOST. If empty, Montage won’t attempt authentication.

8.3.5 EMAIL_PORT

Default: 25

Port to use for the SMTP server defined in EMAIL_HOST.

80 Chapter 8. Settings

Page 87: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

8.3.6 EMAIL_USE_TLS

Default: False

Whether to use a TLS (secure) connection when talking to the SMTP server.

8.3.7 EMAIL_SUBJECT_PREFIX

Default: ’[Montage] ’

The prefix for email messages coming from the Montage server.

8.3.8 ADMINS

Default: () (Empty tuple)

A tuple that lists people who get code error notifications. Montage will email these people with the full exceptioninformation. Each member of the tuple should be a tuple of (Full name, email address). Example:

ADMINS = (('John', '[email protected]'), ('Mary', '[email protected]'))

8.4 External Launchers

Provide buttons to launch PACS or other web-based viewers for each report.

Requires the site has a PACs that can accept some context (typically the report’s accession number) as a URL parameterto launch the PACS.

Montage ships with a number of built-in launchers, including the ability to check permissions and perform auditlogging. Additionally, custom launcher logic can be defined, for instance if at a multi-organization site, multiplePACS exists, holding different subsets of images.

For all builtin launchers, the Can use external launchers (e.g. PACS) permission will be checked. If a user or grouplacks this permission, the user will not see the button to view images.

8.4.1 MONTAGE_EXTERNAL_LAUNCHERS

New in version 2.5.

Default: None

Takes a list of launchers and the parameters those launchers require. Each report can have multiple launchers (new in2.5). Each launcher is configured with a list of source_systems it should be shown for. If a report is from thatsource system, the button will be displayed.

The launchers are typically configured with a url template that can make use of the Available Context to interpolatedata such as the accession number into a URL to direct the browser to.

See further below for a full example, but the general pattern looks like:

MONTAGE_EXTERNAL_LAUNCHERS = [('montage_external_launcher.launchers.SimpleLauncher', {'label': 'View Images','url': 'https://pacs.hospital.org?acc={report.accession_number}','source_systems': ['Powerscribe360'],

8.4. External Launchers 81

Page 88: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

'title': 'Open this study in the web PACS viewer',}),

]

Note, prior to Montage 2.5, launchers were defined per-index (typically as def external_launcher() in in-dexes.py). As of 2.5, this approach is deprecated and will be removed in an upcoming release.

8.4.2 Launchers

montage_external_launcher.launchers.SimpleLauncher

The SimpleLauncher puts a direct link to the viewer system, much like the pre-2.5 style external_launcher.The link will open a new browser window to the image viewer.

Required Parameters:

• ’url’ - Launch URL template, that can use the Available Context. For example,’https://pacs.hospital.org?acc={report.accession_number}’

• ’label’ - Label on the button (e.g. ’View Images’)

• ’source_systems’ - a list of Source System that the launcher should apply to.

Optional Parameters

• ’window_name’ - Name used by window.open. Default: ’webpacs’

• ’window_features’ - Features passed to window.open

• ’title’ - Message that is displayed when hovering above the button

montage_external_launcher.launchers.RedirectLauncher

Similar to the SimpleLauncher, but indirectly links to the viewing system, by hitting the Montage server again andusing a HTTP Redirect to bounce over to the viewing system. This approach “hides” the URL context a bit better thanthe SimpleLauncher (e.g. if a username / password must be placed in the url). The RedirectLauncher also audit logsany time a user clicks on the launcher button.

Takes the sample Required and Optional Parameters as the SimpleLauncher, but additionally requires:

• ’slug’ - A string used to uniquely identify this launcher. If multiple launchers are configured, they each musthave a different slug.

Custom Launchers

Custom launchers can be defined that have different launching rules or approaches. Contact Montage Support forassistance.

Typically this involves defining a custom subclass of BaseLauncher or SimpleLauncher and overriding the render()or get_render_context() methods.

8.4.3 Available Context

Two variables are typically available in the context used to define the url: report and user. Each of these variableshave attributes that can be accessed in the template.

• report

82 Chapter 8. Settings

Page 89: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

– accession_number

– patient_mrn

• user

– username

– first_name

– last_name

For example, to pass the accession number and current username:

'url': 'https://pacs.hospital.org?acc={report.accession_number}&user={user.username}'

8.4.4 Examples

An example using that will add two launchers for the IDXRad system. One is a direct SimpleLauncher and one is anaudited RedirectLauncher:

MONTAGE_EXTERNAL_LAUNCHERS = [('montage_external_launcher.launchers.SimpleLauncher', {

'label': 'View Images','url': 'https://pacs.hospital.org?acc={report.accession_number}','source_systems': ['IDXRad'],'title': 'Open report in new web PACS window'

}),('montage_external_launcher.launchers.RedirectLauncher', {

'slug': 'pacs','label': 'View Images','url': 'https://pacs2.hospital.org?acc={report.accession_number}','source_systems': ['IDXRad'],

}),]

8.5 File Locations

Note: On Windows, since Python treats “\” as an escape character, all file and directory paths must use “\\” instead.For example, C:\montage should actually be C:\\montage

8.5.1 MEDIA_ROOT

Linux Default: /var/lib/montage/static

Windows Default: C:\\montage\\data\\static

Location where uploaded files are stored. It is served by Apache at /media/

8.5.2 STATIC_ROOT

Linux Default: /var/lib/montage/static

8.5. File Locations 83

Page 90: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

Windows Default: C:\\montage\\data\\static

Location where Montage’s static files (CSS, JS, images) are stored. It is served by Apache at /static

8.6 General Settings

8.6.1 SECRET_KEY

Default: ‘’ (Empty string)

A secret key for this particular Montage installation. Used to provide a seed in secret-key hashing algorithms and tocheck the Montage license.

8.6.2 MONTAGE_NUANCE_AUTH_KEY

Default: None

A shared secret between PowerScribe 360 and Montage to allow for auto-logins by PS360 users into Montage. Stillrequires that the user accounts exist and have the proper permissions in Montage.

8.6.3 DATABASES

Default:

DATABASES = {'default': {

'HOST': 'localhost', # PostgreSQL server IP / host'PORT': '5432', # PostgreSQL port'NAME': 'montage', # database name'USER': 'montage', # name of database user'PASSWORD': 'montage',

}}

The connection information for the Montage database connection. Individual settings may be customized:

DATABASES['default']['NAME'] = 'montage_test'DATABASES['default']['PASSWORD'] = 'SuperSecretPassword'

8.6.4 CELERYBEAT_SCHEDULE

A dictionary of the scheduled tasks. Often used for General Crawler Configuration. A number of tasks are shipped aspart of the montage_basesite.settings, thus CELERYBEAT should only be added to by individual key:

from celery.schedules import crontabCELERYBEAT_SCHEDULE['my_task'] = {

'task': 'path.to.my_task',# execute daily, at 1AM local'schedule': crontab(hour=1, minute=0),

}

84 Chapter 8. Settings

Page 91: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

8.6.5 MONTAGE_REQUESTS_PROXIES

New in version 2.4.

Default: None (no proxies)

An optional dictionary of HTTP proxies to use when Montage requests external internet sites (e.g.stats.montagehealthcare.com or yottalook.com).

Should use protocol (http, https) as the key and the proxy server as the value:

MONTAGE_REQUESTS_PROXIES = {'http': 'http://10.10.1.10:3128','https': 'http://10.10.1.10:3128',

}

Note that the exact values used will depend upon the proxy. Some proxies will use the same protocol and port for bothhttp and https traffic, others may use different values. However, both the http and https keys are expected to beset, since Montage uses both protocols when communicating with external services.

8.6.6 MONTAGE_MAX_EXPORT

Default: 25000

Limit to how many reports can be exported into XLS or CSV. This value can be increased to allow for larger exports,but may impact system performance.

There is currently a 100000 absolute upper bound when exporting from Montage Search. Additionally the XLS fileformat only supports ~65k rows.

Contact Montage Support for assistance or to express interest in larger export ranges.

Changed in version 3.1: Increased default from 10000 to 25000

8.7 Group Organizations

Montage Group Organizations allows users to only access reports from the Organizations they have been grantedpermission to view. Useful for multi-hospital installs that wish to limit what data each hospital can view. Permissionto view an organization is granted to a group in the Admin.

Warning: If this feature is enabled, extra Admin effort is required to set up and maintain the Organization-to-Group and Group-to-User mappings.If a user does not see any data in the application, it is likely that her account has not been put into any Groups thathave an Organization mapped.

8.7.1 MONTAGE_GROUP_ORGANIZATIONS_ENABLED

New in version 2.5.

Default: False

If True, enable the Group Organizations feature.

8.7. Group Organizations 85

Page 92: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

8.8 Indexes

8.8.1 MONTAGE_INDEXES

Montage can have multiple “indexes” (commonly there is a Radiology index, a Pathology index, and a combinedPathRad index). Each index is defined by:

• An Index Class, providing the basic structure of the index

• A name, which is used in the URL, e.g. “http://montage.example.org/search/rad“

• A display_name, which is the full name, e.g. “Radiology”

• A set of Source Systems which contain the reports that comprise the index.

• An optional set of Index Attributes to enable or disable specific features.

The definition of indexes can get somewhat complex, offering hooks into how the reports are formatted and whatimage launchers to use. However, at its simplest, we can define the indexes as:

MONTAGE_INDEXES += (('montage_search.index.default.RadiologyIndex', {

'name': 'rad','display_name': 'Radiology','source_systems': ['Powerscribe360'],

}),)

In the above example, we define a single index, named ‘rad’, which maps to a single source system, “Powerscribe360”.The source system name must match the name used in the crawler’s source_system. For this index we use aRadiologyIndex index class as the base. See below for a more complex example.

Note: It is important to use the += operator, since we want to append to the existing list of indexes (which includesseveral “system indexes” such as the spell corrector)

Index Classes

The Index Class defines some common behavior and default index settings, there are currently several builtin indextypes

• montage_search.index.default.SourceSystemIndex – the most simple index, which can takeone or more source_systems.

• montage_search.index.default.RadiologyIndex – a subclass of SourceSystemIndex, set-ting several Index Attributes to more logical default values for Radiology (e.g. the use_analytics and use_qc areautomatically turned on.

• montage_search.index.default.FollowupIndex – a special index for combining 2 other in-dexes to create RadPath-like indexes. In addition to source_systems, also takes in a list ofprior_source_systems. For RadPath, the Radiology source systems go in prior_source_systems,and the Pathology source systems go in source_systems.

Index Attributes

name - Required A short slug name, e.g. ’path’, used in URLs

display_name Required A human-readable index name, e.g. ’Pathology’

86 Chapter 8. Settings

Page 93: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

source_systems Required A list of the SourceSystems that constitute the Index, e.g. [’PowerScribe360’, ’IDX’]. Must correspond to the source_system string defined in the crawler

Additionally, each index definition can optionally use a number of feature-enabling “use” flags, which take a True orFalse value:

use_analytics Turn on Montage Analytics link for the index

Default: False (for RadiologyIndex: True)

use_qc Turn on Montage QC link for the index

Default: False (for RadiologyIndex: True)

use_cpt Turns on CPT filtering and CPT / RVU Analytics

Default: False (for RadiologyIndex: True)

use_modality Allows Modality to be used in the display and filters. Requires that this data is populated from thesource system or that a Modality to Exam Type mapping is present.

Default: False (for RadiologyIndex: True)

use_point_of_care Allows Point of Care to be used in the display and filters. Requires that this data is populatedfrom the source system.

Default: False (for RadiologyIndex: True)

use_impression_section Indexes the parsed impression section from the report text, allowing@impression search queries

Default: False (for RadiologyIndex: True)

use_indication_section Indexes the parsed indication section from the report text, allowing @indicationsearch queries

Default: False (for RadiologyIndex: True)

use_stemming When full-text indexing, word stemming is used (so a query for fracture matches reports withfractures). The Exact Form operator can be used in searches to individually turn off stemming per-query

Default: True

use_radimetrics Display and allow filtering of Radimetrics eXposure

Default: False

use_patient_zip Enables geoanalytics at the zip code level in Montage Analytics.

Default: False (for RadiologyIndex: True)

use_provider_role Display the Provider Role and allow Scheduling Analytics

Default: False

New in version 3.1.

Complex Example

Below we define 3 indexes, rad, path, and radpath. The rad index has an extra Index Attribute to turn on the scheduleanalytics with use_provider_role:

MONTAGE_INDEXES += (('montage_search.index.default.RadiologyIndex', {

'name': 'rad','display_name': 'Radiology',

8.8. Indexes 87

Page 94: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

'source_systems': ['IDXRad'],'use_provider_role': True,

}),('montage_search.index.default.SourceSystemIndex', {

'name': 'path','display_name': 'Pathology','source_systems': ['LIS'],

}),('montage_search.index.default.FollowupIndex', {

'name': 'radpath','display_name': 'RadPath','source_systems': ['LIS'],'prior_source_systems': ['IDXRad']

}),)

Delta-Indexing Schedules

New in version 3.2: See changelog for Delta Indexing

schedule_delta

The celery.schedules.crontab instance to run the delta index operation at. A value of Nonewill turn off delta indexing (also set schedule_merge to None).

Default: crontab(minute=0 hour=’*/6’) (at every 6 hours)

schedule_merge

The celery.schedules.crontab instance to run the merge operation at. A value of None willturn off merging (also set schedule_delta to None).

Default: crontab(day_of_week=6, hour=5, minute=5) (Every Sunday at 05:05 AM UTC)

schedule_full

The celery.schedules.crontab instance to run the merge operation at. A value of Nonewill turnscheduled full indexing. Scheduled full indexing is not presently required with the new Delta Indexingapproach and will save significant time. In some circumstances, it may make sense to on some frequencyfully rebuild the entire index.

Default: None (no full index operation will occur)

Example to change Delta schedule to every 10 minutes at the bottom of the hour and force a Full index on the first dayevery month.:

from celery.schedules import crontabMONTAGE_INDEXES += (

('montage_search.index.default.RadiologyIndex', {'name': 'rad','display_name': 'Radiology','source_systems': ['IDXRad'],'schedule_delta': crontab(minute='*/15'),'schedule_merge': crontab(day_of_week=6, hour=2, minute=0),'schedule_full': crontab(day_of_month=1, hour=1, minute=0),

}),

88 Chapter 8. Settings

Page 95: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

8.9 LDAP / ActiveDirectory

Montage, by default, uses its own secure authentication and authorization system. However, many sites have existingLDAP or ActiveDirectory implementations (henceforth just referred to as LDAP), which Montage can leverage toavoid users managing yet another password.

LDAP can also be useful if there are site-specific requirements of password complexity, aging, etc.

LDAP configuration is complex and error prone (often caused by a lack of proper information given about the LDAPserver and LDAP structure). Additionally, most LDAP servers to use a Distinguished Name (DN) for the user insteadof the standard “username”, thus requiring a separate step to search for the DN based upon the username beforechecking the password for that DN. It is recommended to work with Montage Support to test and implement theLDAP configuration. Additionally, there are many configuration options that allow complex configurations to exist(e.g. hybrid systems where some users authenticate with LDAP while others use Montage’s internal authentication).

Below we will give an example of configuring Montage to use Microsoft ActiveDirectory. Montage can use otherLDAP providers such as OpenLDAP or Novell, but several parameters may differ. Contact Montage Support forassistance with non-ActiveDirectory configurations

8.9.1 Information Required from Customer

Before proceeding, several pieces of information are required from the customer:

• A service account to bind to LDAP. We will need the full DN of this account (usernamemay not be sufficient). The DN may look something like CN=Svc_montage,OU=ServiceAccounts,DC=HOSPITAL,DC=ORG. We also need the service account’s password (which ideally shouldnot expire, or it will lock users out)

• The LDAP server URL, e.g. ldap://ad.hospital.org

• The search tree to look for users, e.g. OU=Radiology,DC=HOSPITAL,DC=ORG. All users who log intoMontage must somewhere in the subtree under this entry.

8.9.2 How Montage’s LDAP integration works

Once configured, the following process occurs when the user comes to the Montage login page and she can enter herusername and password.

Montage connects to the LDAP server (AUTH_LDAP_SERVER_URI), binding with AUTH_LDAP_BIND_DN andAUTH_LDAP_BIND_PASSWORD.

Montage then performs an LDAP search AUTH_LDAP_USER_SEARCH to find the user’s DN based upon the user’susername (e.g. we find the DN “CN=Smith, Sally,OU=Users,DC=example,DC=com” for the username “sallysmith”)

Using this DN and the user’s entered password, Montage attempts a second bind operation to check to see if thepassword is valid.

If the password is not valid, the user gets an “invalid username / password message” and the process stops.

For a valid login, Montage will then check to see if there is an existing user account in Montage for that user. If so,the user will authenticate into that account and get all the permissions for that account and associated groups.

If the login was valid, but no account exists yet for that user, a shell account will be generated that lacks any permis-sions. The user will get a “unauthorized” message and be unable to use Montage. A local administrator must then goand add this shell account into the “Montage Users” group and assign any extra required permissions. It is thereforerecommended that user accounts get set up in Montage with the proper permissions before users attempt to log intoMontage to avoid them getting the unauthorized message.

8.9. LDAP / ActiveDirectory 89

Page 96: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

8.9.3 Debugging

If issues when user’s try to login to Montage using LDAP, you can enable DEBUG logging into the montage.log.In settings.py‘, add the following line and restart Apache:

LOGGING['loggers']['django_auth_ldap']['level'] = 'DEBUG'

It is not recommended to run with this setting in production, as it will log several lines every time a user tries to log in.

8.9.4 Example Configuration

See the configuration details below for LDAP Settings and Authentication.

Example ActiveDirectory Configuration that disables the internal Montage authentication:

# Turn off the internal authenticationMONTAGE_AUTH_INTERNAL_IS_PRIMARY = FalseMONTAGE_AUTH_ALLOW_RESETS_VIA_EMAIL = FalseMONTAGE_AUTH_ALLOW_PASSWORD_CHANGE = False

# Configure LDAPfrom montage_ldap.ldap_settings import *AUTH_LDAP_SERVER_URI = 'ldap://ad.hospital.org'AUTH_LDAP_BIND_DN = 'CN=Svc_montage,OU=Service Accounts,DC=HOSPITAL,DC=ORG'AUTH_LDAP_BIND_PASSWORD = '<password>'AUTH_LDAP_USER_SEARCH = LDAPSearch(

'OU=Radiology,DC=HOSPITAL,DC=ORG',ldap.SCOPE_SUBTREE,'(sAMAccountName=%(user)s)'

)AUTH_LDAP_CONNECTION_OPTIONS = {

ldap.OPT_REFERRALS: 0,}

For user-simplicity, it is recommended that accounts are still set up in Montage with the correct permissions beforeusers attempt to log in via LDAP, since LDAP only controls authentication, not authorization.

8.9.5 LDAP Settings

For LDAP-only setups, it is often recommended to also set MONTAGE_AUTH_ALLOW_PASSWORD_CHANGE,MONTAGE_AUTH_ALLOW_RESETS_VIA_EMAIL, and MONTAGE_AUTH_INTERNAL_IS_PRIMARY to False.

For these LDAP settings, must also add an import:

from montage_ldap.ldap_settings import *

AUTH_LDAP_SERVER_URI

Default: ’ldap://localhost’

LDAP Server URL, may look something like ’ldap://ad.hospital.org’

90 Chapter 8. Settings

Page 97: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

AUTH_LDAP_START_TLS

Default: False

If True, use TLS security on the connection to the AUTH_LDAP_SERVER_URI

AUTH_LDAP_BIND_DN

Default: ’’

The Distinguished Name (DN) of a Service Account to perform the initial LDAP bind that allows for searching of theuser’s DN based upon her username.

The DN typically looks something like CN=Svc_montage,OU=ServiceAccounts,DC=HOSPITAL,DC=ORG.

AUTH_LDAP_BIND_PASSWORD

Default: ’’

The Service Account password to use during initial bind.

AUTH_LDAP_USER_SEARCH

A LDAPSearch instance that defines the part of the LDAP tree to look under and the filter to use within LDAP entriesto find the right user based upon the username.

The search tree is the lowest point in the LDAP search tree which includes all users that will use Montage. Forinstance if users’ DNs look like ’CN=Smith\, Sally,OU=Radiology,DC=HOSPITAL,DC=ORG’, we mighttry to search under ’OU=Radiology,DC=HOSPITAL,DC=ORG’.

For MS ActiveDirectory, the filter is almost always ’(sAMAccountName=%(user)s)’.

For example:

AUTH_LDAP_USER_SEARCH = LDAPSearch('OU=Radiology,DC=HOSPITAL,DC=ORG',ldap.SCOPE_SUBTREE,'(sAMAccountName=%(user)s)'

)

AUTH_LDAP_CONNECTION_OPTIONS

Default = {}

Extra options to pass when connecting to the LDAP server. One commonly used option is turning off referrals for MSActiveDirectory (via ldap.OPT_REFERRALS: 0). For example:

AUTH_LDAP_CONNECTION_OPTIONS = {ldap.OPT_REFERRALS: 0,

}

8.9. LDAP / ActiveDirectory 91

Page 98: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

8.10 Analytics

8.10.1 MONTAGE_ANALYTICS_DISPLAY_TODAY

Default: False

If set to True, the Analytics Dashboards will display an additional tab with Statistics from the current day. Thissetting is only useful when data is being crawled or received in near-time, as any data not yet crawled will not bedisplayed.

8.10.2 MONTAGE_ANALYTICS_MAX_WARM_CACHE_TIME

Default: 7200 (2 hours)

Number of seconds to spend pre-computing the analytics cache after the crawler runs. Two hours is the recommendedperiod to allow pre-computation of the most common graphs.

8.10.3 MONTAGE_RESIDENCY_ANALYTICS

Default: False

If set to True, the Resident Analytics dashboard will be turned on in Montage Analytics. The site is required toconfigure its residents via the Admin > Providers > Edit.

8.10.4 MONTAGE_BETA_CUMULATIVE_TAT

Deprecated since version 3.2: Cumulative TAT feature enabled globally, so flag is no longer used

8.11 Purpose of Use

Montage Purpose of Use requires users to identify why they are using Montage (e.g. research, QA, training). Theavailable purposes are configurable in the Admin. This feature is not enabled by default.

8.11.1 MONTAGE_PURPOSE_ENABLED

New in version 2.3.

Default: False

If True, enable the Purpose of Use feature.

8.11.2 MONTAGE_PURPOSE_PER_SESSION

Default: False

If True and MONTAGE_PURPOSE_ENABLED also enabled, users will have to pick a purpose upon every login.

92 Chapter 8. Settings

Page 99: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

8.12 Radimetrics eXposure

In addition to the required license and crawler settings, to enable the Radimetrics eXposure integration in Montage(crawling, dose analytics, and eXposure launching), 3 parameters must be set (defined below):

• MONTAGE_RADIMETRICS_URL

• MONTAGE_RADIMETRICS_USERNAME

• MONTAGE_RADIMETRICS_PASSWORD

Configuring Radimetrics integration will require a rebuild of the Montage SearchD configuration file as well as are-index, in addition to a restart of Apache and the Celeryd and Celerybeat services.

Due to the complexity, it is recommended to work with Montage Support when configuring.

A historical load of Radimetrics data will require manual intervention by Montage Support (see montagerun_radimetrics).

8.12.1 MONTAGE_RADIMETRICS_URL

The URL to the eXposure server, including protocol and port (if not default), with no trailing slash. E.g.‘http://172.16.10.127:8080‘

8.12.2 MONTAGE_RADIMETRICS_USERNAME

Credentials to use when authenticating against eXposure.

8.12.3 MONTAGE_RADIMETRICS_PASSWORD

Credentials to use when authenticating against eXposure.

8.12.4 MONTAGE_RADIMETRICS_MRN_RESTRICT

Default: True

Optional setting, if set to False will only query the eXposure API using the accession number.

8.13 Schedule Crawling & Analytics

New in version 3.1.

Collect Provider Role from a third party, linking to existing crawled data.

Currently, QGenda is the only supported integration for linking existing Report data with Schedule data. If a customerhas an alternative Radiologist scheduling system, please contact Montage Support to discuss adding support in a futurerelease.

Alternatively, if the Report data is currently being crawled via Montage’s HL7 interface, it is possible to add a field tothe ORU message for Provider Role.

The schedule information is typically pulled over automatically via a schedule importer. To backload or manuallycrawl, refer to montage run_scheduler.

8.12. Radimetrics eXposure 93

Page 100: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

The use_provider_role must also be set in the MONTAGE_INDEXES.

8.13.1 MONTAGE_SCHEDULE_ENABLED

Default: False

If set to True, the Provider Role will be display in Montage Analytics and the ongoing linking of schedule to reportdata will occur.

8.13.2 MONTAGE_SCHEDULE_LINKER

Default: None

Linker integration to use. Currently available options:

• ’montage_schedule.schedulers.qgenda.QGendaScheduleLinker’ for QGenda

8.13.3 QGenda

Requires:

1. The customer uses QGenda and can obtain API access to QGenda (must provide a Username, Password, andCompany Key from QGenda)

2. Radiologists entries in QGenda must have the NPI entered

3. Montage, either via a Crawler or via the Montage Admin, must have each Reporting Provider’s NPI associated

The NPI is the common key that allows Montage to link between the data Montage crawls from the RIS/HL7/etc andQGenda.

QGenda Example

To import and link the schedule at 6 AM:

MONTAGE_SCHEDULE_ENABLED = TrueMONTAGE_SCHEDULE_LINKER = 'montage_schedule.schedulers.qgenda.QGendaScheduleLinker'CELERYBEAT_SCHEDULE['qgenda-scheduler'] = {

'task': 'montage_schedule.tasks.import_and_link_schedule','schedule': crontab(hour=6, minute=0),'kwargs': {

'scheduler': 'montage_schedule.schedulers.qgenda.QGendaScheduleImporter','params': {

'timezone': 'US/Eastern','companyKey': '<QGenda API company key>','email': '<QGenda API account email>','password': '<QGenda API password>',

},}

}

The use_provider_role must also be set in the MONTAGE_INDEXES.

For backloads and manual imports/links, refer to montage run_scheduler.

Changed in version 3.2.3: The client_url param is now unnecessary and will be removed.

94 Chapter 8. Settings

Page 101: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

8.14 Follow-up Communication

New in version 3.1.

Allows users to communicate upcoming and overdue Follow-up Recommendations.

Currently Nuance Critical Results is the only communication endpoint supported.

As of Montage 3.1, the following conditions must be met for the integration to work:

1. The customer must have a Nuance Critical Results license and Nuance Pro Services must provide a Secure IDand Customer ID.

2. Montage must currently crawl data from PowerScribe 360, so the Organizations match Critical Results and sothe Critical Result ID for the ordering provider is crawled. Additionally, Montage and Critical Results must beconfigured to either both use the Site & Facility or both use the Site Location and Location (see here for details).

3. Any Montage users who should send messages via Critical Results must have a Montage Admin set their useraccounts with their corresponding Critical Results ID.

8.14.1 MONTAGE_COMMUNICATE_ENABLED

Default: False

If set to True, the Communicate button will appear on the Follow-up QC Review pages for users who have a NuanceCritical Result ID set in their user profile.

8.14.2 Nuance Critical Results

Montage’s crawler will automatically crawl Provider’s Critical Result IDs from PowerScribe 360. When a configuredMontage user clicks the “Communicate” button, they will see a list of all Providers who Montage is aware of in CriticalResults. When the “Send” button is clicked, Montage will trigger a background job to call the Critical Results API.Critical Results then goes and performs it configured notification pathway.

NUANCECR_SECURE_ID

Must be set to a UUID string, which is provided by the Nuance Critical Results team.

NUANCECR_CUSTOMER_ID

Must be set to an integer of the Customer ID, provided by the Nuance Critical Results team.

NUANCECR_ORGANIZATION_IS_LOCATION

Default: False

Optional setting, if use_site_location_as_organization is True in the crawler, this value must also be set to True sothat the API calls to Nuance Critical Results pass the Organization name in the correct API field. Critical Results mustbe configured the same way, so if Montage uses PowerScribe 360’s Site then Critical Results must use the Facility, ifMontage uses PowerScribe 360’s SiteLocation then Critical Results must use the Location.

8.14. Follow-up Communication 95

Page 102: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

Example Configuration

For a customer where Montage is crawling the PowerScribe 360 Site:

MONTAGE_COMMUNICATE_ENABLED = TrueNUANCECR_SECURE_ID = 'de305d54-75b4-431b-adb2-eb6b9e546014'NUANCECR_CUSTOMER_ID = 555

96 Chapter 8. Settings

Page 103: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

CHAPTER

NINE

MONTAGE COMMAND LINE

The enterprise search and business analytics tool for radiology.

9.1 Commands

9.1.1 run_importer

Run a given crawler (identified by its task-name). By default, it will only crawl the new or updated reports (unless--full-import is set).

Usage:

montage run_importer [--full-import] [--start-date=] [--end-date=][--detect-qc] [--crawl-radimetrics] [--disable-signals] task-name

task-name is name of the crawler (i.e. the dictionary key from CELERYBEAT_SCHEDULE)

Options

--full-import Disregard the new-and-update algorithm, instead crawl the entire source system (WARNING: canbe taxing on the database being crawled).

--start-date="YYYY-MM-DD" Import records that were created since the provided data. Typically used in con-junction with --end-date, to successively crawl historical data. Does not make sense to use in conjunctionwith --full-import.

--end-date="YYYY-MM-DD" Import records that were created before the provided data.

--detect-qc Run the QC detection algorithms on all imported reports. Defaults to off. In most cases, it isrecommended to not enable this flag during the historical migration, since prior QC events are less relevant.

--crawl-radimetrics Lookup each imported report in the Radimetrics eXposure API. Defaults to off. Requiresproper configuration of the Radimetrics settings to work. In most cases, it is recommended to not enabled thisflag during the historical migration.

--accession-numbers Experimental – not implemented for all crawlers, may change A comma-separated listof specific accession numbers to crawl or recrawl

9.1.2 run_indexer

New in version 3.2: See changelog for Delta Indexing

Usage:

97

Page 104: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

montage run_indexer [--full | --delta | --merge | --schedule (default) ][--status][--start-date=] [--end-date=] [--accession-number=]<index> | --all

The index is from the name parameter defined in MONTAGE_INDEXES, alternatively can use --all for all definedindexes (includes internal system indexes like spell_suggest).

Options

--schedule Runs the delta, merge, or full operations for the defined index if they are due according the the schedule(see Delta-Indexing Schedules)

--full Run a full index operation for the defined index. Will not run if another operation is ongoing.

--delta Run a delta index operation for the defined index. Will not run if another operation is ongoing.

--merge Merge the current delta with the full index for the for the defined index. Will not run if another operationis ongoing.

--status Displays a table with the time of last full, delta, & merge operation as well as status of any currentlyrunning operations. While checking the status, it will additionally clean up after any operations where thebackend process has died.

--accession-number=value Debugging tool to queue a specific report for re-indexing. mPower tracks aschanges are made to reports or associated meta-data and automatically marks them for re-index. This option isavailable for debugging to mark a report that has not had data changed.

--start-date=YYYY-MM-DD Debugging tool to queue a range of reports for re-indexing, similar to--accession-number. Often used in conjunction with --end-date. Filters by the reports’ Exam Com-pleted date.

--end-date=YYYY-MM-DD Requires use of --start-date

Examples

Run a full index operation on all indexes:

montage run_indexer --full --all

To run a delta index operation on the rad index:

montage run_indexer --delta rad

To check status of all the indexes:

montage run_indexer --status --all

Output:Index Type Status PID Run at Run time (min)

------------- -------- --------- -------- ------------------- --------------spell_suggest Full success 2017-01-20 07:01:00 0.00spell_suggest Merge never runspell_suggest Delta never run

rad Full success 2017-01-18 18:43:33 0.15rad Merge success 2017-01-18 18:44:04 0.03rad Delta success 2017-01-20 20:15:00 0.00

path Full success 2017-01-18 18:43:43 0.02

98 Chapter 9. montage Command Line

Page 105: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

path Merge success 2017-01-18 18:44:06 0.01path Delta success 2017-01-20 20:15:00 0.00

radpath Full success 2017-01-18 18:43:44 0.00radpath Merge success 2017-01-18 18:44:07 0.00radpath Delta success 2017-01-20 20:15:00 0.00

When debugging and want to force a re-index for a specific date range:

montage run_indexer --start-date=2016-12-01 --end-date=2016-12-15

9.1.3 run_qc

Manually process Reports for QC Events

9.1.4 auto_close_followup

Manually attempt to close open recommendation events.

9.1.5 run_radimetrics

Manually query Radimetrics eXposure

9.1.6 run_scheduler

Manually run the Schedule Crawler. Must pass in the name of the schedule (import_and_link_schedule) taskin CELERYBEAT_SCHEDULE

For example:

montage run_scheduler --start-date=2015-01-01 --end-date=2015-01-31 qgenda-scheduler

Also has --only-link and --only-import options.

9.1.7 changepassword

Warning: Do not use for accounts managed via LDAP / ActiveDirectory, since the changepassword commandonly works against the local authentication system.

Change the password for a given username.

Usage:

montage changepassword username

9.1.8 clear_cache

Clears the cache (Linux only)

Usage:

9.1. Commands 99

Page 106: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

montage clear_cache

100 Chapter 9. montage Command Line

Page 107: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

CHAPTER

TEN

BACKING UP MONTAGE

Montage does not currently include an automatic backup utility, so it is left up to the server administrator to performregular backups (see below for sample backup scripts).

There are four important sets of information that should be backed up:

• The “montage” database in PostgreSQL (includes crawled reports, user settings, etc.). PostgreSQL should bebacked up using the pg_dump tool or its GUI equivalent in pgAdmin, called “Backup”. These tools will exporta SQL file, which can then be restored via the psql command or pgAdmin. See below for sample Windowsand Linux backup scripts

• Configuration files, living in /etc/montage or C:\montage\config

• Log files (including audit logs). It is advised to backup both the Montage logs and the Apache access logs.On Linux, /var/log/montage and /var/log/apache2. On Windows, C:\montage\data\logs.Note, in settings.py, Montage can be configured to store logs elsewhere

• Uploaded files, which are stored at /var/lib/montage/media or C:\montage\data\media.

The searchd index files C:\montage\data\index can safely be ignored, since they are completely rebuilt daily.

Warning: Encryption: The mPower database contains Protected Health Information (PHI). Nuance recommendsthat the backups be encrypted consistent with the customer’s data encryption policies.

10.1 Windows PostgreSQL Backup

10.1.1 Step 1: Create a Backup Directory

Create a directory where the backup files will be stored, i.e. C:\MontageBackups

10.1.2 Step 2: Locate pg_dump

The 3.2 upgrade does not automatically upgrade PostgreSQL for safety reasons, therefore we must find the location ofpg_dump.exe.

For any system prior to 3.2 or that was upgraded to 3.2 from a prior version, PostgreSQL was installed atC:\Program Files (x86)\PostgreSQL\9.1\bin\pg_dump.

For new systems starting at 3.2, pg_dump will be C:\montage\lib\postgresql-9.5.0\bin\pg_dump.

With Windows Explorer, navigate to these folders to see which one exists and appropriately adjust in Step 3.

101

Page 108: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

10.1.3 Step 3: Create Batch File

Open notepad and copy and paste the following lines. Adjust BACKUP_FILE appropriately based upon Step 1 andPG_DUMP based upon Step 2:

SET BACKUP_FILE=C:\MontageBackups\montage-db.backupSET PG_DUMP="C:\Program Files (x86)\PostgreSQL\9.1\bin\pg_dump"echo backup file name is %BACKUP_FILE%SET PGPASSWORD=montageecho on%PG_DUMP% -h localhost -p 5432 -U montage -F c -b -v -f %BACKUP_FILE% montage

Save the file with the name, MontageDatabaseBackup.bat (ensure the file extension is .bat, not .txt)

10.1.4 Step 4: Create a Scheduled Task

1. Open Task Scheduler

2. Right-click on Task Scheduler Library

3. Select “Create Task...” option from the popup menu

4. In the General tab, give the task a name, i.e. Montage Database Backup

5. Click on Actions tab.

6. Click on “New...” button.

7. In the New Action window, click on “Browse...” button.

8. Navigate to the directory created in Step 1.

9. Select the batch file created in Step 2.

10. Click on Triggers tab.

11. Click on “New...” button.

12. Setup a new trigger on how and when this task should run.

Note: Test to make sure the Task runs successfully. If the file is not created properly may need to enter full path whensetting BACKUP_FILE.

10.1.5 Restoring the Database From the Backup

1. Using pgAdmin rename the original ‘montage’ database

2. Using pgAdmin, create a new ‘montage’ database.

3. Open command prompt and execute (change path as necessary):

"C:\Program Files (x86)\PostgreSQL\9.1\bin\pg_restore" -h localhost -p 5432 -U montage -W -d montage -n public montage-db.backup

4. When prompted enter ‘montage’ for the password and hit Enter.

10.2 Linux PostgreSQL Backup

To backup, use pg_dump to dump into a gzip’ed SQL file (adjust as desired):

102 Chapter 10. Backing up Montage

Page 109: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

sudo -u postgres pg_dump -O montage | gzip > montage-db.sql.gz

Since this file is just SQL, we can restore via psql:

gunzip -c montage-db.sql.gz | psql -U montage -h localhost montage

10.2. Linux PostgreSQL Backup 103

Page 110: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

104 Chapter 10. Backing up Montage

Page 111: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

CHAPTER

ELEVEN

ADDITIONAL MONTAGE TOOLS

11.1 Truncate (Wipe) the Database

Warning: This action is destructive. Run only if you know exactly what you are doing. Montage Support isalways available if you want to check or need assistance.A backup is required prior to executing these commands.

If Montage has been set up to crawl a test source system (e.g. Powerscribe 360 was undergoing initial testing andMontage crawled and indexed the test data), and this data needs to be cleared out of Montage prior to going live, thebelow commands will allow the entire set of reports to be wiped away.

These commands will essentially reset Montage, leaving only User accounts. All data (reports, procedures, organi-zations, etc.) will be removed. If you require a more precise cleaning, contact Montage Support to work out a morelocalized plan to clean up test data.

11.1.1 Step 0: Double Check

Ensure that the database should be wiped and that it is ok to lose everything in the database.

11.1.2 Step 1: Backup

Backup the PostgreSQL database, ensure that the database dump file has a reasonable file size (dozens of MB to GB,depending on how much test data was crawled, but definitely larger than 0-1 MB).

11.1.3 Step 2: Locate psql.exe

The 3.2 upgrade does not automatically upgrade PostgreSQL for safety reasons, therefore we must find the location ofpsql.exe.

For any system prior to 3.2 or that was upgraded to 3.2 from a prior version, PostgreSQL was installed atC:\Program Files (x86)\PostgreSQL\9.1\bin\psql.

For new systems starting at 3.2, psql will be C:\montage\lib\postgresql-9.5.0\bin\psql.

With Windows Explorer, navigate to these folders to see which one exists and appropriately adjust in Step 3.

105

Page 112: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

11.1.4 Step 3: Truncate Database

Warning: This operation will wipe report data from the database. Proceed with caution.

In cmd.exe, adjusting the path to psql per Step 2:

SET PGPASSWORD=montageC:\montage\lib\postgresql-9.5.0\bin\psql -h localhost -p 5432 -U montage montage

Once logged into psql.exe, run the following commands:

TRUNCATE TABLE montage_core_report RESTART IDENTITY CASCADE;TRUNCATE TABLE montage_core_event RESTART IDENTITY CASCADE;TRUNCATE TABLE montage_core_examtype RESTART IDENTITY CASCADE;TRUNCATE TABLE montage_core_modality RESTART IDENTITY CASCADE;TRUNCATE TABLE montage_core_organization RESTART IDENTITY CASCADE;TRUNCATE TABLE montage_core_provider RESTART IDENTITY CASCADE;TRUNCATE TABLE montage_core_sourcesystem RESTART IDENTITY CASCADE;TRUNCATE TABLE montage_analytics_graphcache RESTART IDENTITY CASCADE;TRUNCATE TABLE montage_analytics_graphrequestlog RESTART IDENTITY CASCADE;

11.1.5 Step 4: Clear Cache

In a cmd.exe terminal, cd to C:\montage\lib\montage-VERSION\bin, and run:

montage.exe clear_cache

11.1.6 Step 5: Recrawl / Re-index

As needed, perform a recrawl and re-run the indexer. It is recommended to restart the “Montage Searchd” service afterthe re-index.

106 Chapter 11. Additional Montage Tools

Page 113: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

CHAPTER

TWELVE

MONTAGE PRIVACY & SECURITY

12.1 System Architecture

Montage is a web-based application, that is hosted within a customer’s intranet. Montage crawls existing data sourcesto provide fast search and analytics. Users can interact with the Montage search and analytics application via HTTP(or HTTPS) using a standard web-browser (IE6+, Chrome, Firefox, Safari).

12.2 Security Model

Montage uses a role-based access control system. Users must authenticate (either against Montage’s internal authen-tication system or against an existing LDAP/ActiveDirectory solution).

Once authenticated, user authorization is checked to ensure each user is allowed to access or view the requested partof the application. Authorization is defined within the Montage administrative panel via permissions, which can beassigned either at the user or group level. Each user object can be assigned to multiple groups.

Users can optionally be required to select their “purpose” for using Montage (e.g. clinical, teaching, research, etc.).

Whenever a user views data, the event is logged to an audit log, which resides on the filesystem of the server.

107

Page 114: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

12.3 Data Model

Montage primarily crawls report text and associated “meta-data”:

• Accession Number

• Patient demographics (MRN, date of birth, sex, name)

• Who did what and when (e.g. when the report was ordered, completed, signed, etc. and by whom).

• Exam details (stat exam, procedure code)

However, Montage does not, by default, display any PHI meta-data. For example, the MRN and patient name are notdisplayed to the user (they are only used when linking between multiple source systems). The patient’s date of birth isnot displayed and only used to compute the patient’s age at time of exam.

12.4 Frequently Asked Questions

Where does the data reside? The Montage server resides within the customer’s data center. Indexing occurs com-pletely within this server.

Does Montage support LDAP / ActiveDirectory? Yes. Montage can use an internal authentication system or anexisting LDAP / ActiveDirectory solution.

Can the web application be secured with HTTPS / SSL? Yes. An SSL certificate can be deployed on the MontageServer. Please work with Montage support to obtain and deploy a valid SSL certification for the server.

Does Montage use Google™ Custom Search? No. Montage does not use Google’s services or technology. All dataremains on the Montage server.

Does Montage require any browser extensions (e.g. Flash, Java)? No.

Does Montage have password requirements (aging, complexity, etc.) Yes, but must be provided viaLDAP/ActiveDirectory.

Has Montage undergone any privacy or security reviews? Yes. The privacy offices at multiple sites have reviewedand approved Montage. Montage has undergone an external privacy impact assessment.

Montage has addressed sites’ concern, including adding the ability to require users to identify their “Purpose forUse” and requiring users to accept site-specific Terms of Services.

Does Montage use a firewall? Yes. Refer to Firewall for specific inbound port requirements (HTTP/HTTPS, option-ally SSH/RDP, and MLLP for HL7).

How is the server secured? The server only requires inbound HTTP (HTTPS) connections. For management, SSH(on Linux) or RDP (on Windows) are required for approved site system administrators and Montage support.

Can Montage use a virus checker? Yes, as provided by the site.

What occurs during a ODBC “crawl”? What permission is required in the source database? Montage willconnect to the source database, issue a SQL query to find any new reports or reports updated since the lastcrawl. The crawler then examines those reports and adds it to the Montage index.

The crawler needs read-only permission (the ability to run a SELECT statement).

Is Montage protected against common security vulnerabilities? Yes, Montage uses tools to prevent common web-based attacks, such as Cross-Site Scripting (XSS), SQL Injection, Cross-Site Request Forgery (CSRF), etc..

108 Chapter 12. Montage Privacy & Security

Page 115: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

CHAPTER

THIRTEEN

FIREWALL

Montage must be run with the appropriate firewall enabled.

Ports Montage can use

Port Service22 SSH (Linux only)80 HTTP443 HTTPS 1

3389 Remote Desktop (Windows only)6661 HL7 MLLP 2

13.1 ufw on Ubuntu

To allow SSH, HTTP, & HTTPS

sudo ufw allow 22sudo ufw allow 80sudo ufw allow 443sudo ufw enable

To view the currently enabled ports:

sudo ufw status numbered

To only allow HL7 traffic from a certain host (10.10.10.60 in this case):

sudo ufw allow from 10.10.10.60 to any port 6661

13.2 Windows Firewall

Windows should have Remote Desktop enabled (port 3389) instead of SSH. See Windows Firewall.

1If SSL/TLS is used, port 80 issues an HTTP 301 Redirect to port 443 to force all traffic over the encrypted channel2By default the HL7 MLLP server is disabled, if disabled the port should be closed

109

Page 116: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

110 Chapter 13. Firewall

Page 117: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

CHAPTER

FOURTEEN

WORKING WITH SSL

When working with OpenSSL on Windows, the location of the openssl binary must be pathed out, an example isC:\montage\lib\openssl-[VERSION]\bin\openssl.exe

The path for the self-signed certificates are located in C:\montage\config\ssl

Note: Prefix the openssl with a user that has root privileges

If the customer is providing the private key and certificate files, the file extension of the private key could be .peminstead of .key. The best way to know which file is correctly formatted is to use the following commands.

Verify the private key

openssl rsa -in /etc/montage/self-signed-montage.key -check

Verify the certificate

openssl x509 -in /etc/montage/self-signed-montage.crt -text -noout

Generating a Certificate Signing Request (CSR) OpenSSL generate a Certificate Signing Request based on Windows.

When generating the CSR, be sure to not add a password to the private key. If a password is setup on the private key,then it will need to be removed and the CSR regenerated before sending to the customer to sign the certificate.

To remove the passphase from a private key

mv -v /etc/montage/montage.[customer domain].{,old-}keyopenssl rsa -in montage.[customer domain].old-key -out montage.[customer domain].key

111

Page 118: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

112 Chapter 14. Working with SSL

Page 119: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

CHAPTER

FIFTEEN

ANTIVIRUS EXCLUSIONS / DATA LOSS PREVENTION (DLP)

Nuance recommends that the following mPower processes be excluded from antivirus (AV), data loss prevention(DLP), or similar applications to prevent interference with application operations resulting in latency and or file ma-nipulation:

• montage.exe

• searchd.exe

• indexer.exe

• postgres.exe

• python.exe

• pythonservice.exe

113

Page 120: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

114 Chapter 15. Antivirus Exclusions / Data Loss Prevention (DLP)

Page 121: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

CHAPTER

SIXTEEN

MONTAGE LOG FILES

Logs are typically stored at /var/log/montage on Linux and C:\montage\data\logs on Windows.

16.1 montage-audit.log

Audit log that lists all reports (by accession number) that a give user potentially saw when performing a search. Alsoincludes all reports exported by a user.

16.2 montage.log

montage.log is the primary application log for Montage. It contains general information messages as well aserrors that occurred during usage of the Montage application. This log file should often be the first place to checkwhen researching issues.

16.3 montage-importer.log

A log of events and errors during the crawling process.

16.4 montage-importer-hl7.log

Events and errors for the HL7 listener.

16.5 searchd.log

Details concerning the starting & stopping of the searchd service.

16.6 Apache Logs

The Apache logs exist outside the Montage log directory, typically at /var/log/apache2 on Linux.C:\montage\data\logs\apache-access.log).

115

Page 122: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

16.6.1 apache-access.log

Generic access log, providing the user’s IP address and the page they requested.

16.6.2 apache-error.log

The error typically captures catastrophic errors in Montage, errors that prevent the user from opening the Montagewebsite. The log will often give an traceback that can be used to determine the underlying problem (possibly anincorrect directory in the VirtualHost or a syntax error in settings.py.

16.7 RabbitMQ Logs

The RabbitMQ logs for connections and service status

16.7.1 [email protected]

The RabbitMQ server’s Erlang log file.

16.7.2 [email protected]

The RabbitMQ server’s Erlang SASL (System Application Support Libraries) log file.

16.8 Windows Install Log

16.8.1 install.log

Located in C:\montage\lib\montage-VERSION\install.log, the install.log is created during the installa-tion of montage-VERSION.exe. It will include details of what occurred during the install, any errors that occurredwill be printed to this log. It is recommended to review this log after each new install and upgrade.

116 Chapter 16. Montage Log Files

Page 123: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

CHAPTER

SEVENTEEN

FREQUENTLY ASKED QUESTIONS

Also see Also see Windows Frequently Asked Questions.

• Can Montage be secured with HTTPS / SSL?• Can Montage be scaled or clustered?• Can Montage crawl our RIS / LIS / HIS / EMR / etc.?• Can Montage use a different database or webserver?• What authentication systems does Montage support?• How often does Montage crawl / index data?• Does Montage perform Backups?

17.1 Can Montage be secured with HTTPS / SSL?

Note: The Montage installer creates a self-signed SSL certificate named self-signed-montage. The cer-tificate and private key names should not be reused for a customer certificate, as the installer will overwrite theself-signed-montage certificates when re-executed. In today’s client browsers, the self-signed certificate willnot be trusted and thus will issue a warning to the client. It is recommended that for any HTTPS communications, avalid hospital certificate be utilized.

Warning: Update the ServerAlias directive to match that of the customer provided certificates to alleviate anyclient browser errors. The ServerName directive will not need to be updated if it does not match the certificatethat was created/provided.

Montage can operate over HTTPS. Typically the Apache configuration is moved into the port 443 VirtualHost, whichhas the SSLEngine set with the certificates. In place of the port 80 VirtualHost, we set a HTTP 301 redirect to theHTTPS version of the server. In Windows, the configuration is in place for the VirtualHost on port 80, but commentedout. Remove the # to activate the redirect to only operate on HTTPS:

<VirtualHost *:80>RewriteEngine OnRewriteCond %{HTTPS} !=onRewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]

</VirtualHost>

<VirtualHost *:443>ServerAlias montage.example.comSSLEngine onSSLCertificateFile "C:/montage/config/ssl/example.com.crt"SSLCertificateKeyFile "C:/montage/config/ssl/private.key"

117

Page 124: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

#SSLCertificateChainFile "C:/montage/config/ssl/cert-chain.crt"</VirtualHost>

Note: The SSLCertificateChainFile directive is used only when a list of PEM-encoded Server CA Certifi-cates is necessary.

Warning: All certificates that are used by Montage Apache must be X.509 encoded. Windows certificate filesmust be converted to the appropriate format. Please contact Montage Support for support in converting certificatesto the necessary format.

It is possible to disable the use of HTTPS with Montage. This might occur when the customer either does notwant to use SSL, does not want to use the self-signed certificate that is generated with the Montage installationor the customer is unable to provide a certificate from an internal certificate authority. To accomplish this, editC:montageconfigapache.conf and comment out the <VirtualHost *:443>...‘</VirtualHost>‘ using an #. Savethe file and restart the Montage Apache service.

17.2 Can Montage be scaled or clustered?

Yes, the Montage Architecture, is designed to be scalable, but please contact Montage Healthcare Solutions to properlyconfigure.

Often, the easiest method for scaling is simply using a more powerful server.

There are a number of Montage configurations available for scaling up, depending upon the customer’s specific re-quirements. Specific services can be move to separate servers or Montage can operate in a master-slave mode.

17.3 Can Montage crawl our RIS / LIS / HIS / EMR / etc.?

In most cases, yes! We have successfully integrated into a number of information systems. Please work with MontageHealthcare Solutions to identify if we have already developed a crawler for your information system or how we cango about developing a custom crawler.

Montage’s crawler infrastructure is highly adaptable and can work with a wide range of data formats, including:

• SQL databases

• Non-relational document stores

• HL7 data streams and files

• Comma Separate Value files

• XML files

• Plain text files

• Web services

So far, we have successfully crawled every information system we have been presented with.

17.4 Can Montage use a different database or webserver?

In terms of crawlers, Montage can connect to any database system.

118 Chapter 17. Frequently Asked Questions

Page 125: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

Montage internally uses PostgreSQL and Apache, as part of its “black box” that makes everything run so quickly. Atthis time, Montage does not support any other database or webserver within its “black box.”

The Montage application is written in a portable manner. It is technically feasible that someday Montage may supportother database backends or webservers. However, we make use of some important database features that not alldatabase vendors provide (e.g. strong transactional support, geospatial indexing, etc.). So it would require a fairamount of development effort as well as significant ongoing support and testing effort to use a different databasebackend.

17.5 What authentication systems does Montage support?

Montage currently supports 2 methods for authentication:

• Internal password storage. Montage will securely (using a salted, one-way hash) store users passwords. Themethod is secure, simple, and robust, but it does introduce “another password.”

• LDAP / ActiveDirectory. Montage can be configured to defer authentication to LDAP or ActiveDirec-tory. This solution is ideal if a customer requires specific password requirements (expiration / complexity /etc.).

For both methods, authorization still occurs within Montage, requiring permissions for each account to be configuredwithin Montage.

Please contact Montage Healthcare solutions if you wish to use a different method of authentication, so that we canevaluate the customizations required to plug it into our authentication framework.

17.6 How often does Montage crawl / index data?

As of Montage 2.1, we typically crawl each source system once a day (over night), followed by a complete rebuild ofthe index files. Index file

In the development version of Montage (not yet released), we have the ability to perform “delta indexing”, in whichthe new and updated reports are re-indexed when available.

17.7 Does Montage perform Backups?

See Backing up Montage for details on the files & folders that need to be backed up, as well as scripts for creatingdatabase exports. Montage does not ship with an automated backup solution, so it is left to the customer to set upscheduled tasks to perform the backups and move the data to a safe location.

17.5. What authentication systems does Montage support? 119

Page 126: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

120 Chapter 17. Frequently Asked Questions

Page 127: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

CHAPTER

EIGHTEEN

SUPPORT

See the Troubleshooting guide for common issues.

Including any relevant errors from the Montage Log Files (making sure to anonymize or remove any PHI) can assistin diagnosis of the issue. Please also indicate what customer is experiencing the issue.

121

Page 128: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

122 Chapter 18. Support

Page 129: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

CHAPTER

NINETEEN

MONTAGE GLOSSARY

Source System Typically, each “Source System” is a distinct information system. Montage uses the Source Systemof each report to determine how to format the report (e.g. some information systems store reports with newlinecharacters between lines, while others store the reports with HTML <br> characters.

Several examples:

• A site with a single Radiology index and a single PowerScribe 360 installation would have a single sourcesystem–PowerScribe 360

• A site with both Radiology and Pathology indexes, coming from two a RIS and a LIS, would have twosource systems, the RIS and the LIS.

Please contact Montage Healthcare Solutions to determine the appropriate configuration when a customer has acomplex organizational or informational architecture.

123

Page 130: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

124 Chapter 19. Montage Glossary

Page 131: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

CHAPTER

TWENTY

CHANGELOG

This document provides changes relevant to the installation and support of Montage. Please refer to the Release Notesin the User Guide for end-user features and bugfixes.

20.1 3.2 Changelog

mPower 3.2 features a number of backend improvements, most notably Delta Indexing and conversion to 64-bit onWindows & Python 3.

Formerly known as Montage Search & Analytics, the product is now mPower Clinical Analyitcs. However, mostbackend services and files still use the “montage” label (future releases may automatically rename).

20.1.1 Delta Indexing

Delta Indexing is a powerful new backend feature in 3.2 that removes the need for the time-consuming nightly fullindexes and allows customers who frequently send data (either via HL7 or higher frequency crawls) to see near-timeupdates to reports in mPower Search.

Conceptually Delta Indexing works by:

1. A initial Full index occurs on all the reports in the database. Prior to 3.2, each nightly index was a Full index.

2. At a periodic schedule (every 6 hours by default) a Delta index occurs, capturing any new or modified reportssince the last Full index. When a user conducts a query, the query will run against the Full plus Delta indexes,returning the combined set of matches. The Delta index will grow in size, always re-indexing since the last Fullindex. Since the number of reports since the last Full index is relatively small, re-indexing takes only secondsor minutes, not hours.

3. Eventually the Delta index will grow large, so mPower will Merge the Delta index files into the Full indexfiles. By default, the Merge occurs weekly on Saturday at 5AM UTC. Delta indexes from then on, only need tocapture any new or modified reports since the Merge.

The Delta Indexing is fully automated. It will automatically conduct a Full index upon upgrade to 3.2, and from thenon, only build Delta indexes and Merge those Delta indexes into the growing Full index.

Warning: The upgrades from earlier versions and new installs will automatically trigger a Full re-index onceCeleryD is started after the installer runs. In the case of upgrades of large sites, this process may take severalhours. The system will still be usable, but under increased load. Please ensure that no other indexer.exe processesare running prior to starting the upgrade.

125

Page 132: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

The “Montage Indexer” scheduled task (on Windows) and indexer cron (on Linux) are replaced by a more powerfulsettings.py configuration that is run inside of Celeryd (Delta-Indexing Schedules). After the Initial Crawl, it isrecommend to manually force a full re-index.

When needed (e.g. after performing a crawl or to debug an issue), a new montage run_indexer command allows run-ning Full, Delta, and Merge operations, checking on index status, and queuing reports for re-index during debugging.

Now that indexing is managed within mPower, there is a new montage-indexer.log. If other log files have beenrelocated, it is suggested that before the upgrade, the settings.py is similarly adjusted, e.g.:

LOGGING['handlers']['indexer_file']['filename'] = 'D:\\montage\\data\\logs\\montage-indexer.log'

It is recommended to conduct a full index after initial crawling of significant amount of data or conducting manualre-mapping of data:

montage run_indexer --full --all

20.1.2 Windows Server

• Upgrade to Python 3.4.4

– Automatically changes references from urllib.quote_plus to urllib.parse.quote_plus insettings.py

• Upgrade all packages from 32bit to 64bit

• Changed path of python installation from C:\python to C:\montage\lib

• Upgrade Apache 2.4.23

• Use Postgresql 9.5 for new installs

• All associated Montage applications now are located in C:\montage\lib directory

• Upgrade Sphinx 2.2.10

Installer changes

• Postgresql installer is not shelled out to postgres executable.

• Postgresql data folder is only option available to change during installation. Existing determination of Postgresqlon the server will bypass the installation of the postgresql.

Known Issues

• When executing the installer on a new Windows 2008 server platform, an error message will appear in regardsto:

The installer has detected in the settings.py file possible incompatibilitiesfor Montage >=3.2, see log C:\montage\incompatible.txt

The file listed should be checked for incompatibilities, but there may appear to be no listed issues.

• Upgrades on Windows 2008 R2 will need to have Windows Update successfully executed prior to installingMontage >=3.2. Failure to update can cause an error when the installing is ensuring the postgres user passwordis properly set.

126 Chapter 20. Changelog

Page 133: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

• New installation on Windows 2008 will need to ensure the following Microsoft KB is installed on the system.If it missing, indexer.exe will have an application error that refers to a dependency missing on libpq.dll

https://www.microsoft.com/en-us/download/details.aspx?id=26368

20.1.3 New Features

New debugging functionality includes:

• The Management page now features an Indexer Log, similar to montage run_indexer --stats--all (though the command line version alone has the capability to clear out dead processes.

• The Cache section of the Management page now will additional clear out the Graph Cache used by the analytics.

20.1.4 Bug Fixes

• mPower had a bug with its Follow-up Auto Closure feature that resulted in not closing all possible cases with anreferenced Anatomy. The defect is fixed in mPower 3.2. If a site is concerned with historic uncompleted cases,the montage auto_close_followup command can be used to re-attempt to close the open cases.

• Allow QuadRIS crawler to set Is Stat flag.

• Resolved issue in QGenda integration when API returns end time of midnight it actually means the followingday.

20.1.5 Deprecated Features

• The MONTAGE_BETA_CUMULATIVE_TAT setting has been removed as Cumulative TAT is now available forall customers.

20.1.6 Upgrading

A database backup is highly recommended prior to upgrade.

If there have been custom crawlers or HL7 profiles configured in the config directory, it may be necessary to port thecode to Python 3. The installer will warn if it finds any possible issues in C:\montage\incompatible.txt.Regardless, please ensure the crawl or interfaces still work via the logs after the upgrade.

Note, for systems using a Sybase ODBC connection, it may be necessary to switch to a 64-bit driver.

The installer will perform several new operations, including upgrading third party packages.

When the installer is finished, restart the Montage Celerybeat, Montage Celeryd, Montage Apache, Montage Searchd,and Montage MLLP Listener (if using HL7).

As normal, please check install.log after the install/upgrade to ensure no errors, and montage-importer.log after anycrawls / recrawls.

20.1.7 Patch Releases

3.2.3 Patch Release

The User Release Notes document the full end-user changes.

20.1. 3.2 Changelog 127

Page 134: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

Due to a breaking API change in _settings-montage-schedule-qgenda, the client_url is no longer accepted.mPower now uses “v2” of the QGenda API, which has a new authentication mechanism.

20.2 3.1 Changelog

Montage 3.1 includes numerous user-facing enhancements as well as a number of improvements to the backend im-plementation and management processes. Consult the Montage User Guide for complete, user-facing, 3.1 releasenotes.

There are a number of backend changes, included:

• Several crawler-related changes

• Integration with Nuance Critical Results for Follow-up Communication

• Integration with Qgenda for Schedule Analytics

• The default export limit increased from 10k to 25k.

• Ensure a friendly server error page, even when no EMAIL_HOST has been set

• Update to latest CMS RVU file

• Major streamline of the Windows installation and upgrade process.

Please note the updated Server Requirements that were introduced in Montage 3.0.1, specifically the storage speedrequirements and supported operating systems.

Note: If upgrading from Montage 2.x, must first upgrade to 3.0. See 3.1 Upgrade

20.2.1 Crawler Updates

• The ClearCanvas crawler features improved addendum handling and additional name attributes.

• Improvements to the IDX crawler to handle associated exams and optionally pull the Patient Status from thePatientTypeCode.

• Auto-detect FreeTDS 7.2 on Linux and automatically increase the max text size

• Experimental Ability to crawl or recrawl specific accession numbers in the montage run_importer command.Only several crawlers implement the necessary hooks to limit by accession numbers

• PowerScribe 360:

– Now pulls the VoxLinkIdentifier for providers, allowing them to be recipients for the Follow-up Commu-nication via Nuance Critical Results

– The Report’s Created date is crawled for additional Turnaround Time analytics

20.2.2 Follow-up Communication

New integration with Nuance’s Critical Results to allow communication of upcoming and overdue Follow-up Recom-mendations.

See Communication Settings

128 Chapter 20. Changelog

Page 135: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

20.2.3 Scheduling Analytics

New integration that allows pulling the radiologists’ role from QGenda’s API for understanding Provider Role inMontage Analytics.

See Schedule Settings

20.2.4 Windows

The Windows installation and upgrade process has become significantly easier, utilizing a single installer to install alldependencies and automatically perform many of the previously manual tasks.

Instead of manually installing any dependencies, simply launch the montage-3.1.0.exe installer. It will detect if anydependencies need to be installed or upgraded as well as automatically stop and restart the Windows Services. Addi-tionally:

• The Python, PostgreSQL, Apache, Erlang, and RabbitMQ installs are now handled by the Montage installer

• Automatic upgrades to Apache 2.4.18 and RabbitMQ 3.2.4

• The RabbitMQ Logs and Apache Logs now are consolidated into the same folder as the Montage logs.

• Automatic creation of a self-signed SSL certificate, providing HTTPS access to Montage, and easier configura-tion of a site-signed SSL configuration Existing manual HTTPS installs must be manually migrated, see HTTPSCertificate Migration.

• Installer automatically configures the Windows firewall rules to allow port 80 and 443 inbound traffic

• The installer creates the montage PostgreSQL user and database automatically

• Apache and HTTPS configuration now managed in C:\montage\conf\

• The Apache Windows Service has been renamed to Montage Apache.

20.2.5 Deprecated Features

• Montage 3.1 has dropped support for Internet Explorer 8.0, since Microsoft only supports the latest InternetExplorer release as of January 12, 2016.

20.2.6 Upgrading

A database backup is highly recommended prior to upgrade.

If upgrading from 3.0, simply run the installer to upgrade. The Windows Services (Apache, Montage Celerybeat,Montage Celeryd, Montage MLLP Listener) no longer need to be manually stopped and started, as the installerautomatically performs those steps.

Note: Existing installs with versions prior to 3.0 (e.g. 2.1 through 2.5) must be upgraded to 3.0.0 or 3.0.1 beforeupgrading to 3.1. Refer to the 3.0 Upgrade documentation to perform an upgrade to 3.0, then you can upgrade to 3.1.

Note: On Windows, any prior installation of HTTPS certificates in Apache, need to be manually mi-grated after the upgrade. Follow the HTTPS Certificate Migration guide to move them from C:\ProgramFiles (x86)\Apache Software Foundation\Apache2.2 to C:\montage\config\ssland edit C:\montage\config\apache.conf for the appropriate SSLCertificateFile andSSLCertificateKeyFile. Requires a restart of the Montage Apache Service

20.2. 3.1 Changelog 129

Page 136: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

20.2.7 Patch Releases

3.1.1 Patch Release

3.1.1 is an important bug fix release. It is recommended to us 3.1.1 instead of 3.0.1.

The User Release Notes document the full end-user changes. For the backend, 3.1.1 includes an important fix for theMontage Celerybeat Windows Service. This service, would generate a celerybeat.pid file that would cause restarts ofthe service to not work. In 3.1.1, we no longer generate the offending celerybeat.pid.

20.3 3.0 Changelog

Montage 3.0 includes numerous new features, a modern user interface update, and numerous usability and performanceimprovements. Consult the Montage User Guide for complete, user-facing, 3.0 release notes.

In terms of the server installation and management, the release includes:

• Faster upgrades, doesn’t reload data that already exists

• Updated to latest RVU file

• Improved HL7 support (exam modifier, technologist, additional timestamps)

• Improved speed for IDX crawler

• New Cerner crawler

• Chrome Frame is no longer supported by Google, so we have removed the suggestion to use it

• Data Integrity Checks

• The Tag Admin now features a fast, easy to use interface to create and manage Tags

• The Montage Admin has the capability to disable specific QC Algorithms

20.3.1 Deprecated Features

• Montage 3.0 has dropped support for Internet Explorer 6.0 and 7.0. Internet Explorer 8.0 is supported, but lacksnative HTML5 support. Montage works around these issues, but an improved user experience is provided bymodern browsers such as Internet Explorer 10, Firefox, Chrome, and Safari.

20.3.2 Upgrading

A database backup is highly recommended prior to upgrade.

If upgrading from 2.5, run the standard upgrade process. On Windows, stop the Apache and Montage services, run theinstaller.

If upgrading from a release prior to 2.5, you can directly upgrade to 3.0, but be sure to read the notes and extra stepsin the intermediate Changelog entries, e.g. the 2.5 Upgrade.

130 Chapter 20. Changelog

Page 137: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

20.4 2.5 Changelog

Warning: The upgrade to 2.5 includes several intensive, automated maintenance tasks. See the upgrade instruc-tions for details before starting the upgrade.

Montage 2.5 includes numerous new features, as well as usability and performance improvements. Consult the Mon-tage User Guide for complete, user-facing, 2.5 release notes.

In terms of the server installation and management, the release includes:

• New optional features such as Residency Dashboard and Group Organizations

• A powerful new PACS launch system

• Several data model additions and crawler updates, such as Point of Care support

• Performance improvements

• Documentation updates

• Numerous other Additional Changes & Improvements

• Residency Dashboard• Group Organizations• Improved External Launcher• Crawlers

– PowerScribe 360– IDXRad– Syngo– ClearCanvas– QuadRIS– HL7

• Data Model• Performance Improvements• Additional Changes & Improvements• Documentation• Deprecated Features• Upgrading

20.4.1 Residency Dashboard

Montage 2.5 includes a new Residency Dashboard under Montage Analytics for tracking residents progress towardsthe ACGME requirements.

This feature is not enabled by default, and must be enabled in settings.py with MON-TAGE_RESIDENCY_ANALYTICS.

Additionally a local administrator or residency program manager must configure set up the residents’ expected gradu-ation date in Montage Admin via Admin > Providers > Edit.

20.4.2 Group Organizations

If a site wishes to restrict which Organizations individual users or groups have access to, there is a new setting, GroupOrganizations.

20.4. 2.5 Changelog 131

Page 138: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

It is recommend only to enable this setting if absolutely necessary, since it creates additional complexity in usermanagement (groups must be granted explicit access to sites). Much of the power of Montage comes from having allthe data available.

20.4.3 Improved External Launcher

The ability to launch PACS has been revamped, see External Launcher for details.

A new permission exists to restricting access the the launchers, “Can use External Launchers (e.g. PACS)” permission.Audit logging can optionally be added now with the Redirect Launcher which submits to PACS launch request backto the Montage server before sending it to the PACS

Contact Montage Support for assistance configuring

The prior Index.external_launcher() approach is now deprecated and will be removed in an upcomingrelease.

20.4.4 Crawlers

• Ability to support sites where Exam Codes are not unique via exam_codes_are_unique

• Ability to support accession number collisions (requires configuration by Montage Support

• Point of Care available for PowerScribe 360, IDX, and HL7. Enabled by default

PowerScribe 360

• Ability to ignore reports with specific exam codes from ever being crawled via excluded_exam_codes

• Compatibility chart for Nuance crawler support

• Crawling additional data, including Point of Care, Patient Middle Name, & Ordering Provider NPI

IDXRad

• Force conversion of IDX Provider IDs into integers to avoid differences in SQL Server ODBC drivers

Syngo

• Improve the report content concatenation when dealing with backloaded reports

• Expand the crawler’s query filters to capture very late signs & addendums

ClearCanvas

• Ideally crawl from ReportText, but fall back to ReportContent, as used in older versions of ClearCanvas

QuadRIS

• QuadRIS crawler included

132 Chapter 20. Changelog

Page 139: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

HL7

A major update occurred in Montage’s HL7 processing. For the most part, this will not affect any sites. However, ifthe site is currently using a custom HL7 profile from the config folder, please contact Montage Support to switch toan updated, built-in version of the profile

20.4.5 Data Model

• Point of Care

• Additional data elements added to the Montage schema for future usage

• Configurable patient matching

20.4.6 Performance Improvements

• RAM usage drastically reduced when exporting large datasets to CSV and XLS It is possible, if desired toincrease the 10k limit via MONTAGE_MAX_EXPORT .

• Restructured the schema and text layout which should result in much faster performance in Montage Analytics.Because of the large changes and automated maintenance, the upgrade process may take longer than normal.See the upgrade instructions for details

• Optimized several queries for faster lookups in the Patient Record and under certain conditions in MontageAnalytics.

20.4.7 Additional Changes & Improvements

• Allow building of spell suggestions on Windows, via montage.exe build_spell_suggestionsC:\montage\config\searchd.conf May take several hours to build.

• Automatic upgrade of mod_wsgi on Windows

• Monitor system performance (server stats, analytics & crawler performance) via the stats upload

• Allow site-customization of the ordering of the Exam Type

• Remove ASCII SUB character from CMS RVU import

• Removed montage change_password backport for Windows, the original changepassword is preferredwhen having to forcefully reset a user’s password from the command line. It is still recommended to use theMontage Admin’s “Reset Password”.

20.4.8 Documentation

The Settings documentation has been added to and split into individual pages related to groups of settings. Importantnew sections include:

• External Launcher

• Residency Analytics

• Increasing the export limit

A new Compatibility chart exists for Nuance systems.

20.4. 2.5 Changelog 133

Page 140: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

20.4.9 Deprecated Features

• Index.external_launcher is deprecated in favor of the new External Launcher setting. Existing PACSlaunches should be migrated to the new system prior to Montage 3.0.

20.4.10 Upgrading

The upgrade to Montage 2.5 requires an automated, one-time schema change and maintenance operation (for the Per-formance Improvements) that will take longer than prior upgrades, requiring some downtime of the Montage system.

Before starting the upgrade, ensure that the PostgreSQL data drive or partition has sufficient free space (e.g. not 90%full).

A database backup should be taken prior to starting the upgrade.

Ensure the customer is aware of the downtime and schedule according. The process may take 20 minutes to two ormore hours for large installs.

Run the standard upgrade process. On Windows, stop the Apache and Montage services, run the installer. TheCommand Prompt window will stay open while the migration and maintenance occurs. Do not kill the upgradeprocess once started, it may take significant time. Contact Montage Support if you are concerned it is stalled (theinstall.log file in the installation directory contains additional details). Once complete, start the services as normal.

Run Windows Disk Defragmentation on any disks that have high fragmentation levels to complete the maintenancetasks.

20.5 2.4 Changelog

Montage 2.4 includes additional QC algorithms and additional analytics capabilities. Consult the Montage User Guidefor complete, user-facing 2.4 release notes.

In terms of the server installation and management, the release includes:

• Several crawler additions and modifications

• Updates to documentation

• Additional bugfixes and updates

• Performance improvements

• Crawlers– Nuance PowerScribe 360– GE IDX– ClearCanvas– Others– Geoanalytics– HL7

• Server Updates• Documentation Updates• Upgrading

134 Chapter 20. Changelog

Page 141: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

20.5.1 Crawlers

Nuance PowerScribe 360

• Better support for report addendums. If a customer has experienced missing addendums, historical data can berecrawled (contact Montage Support to discuss)

• Montage can be limited to only crawl specific Site instances from PS360, instead of crawling data from all Sites.For details, on configuring, see limited_site_names.

• Crawling of patient zip for Geoanalytics.

• Ability to configure how to handle addended reports that were imported and not authored in PS360 via over-write_on_imported_addendum.

GE IDX

• Montage can be limited to only crawl specific Organization’s data, via the limited_organization_idscrawler param.

• Better support for Residents and additional timestamps. instead of crawling data from all Sites.

• Crawling of patient zip for Geoanalytics.

ClearCanvas

• Do not crawl & actively remove patients with Withdrawn Consent.

Others

• Additional site-specific crawlers.

Geoanalytics

Montage 2.4 features some basic geo-analytics, for some (not all crawlers), Montage will now try to pull the patient’saddress, including city, state, and Zip. This new functionality can be disabled if required by the customer via theignore_patient_geo crawler setting.

HL7

• Patient Status is now pulled by default from PV1-2.

• Is Stat is now pulled from ORC-7.6.

• Preliminary and Addendum messages handled via OBR-25.

• Ordering timestamp can optionally be set in the ORU^R01 message now, but defaults to off.

• Modality can optionally be pulled from the message, but is not by default.

20.5. 2.4 Changelog 135

Page 142: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

20.5.2 Server Updates

• The Windows installer no longer prompts for an install directory (since it had to be C:\montage). The installerproceeds and automatically installs into C:\montage

• Prior to Montage 2.4, several Python packages (lxml, psycopg, etc) had to be installed manually. As of Montage2.4, these are installed automatically. If previously installed, you can safely remove these libraries via theControl Panel, though it is not required

• The latest RVU-CPT mapping is automatically loaded (no longer requires Montage Support to load). AlternateRVU mappings can be loaded via import_rvu. Additionally, Montage has updated to that latest availableRVU values.

• HTTP Proxy support when outbound Internet access must go through a web proxy to upload health stats andquery Yottalook. See MONTAGE_REQUESTS_PROXIES

• On Windows, we have replaced our file-based cache with an in-process memory cache system, which shoulddramatically increase performance for concurrent requests to Windows-based Montage installations.

Warning: C:\montage\config\settings.py should no longer use theCACHES[’default’][’LOCATION’] = ’D:/montage/data/cache’ directive to movethe Cache to another drive, since the cache is now in memory.This setting line must be removed as part of the 2.4 upgrade.

• Custom logo on the login page is now supported on Windows Server. Can be uploaded via the Admin >Customer Logo page.

• Support HTTP Basic Authentication on Windows.

20.5.3 Documentation Updates

Additional documentation has been added as of Montage 2.4, including:

• Pre-install PowerScribe 360 Data Analysis Script, to be run to identify common data mapping issues prior toexecuting the crawl.

• Database Truncation for wiping the database. Useful if Montage has a crawled a Test PS360 instance

• Added note that Microsoft IIS must not be installed.

• Server Specs have been updated with new requirements and additional clarification

20.5.4 Upgrading

Please follow standard upgrade procedures (stop services, run installer, restart services). If data needs to be re-crawledto obtain patient zip data or missing addendums, please do so.

20.6 2.3 Changelog

Consult the Montage User Guide for complete, user-facing 2.3 release notes.

Montage 2.3 includes major performance improvements as well as numerous user-facing features. Several crawleradjustments have occurred that may require adjustments to enable new features (e.g. Montage QC) or to captureadditional data (e.g. Residents from PS360).

136 Chapter 20. Changelog

Page 143: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

• Crawler Modifications– Potentially Requiring a Recrawl– Enabling QC– Enabling Radimetrics eXposure

• Other Backend Changes and Notes• PostgreSQL 9.1.9 on Windows• Upgrading from 2.2

– Ubuntu– Redhat– Windows

20.6.1 Crawler Modifications

Potentially Requiring a Recrawl

Several changes occurred that may require a data recrawl depending on if the site would benefit from the additionalcrawled data.

Nuance PowerScribe 360 / RadWhere

• Residents are now crawled from the Dictator field

GE IDX / Imagecast / Philips iSite 3.6

• Additional timestamps (Patient Arrived, Ordered, Exam Started). The Ordered timestamp will allow for properoperation of the Ordering Provider dashboard

• Residents from vusrContributingProvider

If the site would benefit from this data, a full recrawl is suggested (Initial Crawl, either via --full-import or bro-ken into ranges with --start-date and --end-date). Montage Support can assist in planning and performinga recrawl if necessary

Enabling QC

To use Montage QC, a valid montage_qc entry must exist in montage-modules.json (contact Montage Sup-port for an updated license if not present) and the QC detection must be enabled in the appropriate crawlers.

Within the appropriate params entry of the CELERYBEAT_SCHEDULE crawler, detect_qc must be set to True.Once Montage CeleryD and Celerybeat are restarted, the scheduled crawl will automatically start checking everyreport for all the configured algorithms.

The new --detect-qc option is available for the run_importer command, but is not recommended for full-imports,little value exists for for old QC events and the QC engine will dramatically increase the CPU requirements during acrawl.

Note: Montage QC is still a beta feature. If there are mis-identifications, Montage Support is interested, so theprecision and recall can be improved. Montage QC uses complex natural language processing of inherently imprecisehuman language, so the system will always have some mis-identifications. Also note that many additional algorithmsare developed and will soon be published.

20.6. 2.3 Changelog 137

Page 144: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

Enabling Radimetrics eXposure

It is recommended to work with Montage Support to enable the Radimetrics feature, since Montage Support mustwork with Radimetrics Support to ensure the correct components are present on the eXposure server.

• The montage-modules.json must have a valid entry for montage_radimetrics

• The settings.py must have the Radimetrics settings configured

• The crawler configuration should have crawl_radimetrics enabled

• The Montage Searchd configuration file must be regenerated and the indexer run to re-index

• The Apache, Celeryd, and Celerybeat services must be restarted

The new --crawl-radimetrics option is available for the run_importer command, but is not recommended forfull-imports, since a webservice call is made for each report.

20.6.2 Other Backend Changes and Notes

• Montage Support has noticed several Windows servers having high disk fragmentation. If a server is runningslowly or has high fragementation, Montage Support suggests working with the customer to turn on scheduleddefrags using the Windows Disk Defragmenter.

• Can disable crawling Modalities with import_modality crawler setting. This option requires manual, backendmanagement of Exam to Modality mapping. Future releases will include an admin-focused tool for managingthis mapping.

New documentation and guides:

• New pre-install and post-install checklists to assist during the requirements gathering, implementation, andcheckout phases. Also, additional Nuance-specific pre and post install notes.

• Backup documentation and an example PostgreSQL backup script in Backing up Montage

• ../ldap

• Expanded Settings to include Email, LDAP, Authentication, and Purpose of Use

• Expanded the Nuance with additional options

Also, Montage will now automatically perform a weekly database maintenance task (VACUUM ANALYZE withinPostgreSQL) to improve database performance by removing outdate pages.

20.6.3 PostgreSQL 9.1.9 on Windows

Due to CVE-2013-1899, existing Montage installations on Windows, must upgrade their PostgreSQL installationsfrom 9.1.1 to 9.1.9. The CVE is low risk, since the Montage implementation requires PostgreSQL access to beblocked at the firewall.

It is suggested, though not required, to backup the PostgreSQL database before proceeding. Since it is a minor pointrelease, the PostgreSQL upgrade will upgrade the existing installation in place.

The new Montage installation package includes the postgresql-9.1.9-1-windows.exe installer. This can berun during the upgrade process below, after the services have been stopped, before the file:montage-2.3.0.exe installeris run.

138 Chapter 20. Changelog

Page 145: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

20.6.4 Upgrading from 2.2

Ubuntu

sudo dpkg -i montage_2.3.0-0_amd64.deb

Redhat

sudo rpm -Uvh montage-2.3.0-0.el6.x86_64.rpm

Windows

Obtain the montage-install-package-2.3.0final-0.zip package. Only the montage-2.3.0.exeand postgresql-9.1.9-1-windows.exe are required for upgrades.

If any settings adjustments are required, perform them (e.g. enable Montage QC, etc.).

1. Stop Windows Services (Apache 2.2, Montage Celeryd, Montage Celerybeat, Montage MLLP Server).

2. Upgrade to PostgreSQL 9.1.9 on Windows. The PostgreSQL installer will automatically pick up the existingdatabase location.

3. Run the installer, montage-2.3.0.exe.

4. Start the Windows Services (Montage Celeryd, Montage Celerybeat, Apache 2.2). Only if used at the site,Montage MLLP Server.

20.7 2.2 Changelog

20.7.1 Upgrading from 2.1

The standard upgrade process can be used between 2.1 and 2.2. No special steps are required.

The automatic database migration will take more time than usual as all prior Turn around times will be pre-computedand stored. The time for migration depends on the number of reports and the speed of the server. At most sites, it takesbetween 5-30 minutes.

20.8 2.1 Changelog

20.8.1 Upgrading from 2.1.0-beta3 to 2.1.0-final

• Montage MLLP, Montage CeleryD, and Montage CeleryBeat changed from Scheduled Tasks to Windows Ser-vices

• pywin32 dependency added as part of Python Libraries installation

• Web-based post-install configuration tool.

20.7. 2.2 Changelog 139

Page 146: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

20.9 2.0 Changelog

Upgrading from 1.0 to 2.0 requires a fresh install, as it encompassed a major re-write. Contact Montage Support forassistance.

140 Chapter 20. Changelog

Page 147: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

CHAPTER

TWENTYONE

KNOWN ISSUES

Use Case: A new install on Windows 2012 Version: 3.2.0

Description: The scheduled task for generating the index files will return a 0x2 instead of 0x0 when executed from thescheduled task.

Workaround: If the tasks is manually ran from the command line viaC:\montage\lib\searchd-2.2.10\run-indexer.bat then the scheduled task is executed the re-turn code will be 0x0

Ticket:

Use Case: New or Upgrade on Ubuntu 10.04 Lucid Version: 3.2.0

Description: Restarting the Apache2 service will create a thread error in the apache2 log/var/log/apache2/montage-error.log

[Fri Jul 29 11:28:49 2016] [error] File "/usr/lib/python3.4/threading.py", line 1289, in _shutdown[Fri Jul 29 11:28:49 2016] [error] assert tlock is not None[Fri Jul 29 11:28:49 2016] [error] AssertionError:[Fri Jul 29 11:28:49 2016] [error] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>[Fri Jul 29 11:28:49 2016] [error] Traceback (most recent call last):[Fri Jul 29 11:28:49 2016] [error] File "/usr/lib/python3.4/threading.py", line 1289, in _shutdown[Fri Jul 29 11:28:49 2016] [error] assert tlock is not None[Fri Jul 29 11:28:49 2016] [error] AssertionError:[Fri Jul 29 11:28:49 2016] [notice] caught SIGTERM, shutting down[Fri Jul 29 11:28:50 2016] [notice] Apache/2.2.14 (Ubuntu) mod_wsgi/3.4 Python/3.4.2 configured -- resuming normal operations

Ticket: #2190

Use Case: New or Upgrade on Ubuntu 14.04 Trusty Version: 3.2.0

Description: Restarting the Apache2 service will create a thread error in the apache2 log. Also observed with justinstalling montage.deb. The install is utilizing repo based pkgs. /var/log/apache2/montage-error.log

[Tue Aug 16 20:56:53.096689 2016] [:warn] [pid 2303:tid 140280778303360] mod_wsgi: Compiled for Python/3.4.0.[Tue Aug 16 20:56:53.096730 2016] [:warn] [pid 2303:tid 140280778303360] mod_wsgi: Runtime using Python/3.4.3.[Tue Aug 16 20:56:53.097242 2016] [mpm_event:notice] [pid 2303:tid 140280778303360] AH00489: Apache/2.4.7 (Ubuntu) OpenSSL/1.0.1f mod_wsgi/3.4 Python/3.4.3 configured -- resuming normal operations[Tue Aug 16 20:56:53.097256 2016] [core:notice] [pid 2303:tid 140280778303360] AH00094: Command line: '/usr/sbin/apache2'[Tue Aug 16 20:57:07.011113 2016] [:error] [pid 2308:tid 140280778303360] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>[Tue Aug 16 20:57:07.011142 2016] [:error] [pid 2308:tid 140280778303360] Traceback (most recent call last):[Tue Aug 16 20:57:07.011149 2016] [:error] [pid 2308:tid 140280778303360] File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown[Tue Aug 16 20:57:07.014506 2016] [:error] [pid 2307:tid 140280778303360] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>[Tue Aug 16 20:57:07.014537 2016] [:error] [pid 2307:tid 140280778303360] Traceback (most recent call last):[Tue Aug 16 20:57:07.014543 2016] [:error] [pid 2307:tid 140280778303360] File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown

141

Page 148: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

mPower Server Manual, Release 3.2.3

[Tue Aug 16 20:57:07.016698 2016] [:error] [pid 2308:tid 140280778303360] assert tlock is not None[Tue Aug 16 20:57:07.016714 2016] [:error] [pid 2308:tid 140280778303360] AssertionError:[Tue Aug 16 20:57:07.020158 2016] [:error] [pid 2307:tid 140280778303360] assert tlock is not None[Tue Aug 16 20:57:07.020176 2016] [:error] [pid 2307:tid 140280778303360] AssertionError:[Tue Aug 16 20:57:07.088570 2016] [mpm_event:notice] [pid 2303:tid 140280778303360] AH00491: caught SIGTERM, shutting down[Tue Aug 16 20:57:07.109580 2016] [:error] [pid 2306:tid 140280778303360] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>[Tue Aug 16 20:57:07.109613 2016] [:error] [pid 2306:tid 140280778303360] Traceback (most recent call last):[Tue Aug 16 20:57:07.109620 2016] [:error] [pid 2306:tid 140280778303360] File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown[Tue Aug 16 20:57:07.109988 2016] [:error] [pid 2306:tid 140280778303360] assert tlock is not None[Tue Aug 16 20:57:07.109999 2016] [:error] [pid 2306:tid 140280778303360] AssertionError:

Ticket:

142 Chapter 21. Known Issues

Page 149: mPower Server Manual...5.Now a user opens her web browser to the Montage Website. After logging in, she performs a search for “pneu-monia”. 6.The Montage website validates the

INDEX

SSource System, 123

143