<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
    <title>Millennium Medic</title>
    
    
    <link rel="alternate" type="text/html" href="http://millenniummedic.typepad.com/millennium-medic/" />
    <id>tag:typepad.com,2003:weblog-1860911</id>
    <updated>2012-02-17T10:02:01-06:00</updated>
    <subtitle>Prescriptions for a Healthy Cerner System</subtitle>
    <generator uri="http://www.typepad.com/">TypePad</generator>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/MillenniumMedic" /><feedburner:info uri="millenniummedic" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://hubbub.api.typepad.com/" /><feedburner:emailServiceId>MillenniumMedic</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry>
        <title>MQ Assumptions Might Send the Wrong Message</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MillenniumMedic/~3/qhhz69wfzMM/mq-assumptions-might-send-the-wrong-message.html" />
        <link rel="replies" type="text/html" href="http://millenniummedic.typepad.com/millennium-medic/2012/02/mq-assumptions-might-send-the-wrong-message.html" thr:count="1" thr:updated="2012-02-17T12:55:42-06:00" />
        <id>tag:typepad.com,2003:post-6a011570459bbb970b0168e783e7d5970c</id>
        <published>2012-02-17T10:02:01-06:00</published>
        <updated>2012-02-17T10:02:01-06:00</updated>
        <summary>By David Hallberg Although not the official motto of the U.S. Postal Service, the following ancient words by the Greek philosopher Herodotus have formed my expectation for mail delivery — and quite possible yours: Neither snow, nor rain, nor heat, nor gloom of night, stays these couriers from the swift completion of their appointed rounds. What if my assumption is wrong? What if my letter doesn’t make it to its destination? In recent years, a couple of postal carriers have been convicted of stealing packages. The people who mailed those packages assumed their couriers would swiftly complete their appointed rounds....</summary>
        <author>
            <name>Millennium Medic</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Messaging" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Troubleshooting" />
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://millenniummedic.typepad.com/millennium-medic/"><div xmlns="http://www.w3.org/1999/xhtml"><p>By David Hallberg</p>
<p>Although not the official motto of the U.S. Postal Service, the following ancient words by the Greek philosopher Herodotus have formed my expectation for mail delivery — and quite possible yours:</p>
<p><em>Neither snow, nor rain, nor heat, nor gloom of night, stays these couriers from the swift completion of their appointed rounds.</em></p>
<p>What if my assumption is wrong? What if my letter doesn’t make it to its destination? In recent years, a couple of postal carriers have been convicted of stealing packages. The people who mailed those packages assumed their couriers would swiftly complete their appointed rounds. They operated on a false assumption. Although the vast majority of mail arrives without a hitch, theirs didn’t.</p>
<p>So it is with Millennium’s delivery system. Be careful to assume that all transactions are going through.</p>
<p>One of my recent clients had been told that Millennium cannot lose transactions because it uses IBM’s WebsphereMQ for communication. That’s true to an extent: If a transaction is put into a persistent queue (Millennium RDM queue), and if the receiving MQ queue exists and does not have InhibitPut enabled, the data in that transaction will make it. That’s two “ifs,” and here’s another one: If the filesystems or disk drives that the MQ uses for logs fills up, MQ on that node will stop. This means no messages are getting from their source to their destination.</p>
<p>What about non-persistent queues (SSREP)? They have limitations too: The transaction will go through if the requesting process is connected to the SSREP queue, if the Shared Service Queue Administrator (SCP Entry ID 36) does not have InhibitPut enabled, if the request processed by the server (like CPM Script) completes its work successfully, if the SSREP queue is not full, and if the Exception queue is not full. Whew! Any of these issues could cause MQ to fail to deliver something or to deliver what is called a null return, a return that contains no data.</p>
<p>This might sound to you like a transient issue with a specific request or server that only happens on occasion. Unfortunately for my client, this particular problem caused more than one production outage. How could one request cause a production outage? The problem started to spiral when the Java server that made the request to CPM Script did not get a response back. The following data shows what happened next with the Java server:</p>
<table border="1" cellpadding="2" cellspacing="0" style="font-size: 10px; font-family: arial; line-height: 10px;">
<tbody>
<tr>
<td bgcolor="#cccccc" valign="bottom"><strong>Data</strong></td>
<td bgcolor="#cccccc" valign="bottom"><strong>Event</strong></td>
<td bgcolor="#cccccc" valign="bottom"><strong>Location</strong></td>
<td bgcolor="#cccccc" valign="bottom"><strong>Level</strong></td>
<td bgcolor="#cccccc" valign="bottom"><strong>Source</strong></td>
</tr>
<tr>
<td valign="bottom">
<p>{{binding::SSREP.CPMSCRIPT}}{{status::1544}}{{descrip:: There was no message that met the selection criteria}}</p>
</td>
<td valign="bottom">QUE_Get</td>
<td valign="bottom">appnode1/<br />21215/380</td>
<td align="right" valign="bottom">1</td>
<td valign="bottom">srvjavadriver</td>
</tr>
<tr>
<td valign="bottom">The request 115458 returned with a status of 1.</td>
<td valign="bottom">CRM_Perform Status</td>
<td valign="bottom">appnode1/<br />21215/380</td>
<td align="right" valign="bottom">2</td>
<td valign="bottom">srvjavadriver</td>
</tr>
<tr>
<td valign="bottom">[3200285_2012_0110_150541_742_CST - Exception occurred during transaction [msvc_svr_get_medication_administrations (3200285)] called by [BOBSURUNCLE]: DataAccessException: com.cerner.msvc.security.internal. user.data.access.proxy.UserDAOProxy at com.cerner.d</td>
<td valign="bottom"> </td>
<td valign="bottom">appnode1/<br />21215/380</td>
<td align="right" valign="bottom">0</td>
<td valign="bottom">com.cerner.server. clinicalevent</td>
</tr>
</tbody>
</table>
<p>The generic Java driver sees that the request from the Java service clinical_event never received a response from CPM Script (illustrated by the first row of data: “… There was no message that met the selection criteria”). Since the request from the user BOBSURUNCLE did not get the data needed from CPM Script, the transaction “msvc_svr_get_medication_administrations” failed. I would hope that the clinician was told about the problem and resubmitted the request. But I do not know if that happened. I do know that the client had their production environment hang for a while. Once they called support, they were told to cycle all of the CPM Script servers. After cycling, everything started working again.</p>
<p>So I urge you to be careful with your assumptions. Sometimes the mail carrier fails to deliver your package or delivers a package with nothing in it. Sometimes WebsphereMQ fails to complete a transaction or sends it to the wrong place or completes it without the right data. The impact might be small, affecting just one clinician, or it can be large, affecting the entire organization. Keep an eye on the message log event “QUE_Get.” It will be a very good indicator that something is going wrong, especially with any of the Java services.</p>
<p><strong>Prognosis:</strong> Having a reliable messaging system is important; having messages properly handled by specific executables is priceless.</p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/MillenniumMedic/~4/qhhz69wfzMM" height="1" width="1" /></div></content>



    <feedburner:origLink>http://millenniummedic.typepad.com/millennium-medic/2012/02/mq-assumptions-might-send-the-wrong-message.html</feedburner:origLink></entry>
    <entry>
        <title>Serving up Answers at HIMSS</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MillenniumMedic/~3/l4AOY2YGC7s/serving-up-answers-at-himss.html" />
        <link rel="replies" type="text/html" href="http://millenniummedic.typepad.com/millennium-medic/2012/02/serving-up-answers-at-himss.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a011570459bbb970b0168e70d5343970c</id>
        <published>2012-02-09T12:29:56-06:00</published>
        <updated>2012-02-09T12:29:56-06:00</updated>
        <summary>By David Hallberg Buried in the alphabet soup of this year’s HIMSS sessions — EHRs, HIEs, ACOs, CDS, ICD-10, MU — is the reminder that expectations for HIT (healthcare information technology) continue to skyrocket and, with it, the number of EMR options you have to implement. Improved patient safety, affordable care, access to information and accurate recordkeeping all rely on the EMR system. Is your system ready to meet these growing regulatory and public demands? How do you keep it running reliably and securely as new software and systems are integrated? Will you be at HIMSS later this month to...</summary>
        <author>
            <name>Millennium Medic</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="See Us At..." />
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://millenniummedic.typepad.com/millennium-medic/"><div xmlns="http://www.w3.org/1999/xhtml"><p>By David Hallberg</p>
<p>Buried in the alphabet soup of this year’s HIMSS sessions — EHRs, HIEs, ACOs, CDS, ICD-10, MU — is the reminder that expectations for HIT (healthcare information technology) continue to skyrocket and, with it, the number of EMR options you have to implement. Improved patient safety, affordable care, access to information and accurate recordkeeping all rely on the EMR system.</p>
<p>Is your system ready to meet these growing regulatory and public demands? How do you keep it running reliably and securely as new software and systems are integrated? Will you be at HIMSS later this month to get some answers?</p>
<p>If so, we’d love for you to let us know what you hope to accomplish at HIMSS. What sessions will you attend? What people do you want to talk with? What vendors interest you? You can start a conversation by commenting on this post.</p>
<p>If your hospital is running Cerner Millennium<sup>®</sup>, we also invite you to come see us while you’re on the exhibit floor. We Millennium Medics will be in the Softek Solutions booth, #4056, ready to talk with you about any Millennium performance questions you may have. For the past three years, this blog has walked you through steps to troubleshoot common system issues and has sung a familiar tune: “Tune, Tune, Tune.” We have years of experience working with the Cerner system and are the geeks who love to talk about that kind of thing. Please come see us.</p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/MillenniumMedic/~4/l4AOY2YGC7s" height="1" width="1" /></div></content>



    <feedburner:origLink>http://millenniummedic.typepad.com/millennium-medic/2012/02/serving-up-answers-at-himss.html</feedburner:origLink></entry>
    <entry>
        <title>OnTrack Panther Supports Millennium 2012.x Code</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MillenniumMedic/~3/4morAu2Egsk/ontrack-panther-supports-millennium-2012x-code.html" />
        <link rel="replies" type="text/html" href="http://millenniummedic.typepad.com/millennium-medic/2012/01/ontrack-panther-supports-millennium-2012x-code.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a011570459bbb970b01676007e4c9970b</id>
        <published>2012-01-05T16:34:29-06:00</published>
        <updated>2012-01-05T16:34:29-06:00</updated>
        <summary>By Chris Lanaman David Hallberg’s recent blogs on preparing for your Millennium® site’s upgrade to 2012.x code have coincided with several conversations with clients who use OnTrack™ Panther™ to manage and monitor system performance. They want to know: “Does Panther support Millennium 2012.x code?” And: “Will OnTrack audits still point out issues as I test the new code and then move it to prod?” I want to assure you that all Softek OnTrack products and services support this version of code. For those of you not familiar with Softek, our software and services give you a high level of visibility...</summary>
        <author>
            <name>Millennium Medic</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Configuration" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Consistency" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="IT Team" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Troubleshooting" />
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://millenniummedic.typepad.com/millennium-medic/"><div xmlns="http://www.w3.org/1999/xhtml"><p>By Chris Lanaman</p>
<p>David Hallberg’s recent blogs on preparing for your Millennium<sup>®</sup> site’s upgrade to 2012.x code have coincided with several conversations with clients who use OnTrack™ Panther™ to manage and monitor system performance. They want to know: “Does Panther support Millennium 2012.x code?” And: “Will OnTrack audits still point out issues as I test the new code and then move it to prod?” I want to assure you that all Softek OnTrack products and services support this version of code.</p>
<p>For those of you not familiar with Softek, our software and services give you a high level of visibility into your EMR system along with actionable evaluations and alerts developed and serviced by a team who collectively had years of experience at Cerner and various Millennium hospitals.</p>
<p>As we enter a new year, we have the same great news we have had since Cerner developed Millennium version 7.6: Softek is working to provide your site an objective view into the performance and reliability of your Millennium system.</p>
<p>The following table lists the Millennium code versions supported by OnTrack Panther.</p>
<table border="1" cellpadding="2" cellspacing="0" style="font-size: 10px; font-family: arial; line-height: 10px;">
<tbody>
<tr>
<td valign="top" width="133"><strong>Millennium Version</strong></td>
</tr>
<tr>
<td valign="top" width="133">7.6</td>
</tr>
<tr>
<td valign="top" width="133">7.7</td>
</tr>
<tr>
<td valign="top" width="133">7.8</td>
</tr>
<tr>
<td valign="top" width="133">2001.01</td>
</tr>
<tr>
<td valign="top" width="133">2001.x</td>
</tr>
<tr>
<td valign="top" width="133">2003.01</td>
</tr>
<tr>
<td valign="top" width="133">2003.02</td>
</tr>
<tr>
<td valign="top" width="133">2005.01</td>
</tr>
<tr>
<td valign="top" width="133">2005.02</td>
</tr>
<tr>
<td valign="top" width="133">2007.02</td>
</tr>
<tr>
<td valign="top" width="133">2007.03-2007.17</td>
</tr>
<tr>
<td valign="top" width="133">2007.18.x</td>
</tr>
<tr>
<td valign="top" width="133">2007.19.x</td>
</tr>
<tr>
<td valign="top" width="133">2010.01.x</td>
</tr>
<tr>
<td valign="top" width="133">2010.02.x</td>
</tr>
<tr>
<td valign="top" width="133">2012.01.x</td>
</tr>
<tr>
<td valign="top" width="133">Choose and Book</td>
</tr>
<tr>
<td valign="top" width="133">eBookings</td>
</tr>
</tbody>
</table>
<p><strong>Prognosis:</strong> Third-party support that gives your organization intuitive management of your Millennium EMR system can be the foundation for a smooth upgrade to 2012.x code.</p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/MillenniumMedic/~4/4morAu2Egsk" height="1" width="1" /></div></content>



    <feedburner:origLink>http://millenniummedic.typepad.com/millennium-medic/2012/01/ontrack-panther-supports-millennium-2012x-code.html</feedburner:origLink></entry>
    <entry>
        <title>Citrix Load Balancing in a Complex Environment</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MillenniumMedic/~3/y2uM9OdBPac/citrix-load-balancing-in-a-complex-environment.html" />
        <link rel="replies" type="text/html" href="http://millenniummedic.typepad.com/millennium-medic/2011/12/citrix-load-balancing-in-a-complex-environment.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a011570459bbb970b0162fdce07a5970d</id>
        <published>2011-12-15T10:00:00-06:00</published>
        <updated>2011-12-15T10:48:22-06:00</updated>
        <summary>By David Hallberg A recent client’s Millennium® performance issues had me stumped. The organization had a normal two-application and two-database node configuration. It was using very little CPU and had virtually no paging on these nodes. Queuing was pretty good from an MQ and proprietary middleware perspective. There was a lot of interface queuing, but the organization was on an older version of Oracle and we were not going to be able to address this area of their queuing until a database rebuild. So how could I help them right then? I turned my attention to the Citrix servers —...</summary>
        <author>
            <name>Millennium Medic</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Consistency" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Troubleshooting" />
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://millenniummedic.typepad.com/millennium-medic/"><div xmlns="http://www.w3.org/1999/xhtml"><p>By David Hallberg</p>
<p>A recent client’s Millennium<sup>®</sup> performance issues had me stumped. The organization had a normal two-application and two-database node configuration. It was using very little CPU and had virtually no paging on these nodes. Queuing was pretty good from an MQ and proprietary middleware perspective. There was a lot of interface queuing, but the organization was on an older version of Oracle and we were not going to be able to address this area of their queuing until a database rebuild. So how could I help them right then?</p>
<p>I turned my attention to the Citrix servers — they had more than 100 of them — to check the load balance. The backend gave me little to go on, so I had to look deeper to see how the Citrix servers were connecting with Millennium. In this CPOE shop, Discern Notification alerts clinicians to potential problems with their order deliveries, so I chose to evaluate the Citrix load balancing in this component of Millennium.</p>
<p>When I did, I found that the method of Citrix load balancing being used was causing inconsistent response times for clinicians. Fast application and database nodes could not fix this performance problem. Rather, the team had to use the Citrix load balancing tool on Application User Load to more evenly distribute the core applications of, for instance, PowerChart<sup>® </sup>and FirstNet<sup>®</sup>. The better application distribution resulted in more consistent performance for their clinicians.</p>
<p>If you want to investigate whether you have a load balancing issue between Citrix and the application nodes, I’ll take you through the steps to parse your data and then evaluate the results. Start with one of the following select statements (either from CCL or SQL*Plus):</p>
<p><em>            CCL&gt; rdb select * from EKS_NOTIFY_DEST go </em></p>
<p><em>            SQLPLUS&gt; select * from EKS_NOTIFY_DEST ;</em></p>
<p>Your output will look something like this (for space reasons, I have eliminated three columns on the right and reduced my example to two rows of data):</p>
<table border="1" cellpadding="2" cellspacing="0" style="font-size: 10px; font-family: arial; line-height: 10px;">
<tbody>
<tr>
<td bgcolor="#cccccc" valign="bottom"><strong>LOCATION</strong></td>
<td bgcolor="#cccccc" valign="bottom"><strong>TCP_IP_ADDR</strong></td>
<td bgcolor="#cccccc" valign="bottom"><strong>TCP_IP<br />_PORT</strong></td>
<td bgcolor="#cccccc" valign="bottom"><strong>PERSON<br />_ID</strong></td>
<td bgcolor="#cccccc" valign="bottom"><strong>UPDT_DT_TM</strong></td>
<td bgcolor="#cccccc" valign="bottom"><strong>UPDT_ID</strong></td>
<td bgcolor="#cccccc" valign="bottom"><strong>UPDT<br />_TASK</strong></td>
</tr>
<tr>
<td align="right" valign="bottom">54099</td>
<td valign="bottom">192.168.1.62!RLL9989:<br />PROD:DEARMAN</td>
<td align="right" valign="bottom">2048</td>
<td align="right" valign="bottom">11199999</td>
<td align="right" valign="bottom">2011/11/15 01:54:54</td>
<td align="right" valign="bottom">11199999</td>
<td align="right" valign="bottom">3071000</td>
</tr>
<tr>
<td align="right" valign="bottom">1555555</td>
<td valign="bottom">192.168.1.61!DAVID.<br />HALLBERG:PROD:DWH9999</td>
<td align="right" valign="bottom">2048</td>
<td align="right" valign="bottom">8999999</td>
<td align="right" valign="bottom">2011/11/04 07:33:07</td>
<td align="right" valign="bottom">8999999</td>
<td align="right" valign="bottom">3071000</td>
</tr>
</tbody>
</table>
<p>The LOCATION column identifies the device location, set either on the fat client or via the WTS location tool. The TCP_IP_PORT is the port the client is listening on. The PERSON_ID is a unique number for the user name in Millennium. The UPDT_DT_TM shows the last time there was any communication between the application nodes and this client. UPDT_ID is a repeat of the PERSON_ID. UPDT_TASK is the task number for the process that stuck the row in the database or changed it. This number should be 3071000, which is the Discern Notification. Not shown here are UPDT_CNT; UPDT_APPLCTX, the application context number for the application updating this table; and APP_VERSION_NBR, the version of Discern Notification that the client is using. The version generally will be 2, unless you are on some very old code.</p>
<p>The TCP_IP_ADDR column is the key to making sense of this gibberish. It is composed of four elements: the TCP/IP address of the Citrix server or fat client connecting to Millennium, the Microsoft user name, the Millennium domain the connection is for, and the Millennium user name. The next step is to parse the TCP_IP_ADDR column into these four elements.</p>
<p>Import the table into Excel to use the Text to Columns function, and insert three columns between TCP_IP_ADDR and TCP_IP_PORT.</p>
<p>To parse the fat clients or older Citrix servers:</p>
<ol>
<li>Sort the TCP_IP_ADDR column so any cells with a “$” separating the TCP/IP address (first element) from the Microsoft user name (second element) are at the top of the list. Highlight these cells only. </li>
<li>From the Excel Data tab, select the <em>Text to Column</em> function, select <em>Delimited</em> and click <em>Next.</em></li>
<li>In the next box, uncheck <em>Tab,</em> select <em>Other,</em> type <em>$</em> in the open cell and click <em>Finish. </em></li>
</ol>
<p>To parse the rest of the Citrix servers:</p>
<ol>
<li>Highlight the other cells in the TCP_IP_ADDR column, which should all have a “!” between the TCP/IP address and Microsoft user name. </li>
<li>With the Text to Column function, select <em>Delimited</em> and click <em>Next.</em></li>
<li>In the next box, uncheck <em>Tab,</em> select <em>Other,</em> type <em>! </em>in the open cell and click <em>Finish.</em></li>
</ol>
<p>The first part of the parsing is complete. You now have a list of all the TCP/IP addresses that have connected to the application nodes for Discern Notification. Next you want to see all of the Microsoft user names, Millennium domains and Millennium user names that have connected to the application nodes for Discern Notification.<em /></p>
<ol>
<li>In row 1 column C, which should be blank, type “<em>Microsoft Username:Millennium Domain:Millennium Username”</em>. </li>
<li>Highlight all the rows in column C, which contains the remaining three data elements. </li>
<li>From the Excel Data tab, select the <em>Text to Column</em> function, select <em>Delimited</em> and click <em>Next.</em></li>
<li>In the next box, uncheck <em>Tab,</em> select <em>Other,</em> type <em>: </em>in the open cell and click <em>Finish.</em></li>
</ol>
<p>The next step in getting usable information is to build a Pivot Table (steps are based on Excel 2010) to see the TCP/IP addresses that have the most Discern Notifications:</p>
<ol>
<li>From the Insert tab, select Pivot Table and verify the entire spreadsheet is highlighted. The dialog box should read, “Table1.” Select <em>OK.</em> </li>
<li>From the Pivot Table Field List, left-click and drag the <em>TCP_IP_ADDR </em>field to the Row Labels box. </li>
<li>Left-click and drag the <em>TCP_IP_ADDR</em> field to the Values box. The Values box will then read, “Count of TCP….” The Table to the left will have two columns.</li>
<li>In cell A3, titled Row Labels, click the down arrow and select <em>More Sort Options</em>.</li>
<li>Select <em>Descending (Z to A) by:,</em> click the down arrow to change the value to <em>Count of TCP_IP_ADDR</em> and select <em>OK.</em></li>
</ol>
<p>The resulting table will list the Discern Notifications for each TCP/IP address, as shown in this example:</p>
<table border="1" cellpadding="2" cellspacing="0" style="font-size: 10px; font-family: arial; line-height: 10px;">
<tbody>
<tr>
<td bgcolor="#cccccc"><strong>Row Labels</strong></td>
<td bgcolor="#cccccc"><strong>Count of TCP_IP_ADDR</strong></td>
</tr>
<tr>
<td>192.168.1.213</td>
<td align="right">469</td>
</tr>
<tr>
<td>192.168.1.55</td>
<td align="right">426</td>
</tr>
<tr>
<td>192.168.1.54</td>
<td align="right">67</td>
</tr>
<tr>
<td>192.168.1.57</td>
<td align="right">48</td>
</tr>
<tr>
<td>192.168.1.137</td>
<td align="right">43</td>
</tr>
<tr>
<td>192.168.1.125</td>
<td align="right">36</td>
</tr>
<tr>
<td>192.168.1.79</td>
<td align="right">35</td>
</tr>
<tr>
<td>192.168.1.122</td>
<td align="right">34</td>
</tr>
<tr>
<td>192.168.1.132</td>
<td align="right">31</td>
</tr>
<tr>
<td>192.168.1.107</td>
<td align="right">30</td>
</tr>
</tbody>
</table>
<p>If your servers are properly balanced, the count should be fairly similar across all the Citrix servers. If you have fat clients, they will have a smaller count. In my example, the server ending in .213 handles 15.63 times more connections than the .107 server. Even if we exclude the first two rows, the .54 server is doing 2.23 times more work than the .107 server. Once this imbalance is corrected, clinician response times will be more consistent.</p>
<p><strong>Prognosis:</strong> A little research might uncover Citrix load balancing issues that are causing response time variability or other performance problems for your clinicians.</p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/MillenniumMedic/~4/y2uM9OdBPac" height="1" width="1" /></div></content>



    <feedburner:origLink>http://millenniummedic.typepad.com/millennium-medic/2011/12/citrix-load-balancing-in-a-complex-environment.html</feedburner:origLink></entry>
    <entry>
        <title>Preparing for Your 2012 Upgrade, Part 2</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MillenniumMedic/~3/pk_ihGH5B84/preparing-for-your-2012-upgrade-part-2.html" />
        <link rel="replies" type="text/html" href="http://millenniummedic.typepad.com/millennium-medic/2011/11/preparing-for-your-2012-upgrade-part-2.html" thr:count="3" thr:updated="2011-11-28T22:30:12-06:00" />
        <id>tag:typepad.com,2003:post-6a011570459bbb970b0153937166a2970b</id>
        <published>2011-11-23T07:22:30-06:00</published>
        <updated>2011-11-23T07:22:30-06:00</updated>
        <summary>By David Hallberg Today, in the second half of my recommendations for ensuring a smooth transition to Millennium version 2012.x, I’ll look at Windows and Cerner’s back-end application nodes. (To see my thoughts on Shared Service Proxy settings and WebSphere MQ, see Part 1.) I recommend you check your settings in the following areas of your 2012.x domain: Microsoft added the User Account Control to Windows to protect computers from running unwanted programs, but this feature can cause unwanted interruptions in running Millennium applications. If you are using Windows Server 2008 SP1 32-bit or Windows Server 2008 R2 with Virtual...</summary>
        <author>
            <name>Millennium Medic</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Architecture" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Configuration" />
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://millenniummedic.typepad.com/millennium-medic/"><div xmlns="http://www.w3.org/1999/xhtml"><p>By David Hallberg</p>
<p>Today, in the second half of my recommendations for ensuring a smooth transition to Millennium version 2012.x, I’ll look at Windows and Cerner’s back-end application nodes. (To see my thoughts on Shared Service Proxy settings and WebSphere MQ, see <a href="http://millenniummedic.typepad.com/millennium-medic/2011/11/preparing-for-your-2012-upgrade-part-1.html" target="_self">Part 1</a>.) I recommend you check your settings in the following areas of your 2012.x domain:</p>
<ul>
<li>Microsoft added the User Account Control to Windows to protect computers from running unwanted programs, but this feature can cause unwanted interruptions in running Millennium applications. If you are using Windows Server 2008 SP1 32-bit or Windows Server 2008 R2 with Virtual Machines (VMs) running Windows Server 2003 R2 SP2 or Server 2008 SP1 32-bit, make sure the User Account Control is disabled. Two documents explain how: <a href="http://windows.microsoft.com/en-US/windows-vista/Turn-User-Account-Control-on-or-off" target="_self">“Turn User Account Control On or Off”</a> from Windows and <a href="http://technet.microsoft.com/en-us/library/cc709691(WS.10).aspx" target="_self">“User Account Control Step-by-Step Guide”</a> from Microsoft TechNet. </li>
<li>DNS devolution includes improved security in Windows Server 2008, Vista and Windows 7. Make sure you have it set. Documents to explain how are on uCern at “<a href="https://wiki.ucern.com/display/reference/Windows+Vista+Minimal+Configuration+Guide">Windows Vista Minimal Configuration Guide</a>, <a href="https://wiki.ucern.com/display/reference/Install+Windows+2008">Install Windows 2008</a>” or “<a href="https://cernercare.com/accounts/login?returnTo=https%3A%2F%2Fwiki.ucern.com%2Fplugins%2Fservlet%2Fopenid%3Fprovider%3Dhttps%253A%252F%252Fcernercare.com%252Faccounts%252Fopenid%26destination%3D%252Fdisplay%252Freference%252FInstall%252BWindows%252B2008" target="_self">Microsoft Windows 7 and Windows Vista Configuration.”</a> Microsoft offers <a href="http://support.microsoft.com/kb/957579" target="_self">“Post Installation Behavior … after you install the DNSA update.” </a></li>
<li>In the past six months, I have run across more and more sites that have incorrect settings for permissions and owners of files and directories. You can correct the settings by running the secure_cerner_500 executable located in the $cer_exe filesystem. Run it as root, and provide the correct inputs. One caution about this executable: If you are running more than one domain on the same server, lpar, npar or vpar, you have to remove the sticky bit on the files in $cer_fifo, $cer_lock and $cer_usock. If you only have one domain per server, lpar, npar or vpar, this will not be an issue. </li>
<li>Defrag the $cer_config filesystem to improve throughput for the security and transaction database servers. </li>
<li>Use the bcheck tool to rebuild the dic.idx file on each application node. If bcheck is not in your $cer_exe filesystem, look in $cer_ocd and find the file named bcheck.dat. Rename the file to bcheck, and put it in $cer_exe. You can search uCern or log a Service Request to get Cerner’s recommended flags to use on this. You might also be able to use the -? flag to get a list of the switches that can be used when you create the file.</li>
<li>Finally, you want to check the dedicated Shared Service Proxies (SSPs) for your security servers to make sure they won’t be overloaded with connections. At a minimum, you need an SSP for each instance of the Security Slave processes. If you want to have the Security Master service on its own SSP, add one more instance than is needed for the Security Slaves. This means you will have an SSP on the application nodes with no connections, but that’s okay. The SSP only takes 3MB of memory. If you have 2 Security Slaves running with your Security Master and 3 Security Slaves on your other application nodes, you will probably have to increase to at least 5 Security Slaves running with the Security Master and 6 Security Slaves everywhere else. This means you’ll need at least 6 dedicated SSPs for the Security Slaves; if you want a dedicated SSP for the Security Master service, you’ll need 7 dedicated SSPs. Remember to start the dedicated SSPs prior to starting additional Security Slaves in order to get the desired load balancing. Your goal is to keep the maximum connections for each Security Slave under 300. You can check the maximum connections from the Server Control Panel. If you want the steps for how to do it, send me a comment, and I’ll send them to you.</li>
</ul>
<p style="padding-left: 30px;"><strong>Prognosis:</strong> If you prepare for conversion by looking at and correcting your infrastructure and key items in your 2012.x domain, you will have a much quieter upgrade.</p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/MillenniumMedic/~4/pk_ihGH5B84" height="1" width="1" /></div></content>



    <feedburner:origLink>http://millenniummedic.typepad.com/millennium-medic/2011/11/preparing-for-your-2012-upgrade-part-2.html</feedburner:origLink></entry>
    <entry>
        <title>Preparing for Your 2012 Upgrade, Part 1</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MillenniumMedic/~3/3B0wkatahA8/preparing-for-your-2012-upgrade-part-1.html" />
        <link rel="replies" type="text/html" href="http://millenniummedic.typepad.com/millennium-medic/2011/11/preparing-for-your-2012-upgrade-part-1.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a011570459bbb970b015436a1b415970c</id>
        <published>2011-11-04T10:59:49-05:00</published>
        <updated>2011-11-04T10:59:49-05:00</updated>
        <summary>By David Hallberg Readers have been asking about the changes coming with Millennium® version 2012.x. This major code upgrade is the first Millennium release that supports Linux as a database, and all Cerner clients are being encouraged to support it. When it hits prod early next year, it will contain a number of upgrades to help users file the reports needed for Meaningful Use reimbursements. Over my next two postings, I’ll share what I know about the release from a technical perspective. Let me start with a warning. Do not follow Cerner’s recommendation to reduce the number of Shared Service...</summary>
        <author>
            <name>Millennium Medic</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Architecture" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Configuration" />
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://millenniummedic.typepad.com/millennium-medic/"><div xmlns="http://www.w3.org/1999/xhtml"><p>By David Hallberg</p>
<p>Readers have been asking about the changes coming with Millennium<sup>®</sup> version 2012.x. This major code upgrade is the first Millennium release that supports Linux as a database, and all Cerner clients are being encouraged to support it. When it hits prod early next year, it will contain a number of upgrades to help users file the reports needed for Meaningful Use reimbursements. Over my next two postings, I’ll share what I know about the release from a technical perspective.</p>
<p>Let me start with a warning. Do <em><strong>not </strong></em>follow Cerner’s recommendation to reduce the number of Shared Service Proxies (SCP Entry ID 1) to between 1 and 4. If you do, you will encounter several sporadic performance issues with Millennium that will be extremely difficult to track down. I recommend that you run 10 to 20 SSPs so that you have more consistent response times from all of the solutions. I realize these processes are not used for communicating with the clients or Citrix servers, but they are doing work — without taking up much space. Since each instance takes about 3.3MB of memory, 20 instances would consume only 66MB of memory, a trivial amount for today’s typical application node that has at least 32GB of memory.</p>
<p>The Millennium upgrade process begins by ensuring that your infrastructure is sound. The rest of today’s post will look at IBM WebSphere MQ, and my next post will make recommendations for Windows before moving on to Millennium’s back-end application nodes.</p>
<p>I recommend you upgrade to WebSphere MQ version 7. The links below will take you to IBM documents that give MQ benchmarks for various operating systems. You want to review the sections on Performance and Capacity Limits and Tuning Recommendation. Then choose the largest value between Millennium’s baseline documents and these documents.</p>
<p><strong>AIX:</strong> <a href="http://www-01.ibm.com/support/docview.wss?rs=171&amp;uid=swg24020270&amp;loc=en_US&amp;cs=utf-8&amp;lang=en" target="_self">“MP6N: WebSphere MQ for AIX V7.0 — Performance Evaluations”</a></p>
<p><strong>HP-UX:</strong> <a href="http://www-01.ibm.com/support/docview.wss?rs=171&amp;uid=swg24020284&amp;loc=en_US&amp;cs=utf-8&amp;lang=en" target="_self">“MP6O: WebSphere MQ for HP-UX V7.0 — Performance Evaluations”</a></p>
<p><strong>Linux:</strong> <a href="http://www-01.ibm.com/support/docview.wss?rs=171&amp;uid=swg24020290&amp;loc=en_US&amp;cs=utf-8&amp;lang=en" target="_self">“MPL5: WebSphere MQ for Linux (Intel) V7.0 — Performance Evaluations”</a></p>
<p>Before going live, make sure you correct any errors resulting from the MQ upgrade. Errors will be shown on the Lights On Network under the System Compliance tab. Look for Known Errors Non-Compliance rows that cover MQ.</p>
<p>If you decide to use MQ version 6, you can reference the following documents for your platform. Again, look at the Performance and Capacity Limits and Tuning Recommendation sections, and choose the largest value between Millennium’s baseline documents and these documents.</p>
<p><strong>AIX:</strong> <a href="http://www-01.ibm.com/support/docview.wss?uid=swg24009979" target="_self">“MP6K: WebSphere MQ for AIX V6.0 — Performance Evaluations”</a></p>
<p><strong>HP-UX:</strong> <a href="http://www-01.ibm.com/support/docview.wss?rs=171&amp;uid=swg24009978&amp;loc=en_US&amp;cs=utf-8&amp;lang=en" target="_self">“MP6L: WebSphere MQ for HP-UX V6.0 — Performance Evaluations”</a></p>
<p><strong>Linux:</strong> <a href="http://www-01.ibm.com/support/docview.wss?rs=171&amp;uid=swg24009977&amp;loc=en_US&amp;cs=utf-8&amp;lang=en" target="_self">“MPL3: WebSphere MQ for Linux (Intel) V6.0 —Performance Evaluations”</a></p>
<p>Due to the increased number of ports being used by MQ on the front end, I suggest you review <a href="http://support.microsoft.com/kb/196271" target="_self">Microsoft Support article 196271</a> (previously published under Q196271). Based on Microsoft’s recommendation, I suggest increasing the MaxUserPort to 65534. You can use a tool called <a href="http://www.speedguide.net/downloads.php" target="_self">TCP Optimizer</a>. Select the link to the new TCP Optimizer version 3.0.8. You want this executable to be run in XP SP2 mode, and you will have to be a local administrator for all the appropriate keys to be modified. Assuming you are running on Windows Server 2008, any version, here’s the steps to follow: Right-click on the downloaded executable, select <em>Troubleshoot Compatibility,</em> select <em>Try Recommended Settings,</em> select <em>Start the program, </em>slide the slider bar to 100+Mbps, select <em>Modify All Network Adapters,</em> select <em>Optimal,</em> select <em>Apply Changes,</em> and select <em>OK</em>. Finally, reboot your computer.</p>
<p>Keep an eye on the MQ statistics for Enqueue and Dequeue counts. If any Java services are in the top 30, you should consider splitting them. The split process would be similar to the process I described in the <a href="http://millenniummedic.typepad.com/millennium-medic/steps-to-ensuring-a-firstclass-upgrade.html" target="_self">“Steps to Ensuring a First-Class Upgrade”</a> blog (under step 2, Java Server Stress).</p>
<p><strong>Prognosis:</strong> Doing a little research and establishing a solid infrastructure is the first step to ensuring a smooth conversion.</p>
<p><strong>Next:</strong> Proper settings for Windows, permissions and ownerships, security slaves and more.</p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/MillenniumMedic/~4/3B0wkatahA8" height="1" width="1" /></div></content>



    <feedburner:origLink>http://millenniummedic.typepad.com/millennium-medic/2011/11/preparing-for-your-2012-upgrade-part-1.html</feedburner:origLink></entry>
    <entry>
        <title>An Abnormal Definition of Normal</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MillenniumMedic/~3/GQun6TvKe3U/an-abnormal-definition-of-normal.html" />
        <link rel="replies" type="text/html" href="http://millenniummedic.typepad.com/millennium-medic/2011/10/an-abnormal-definition-of-normal.html" thr:count="1" thr:updated="2011-10-20T16:01:00-05:00" />
        <id>tag:typepad.com,2003:post-6a011570459bbb970b0153926fb96c970b</id>
        <published>2011-10-20T09:57:00-05:00</published>
        <updated>2011-10-20T09:57:00-05:00</updated>
        <summary>By David Hallberg Thanks to all of you who stopped by last week during the Cerner Health Conference. We had some great talks about your Millennium® performance expectations, although I was discouraged to find that for a number of you your expectations were exceedingly low. For example: Some of you claimed, “You cannot fix the performance of the application.” Others told me, “We are remote hosted and have been assured that we get the best performance that anyone can. When the applications are slow, that’s just the way it is.” One client showed me their Lights On Network data for...</summary>
        <author>
            <name>Millennium Medic</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Consistency" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Maintenance" />
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://millenniummedic.typepad.com/millennium-medic/"><div xmlns="http://www.w3.org/1999/xhtml"><p>By David Hallberg</p>
<p>Thanks to all of you who stopped by last week during the Cerner Health Conference. We had some great talks about your Millennium<sup>®</sup> performance expectations, although I was discouraged to find that for a number of you your expectations were exceedingly low. For example:</p>
<ul>
<li>Some of you claimed, “You cannot fix the performance of the application.” </li>
<li>Others told me, “We are remote hosted and have been assured that we get the best performance that anyone can. When the applications are slow, that’s just the way it is.” </li>
<li>One client showed me their Lights On Network data for the number of transactions that took over 9 seconds, and I almost fell off my chair. Though the percentage was low, the actual number of transactions was enormous. “That’s way too many,” I said. “It’s the best we can get,” he replied. </li>
<li>Still another client was told they needed to spend more than $1 million in hardware upgrades to fix their problem. </li>
</ul>
<p>If you’ve been coaxed into believing any of these statements, let me tell you what I told them: Slow performance is not normal. OK performance is not OK. Don’t believe that you are the fastest Millennium client and there is nothing more for you to do. Your clinicians should not have to wait for 9 seconds for a transaction to go through. Many problems can be fixed without any additional hardware. I know. I have seen Millennium perform extremely well over the past 14 years.</p>
<p>When you are equipped with just a little knowledge of where you have bottlenecks in your system and take the appropriate corrective action, you can see immediate improvements. These improvements do not need to take years and do not require a new version of code, a new operating system or new version of Oracle. You can improve what you have. In the case of the client told to spend $1 million on hardware, we were able to work with the existing hardware and make a couple of uptime changes. Lights On showed that transaction speed for the clinicians had increased and variability had decreased.</p>
<p>Readers of this blog know that I regularly encourage you to trust your clinicians and believe your own eyes rather than blindly accepting performance excuses from the company that wrote the software and is now managing the environment. If the responsiveness of the system is slow, you should be able to see the first level of issues immediately. In a matter of hours or a few days — not months or years — you can determine the initial action steps.</p>
<p>I need to emphasize the words “initial steps.” There is no single silver bullet that will slay your performance dragon; you’ll need a magazine full of lead bullets. The beast is immune to silver but is susceptible to a lead overdose, to an ongoing maintenance regimen that accounts for your continually evolving EMR system. Every new package or service pack you install has the potential to change the processing of the entire system. Make sure you have the right people using the right tools to evaluate what is happening, to identify performance issues and to take action to correct the problems.</p>
<p><strong>Prognosis:</strong> If your current support structure is not helping you help your clinicians deliver care more effectively, it’s time to find one that will.</p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/MillenniumMedic/~4/GQun6TvKe3U" height="1" width="1" /></div></content>



    <feedburner:origLink>http://millenniummedic.typepad.com/millennium-medic/2011/10/an-abnormal-definition-of-normal.html</feedburner:origLink></entry>
 
</feed><!-- ph=1 -->

