Configuring the Data Quality Monitor Server

Topics:

To configure the Data Quality Monitor (DQM) server:

  1. Copy the DQMService.war file to the following Apache Tomcat directory:
    \webapps
  2. Edit the context.xml file using a text editor.
  3. Add the following new environment property:
    <Environment override="true" type="java.lang.String" name="dqm.service.configPropertiesFile" 
    value="yourPath\dqmservice.properties"/>

    The dqm.service.configPropertiesFile property specifies the path to the dqmservice.properties file, which defines all of the configuration information required to start the DQM service.

    The following is a sample path:

    c:\omnigen\OmniGenData\OmniGovConsole\data\dqmservice

    To view the complete structure of the dqmservice.properties file, see Reference: Sample dqmservice.properties File.

    In the dqmservice.properties file, the dqconfigXmlFile property specifies the path to dqconfig.xml file, which defines all of the information about measures, dimensions, rules, and so on. The file is formed during the deployment bundle process.

    To view the complete structure of the dqconfig.xml file, see Reference: Sample dqconfig.xml File.

  4. Save the context.xml file.

Reference: Sample dqmservice.properties File

The following syntax shows the structure and format of a sample dqmservice.properties file.

#---------------------------------
#ELASTICSEARCH CONNECTION CONFIGURATION
#---------------------------------
#Connection host.
#By default it is set to 'localhost'.
elasticsearch.host=localhost
#Connection port.
#By default it is set to '9300'.
elasticsearch.port=9300
#Elasticsearch port that listens to rest requests
elasticsearch.rest.port=9200
#Elasticsearch cluster name.
elasticsearch.cluster=elasticsearch
#---------------------------------
#DATA QUALITY MONITOR SERVICE CONFIGURATION
#---------------------------------
#Path to 'dqconfig.xml' file.
#This file has all information about dimensions and measures to calculate Business Impact values.
dqconfigXmlFile=C://dqconfig.xml
#Reserved fields from Omni Designer. Those fields are the same in every domain, so in Elasticsearch mappings their names mustn't contain domain prefix
data.reserved.fields=id,sourceName,sourceInstanceId,sourceInstanceIdName,
status,statusReason,sourceStatusCode,sourceCreatedDate,sourceCreatedBy,so
urceModifiedDate,sourceModifiedBy,omniCreatedDate,omniModifiedDate,master
Id,timepoints,startDate,endDate,current
#Count of days meaning how many days till current moment we update records versions per day in Elasticsearch.
data.versions.maxUpdatePerDays=40
#DQM-Updater uses this Cron expression expression to schedule data updating.
data.cronExpression=0 0/1 * 1/1 * ? *

Reference: Sample dqconfig.xml File

The following syntax shows the structure and format of a sample dqconfig.xml file.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<dqconfig>
	<dimensions>
		<dimension>
			<properties>
				<name>Validity</name>
				<description>Validity Description</description>
				<default>true</default>
			</properties>
			<model name="PatientMaster">
				<subject name="PatientMaster">
					<master>
						<logic>
							<or rule="GenderNotEmpty" />
						</logic>
						<rules>
							<rule id="GenderNotEmpty"><![CDATA[$.get('gender') != null && !$.get('gender').isEmpty()]]></rule>
						</rules>
						<business>
							<impact measure="Revenue">25</impact>
							<impact measure="ProductionCapacity">1</impact>
						</business>
					</master>
					<subject name="PersonAddressMaster">
						<master>
							<logic>
								<and rule="PostcodeValid" />
							</logic>
							<rules>
								<rule id="PostcodeValid">$.get('postcode') != null</rule>
							</rules>
							<business>
								<impact measure="Revenue">7</impact>
								<impact measure="ProductionCapacity">1</impact>
							</business>
						</master>
					</subject>
				</subject>
			</model>
			<model name="ProviderMaster">
				<subject name="ProviderMaster">
					<master>
						<logic>
							<or rule="GenderNotEmpty" />
						</logic>
						<rules>
							<rule id="GenderNotEmpty"><![CDATA[$.get('gender') != null && !$.get('gender').isEmpty()]]></rule>
						</rules>
						<business>
							<impact measure="Revenue">20</impact>
							<impact measure="ProductionCapacity">1</impact>
						</business>
					</master>
					<subject name="PersonAddressMaster">
						<master>
							<logic>
								<and rule="PostcodeValid" />
							</logic>
							<rules>
								<rule id="PostcodeValid">$.get('postcode') != null</rule>
							</rules>
							<business>
								<impact measure="Revenue">8</impact>
								<impact measure="ProductionCapacity">2</impact>
							</business>
						</master>
					</subject>
				</subject>
			</model>
		</dimension>
		<dimension>
			<properties>
				<name>Conformity</name>
				<description>Conformity Description</description>
			</properties>
			<model name="PatientMaster">
				<subject name="PatientMaster">
					<master>
						<logic>
							<or rule="GenderNotEmpty" />
						</logic>
						<rules>
							<rule id="GenderNotEmpty"><![CDATA[$.get('gender') != null && !$.get('gender').isEmpty()]]></rule>
						</rules>
						<business>
							<impact measure="Revenue">15</impact>
							<impact measure="ProductionCapacity">2</impact>
						</business>
					</master>
					<subject name="PersonAddressMaster">
						<master>
							<logic>
								<and rule="PostcodeValid" />
							</logic>
<rules>
								<rule id="PostcodeValid">$.get('postcode') != null</rule>
							</rules>
							<business>
								<impact measure="Revenue">7</impact>
								<impact measure="ProductionCapacity">1</impact>
							</business>
						</master>
					</subject>
				</subject>
			</model>
			<model name="ProviderMaster">
				<subject name="ProviderMaster">
					<master>
						<logic>
							<or rule="GenderNotEmpty" />
						</logic>
						<rules>
							<rule id="GenderNotEmpty"><![CDATA[$.get('gender') != null && !$.get('gender').isEmpty()]]></rule>
						</rules>
						<business>
							<impact measure="Revenue">10</impact>
							<impact measure="ProductionCapacity">2</impact>
						</business>
					</master>
					<subject name="PersonAddressMaster">
						<master>
							<logic>
								<and rule="PostcodeValid" />
							</logic>
							<rules>
								<rule id="PostcodeValid">$.get('postcode') != null</rule>
							</rules>
							<business>
								<impact measure="Revenue">5</impact>
								<impact measure="ProductionCapacity">1</impact>
							</business>
						</master>
					</subject>
				</subject>
			</model>
		</dimension>
	</dimensions>
	<measures>
		<measure id="Revenue" units="EUR" />
		<measure id="ProductionCapacity" units="shipped items" />
	</measures>
</dqconfig>