Hi Developers and Interface Engineers! I'd like to share with you how you can help your organization today obtain a better understanding of key message processing metrics (i.e. average message processing times, number of inbound messages, number of outbound messages, etc.)! Given the embedded IRIS database powering integration, you already have all the data you need -- you just need to put the data to use and present them in a user-friendly format! Let me walk you through a sample implementation of an operational analytics dashboard that has served as a template for many organizations using these dashboards in production today. This particular sample dashboard will include the following metrics: #![](/sites/default/files/inline/images/images/sample_dashboard(4).png)   You can find the accompanying sample code here on Open Exchange. Just as a note, I used IRIS for Health 2019.1, but this can be done on Ensemble, Health Connect, and HealthShare. Now, let's dive in! # 1) Create a New Namespace: “REPORTS”

In this section, we will create a new namespace called “REPORTS,” where we will be compiling all the messages from other namespaces of interest to compute the message processing metrics.  

1. From the main screen of the Management Portal, click System Administration à Configuration à System Configuration à Namespaces 2. To create a new namespace, click the Create New Namespace button on the top left corner of the page. 3.  Fill in the following information to configure the namespace:
  1. Name of the namespace: REPORTS
  2. The default database for Globals: Local Database
  3. Select an existing database for Globals: Select Create New Database

This will launch the Database Wizard, which is used to create a new database 

      1. Enter the name of your database: REPORTSGLOBALS
      2. Database directory: C:\InterSystems\HealthShare\mgr\REPORTSGLOBALS
  • A warning will appear saying that the directory does not exist. This is okay.

      1. Click Next. Click Finish.
    1. The default database for Routines: Local Database
    2. Select an existing database for Routines: Select Create New Database
  • This will launch the Database Wizard, which is used to create a new database 

      1. Enter the name of your database: REPORTSROUTINES
      2. Database directory: C:\InterSystems\HealthShare\mgr\REPORTSROUTINES
  • A warning will appear saying that the directory does not exist. This is okay.

        1. Click Next. Click Finish.
      1. Click Save. Wait for the namespace to be created – a new page will show up.
    1. Scroll to the bottom of the new Enable Ensemble Namespace page and click Close.

    To edit the settings of a namespace, click the namespace on the Namespaces page and edit the desired properties. Then click Save in the top left corner of the page.

    2) Import Code via Studio

    In this section, we will use Studio to code and create necessary class files to fetch messages from all namespaces specified in the ^ReportNamespaces global and store the computed metrics in the Demo.OperationalAnalytics.MetricsTable class.

    1. Open Studio. Ensure you are in the REPORTS namespace. To switch namespaces, go to File à Change Namespace and select the REPORTS namespace. 2. Click File à New. Under Categories, select General. Under Templates, select Class Definition and click OK.
    1. In the New Class Wizard, specify the following:
      1. Enter a package name: Demo.OperationalAnalytics
      2. Enter a class name: Compute
      3. Click “Next”
      4. For Class Type, press “Extends” and enter %SYS.Task.Definition for the Name of super class. This is to enable scheduling via Task Manager.
      5. Click “Finish”
    3. Within the curly braces of the Demo.OperationalAnalytics.Compute class, copy-paste the following: * Retrieve the code from Open Exchange * Wait until we create the actual table to compile the class we just created.
    1. Click File à New. Under Categories, select General. Under Templates, select Class Definition and click OK.
      1. In the New Class Wizard, specify the following:
        1. Enter a package name: Demo.OperationalAnalytics
        2. Enter a class name: MetricsTable
        3. Click “Next”
        4. For Class Type, select “Persistent”
        5. Click “Finish”
    2. Within the curly braces of the Demo.OperationalAnalytics.MetricsTable class, copy-paste the following (the code will also be available on Open Exchange):

     

    1. Compile both class files. On the top toolbar, click Build à Compile to compile the class.
    2. In the Output console at the bottom of Studio, store the names of all namespaces into the ^ReportNamespaces global.
      1. For example:
        1. set ^ReportNamespaces(1) = “SANDBOX”
        2. set ^ReportNamespaces(2) = “FHIRSERVER”
        3. Repeat until you have the names of all namespaces stored in ^ReportNamespaces. You can check which namespaces have been stored by entering “zwrite ^ReportNamespaces”

    3) Add Appropriate Global/Package Mappings to Namespaces of Interest

    In this section, we will add the necessary global and package mappings to all namespaces that will be reporting to the REPORTS namespace.

    1. From the main screen of the Management Portal, click System Administration à Configuration à System Configuration à Namespaces 2. For every namespace you would like to include in the final table,
    1. Click on Global Mappings, and then click “New.” Fill in the following information:
      1. Global Database Location: REPORTSGLOBALS
      2. Global Name: (copy paste from <DataLocation> tag in Demo.OperationalAnalytics.MetricsTable file in Studio – see below)
        1. Do not include the “^”
      3. Press “OK” to close the pop-up box, and then press “Save Changes.”
    2. Click on Package Mappings, and then click “New.” Fill in the following information:
      1. Package Database Location: REPORTSROUTINES
      2. Package Name: Demo.OperationalAnalytics
      3. Press “OK” to close the pop-up box, and then press “Save Changes.”

    <rect filled="f" id="Rectangle_x0020_3" o:gfxdata="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 TDntmmeKuoYyOaJphPKOYpJ5BtdUXrqj78oYGHf5nCGgRkjyRjgOVYM1g2p107JrZD6s7bpnK6nI GaS56JkWq6iu6WYxa4SiDSzF8nJN3vCqCDFwmtnhM+peptzNguuW1glll4CAl/FzdN1zNATDtcVg lmvK41UaVpydS+3eUUzwDNfO0yQM1m8VZpfiVvYI53AgvFTnB73lqgXRtFhX6ki7Pk8coNQbh9WO D58I4GziKVzBRwYfZDUlqykZXMGXA2gX2XF/x88vCgk8zyQlpl5I6gWmUUgahaRZSJqFpFVIWr6n z8XhW4w6Eve94tgbelh+TJ6vLexvONv/AgAA//8DAFBLAwQUAAYACAAAACEAnGZGQbsAAAAkAQAA KgAAAGNsaXBib2FyZC9kcmF3aW5ncy9fcmVscy9kcmF3aW5nMS54bWwucmVsc4SPzQrCMBCE74Lv EPZu0noQkSa9iNCr1AcIyTYtNj8kUezbG+hFQfCyMLPsN7NN+7IzeWJMk3ccaloBQae8npzhcOsv uyOQlKXTcvYOOSyYoBXbTXPFWeZylMYpJFIoLnEYcw4nxpIa0cpEfUBXNoOPVuYio2FBqrs0yPZV dWDxkwHii0k6zSF2ugbSL6Ek/2f7YZgUnr16WHT5RwTLpRcWoIwGMwdKV2edNS1dgYmGff0m3gAA AP//AwBQSwECLQAUAAYACAAAACEAu+VIlAUBAAAeAgAAEwAAAAAAAAAAAAAAAAAAAAAAW0NvbnRl bnRfVHlwZXNdLnhtbFBLAQItABQABgAIAAAAIQCtMD/xwQAAADIBAAALAAAAAAAAAAAAAAAAADYB AABfcmVscy8ucmVsc1BLAQItABQABgAIAAAAIQDnFH15xgIAAHQGAAAfAAAAAAAAAAAAAAAAACAC AABjbGlwYm9hcmQvZHJhd2luZ3MvZHJhd2luZzEueG1sUEsBAi0AFAAGAAgAAAAhAJEtaklYBgAA DxoAABoAAAAAAAAAAAAAAAAAIwUAAGNsaXBib2FyZC90aGVtZS90aGVtZTEueG1sUEsBAi0AFAAG AAgAAAAhAJxmRkG7AAAAJAEAACoAAAAAAAAAAAAAAAAAswsAAGNsaXBib2FyZC9kcmF3aW5ncy9f cmVscy9kcmF3aW5nMS54bWwucmVsc1BLBQYAAAAABQAFAGcBAAC2DAAAAAA= " strokecolor="red" strokeweight="4.25pt" style="position:absolute; left:0; text-align:left; margin-left:146px; margin-top:28px; width:222.7pt; height:15.5pt; z-index:251659264; v-text-anchor:middle"></rect>

     

     

    4) Set up Cube and Pivot Table on Analytics

    In this section, we will build a Cube on Analytics Architect to organize the data from Demo.OperationalAnalytics.Compute class.

    1. From the main screen of the Management Portal, click Analytics àArchitect. Ensure you are in the REPORTS namespace. 2. Click “New” and fill in the following information:
    1. Definition Type: Cube
    2. Cube Name: Operational Analytics
    3. Cube Source: Class
    4. Source Class: Demo.OperationalAnalytics.MetricsTable
      1. Use the “Browse…” button to select the class
    5. Class Name for the Cube: Leave as is.
    6. Hit “OK” on the bottom right.
    3. From Source Class on the left-hand column, drag and drop Namespace onto the Dimensions category under the “Operational Analytics”.
    1. To create a roll-up for the date/time (year, month, day, hour):
      1. Click “Add Element” next to “Model Elements” at the top.
      2. In the pop-up window, enter the following:
        1. Enter New Element Name: DateRollUp
        2. Select Time Dimension
        3. Click “OK”
      3. Click on “DateRollUp” under Dimensions and select “Property” as “RunTime” in the Details pane. Then, click on the “H1” listed under “DateRollUp”, and click “Add Element” at the top again.
        1. Enter New Element Name: Year
        2. Select Level
        3. Click “OK”
        4. Click the new level that was just created and select the appropriate “Extract value with function” on the right-hand side under “Details”. See table below for corresponding functions.

        1. Repeat for Month, Day, and Hour
  • Element Name Year Month Day Hour
    Function Year MonthYear DayMonthYear HourNumber

     

    1. Drag and drop the remaining metrics except %ID (AvgAckTime, AvgTime, MaxTime, MinTime, NumInbound, and NumOutbound) onto the Measures category.
      1. The following only applies to the time metrics (AvgAckTime, AvgTime, MaxTime, MinTime). Leave NumInbound and NumOutbound as is:

    Under Details on the right-hand side, set the “Precision” to 3, as shown below.

    1. Press “Compile” and hit “Done” once finished. The Cube should look like the following:

     

     

    1. Back in the Management Portal, go to Analytics àAnalyzer. In the Analyzer, press the cube on the top left and select the “Operational Analytics” cube we just created.
      1. The Analyzer may already load the “Operational Analytics” cube. Move onto step 7 if so
    2. Drag and drop all the measures (except “Count”) under Columns. As for the dimensions, drag and drop them onto rows in the following manner:

    After dragging Namespace into Rows, drag DateRollUp onto the diagonal arrow of Namespace.

    1. To format the numbers that will show up in the table, click on the “wheel” symbol next to each measure you added in the column (see image above).
    2. When the “Level Options” window pops out, press “Format and Style” to expand the section.
      1. Enter “#” in the Format section for NumInbound and NumOutbound.
      2. Hit “OK” to exit.

    <shape id="Straight_x0020_Arrow_x0020_Connector_x0020_13" o:gfxdata="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 PM8kJaZeSOoFplFIGoWkWUiahaRVSFq+p8/F4VuMOhL3veLYG3pYfkyery3sbzjb/wIAAP//AwBQ SwMEFAAGAAgAAAAhAJxmRkG7AAAAJAEAACoAAABjbGlwYm9hcmQvZHJhd2luZ3MvX3JlbHMvZHJh d2luZzEueG1sLnJlbHOEj80KwjAQhO+C7xD2btJ6EJEmvYjQq9QHCMk2LTY/JFHs2xvoRUHwsjCz 7DezTfuyM3liTJN3HGpaAUGnvJ6c4XDrL7sjkJSl03L2DjksmKAV201zxVnmcpTGKSRSKC5xGHMO J8aSGtHKRH1AVzaDj1bmIqNhQaq7NMj2VXVg8ZMB4otJOs0hdroG0i+hJP9n+2GYFJ69elh0+UcE y6UXFqCMBjMHSldnnTUtXYGJhn39Jt4AAAD//wMAUEsBAi0AFAAGAAgAAAAhALvlSJQFAQAAHgIA ABMAAAAAAAAAAAAAAAAAAAAAAFtDb250ZW50X1R5cGVzXS54bWxQSwECLQAUAAYACAAAACEArTA/ 8cEAAAAyAQAACwAAAAAAAAAAAAAAAAA2AQAAX3JlbHMvLnJlbHNQSwECLQAUAAYACAAAACEAsyjl XvsBAADMBAAAHwAAAAAAAAAAAAAAAAAgAgAAY2xpcGJvYXJkL2RyYXdpbmdzL2RyYXdpbmcxLnht bFBLAQItABQABgAIAAAAIQCRLWpJWAYAAA8aAAAaAAAAAAAAAAAAAAAAAFgEAABjbGlwYm9hcmQv dGhlbWUvdGhlbWUxLnhtbFBLAQItABQABgAIAAAAIQCcZkZBuwAAACQBAAAqAAAAAAAAAAAAAAAA AOgKAABjbGlwYm9hcmQvZHJhd2luZ3MvX3JlbHMvZHJhd2luZzEueG1sLnJlbHNQSwUGAAAAAAUA BQBnAQAA6wsAAAAA " strokecolor="red" strokeweight="4.25pt" style="position:absolute; left:0; text-align:left; margin-left:300px; margin-top:145px; width:28.2pt; height:3.6pt; flip:x; z-index:251663360" type="#_x0000_t32"> <stroke endarrow="block" joinstyle="miter"> </stroke></shape>

    1. Press “Save” at the top, and fill in the following information for “Save Pivot”:
      1. Folder: Demo (up to user discretion)
      2. Pivot Name: Operational Analytics Pivot
      3. Press “OK”

    5) Create a Dashboard on Analytics – User Portal

    In this section, we will set up a dashboard on Analytics User Portal to display the resulting Operational Analytics pivot table.

    1. From the main screen of the Management Portal, click Analytics à User Portal. Ensure you are in the REPORTS namespace. 2. Press the large “+” sign at the top, and then press “Add Dashboard” under “Add New Item” on the left-hand column.
    1. Fill in the following information to create a new dashboard.
      1. Folder: Demo (up to user discretion)
      2. Dashboard Name: Operational Analytics Dashboard
      3. Dashboard Title: Operational Analytics Dashboard
      4. Press “OK” at the bottom right.
    3. An empty dashboard will have appeared on the page. Click the right-hand arrow on the left-side of the page. In the Dashboard Editor that will slide out, click “Widgets” and then the “+” sign to add a widget. 4. In the Widget Wizard, click on “Pivots and Charts” on the left-hand column, and then select “Table”. See example image below.
    1. Data source: Demo/Operational Analytics Pivot.pivot (use the magnifying glass button to navigate)
    2. Widget Name: Operational Analytics Widget
    3. Press “OK” on the bottom right to exit the wizard.

    The resulting widget will display the data stored in the Demo.OperationalAnalytics.MetricsTable. As of right now, there is no data stored and you will see an empty table.

     

    By adding a filter on Namespace or Year/Month/Day/Hour, we can focus on particular dates and exclude “null” data.

    1. Click the right-hand arrow on the left-side of the page. In the Dashboard Editor that will slide out, click “Widgets” and then select the “Operational Analytics Widget” widget. 2. Click on “Controls” and then press the “+” sign to prompt the Control Wizard
    1. Target: *
    2. Action: Apply Filter
    3. Filter: (put in Namespace, Month, etc.)
    4. Press “OK” to exit the wizard.
    3. Press “Save” on the top to preserve the newly added filter.
  • More filters can be added by following the above procedure.
  • 6) Schedule to Run Hourly using Task Manager

    In this section, we will use the Task Manager to schedule the Operational Analytics Dashboard to refresh every hour to evaluate the messages from the preceding hour.

    1. From the main screen of the Management Portal, ensure you are in the REPORTS namespace. To navigate to Task Manager, click System Operation à Task Manager à New Task 2. Fill out the Task Scheduler Wizard:
    1. Task name: Refresh Operational Analytics Dashboard
    2. Namespace to run task in: REPORTS
    3. Task type: Demo.OperationalAnalytics.Compute
    4. Click “Next>” on the bottom of the screen.
    5. How often do you want the Task Manager to execute this task? Daily
      1. Every “1” day(s)
      2. Specify Start Date (End Date is not necessary)
      3. Select the option to “Run every ___” and modify to “Run every 1 Hours”
      4. First time to run: 00:00:00
      5. Last time to run: 23:00:00
    6. Press “Finish” to exit the wizard.

    7) Verifying the Implementation

    In this section, we will examine how to verify the above implementation of the operational analytics table displaying key metrics of processing messages across specified namespaces.

    To observe the contents of the Demo.OperationalAnalytics.MetricsTable, we can take advantage of the built-in SQL feature.

    1. From the main screen of the Management Portal, ensure you are in the REPORTS namespace. 2. Navigate to System Explorer à SQL 3. Click “Execute Query” and insert the following SQL statement:
    1. select * from Demo_OperationalAnalytics.MetricsTable
  • Press “Execute” and the contents will be displayed via SQL.
  • 8) Resulting Analytics Dashboard: Sample

    By following the above implementation, we are able to achieve a table listing the metrics for messages from specified namespace(s).

     

     

     

     

    *Please note that the data has been generated for display purposes.

     

    Double click on "2019" next to SANDBOX to take advantage of the DateRollUp we created!  ![](/sites/default/files/inline/images/images/screen_shot_2020-03-20_at_8_42_42_am.png) Continue clicking down into "Mar-2019" or any of the other months to drill down into days and then hours.   ... and that's it! Please feel free to adapt the sample code to meet the needs of your organization! If you have any questions, please reach out to your account's Sales Engineer!