New post

Find

Article
· Mar 29, 2020 2m read

[ISC DEV] Continuous export of Classes/Rutines/DeepSee files to the working directory

Now the Classes/Rutines/DeepSee files will be automatically exported to the working directory after saving or compiling and files will be automatically deleted .

https://www.youtube.com/embed/B1pmqAQqd4M
[This is an embedded link, but you cannot view embedded content directly on the site because you have declined the cookies necessary to access it. To view embedded content, you would need to accept all cookies in your Cookies Settings]

Installation

To install isc-dev , you just need to download and import the file isc-dev.xml from last release.
Some ways to import isc-dev .xml file:

  • Go to Management Portal -> System Explorer -> Classes -> Import and select the XML file.
  • Drag the file over Studio.
  • Terminal command:
NS>do $system.OBJ.Load("yourpath/isc-dev.xml","ck")
NS>zpm
zpm: NS>install isc-dev

How to enable this feature:

  • After importing the class in the target namespace, run the following method to set up the working directory:
NS>do ##class(dev.code).workdir("/path/to/your/working/directory/src/")
  • Go to Management Portal -> System Administration -> Configuration -> Additional Settings -> Source Control.
  • Select the target namespace and set the dev.FileManExtension class as the main one and save it.
  • Try to create a new class in the studio and save/compile it
  • Enjoy!
4 Comments
Discussion (4)2
Log in or sign up to continue
Article
· Mar 26, 2020 16m read

InterSystems Online Programming Contest Terms

These Competition Terms (the "Terms") apply to competitions and contests sponsored by InterSystems and its affiliates including coding contests relating to InterSystems products and technologies (each a "Contest"). Please read these Terms and all applicable Rules (defined below) carefully as they form a binding legal agreement between you and InterSystems Corporation (“InterSystems”), with principal office located at:

InterSystems Corporation
1 Memorial Drive Cambridge
MA, 02142 UNITED STATES 

Our Contests vary, and InterSystems may post Contest-specific rules ("Rules") on the Contest websites on the Open Exchange (or linked therefrom) which, along with these Terms, become part of your agreement with InterSystems relating to the respective Contest. If there is a conflict between these Terms and the Rules, the Rules have priority.

Any decision or determination of any Contest administrator or judge, including interpretation and applications of the Terms and Rules, is final and binding in all matters relating to such Contest, to the extent allowed by law.

The Terms and Rules include information about how InterSystems may use your personal information when you create an “Open Exchange Profile” (as defined below) or participate in a Contest.

UNLESS YOU AGREE TO THE TERMS AND APPLICABLE RULES, YOU:

(1) MUST NOT CREATE AN OPEN EXCHANGE PROFILE OR PARTICIPATE IN A CONTEST AND

(2) ARE NOT ELIGIBLE TO RECEIVE PRIZES UNDER A CONTEST.

The words "include" and "including" are used in these Terms and any Rules to mean "including but not limited to."

ELIGIBILITY
VOID WHERE PROHIBITED. Each Contest is void in Crimea, Iran, North Korea, Quebec, Syria, and where prohibited by law.

NO PURCHASE NECESSARY TO ENTER OR WIN. You do not need to purchase any InterSystems product or service to enter or win a Contest.

INELIGIBLE INDIVIDUALS
You cannot participate in a Contest, will be immediately disqualified, and forfeit any related prize if you are or become:

  1. a resident of Quebec;
  2. a resident of Crimea, Iran, North Korea, Syria, or other US embargoed country;
  3. ordinarily resident in a US embargoed country;
  4. otherwise prohibited by applicable export controls and sanctions programs; or
  5. a resident anywhere that a Contest is prohibited by law.

You cannot participate in a Contest if you are under the age of majority in your home state or nation, and in no case if you are less than sixteen (16) years of age at the time of registration for the Contest.

REQUIREMENTS TO ENTER AND RECEIVE A PRIZE
In order to enter a Contest, you must have:

  1. access to the Internet,
  2. a valid email address, and
  3. a registration to any InterSystems online community required by these Terms or the applicable Contest Rules.

IF A CONTEST OFFERS A PRIZE
To coordinate the delivery of prizes, you must provide on InterSystems request:

  1. your name,
  2. phone number,
  3. a valid mailing address, and
  4. any other information InterSystems may need to award or send you such prize.

This information must be provided to InterSystems in English using ASCII characters only and will be used to award and send a prize to you. Use of non-ASCII characters may prevent or delay your receipt of an award or prize. InterSystems will endeavor to disperse prizes to all eligible prize recipients. You understand that there may be rare circumstances in which InterSystems is unable to disperse a prize due to administrative, carrier, or legal restrictions.

VERIFYING ELIGIBILITY
InterSystems reserves the right to verify your eligibility and to adjudicate any dispute at any time. You agree to provide InterSystems with any proof of eligibility requested by InterSystems, and your refusal or failure to provide such proof within ten (10) days of InterSystems request for such information will result in your disqualification from a Contest and forfeiture of any prizes.

COMMUNICATIONS
All communications between InterSystems and you, including over the Contest website or email communications, must be in English.

HOW TO ENTER A CONTEST
Open Exchange Profile Creation and Contest Participation.
To enter a Contest, you must first create a profile on the Open Exchange (“Open Exchange Profile”). Once your Open Exchange Profile has been created, you will be able to request registration for Contests. You will be required to provide additional information about yourself when registering for Contests.

Registration times are listed on the applicable Contest websites. YOU ARE RESPONSIBLE FOR DETERMINING THE CORRESPONDING TIME IN YOUR TIME ZONE. InterSystems  may modify the opening and closing dates for registration by an informational notice on the applicable Contest website. You are responsible for frequently reviewing Contest details on the applicable Contest website.

All the data provided through the profile creation and registration process must be complete, correct, and provided in English.

APPLICATION NAMES AND NICKNAMES
InterSystems  reserves the right to change or omit contestant nicknames or application names for purposes of publication on InterSystems websites, listserves, or other publication mechanisms particularly if they are, in InterSystems sole discretion, offensive, obscene, or violate the intellectual property rights of others. If InterSystems determines that you or your team’s naming fails the above criteria, you and your team members, if applicable, may be disqualified from the Contest(s) for which you have registered.

CONTEST STRUCTURE
Each Contest consists of submission and voting stages as may be more fully described in the Rules posted on the applicable Contest website. Each Contest introduces one or more challenges for you to resolve (hereinafter, “Prompt(s)”). In each Contest, you will receive a score based on the success of your solution to the Prompt and the quality of code.

PROMPTS
In each Contest, you will be asked to resolve one or more problems in the Prompt. Based on your contest submission, votes from the judges or other judging participants (as described in the Contest Rules) will be cast to determine the winner(s) of the Contest. You will be able to access the Prompt(s) on the applicable Contest website or online the judging system when the Contest begins.

SUBMISSIONS
You must submit your applications through the Contest website or the specified online judging system.

Your submission must be in the format specified by the applicable Contest website or relevant online judging system, the applicable Rules, and these Terms (in order of decreasing priority). Deliberately obfuscated source code is not allowed.

You should submit your solutions with enough time remaining in each time period to avoid latency issues between your computer and InterSystems servers. Solutions will not be accepted after the applicable contest  period expires.

MODIFYING A CONTEST
InterSystems may cancel or modify the structure and timing of a Contest for any or no reason at all. Generally, such modification will be limited to ensuring conformance or clarity of the Terms and applicable Rules or to prevent an unfair result. In the event of any such modification to a Contest, its rules, or these Terms, InterSystems shall post a notice of the changes conspicuously on the Open Exchange or the Contest website.

PRIVACY TERMS
Scope. This Privacy Terms section covers the information you share with InterSystems during the course of your participation in a Contest or use of any Contest website.

Privacy, Generally. Your use of any coding competitions services or platforms in connection with your participation in a Contest is governed by the applicable Rules and these Terms, including this Section (Privacy Terms), InterSystems Privacy Policy, and, if applicable, any relevant InterSystems policies relating to other relationships between InterSystems and the contestant(s), including employment, candidate, and consultant privacy policies. InterSystems uses the information collected in connection with a Contest based on InterSystems legitimate interest in administering and managing Contests and activity associated with each Contest.

Information InterSystems Collects. In order to administer Contests and manage Contest activity (including Contest Profiles), InterSystems collects basic contestant information about you (for example, your name, email, and school or company name), information about your coding experience (such as your preferred coding language), and information about your contest submissions (for example: file information and content information about your submission, its evaluation, or your Contest scores). InterSystems  will collect this information from both:

  1. You, when you provide it during the course of registering for a Contest or creating an Open Exchange Profile); or
  2. judges or other individuals responsible for managing a Contest.

InterSystems Use of Your Information. InterSystems will use the information you provide to administer a Contest (including verifying your eligibility to participate in a Contest and delivering prizes). This data will be maintained in accordance with the InterSystems Privacy Policy. If you have expressed interest in learning about InterSystems events, programs, and/or job opportunities, your data will be disclosed to InterSystems’s internal outreach and staffing teams.

Personally Identifiable Information in Nicknames and Submissions. InterSystems strongly discourages from you from including any personally identifying information (e.g., your legal name or location) in your contestant nickname, team name, and submissions. Such nickname, team name, or submission material may be published publicly.

Sharing Your Information. Your name, username, application name, location details, country of residence, and any personal details (e.g., your favorite coding language) that you specified during registration; any/all of these may be displayed publicly on Contest websites, social media, and InterSystems-managed blogs for promotion purposes. You can request to have this information omitted from display by emailing InterSystems Developer Community at community@InterSystems.com.

If you win a prize, InterSystems may share your name, phone number, e-mail address, and mailing address with third parties during the process of prize fulfillment. InterSystems may also be required to disclose your information to external third parties, such as local labor authorities, courts, tribunals, regulatory bodies, and/or law enforcement agencies for the purpose of complying with applicable laws and regulations or in response to legal processes.

InterSystems maintains servers around the world, and your information may be processed on servers located outside of the country where you live. Data protection laws (including those regulating the publishing and disclosure of your information) vary among countries.

ACCESSING YOUR INFORMATION

  1. While logged into a Contest website, you will be able to access, review, and update some of your personal data held by InterSystems in connection with a Contest.  
  2. In certain countries, you may have the right to request access or updates to your information, request that it be deleted, and restrict the processing of your information. You may also have the right to object to the processing of your information. Please contact the contest administrator via the applicable Contest website if you would like to exercise any of these rights. InterSystems will respond to any requests in accordance with applicable law; therefore, there may be circumstances where InterSystems is not able to comply with your request.  
  3. To delete your Open Exchange Profile, you must email community@InterSystems.com. Deleting your Contest Profile may terminate your access to your Contest history, de-register you from all Contests for which you have enrolled; or forfeit all claims to prizes accruing to your Profile. If you have participated in past Contests, deleting your Contest Profile shall prevent your registered nickname from appearing on any public scoreboards. However, your code and historical activity may remain in our system data stores and scoreboards.

CONTACTING INTERSYSTEMS ABOUT PRIVACY QUESTIONS
You can contact the applicable Contest administrator via the applicable Contest website if you have questions about the processing of your information collected in connection with a Contest.

If you are in the EU and cannot find the answer to your question in these Terms or Rules, then you can contact InterSystems Data Protection Office at dpo@intersystems.com.

Depending on your country of residence, you can contact your local data protection authority if you have concerns regarding your rights under local law.

ADVANCEMENT AND NOTICE OF WINNERS
Notice of Advancement. Results posted on a Contest website are not definitive and may change as necessary in InterSystems sole discretion to comply with these Terms or the Contest Rules.

Announcement of Winners. The results of a Contest will be posted on the applicable Contest website after completion of such Contest. Posted results will include a list of the contestants' names, nicknames, usernames, and application names in ranked order based on their scores.

PRIZES
If a Contest offers a prize, then the following Terms are applicable:

Money Prizes. Money prizes will be awarded in U.S. dollars and may be delivered in the form of cash, check, gift card, or other cash equivalent. You are responsible for any costs associated with currency exchanges directed by you. InterSystems may work with an authorized third-party to convert money prizes into a local currency. You understand InterSystems has sole discretion to choose which currency exchange rate to apply in order to convert any money prize into a non-U.S. dollar currency.

Taxes. You are solely responsible for complying with all applicable tax laws and filing requirements. To remain eligible for a prize, you must submit to InterSystems or a relevant tax authority specified by InterSystems, all documentation requested by InterSystems or required by applicable law within seven (7) days (or less if required by regulation) of request by InterSystems or its designated agent. You are solely responsible for paying all taxes, duties, and other fees imposed on prizes awarded to you. All prizes will be net of any taxes InterSystems is required by law to withhold.

No Warranties for Prizes. Except as required by law, InterSystems makes no warranties, express or implied, for prizes.

Prizes are Non-Transferable. Participants may not sell or give away the entitlement to a prize to their customers or other persons.

DISQUALIFICATION
You may be disqualified from a Contest and forfeit any prizes you may be eligible to receive for said Contest or any other Contest if InterSystems reasonably believes that you have attempted to undermine the legitimate operation of a Contest, including by:

  1. Providing false information about yourself during registration or concerning your eligibility;
  2. Breaching or refusing to comply with any Terms or Rules of any Contest for which you have registered;
  3. Tampering or interfering with administration of a Contest (including monitoring at onsite rounds) or with the ability of other contestants to participate in a Contest;
  4. Submitting content that:
    1. violates the rights of a third party;
    2. is lewd, obscene, pornographic, racist, sexist, or otherwise inappropriate to a Contest, in each case, as determined in InterSystems sole discretion; or
    3. violates any applicable law.
  5. Threatening or harassing other contestants or InterSystems personnel--including its employees and representatives.

Harassing behavior (as described in the list above) includes offensive, threatening, and/or hateful comments directed toward an individual or protected class (e.g., sexual orientation, disability, gender identity, age, race, religion, ethnicity, veteran status), the use or display of sexual images in public or shared spaces, deliberate intimidation or distress, stalking, following, taking unwelcome photos/videos, sustained disruption of talks or other events, inappropriate physical contact, unwelcome sexual attention or communications, and developing and/or promoting any applications designed to encourage any of these behaviors. InterSystems has sole discretion over whether a Contest participant has committed threatening or harassing behavior.
REPORTING INAPPROPRIATE BEHAVIOR
Using the applicable Contest administrator email address specified on the applicable Contest website, you may report to InterSystems any harassment, cheating, or violation of any Terms or Rules by another contestant. InterSystems  may investigate any such allegations and all decisions by InterSystems in these matters are final and binding. If you are asked to stop any harassing behavior, you are expected to comply immediately.

As required in the sole discretion of InterSystems or its agents, disqualification from one Contest may disqualify you from other Contests or from the same Contest in subsequent years. The scope of a disqualification will depend on the character and severity of the violation resulting in such disqualification.

OWNERSHIP; RIGHTS IN YOUR SUBMISSIONS
License to Use Content; Reservation of Rights. InterSystems may publish code and content to Contest websites to support participation in the Contest. You may use the code and content made available on a Contest website solely to prepare for and compete in such Contest. InterSystems retains all rights in such code and content except as explicitly granted by the Terms or Rules of the Contest(s) for which you have registered.

Ownership of Submissions. You warrant that you have the right to publish your Contest submission in any Contest for which you register. You retain all rights to your submitted source code and any other work product that you held before submitting them to a Contest except that you grant to InterSystems a perpetual, nonexclusive, unrestricted right to use your Contest submission(s) anywhere in the world for the promotion or management of InterSystems online communities, marketing, or research relating to technologies used in your submissions.

Social Media. If you post on your social media page using Contest hashtags or labels (e.g., “#IRISDev”) or share/post any content on a Contest social media page (altogether “Social Media Content”), then InterSystems may feature such Social Media Content in marketing and promotional materials for any Contest.

THE LICENSE YOU GRANT TO INTERSYSTEMS
You grant InterSystems an unrestricted, sublicensable, transferable, perpetual, irrevocable, worldwide, free license to use your Social Media Content to promote any Contest.

You warrant that you have the authority to grant the license set forth in this Section.

You waive all rights in such content shared on social media (including any right of prior approval), and you release InterSystems and its agents from any claim or cause of action, whether now known or unknown, for: defamation, copyright infringement, invasion of rights to privacy, publicity, or personality or any similar matter, or any cause of action based relating to the use and exploitation of Social Media Content. Moreover, you will neither sue nor bring any proceeding against InterSystems or its agents for their use of your Social Media Content in accordance with these Terms or other applicable Contest Rules.

Permission to Use Your Name and Likeness. By registering for a Contest, you agree that InterSystems and its agents may, without compensation, use your name, likeness, and statements to promote a Contest--including displaying it on a Contest website.

YOUR REPRESENTATIONS, WARRANTIES, INDEMNITIES.
Representations and Warranties.

You represent and warrant that:

  1. the information you provide about yourself while registering or in subsequent communications with InterSystems is truthful and accurate;
  2. except as permitted by the Terms and Rules of the Contest(s) for which you have registered, your submissions to a Contest are original and not created with the assistance of any information about the relevant Prompt other than what has been provided by InterSystems;
  3. you own all rights in your submissions or otherwise have the right to submit your submissions to InterSystems and to grant to InterSystems the licenses granted in these Terms and any applicable Rules without violating any rights of any other person or entity or any obligation you may have to such person or entity; and
  4. your submissions do not violate any applicable laws.

Indemnities. You will indemnify InterSystems and its affiliates, directors, officers, and employees against all liabilities, damages, losses, costs, fees (including reasonable legal fees), and expenses relating to any allegation or third-party legal proceeding to the extent arising from:

  1. your acts or omissions in relation to a Contest (including your use or acceptance of any prize and your breach of these Terms or any applicable Rules); and
  2. your submissions violating any rights of any other person or entity or any obligation you may have with them.

DISCLAIMERS
EACH CONTEST WEBSITE AND ALL CONTENT (INCLUDING SOURCE CODE) IS PROVIDED ON AN "AS IS" AND "AS AVAILABLE" BASIS. INTERSYSTEMS DISCLAIMS ALL REPRESENTATIONS AND WARRANTIES (EXPRESS OR IMPLIED), INCLUDING ANY WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. INTERSYSTEMS IS NOT RESPONSIBLE FOR ANY INCOMPLETE, FAILED, OR DELAYED TRANSMISSION OF YOUR APPLICATION INFORMATION OR SUBMISSIONS DUE TO THE INTERNET, INCLUDING INTERRUPTION OR DELAYS CAUSED BY EQUIPMENT OR SOFTWARE MALFUNCTION OR OTHER TECHNICAL PROBLEMS. INTERSYSTEMS IS NOT RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER OR SOFTWARE RESULTING FROM DOWNLOADED SOURCE CODE. YOU USE ALL SOURCE CODE AVAILABLE ON A CONTEST WEBSITE OR ONLINE JUDGE SYSTEM AT YOUR OWN RISK.

MISCELLANEOUS
Not an Offer or Contract of Employment.

  1. You acknowledge that your participation in the Open Exchange, Developer Community, Contest, or other interaction with InterSystems relating to these terms, is voluntary.
  2. You acknowledge that no confidential, fiduciary, agency or other relationship or implied-in-fact contract now exists between you and InterSystems so as to contravene or override these Terms.
  3. No relationship described in part B of this Section is established by your submission of an entry to Contest.
  4. You understand and agree that nothing in these Terms, any Rules, any submission to a Contest, or any award of a prize may be construed as an offer or contract of employment with InterSystems.

Severability. If any provision (or part of a provision) of these Terms or Contest Rules is or becomes invalid, illegal, or unenforceable, the rest of the terms will remain in effect.

Import and Export Laws. InterSystems will organize each Contest in compliance with all applicable import laws, export laws, rules, regulations, and sanctions programs. Participants acknowledge and agree that each Contest (including the award of prizes, swag, or other items) may be subject to certain export laws and regulations.

Governing Law. ALL CLAIMS ARISING OUT OF OR RELATING TO THESE TERMS AND ANY CONTEST RULES WILL BE GOVERNED AND INTERPRETED IN ACCORDANCE WITH THE LAWS OF THE COMMONWEALTH OF MASSACHUSETTS WITHOUT GIVING EFFECT TO THE MASSACHUSETTS’  CONFLICT OF LAWS PROVISIONS, AND THE SAME SHALL BE LITIGATED EXCLUSIVELY IN THE FEDERAL OR STATE COURTS OF THE COMMONWEALTH OF MASSACHUSETTS IN MIDDLESEX COUNTY. THE PARTIES HERETO CONSENT TO PERSONAL JURISDICTION IN COURTS IDENTIFIED ABOVE.

Discussion (0)0
Log in or sign up to continue
InterSystems Official
· Mar 25, 2020

March 25, 2020 - Alert: HS2020-03: Multiple HealthShare Alerts

Dear HealthShare Customer:

This post is part of the HealthShare HS2020-03 Alert communications process.  The same information is also distributed:

There are 7 alerts in the HealthShare HS2020-03 Alert communication, including the previously posted "March 25, 2020 Alert: Possible Data Integrity Issues after Compaction or Defragmentation."  The summary is in the table below, and the detail is contained in the attached document: HealthShare HS2020-03.

Alert Product & Versions Affected Risk Category & Score

HS2020-03-01: Break-the-Glass Events not Properly Audited for ODS

HealthShare Unified Care Record 2019.1 and 2019.2 using the Operational Data Store

4-High Risk (Privacy)

HS2020-03-02: Archiving of Historical Aliases Causes System Hang

HealthShare Patient Index 2018.1, 2019.1, and 2019.2

3-Medium Risk (Operational)

HS2020-03-03: Permissions to Access Patient Records Vary Between Clinical Viewer v1 and v2

HealthShare Information Exchange and Unified Care Record v2 viewer in 2018.1, 2019.1 and 2019.2

4-High Risk (Privacy)

HS2020-03-04: Invalid Handling of Improperly Formatted Reference Ranges in HL7 V2 Result Messages

HealthShare Information Exchange 15.03 and 2018.1; Unified Care Record 2019.1 and 2019.2

3-Medium Risk (Clinical)

HS2020-03-05: AngularJS 1.5.8 Vulnerability

All versions of HealthShare Personal Community

External (Security)

HS2020-03-06: “LogCounter” in Access Gateway is Reset on Upgrade

All versions of HealthShare Information Exchange and Unified Care Record up to and including 2019.1

3-Medium Risk (Operational)

HS2020-03-07: Possible Data Integrity Issues after Compaction or Defragmentation

All HealthShare products starting from HealthShare 15.x and Personal Community 12.x and above.

HealthShare Health Connect 2019.1.0 and 2019.1.1 based on InterSystems IRIS®, and older Health Connect versions built on Cache/Ensemble 2016.2 and above.

2-Low Risk (Operational)

 

If you have any questions regarding this alert, please contact the Worldwide Response Center (WRC), and reference “HealthShare Alert HS2020-03

Thank you

Discussion (0)0
Log in or sign up to continue
Article
· Mar 19, 2020 10m read

Developing Operational Analytics Dashboards

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:

 

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.”

 

 

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.

  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.
  4. 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
  4. 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! 

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!

3 Comments
Discussion (3)2
Log in or sign up to continue
Question
· Mar 19, 2020

Cache sql syntax and meaning

Hi ,

 

I have a code written in cache  sql and trying to understand it, below is the code , can anyone help me understand what does that mean 

ex - !! dosage_unit !!

 

 

SELECT (CASE WHEN (order_description IS NULL OR (order_description='')) THEN '' ELSE (order_description) END) !! (CASE WHEN (dosage IS NULL OR dosage_unit IS NULL OR (dosage='') OR (dosage_unit='')) THEN '' ELSE (', ' !! dosage !! ' ' !! dosage_unit !!

 

Thank You in advance.

12 Comments
Discussion (12)1
Log in or sign up to continue