$TXT Created by ANDREASSEN,LARRY J at NXT.KERNEL.FO-OAKLAND.MED.VA.GOV (KIDS) on TUESDAY, 12/03/02 at 10:23 ============================================================================= Run Date: DEC 10, 2002 Designation: HL*1.6*88 Package : HL - HEALTH LEVEL SEVEN Priority: Mandatory Version : 1.6 SEQ #84 Status: Released Compliance Date: JAN 10, 2003 ============================================================================= Subject: New HL7/Capacity Management API - Phase II Category: - Routine - Enhancement (Mandatory) Description: ============ Test sites: North Florida/South Georgia HCS (Gainesville/ Lake City), MDC, White River, VA Connecticut HCS (West Haven/Newington) NOIS: None Required Builds: None $$CM2 OVERVIEW -------------- A new application programming interface (API) has been created for calculating the volume of HL7 activity at a site over a user-defined period of time. It has been created for the Capacity Management (CM) team, but can be used by sites as well. This new API is $$CM2^HLUCM. The $$CM2^HLUCM API calculates the volume of HL7 activity over a period of time. The information collected includes the following: 1. Total number characters in the messages. 2. Total Number of message units. 3. Total time elapsed for transmission of messages. The $$CM^HLUCM API was created by patch HL*1.6*79, and is similar in almost all details to the new $$CM2^HLUCM API. The major difference is related to the count of messages, or message units. The $$CM^HLUCM API returns the number of messages, and the $$CM2^HLUCM API returns the number of message units. Messages are discrete transmitted messages. An example of this would be a message transmitted to another medical center containing patient demographic information. Obviously, this message does not include any of the messages returned by the medical center receiving the patient information verifying receipt and processing. Message units consist of one or more related messages. In the above example, the "message unit" would include the initial message, and also all messages sent back and forth between the source medical center and receiving medical center in response to the original message. (All messages in a message unit are "related", all occurring because of the events set in motion by the transmission of the original message.) A message unit might include the (1) original message, (2) commit acknowledgement by the receiving site, (3) application acknowledgement by receiving site, and (4) commit acknowledgement to the application acknowledgement by the source site. In this example, the $$CM^HLUCM API reports four(4) messages, whereas the $$CM2^HLUCM API reports one(1) "message unit." The $$CM2^HLUCM entry point calculates HL7 activity totals as mentioned above. These totals are further subtotaled by: 1. MESSAGE UNIT TIME OF TRANSMISSION OR RECEIPT. Time entries are rounded to the hour. - Time data is subtotaled by namespace, and within namespace by protocol. 2. MESSAGE UNIT NAMESPACE. - Namespace data is subtotaled by whether the message unit is incoming or outgoing, and further subtotaled by namespace, time of transmission, and protocol. - Namespace data is also subtotaled by whether the message unit originated locally or remotely, and further subtotaled by namespace, time of transmission, and protocol. 3. MESSAGE UNIT PROTOCOL - Protocol data is subtotaled by namespace and time of transmission. Message units frequently contain more than one individual message. When this is the case, the following actions occur: - The time of transmission is calculated using all messages, and is calculated by comparing the earliest time of transmission for any message and the latest time of receipt for any message in the message unit. - The namespace is determined by evaluating the first message in the message unit. - The protocol is determined by evaluating the first message in the message unit. $$CM2 SYNTAX ------------ The syntax for the Capacity Management HL7 API is: $$CM2^HLUCM(START,END,NAMESPACE,PROTOCOL,SAVE,CONDITION,ERRORS) The syntax for the $$CM2^HLUCM API is identical to the syntax for the $$CM^HLUCM API. When the $$CM2^HLUCM entry point is invoked, it returns a three-piece string of data containing totals from all message units found matching the parameter-defined criteria. The information returned is "Total number of characters ^ Total number of message units ^ Total seconds to transmit and receive message units." When the $$CM2^HLUCM API is invoked it also stores these totals in the ^TMP global. In addition to the totals stored in ^TMP, additional subdivisions of the totals (mentioned in the OVERVIEW section), are stored. ================================================== INPUT PARAMETERS ---------------- The input parameters used by the $$CM2^HLUCM entry point are listed and explained below. PARAMETER EXPLANATION ------------------------------------------------------------------------- START This is a FileMan date. It sets the beginning point for the time range for the calculation of the HL7 activity totals. END This is also a FileMan date. It sets the ending point for the time range for the calculation of HL7 activity totals. NAMESPACE This refers to the namespace of a message unit. The namespace of a message unit is determined by the following steps: - Finding the PROTOCOL file (#101) entry associated with a message unit. - Finding the PACKAGE file (#9.4) entry associated with the PROTOCOL file entry. - Finding the namespace in the PACKAGE file entry. The NAMESPACE parameter can be passed in several different ways as explained in the "INPUT PARAMETERS: ADDITIONAL DISCUSSION - NAMESPACE" section of this patch description. PROTOCOL This is the protocol of a message unit. The PROTOCOL parameter can be passed in several different ways as explained in the "INPUT PARAMETERS: ADDITIONAL DISCUSSION - PROTOCOL" section. SAVE This parameter is free-text data, and specifies the initial subscript to be used when storing ^TMP data. If $$CM2^HLUCM is invoked, and "HLTYPE" is passed as the value of the SAVE parameter, data will be stored in the ^TMP("HLTYPE",$J,...) global. CONDITION This parameter can be "EITHER" or "BOTH". CONDITION refers to the namespace and the protocol of a message unit. If the "EITHER" condition is specified, a message unit will be counted if "either" of the following conditions is met: - NAMESPACE parameter is satisfied (this is discussed in length later in this patch description), or the - PROTOCOL parameter is satisfied. If the BOTH condition is specified, a message unit will be counted only if "both" the NAMESPACE and PROTOCOL parameters are satisfied. ERRORS This parameter must be passed by reference. It specifies the array name location for error information to be stored. ================================================== OUTPUT ------ When $$CM2^HLUCM is invoked, it returns a three-piece string of data. In addition, all the message units found in the specified date range matching the NAMESPACE and PROTOCOL parameter specifications are used to calculate subtotals that are stored in the ^TMP global. The following example shows the syntax of this call and the resulting output: >W $$CM2^HLUCM(3010416,3010416.0005,1,1,"HLTOTS","EITHER",.ERR) 290060^805^792 NOTE: Additional information regarding the input parameters - in particular, the "1" found in the NAMESPACE and PROTOCOL parameter positions - is provided later in this patch description. Notice in the previous example, the API returned the value "290060^805^792". This refers to the number of characters in all matching message units, the number of message units, and the total processing time for these message units. To better explain this: - 805 matching message units were found between 4/16/2001 and 4/16/2001@00:05. (The value 805 is the second piece of data.) - These 805 message units held 290,060 total characters. (The value 290060 is the first piece of data.) - It took a total of 792 seconds to transmit and/or receive the 805 message units. (The value 792 is the third piece of data.) In addition to these three pieces of data, this call created other data, stored in the ^TMP global, in which subtotals by various criteria can be found. This data is shown in the following example: 1 ^TMP("HLTOTS",$J) = 290060^805^792 -------------------------------------------------------------- 2 ^TMP("HLTOTS",$J,"HR") = 290060^805^792 3 ^TMP("HLTOTS",$J,"HR","TM") = 290060^805^792 4 ^TMP("HLTOTS",$J,"HR","TM","U") = 290060^805^792 5 ^TMP("HLTOTS",$J,"HR","TM","U","3010416.00") = 290060^805^792 6 ^TMP("HLTOTS",$J,"HR","TM","U","3010416.00","DG") = 289677^804^214 7 ^TMP("HLTOTS",$J,"HR","TM","U","3010416.00","DG","VAFH A08~4620") = 289677^804^214 8 ^TMP("HLTOTS",$J,"HR","TM","U","3010416.00","SD") = 383^1^578 9 ^TMP("HLTOTS",$J,"HR","TM","U","3010416.00","SD","VAFC ADT-A08-SC HED SERVER~4654") = 383^1^578 -------------------------------------------------------------- 10 ^TMP("HLTOTS",$J,"NMSP") = 290060^805^792 11 ^TMP("HLTOTS",$J,"NMSP","IO") = 290060^805^792 12 ^TMP("HLTOTS",$J,"NMSP","IO","O") = 290060^805^792 13 ^TMP("HLTOTS",$J,"NMSP","IO","O","DG") = 289677^804^214 14 ^TMP("HLTOTS",$J,"NMSP","IO","O","DG","3010416.00") = 289677^804^ 214 15 ^TMP("HLTOTS",$J,"NMSP","IO","O","DG","3010416.00","VAFH A08~ 4620") = 289677^804^214 16 ^TMP("HLTOTS",$J,"NMSP","IO","O","SD") = 383^1^578 17 ^TMP("HLTOTS",$J,"NMSP","IO","O","SD","3010416.00") = 383^1^578 18 ^TMP("HLTOTS",$J,"NMSP","IO","O","SD","3010416.00","VAFC ADT-A08- SCHED SERVER~4654") = 383^1^578 ----------------------------------- 19 ^TMP("HLTOTS",$J,"NMSP","LR") = 290060^805^792 20 ^TMP("HLTOTS",$J,"NMSP","LR","L") = 290060^805^792 21 ^TMP("HLTOTS",$J,"NMSP","LR","L","DG") = 289677^804^214 22 ^TMP("HLTOTS",$J,"NMSP","LR","L","DG","3010416.00") = 289677^804^ 214 23 ^TMP("HLTOTS",$J,"NMSP","LR","L","DG","3010416.00","VAFH A08~ 4620") = 289677^804^214 24 ^TMP("HLTOTS",$J,"NMSP","LR","L","SD") = 383^1^578 25 ^TMP("HLTOTS",$J,"NMSP","LR","L","SD","3010416.00") = 383^1^578 26 ^TMP("HLTOTS",$J,"NMSP","LR","L","SD","3010416.00","VAFC ADT-A08- SCHED SERVER~4654") = 383^1^578 -------------------------------------------------------------- 27 ^TMP("HLTOTS",$J,"PROT") = 290060^805^792 28 ^TMP("HLTOTS",$J,"PROT","PR") = 290060^805^792 29 ^TMP("HLTOTS",$J,"PROT","PR","P") = 290060^805^792 30 ^TMP("HLTOTS",$J,"PROT","PR","P","VAFC ADT-A08-SCHED SERVER~4654") = 383^1^578 31 ^TMP("HLTOTS",$J,"PROT","PR","P","VAFC ADT-A08-SCHED SERVER~4654" ,"SD") = 383^1^578 32 ^TMP("HLTOTS",$J,"PROT","PR","P","VAFC ADT-A08-SCHED SERVER~4654" ,"SD","3010416.00") = 383^1^578 33 ^TMP("HLTOTS",$J,"PROT","PR","P","VAFH A08~4620") = 289677 ^804^214 34 ^TMP("HLTOTS",$J,"PROT","PR","P","VAFH A08~4620","DG") = 289677^ 804^214 35 ^TMP("HLTOTS",$J,"PROT","PR","P","VAFH A08~4620","DG", "3010416.00") = 289677^804^214 Note: Row numbers have been artificially placed in front of each global node to facilitate the discussion of the ^TMP global output. Separator lines have also been added to the global data shown above for the same reason. OUTPUT: HR SUBSCRIPT -------------------- ROW #1 in the global data above holds the grand totals for the call to $$CM2^HLUCM. The data in this row, ^TMP("HLTOTS",$J), is the same as the value returned by the call to the $$CM2^HLUCM API. ROWS #2-9 hold the totals for all message units divided by the time of transmission. The subscripts found in these rows are explained as follows: HR - Initial subscript for time-sorted data. (This is a constant value; it will always be "HR".) TM - Second subscript for time-sorted data. (This is also a constant value subscript. It was added to keep the structure of this global the same as the other global sections mentioned below.) U - This subscript specifies whether the message unit totals are from TCP (T), Mailman (M), or Unknown (U) activity. In this example, the data is from "Unknown" activity. 3010416.00 - Specifies the time of message unit transmission rounded to the hour. DG,SD - Namespaces of message unit totals in the above example. VAFH A08~4620 & VAFC ADT-A080SCHED SERVER~4654 - PROTOCOL file entries. ("VAFH A08" is the name of entry "4620" in the PROTOCOL file.) The following is a detailed explanation of ROWS 2# through #9. The structure of this global is identical to that found in the "OUTPUT: NMSP SUBSCRIPT" and "OUTPUT: PROT SUBSCRIPT" sections of this patch description. (These sections can be found later in this document.) So, the comments about structure made next are applicable to all sections of the ^TMP("HLTOTS",$J) global. ROW #2 holds the grand total for all entries in the ^TMP("HLTOTS",$J,"HR") section. The totals of this node will always equal the grand total in the ^TMP("HLTOTS",$J) node (i.e., ROW #1). ROW #4 holds the subtotals for all message units transmitted or received during the first hour of 4/1/2001 with a designation of "U" meaning "UNKNOWN." ROW #5 holds the subtotals for all message units transmitted during the first hour of 4/1/2001 (i.e., 3010416.00). For the sake of brevity in this documentation, the total of this row equals the total of ROW #2, because only one hour was included in this example. If instead of one hour, multiple hours had been included, there would be multiple subtotal nodes for each hour, and the sum of these subtotals would equal ROW #2. This can be seen more clearly in the next section of this patch description "OUTPUT: NMSP SUBSCRIPT". ROW #6 holds the subtotals for all message units with the "DG" namespace: 289677 characters in 804 message units that were transmitted or received in 214 total seconds. ROW #7 holds the subtotals for all message units with the "DG" namespace, for protocol "VAFH A08~4620". ROW #8 holds the subtotals for all message units with the "SD" namespace. ROW #9 holds the subtotals for all message units with the "SD" namespace, for protocol "VAFC ADT-A08-SCHED SERVER~4654". Note that the totals of ROW #6 (289,677 characters, 804 message units, 214 seconds) and ROW #8 (383 characters, 1 message unit, 578 seconds) equal the grand totals (290,060 characters, 805 message units, 792 seconds) returned for this section. OUTPUT: NMSP SUBSCRIPT ---------------------- Refer to ROWS 10-26, the "NMSP", or namespace, section in the ^TMP("HLTOTS",$J) global. The subscripts in this section are explained as follows: NMSP - Initial subscript for namespace data. IO - There are two subdivisions within this section: 1. Incoming (I)/Outgoing (O)/Unknown (U). 2. Local (L)/Remote (R)/Unknown (U). This IO subscript holds the Incoming/Outgoing subtotals. LR - The LR subscript holds the Local/Remote subtotals. The other subscripts in this section that are not mentioned are individual namespaces and protocols. OUTPUT: PROT SUBSCRIPT ---------------------- Refer to ROWS 27-35, the subscripts in the protocol-related section of the ^TMP("HLTOTS",$J) global are explained as follows: PR - There are no variable subsections in this section (similar to the Local/Remote and the Incoming/Outgoing subtotals found in the previous section "OUTPUT: NMSP SUBSCRIPT.") This means that the PR subscript will never change. (It was added to keep the data structure compatible with all other sections.) P - This variable also is a placeholder like PR, and will not change. The other subscripts in this section that are not specifically mentioned are individual namespaces and protocols. ================================================== INPUT PARAMETERS: ADDITIONAL DISCUSSION --------------------------------------- The input parameters of the $$CM2^HLUCM API were listed in detail in the "INPUT PARAMETERS" section of this patch description. Discussion of these parameters, using the information just provided regarding entry point output as necessary background, will now be resumed. INPUT PARAMETERS: ADDITIONAL DISCUSSION - NAMESPACE --------------------------------------------------- There are four different ways to specify namespaces to be included when creating totals. These are: 1. Pass in "1" to specify that all namespaces are to be included, and that subtotals should be created by individual namespace(s). If you will refer back to the sample data in "OUTPUT: HR SUBSCRIPT", you can see that each namespace was placed in the ^TMP("HLTOTS",$J,"HR",...) global data because a "1" was passed in the namespace parameter.) 2. Pass in "2" to specify that all namespaces are to be included, but no subtotaling by namespaces should be done. Totals should be lumped together. To further explain the results of passing a "2" in the namespace parameter position consider the following example. When $$CM2^HLUCM(3010416,3010416.0005,2,1,"HLTOTS","EITHER",.ERR) is called the following data in the NMSP subscript of the ^TMP global was created: ^TMP("HLTOTS",549492684,"NMSP") = 290060^805^792 ^TMP("HLTOTS",549492684,"NMSP","IO") = 290060^805^792 ^TMP("HLTOTS",549492684,"NMSP","IO","O") = 290060^805^792 ^TMP("HLTOTS",549492684,"NMSP","IO","O","ZZZ") = 290060^805^792 ^TMP("HLTOTS",549492684,"NMSP","IO","O","ZZZ","3010416.00") = 290060 ^805^792 ^TMP("HLTOTS",549492684,"NMSP","IO","O","ZZZ","3010416.00","VAFC ADT -A08-SCHED SERVER~4654") = 383^1^578 ^TMP("HLTOTS",549492684,"NMSP","IO","O","ZZZ","3010416.00","VAFH A08 ~4620") = 289677^804^214 ^TMP("HLTOTS",549492684,"NMSP","LR") = 290060^805^792 ^TMP("HLTOTS",549492684,"NMSP","LR","L") = 290060^805^792 ^TMP("HLTOTS",549492684,"NMSP","LR","L","ZZZ") = 290060^805^792 ^TMP("HLTOTS",549492684,"NMSP","LR","L","ZZZ","3010416.00") = 290060 ^805^792 ^TMP("HLTOTS",549492684,"NMSP","LR","L","ZZZ","3010416.00","VAFC ADT -A08-SCHED SERVER~4654") = 383^1^578 ^TMP("HLTOTS",549492684,"NMSP","LR","L","ZZZ","3010416.00","VAFH A08 ~4620") = 289677^804^214 Note in the preceding example, no namespaces are specified and that all individual namespaces have been lumped together in the ZZZ "namespace." To further illustrate the effect when either the namespace or the protocol parameter value of "2" is passed into the API, notice the results below when the protocol value is passed as a "2". (When a "2" is passed into the API in the protocol parameter position, it has the same effect as when a "2" is passed into the namespace position: data is "lumped" together under "ZZZ" rather than individual namespaces or protocols.) When $$CM2^HLUCM(3010416,3010416.0005,2,2,"HLTOTS","EITHER",.ERR) was called the following data in the NMSP subscript was created. ^TMP("HLTOTS",549492684,"NMSP") = 290060^805^792 ^TMP("HLTOTS",549492684,"NMSP","IO") = 290060^805^792 ^TMP("HLTOTS",549492684,"NMSP","IO","O") = 290060^805^792 ^TMP("HLTOTS",549492684,"NMSP","IO","O","ZZZ") = 290060^805^792 ^TMP("HLTOTS",549492684,"NMSP","IO","O","ZZZ","3010416.00") = 290060 ^805^792 ^TMP("HLTOTS",549492684,"NMSP","IO","O","ZZZ","3010416.00","ZZZ") = 290060^805^792 ^TMP("HLTOTS",549492684,"NMSP","LR") = 290060^805^792 ^TMP("HLTOTS",549492684,"NMSP","LR","L") = 290060^805^792 ^TMP("HLTOTS",549492684,"NMSP","LR","L","ZZZ") = 290060^805^792 ^TMP("HLTOTS",549492684,"NMSP","LR","L","ZZZ","3010416.00") = 290060 ^805^792 ^TMP("HLTOTS",549492684,"NMSP","LR","L","ZZZ","3010416.00","ZZZ") = 290060^805^792 The listing of data in the preceding section, where namespace was passed as "2" and protocol was passed as "1", contains multiple protocols. This data does not. As an example, refer to the "LR","L" subscript section of the data from both examples. The first example "itemizes" the "VAFC ADT-A08-SCHED SERVER~4654" (383 characters, 1 message unit, 578 seconds) AND "VAFH A08~4620" (289,677 characters, 804 message units, 214 seconds) protocols. In this last example, these protocols have been lumped together in the ZZZ "protocol" (290,060 characters, 805 message units, 792 seconds.) There are four different ways to specify namespaces to be included when $$CM2^HLUCM. The first two - passing a "1" or "2" - have already been discussed. The additional ways of specifying namespaces are explained next. 3. Pass in "namespace" in order to search for one specific namespace. An example call would be: $$CM2^HLUCM(3010416,3010416.0005,"DG",2,"HLTOTS","EITHER",.ERR). 4. Specify namespaces by creating a local variable array and passing in the array by reference. An example call, using this technique, is shown below. The call is functionally identical to passing in "DG",but this method allows the inclusion of one or more namespaces. >K NAMESPACE >S NAMESPACE("DG")="" >W $$CM2^HLUCM(3010416,3010416.0005,.NAMESPACE,2,"HLTOTS","EITHER",.ERR) INPUT PARAMETERS: ADDITIONAL DISCUSSION - PROTOCOL -------------------------------------------------- There are four different ways to specify protocols to be included when calling $$CM2^HLUCM. These are: 1. Pass in "1" to specify that all protocols are to be included. (See the preceding "INPUT PARAMETERS: ADDITIONAL DISCUSSION - NAMESPACE" section for additional explanation.) 2. Pass in "2" to specify that all namespaces are to be included, but no subtotaling by namespaces should be done. (See the preceding "INPUT PARAMETERS: ADDITIONAL DISCUSSION - NAMESPACE" section for additional explanation.) 3. Pass in "protocol name" or "protocol IEN" (i.e., the internal entry number (IEN) of the PROTOCOL file entry) in order to search for one specific protocol. (See the preceding "INPUT PARAMETERS: ADDITIONAL DISCUSSION - NAMESPACE" section for additional explanation.) 4. Specify protocols by creating a local variable array and passing in the array by reference. The local array subscripts can be either the protocol name or the protocol IEN. (See the preceding "INPUT PARAMETERS: ADDITIONAL DISCUSSION - NAMESPACE" section for additional explanation.) ================================================== API RULES OF OPERATION ---------------------- There are several rules that are followed by the software when collecting data. These rules are explained in detail on the following pages of this patch description. API RULES OF OPERATION: EITHER CONDITION ---------------------------------------- The following three rules are followed by the software when the "EITHER" CONDITION input parameter is specified: 1. If an explicit namespace(s) and a protocol(s) is specified, all entries will be counted where the namespace or the protocol matches. Both namespace(s) and protocol(s) do not need to match. (For example, if the "DG" namespace and the "4625" protocol are passed, all entries for the "DG" namespace will be counted no matter what the associated protocol is. And, all message units associated with the PROTOCOL file entry 4625 will be counted no matter what the associated namespace.) 2. If an explicit namespace(s) is specified, and if the protocol is "all" - specified by passing "1" or "2" - all "DG" entries, but only "DG" entries will be counted no matter what the associated protocol. (This is a slightly different than rule #1 above, and will usually return smaller totals. Rule #2 is a way to ask for "all DGs, but DGs only", where rule #1 is a way to ask for "all DGs AND all 4625s".) Note: If all namespaces are specified, and a specific protocol(s) specified, (which is the opposite of the rule #2 example), the same logic is used. (If all namespaces are requested by passing a "1" or a "2", and the protocol specified is "4625", only PROTOCOL file entry 4625 will be included.) 3. If all namespaces and all protocols are specified, every message unit found will be included. If the namespace of an entry cannot be determined it will be arbitrarily counted under the ZZZ"namespace. If the associated protocol of a message unit cannot be determined, it will be similarly counted under the ZZZ "protocol." This ensures that all entries, even those with missing namespaces and protocols are counted. API RULES OF OPERATION: BOTH CONDITION -------------------------------------- The following two rules are followed when the "BOTH" CONDITION parameter is specified: 1. If an explicit namespace(s) and protocol(s) is specified, entries will be counted only when the entry's namespace and protocol both match. (For example, if the "DG" namespace and the "4625" protocol are passed, entries will be counted when the message unit is associated with the "DG" namespace, and the message unit's associated protocol is PROTOCOL file entry 4625.) 2. The BOTH condition requires that the namespace(s) and the protocol(s) be specified. Under no circumstances can either namespace or protocol be specified "all." ================================================== API RULES OF OPERATION: DEFAULTS -------------------------------- Some input parameters are required, while others are not. Default values are usually assigned to those parameters that are not required if they are not explicitly passed into the entry point. This is explained in the table below. PARAMETER REQUIRED DEFAULT COMMENTS ----------------------------------------------------------------------- START YES END YES NAMESPACE NO 1 "All", with subtotals PROTOCOL NO 1 "All", with subtotals SAVE NO "HLTOTALS" If not passed data will be stored in ^TMP("HLTOTALS",$J,...) CONDITION NO "EITHER" ERRORS NO If "ERRORS" is not passed by reference, no error information will be returned ================================================== ERROR MESSAGES -------------- Checks are made of the validity of the parameters passed into the $$CM2^HLUCM entry point before any processing occurs. If the parameters are not correct, processing aborts immediately, and the reasons for failure are returned in the ERRORS("failure reason") local array. All possible failure reasons are listed below: BOTH NAMESPACES(S) AND PROTOCOL(S) MUST BE PASSED SPECIFICALLY CAN'T FIND PROTOCOL INVALID END TIME INVALID NAMESPACE PARAMETER INVALID PROTOCOL PARAMETER INVALID START TIME SOFTWARE FEATURES ----------------- The following section documents features that exist in both the $$CM^HLUCM API, (after HL*1.6*88 is installed), and the $$CM2^HLUCM API. (This is true even when the $$CM^HLUCM API is not explicitly mentioned.) SOFTWARE FEATURE #1: Excessive Transmission Times ------------------------------------------------- Messages taking 30 minutes or longer to send or receive are not included in the returned totals and documented global structure. However, these excluded messages do not completely disappear. They are placed in a separate global for evaluation. For example, if the following API call were made: W $$CM2^HLUCM(3020228.08,3020228.0859,1,1,"HLTOT","EITHER",.ERR) data would be stored in: ^TMP("HLTOT",$J,...) and the data from messages or message units taking 30 minutes or longer to send or receive, would be placed in: ^TMP("HLTOTERRTIME",$J,...). The subscript "HLTOTERRTIME" is calculated by concatenating the storage subscript (passed in the fifth parameter of $$CM2) with "ERRTIME". The structure of data in ^TMP("HLTOTERRTIME",$J) is the same as the structure of the ^TMP(TOTAL,$J) global. Thirty minutes is an arbitrary cutoff point. However, investigation shows that the number of messages or message units with transmission times 30 minutes or more is very small, but the effect of these entries on the average time of transmission or receipt is significant. Most, if not all such messages experienced some type of problem that made them useless for meaningful data reporting. SOFTWARE FEATURE #2: Sorting by Date, not Hour ---------------------------------------------- Normally, the ^TMP global data created by the $$CM2 API includes the hour of activity. A sample global node might look like this: ^TMP("HLTOT",$J,"HR","TM","T",3020228.08,"DG","VAFH A08~4620")=42223 There is a "backdoor" method by which the hour of activity can be dropped, resulting in sorting by date only. If the user wishes to do so, they must set the following global node prior to making the call to $$CM2: ^TMP($J,"HLUCMDT")="" If this global node is created and the call made to $$CM2, the resulting data would be saved in the following slightly altered format: ^TMP("HLTOT",$J,"HR","TM","T",3020228,"DG","VAFH A08~4620")=42223 In the above node, the ".08" was dropped. All activity occurring during the 24 hour period of February 28, 2002 would be included in the totals of this global node. SOFTWARE FEATURE #3: Printing ^TMP Data --------------------------------------- When calls are made to $$CM or $$CM2, ^TMP(TOTALS,$J) global data is created. ('TOTALS' is the storage subscript passed into the API in the fifth parameter position.) The data in this global can be examined by listing the global on-screen. However, an API has been created by which this data can be viewed in a more-readable format. The API is: PRINT^HLUCM002(TOTALS,JOBN) If the following API call were made: W $$CM2^HLUCM(3020228.08,3020228.0859,1,1,"HLTOT","EITHER",.ERR) global data would be created in: ^TMP("HLTOT",$J,...). This global data will be formatted and displayed if the following command is issued: D PRINT^HLUCM002("HLTOT",$J). Here is some sample output from this API: Total Total Total Main #Chars #Msgs #Sec Sort Sub1 Sub2 Sub3 ========================================================================== 8094 6 376 HR TM M 3020228.0801 272 1 0 HR TM T 3020228.08 1350 7 11 HR TM T 3020228.0801 1729 4 1 HR TM U 3020228.08 5122 21 4 HR TM U 3020228.0801 902 1 1 NMSP IO I LA 5949 24 4 NMSP IO O DG 1622 8 11 NMSP IO O RG 8094 6 376 NMSP IO O XWB 5949 24 4 NMSP LR L DG 902 1 1 NMSP LR L LA 7776 4 51 NMSP LR L XWB 1622 8 11 NMSP LR R RG 318 2 325 NMSP LR R XWB 1622 8 11 PROT PR P RG ADT-A03 SERVER~5579 5949 24 4 PROT PR P VAFH A08~4620 8094 6 376 PROT PR P XMB~9999999 902 1 1 PROT PR P XWB~9999999 In addition to the global data created $$CM or $$CM2, global debug data can be created. (See Software Feature #5 below for details.) This debug global data can be printed using the DEBUGP^HLUCM004 call point. The data is formatted for easier reading. The DEBUGP^HLUCM004 does not always print all the data; please view the global data directly when necessary. The syntax for the DEBUGP^HLUCM004 call point is shown below. >D DEBUGP^HLUCM004 Select one of the following: 1 Print TMP($J,"HLUCMSTORE","E") data 2 Print TMP($J,"HLUCMSTORE","U") data 3 Print TMP($J,"HLUCMSTORE","X") data 4 Quit Enter response: There are three different reports, as can be seen above. However, since $$CM only creates ^TMP($J,"HLUCMSTORE","E") global data, the second and third choices above are not available for the $$CM API. SOFTWARE FEATURE #4: Inferring of Namespace and Protocol -------------------------------------------------------- The namespace of a message is usually determined by evaluating the (HL Message Text file) message's event driver protocol, determining the package associated with the protocol, and taking the namespace from the package. However, not all message's have associated protocols. When a namespace cannot be determined using the protocol to package method, the namespace is inferred using a battery of other methods. These methods include: - Finding a namespace from another message in the message unit. - Evaluating the MSH, or other segment for a valid namespace. - Evaluating the Mailman message text, when a Mailman message is associated with the message. SOFTWARE FEATURE #5: Debug Global --------------------------------------------------- The $$CM2^HLUCM entry point does not record the internal entry numbers (IENs) of the message units found in the HL7 MESSAGE TEXT file (#772) and the HL7 MESSAGE ADMINISTRATION file (#773). However, users of this entry point may make use of a developer debugging "backdoor" to capture these internal entry numbers for examination, and create a record of the entries for which namespace was inferred. To do so, follow these steps: 1. Set ^TMP($J,"HLUCM")="DEBUG GLOBAL". 2. Call $$CM2^HLUCM (or $$CM^HLUCM) in the normal manner to find all matching message units. When this is done, the following occurs: 1. File #772 and #773 entries, including internal entry numbers, are stored in ^TMP($J,"HLUCMSTORE"). 2. A record is created of all entries whose namespace was inferred. 3. ^TMP($J,"HLUCM") is killed after $$CM2^HLUCM execution is complete. (It must be reset each time before calling $$CM2^HLUCM.) All the debugging data mentioned above is stored in ^TMP($J,"HLUCMSTORE") after $$CM2^HLUCM processing completes. The debug global data created as specified above holds three different primary subscripts: "E", "U", and "X". Samples of these globals are shown below. The global data created by $$CM^HLUCM only holds "E" subscripted data. THE "E" SUBSCRIPT The "E" subscript global data is sorted by the HL7 MESSAGE TEXT file (#772) internal entry numbers evaluated by the $$CM2^HLUCM API, and included in this API's totals. Below, internal entry number 45416910 is displayed. ^TMP(549499026,"HLUCMSTORE","E",45416910) = 95^1^0^3020606.081338^ 3020606.081338^CA^VAFC MFU-TFL SERVER~5364^^DG^^756~EL-PASO.MED .VA.GOV~DNS ^TMP(549499026,"HLUCMSTORE","E",45416910,772) = 17^T^I^L ^TMP(549499026,"HLUCMSTORE","E",45416910,773,8961192) = 78 There are three global nodes displayed. The last node above holds information about HL7 MESSAGE TEXT file (#773) entry 8961192, which is associated with the file 772 entry. File 773 entry 8961192 has a MSH segment that holds 78 characters. File 772 entry 45416910 has message text equaling 17 characters. This totals 95 characters for this overall message. The totals can be seen on the three nodes; 78 on the third node, 17 on the second node, and 95 in the first piece of the first node. In the data above, the first global node holds eleven pieces of data. These are: Data Piece Data ------------------------------------------------------------------------- 1 # characters in file 772 and associated 773 entry(s) 2 # message units (or messages, for $$CM^HLUCM totals) 3 Transmission seconds 4 Transmission start time 5 Transmissin end time 6 Message type (see below) 7 Protocol~IEN 8 Protocol inferral source~full name 9 Namespace 10 Namespace inferral source~full name 11 Receiving site name (see below) There are three message types: - MSG (if an original message) - CA, CE, or CR (if a commit acknowledgement) - AA, AE, or AR (if an application acknowledgement) The receiving site name stored on piece 11 is based on the RECEIVING FACILITY field in the MSH segment. It follows these rules: - If the RECEIVING FACILITY field in the MSH file starts with a station number, it is recorded in one of the following formats: - Station#~Domain~LOCAL (if local station number) - Station#~Domain~DNS (if not local station number) If the Domain is not known, the station name is substituted. (E.g., if the domain for Charleston is not known, the receiving site is recorded as 534~CHARLESTON~DNS.) - If the RECEIVING FACILITY field in the MSH file does not start with a station number, it is recorded as the location station unless it is converted. (See 'Conversions' below.) Conversions and Exclusions The receiving site name is recorded following the rules mentioned above. However, some conversions are automatically performed by the software, and some exclusions from conversion are present. The conversions and exclusions are listed below. - 200~FHIE.MED.VA.GOV~DSN is converted to AUSTIN. - 528~V02.MED.VA.GOV~DNS is converted to 528~UPSTATE NEW YORK HCS. - MPI is excluded from conversion. (Otherwise, it would be counted as LOCAL.) When either $$CM^HLUCM or $$CM2^HLUCM is run in debug mode, receiving site name-related data is automatically placed in the ^XTMP("HLUCMSTORE") global. (It is given a vaporization date of TODAY+2.) The conversions and exclusions mentioned above are placed in ^XTMP("HLUCMSTORE"). This data is shown next. ^XTMP("HLUCMSTORE","CHG","200~FHIE.MED.VA.GOV~DNS") = AUSTIN ^XTMP("HLUCMSTORE","CHG","528~V02.MED.VA.GOV~DNS") = 528~UPSTATE NEW YORK HCS ^XTMP("HLUCMSTORE","EXCL","MPI") = In the data above, conversions are held in the "CHG" nodes, and exclusions are held in the "EXCL" nodes. If the user of these APIs wishes to add more exclusions or conversions, they may do so. To convert MSH segment RECEIVING FACILITY entries of 534~CHARLESTON~DNS to 534~CHARLESTON.MED.VA.GOV~DNS, enter the following node: ^XTMP("HLUCMSTORE","CHG","534~CHARLESTON~DNS")="534~CHARLESTON.MED.VA.GOV~ DNS" If some RECEIVING FACILITY fields in the MSH segment should not be converted, enter them as exclusions. If the value CMOP-Birmingham should be excluded from conversion, (for normally it would be converted to the LOCAL site name), enter it as follows: ^XTMP("HLUCMSTORE","EXCL","CMOP-Birmingham")="" If no conversions are to be made enter the following exclusion: ^XTMP("HLUCMSTORE","EXCL","*")="" When this wild-card exclusion is entered, all "CHG" conversion nodes are ignored. There is a small amount of the debug data that has not yet been discussed. Here is the data again: ^TMP(549499026,"HLUCMSTORE","E",45416910) = 95^1^0^3020606.081338^ 3020606.081338^CA^VAFC MFU-TFL SERVER~5364^^DG^^756~EL-PASO.MED .VA.GOV~DNS ^TMP(549499026,"HLUCMSTORE","E",45416910,772) = 17^T^I^L ^TMP(549499026,"HLUCMSTORE","E",45416910,773,8961192) = 78 The second node's data is '17^T^I^L'. The value of 17 has already been discussed, but the remaining pieces of data have not. These letters signify how the data is classified, and this is explained more fully in the table below. Data Piece Possible Values ------------------------------------------------------------------------- 2 T (TCP), M (Mail), or U (Unknown) 3 I (Incoming), O (Outgoing), or U (Unknown) 4 L (Local), or R (Remote) The example above, with data of '17^T^I^L', is a TCP, Incoming, and Local message unit. Warning! The number of characters reported on the initial global node can be misleading if all nodes are not considered. This is true when more than one file 773 entry is associated with a file 772 entry. An example is included below. When this is the case, the number of characters in the 772 entry is recorded, and the number of characters in each file 773 entry is recorded. But, the total number of characters recorded on the first piece of the initial global node includes the character count from the file 772 entry twice! Each file 773 entry holds one MSH segment, and represents one distinct message. When a message is transmitted, the MSH segment in file 773 is sent, and also the body of the message which is held in the associated file 772 entry. So, when two file 773 entries are associated with one file 772 entry, it really means that two messages were sent; one with the file 772 entry plus the first file 773 MSH segment, and the second message sent with the file 772 entry plus the second file 773 MSH segment. The number of characters in the file 772 entry will be counted one time for every associated file 773 entry. In the example below, message one holds 293 + 150 characters, or 443 characters. (The file 772 entry holds 293 characters, and the file 773 entry's MSH segment holds 150 characters.) Message two holds 293 + 146 characters, or 439 characters. The total number of characters for both messages is 443 + 439 characters, or a total of 882 characters. ^TMP(549499026,"HLUCMSTORE","E",45417873) = 882^1^52^3020606.082515^3020606.0826 07^MSG^RG ADT-A03 SERVER~5579^^RG ^TMP(549499026,"HLUCMSTORE","E",45417873,772) = 293^T^O^R ^TMP(549499026,"HLUCMSTORE","E",45417873,773,8961532) = 150 ^TMP(549499026,"HLUCMSTORE","E",45417873,773,8961533) = 146 THE "U" SUBSCRIPT The "U" subscript global data is sorted by the HL7 MESSAGE TEXT file (#772)internal entry number of the parent, or originating message in the message unit. In the example below, parent internal entry number 45416438 is included. ("E" subscript data is also included for reasons to be explained later.) ^TMP(549521881,"HLUCMSTORE","U",45416438) = 758^2^2^3020606.080535^302060 6.080537^~AA^RA EXAMINED 2.3~5503^^RA^^512~BALTIMORE.MED.VA.GOV ^TMP(549521881,"HLUCMSTORE","U",45416438,45416438) = 528^1^2^3020606.0805 35^3020606.080537^^RA EXAMINED 2.3~5503^^RA ^TMP(549521881,"HLUCMSTORE","U",45416438,45416438,8961061) = 121 ^TMP(549521881,"HLUCMSTORE","U",45416438,45416439) = 18^1^0^3020606.08053 7^3020606.080537^AA^RA EXAMINED 2.3~5503^^RA ^TMP(549521881,"HLUCMSTORE","U",45416438,45416439,8961062) = 91 ^TMP(549521881,"HLUCMSTORE","E",45416438) = 649^1^2^3020606.080535^302060 6.080537^^RA EXAMINED 2.3~5503^^RA^^512~BALTIMORE.MED.VA.GOV ^TMP(549521881,"HLUCMSTORE","E",45416438,772) = 528^T^O^L ^TMP(549521881,"HLUCMSTORE","E",45416438,773,8961061) = 121 ^TMP(549521881,"HLUCMSTORE","E",45416439) = 109^1^0^3020606.080537^302060 6.080537^AA^RA EXAMINED 2.3~5503^^RA^^512~BALTIMORE.MED.VA.GOV ^TMP(549521881,"HLUCMSTORE","E",45416439,772) = 18^T^O^L ^TMP(549521881,"HLUCMSTORE","E",45416439,773,8961062) = 91 At the second subscript level after the "U" subscript are found the HL7 MESSAGE TEXT file (#772) entry internal entry numbers that are children to the parent. The first entry at this level is 45416438, which is actually the parent message. The second entry is 45416439, which is a true child. At the third subscript level in the "U" subscript data are HL7 MESSAGE ADMINISTRATION file (#773) entry internal entry numbers related to the file 772 entry. It this example, file 772 entry 45416438 is linked with file 773 entry 8961061. Also, file 772 entry 45416439 is linked with file 773 entry 8961062. In the "E" subscript data above the number of characters are included for both file 772 entries. The number of characters per message are also listed below. File IEN #Char Comments ========================================================================= 772 45416438 528 Parent 772 773 8961061 121 Associated 773-linked to 772 entry 45416438 649 Total number characters for 772 & 773 entry ------------------------------------------------------------------------- 772 45416439 18 Child 772-child to file 772 entry 45416438 773 8961062 91 Associated 773-linked to 772 entry 45416439 109 Total number characters for 773 & 773 entry These two file 772/773 message combinations have 649 characters and 109 characters respectively. The total number of characters for both message combinations is 649 + 109 or 758 characters. This can be seen in the first piece of the initial global node in the "U" data. The other character totals - 528, 121, 18, and 91 - can also be found in the "U" data. Here is the "U" subscript data again: ^TMP(549521881,"HLUCMSTORE","U",45416438) = 758^2^2^3020606.080535^302060 6.080537^~AA^RA EXAMINED 2.3~5503^^RA^^512~BALTIMORE.MED.VA.GOV ^TMP(549521881,"HLUCMSTORE","U",45416438,45416438) = 528^1^2^3020606.0805 35^3020606.080537^^RA EXAMINED 2.3~5503^^RA ^TMP(549521881,"HLUCMSTORE","U",45416438,45416438,8961061) = 121 ^TMP(549521881,"HLUCMSTORE","U",45416438,45416439) = 18^1^0^3020606.08053 7^3020606.080537^AA^RA EXAMINED 2.3~5503^^RA ^TMP(549521881,"HLUCMSTORE","U",45416438,45416439,8961062) = 91 The eleven pieces of data present on these global nodes follows the same structure as the "E" subscript data, and will not be re-explained here. The following data will be used to further explain the message type data on the sixth piece. ^TMP(549521881,"HLUCMSTORE","U",45416622) = 926^4^13^3020606.080952^30206 06.081005^MSG~CA~AA~CA^RG ADT-A03 SERVER~5579^^RG^^460~WILMINGTON.MED.V A.GOV~DNS ^TMP(549521881,"HLUCMSTORE","U",45416622,45416622) = 312^1^9^3020606.0809 52^3020606.081001^MSG^RG ADT-A03 SERVER~5579^^RG ^TMP(549521881,"HLUCMSTORE","U",45416622,45416622,8961083) = 149 ^TMP(549521881,"HLUCMSTORE","U",45416622,45416623) = 17^1^0^3020606.08095 2^3020606.080952^CA^RG ADT-A03 SERVER~5579^^RG ^TMP(549521881,"HLUCMSTORE","U",45416622,45416623,8961084) = 133 ^TMP(549521881,"HLUCMSTORE","U",45416622,45416631) = 17^1^4^3020606.08100 1^3020606.081005^AA^RG ADT-A03 SERVER~5579^^RG ^TMP(549521881,"HLUCMSTORE","U",45416622,45416631,8961090) = 148 ^TMP(549521881,"HLUCMSTORE","U",45416622,45416637) = 17^1^0^3020606.08100 5^3020606.081005^CA^RG ADT-A03 SERVER~5579^^RG ^TMP(549521881,"HLUCMSTORE","U",45416622,45416637,8961094) = 133 There are four different entries above: 45416622, 45416623, 45416631, and 45416637. The message type for each message is included on the sixth piece of the data. Entry 45416622 has a message type of "MSG", or initial message. Entry 45416623 has a message type of "CA", entry 45416631 is "AA", and entry 45416637 is "CA". The message types from the four constituent messages are all moved into the initial global node: ^TMP(549521881,"HLUCMSTORE","U",45416622) = 926^4^13^3020606.080952^30206 06.081005^MSG~CA~AA~CA^RG ADT-A03 SERVER~5579^^RG^^460~WILMINGTON.MED.V A.GOV~DNS Notice that the message type of "MSG~CA~AA~CA" is built from all constituent message's message types. THE SUBSCRIPT "O" When the $$CM2^HLUCM API is called, units of messages are found rather than individual messages. For example, the initial message (i.e., MSG) of a MSG~CA~AA~CA unit might be sent TODAY@07:59, the first CA received at TODAY@08:01, the AA received TODAY@08:02, and the final CA of this unit might have been sent at TODAY@08:16. When the $$CM^HLUCM API is called with a beginning time of TODAY@08:00 and an ending time of TODAY@08:15, only the middle CA and AA will be counted. However, when the $$CM2^HLUCM API is called with the same time range, the entire MSG~CA~AA~CA unit is counted. When the $$CM2^HLUCM API is called, the ^TMP($J,"HLUCMSTORE","O") global is created to allow the developer to examine those entries that have one or more messages in the message unit that fall outside the time range. Here's some ^TMP($J,"HLUCMSTORE","O") sample data created by a call to $$CM2^HLUCM with a start time of 08:00 and an end time of 08:01: ^TMP($J,"HLUCMSTORE","O") = 1226^9^167^2^7 ^TMP($J,"HLUCMSTORE","O",5275) = 0^1^0^3021115.075921^3021115.075921 ^TMP($J,"HLUCMSTORE","O",5292) = 0^1^0^3021115.075944^3021115.075944 ^TMP($J,"HLUCMSTORE","O",5427) = 0^1^33^3021115.080038^3021115.080111 ^TMP($J,"HLUCMSTORE","O",5437) = 0^1^19^3021115.080052^3021115.080111 ^TMP($J,"HLUCMSTORE","O",5439) = 0^1^17^3021115.080055^3021115.080112 ^TMP($J,"HLUCMSTORE","O",5441) = 0^1^16^3021115.080057^3021115.080113 ^TMP($J,"HLUCMSTORE","O",5443) = 0^1^14^3021115.0801^3021115.080114 ^TMP($J,"HLUCMSTORE","O",5447) = 1048^1^14^3021115.080054^3021115.080108 ^TMP($J,"HLUCMSTORE","O",5449) = 178^1^54^3021115.080055^3021115.080149 The initial ^TMP($J,"HLUCMSTORE","O") node is a totals node, and will be explained later. The remaining nine data nodes are explained next. Data Node Explanation In the last nine data nodes above, the "O" subscript is followed by the file 772 IEN. (I.e., 5275, 5292, 5427, 5437, 5439, 5441, 5443, 5447, and 5449.) These nodes have the five pieces of data explained in the following list. Data Piece Data ------------------------------------------------------------------------- 1 # characters in file 772 and associated 773 entry(s) 2 # messages (always equals 1.) 3 Transmission seconds for message 4 Transmission start time 5 Transmissin end time Totals Node Explanation The ^TMP($J,"HLUCMSTORE","O") totals node has six pieces of data. They are: Piece 1: # characters in all messages in the "O" subscript data. Piece 2: Number of messages in all "O" subscript data nodes. Piece 3: Number seconds to transmit all messages. Piece 4: Number messages in the data nodes with beginning times before the $$CM2^HLUCM API call's start time. (In this example, piece 4 equals 2, and the 2 entries are IENs 5275 and 5292. These are the entries with start times before 08:00.) Piece 5: Number messages in the data nodes with ending times after the $$CM2^HLUCM API call's end time. (In this example, piece 5 equals 7, and the 7 entries are IENs 5427, 5437, 5439, 5441, 5443, 5447, and 5449. These are the entries with end times after 08:01.) Piece 6: Number messages in the data nodes with beginning time before the $$CM2^HLUCM API call's start time and ending time before the $$CM2^HLUCM API call's end time. (This piece is null, (as will usually be the case), indicating no message met the criteria.) In the above example, the $$CM2^HLUCM API call's date range was from 08:00 until 08:01. If you will examine the start and end times on the ^TMP($J,"HLUCMSTORE","O",IEN772) nodes above you will see how the fourth, fifth, and sixth pieces on the totals node were determined. THE SUBSCRIPT "X" The "X" subscript global data holds as the first subscript after "X" the internal entry number of the child HL7 MESSAGE TEXT file (#772). The next subscript holds that child's parent file 772 entry. So, the structure is: ^TMP($J,"HLUCMSTORE","X",CHILD-IEN,PARENT-IEN) = If a third subscript exists, it holds the HL7 MESSAGE ADMINISTRATION file (#773) entry associated with the parent entry. This alternate structure can be seen in the last row in the data below. ^TMP(549483094,"HLUCMSTORE","X",35959463,35959463) = ^TMP(549483094,"HLUCMSTORE","X",35959464,35959463) = ^TMP(549483094,"HLUCMSTORE","X",35959465,35959465,5297021) = WARNING! Use of this developer "backdoor" creates a large amount of information. Use this technique only for small periods of time. ================================================== Routine Summary: The first and second lines of the routines included in this patch are shown below. HLUCM ;CIOFO-O/LJA - HL7/Capacity Mgt API ;2/27/01 10:15 ;;1.6;HEALTH LEVEL SEVEN;**79,88**;Oct 13, 1995 HLUCM001 ;CIOFO-O/LJA - HL7/Capacity Mgt API (continued) ;2/27/01 10:15 ;;1.6;HEALTH LEVEL SEVEN;**79,88**;Oct 13, 1995 HLUCM002 ;CIOFO-O/LJA - HL7/Capacity Mgt API ;2/27/01 10:15 ;;1.6;HEALTH LEVEL SEVEN;**79,88**;Oct 13, 1995 HLUCM003 ;CIOFO-O/LJA - HL7/Capacity Mgt API-II ;10/23/01 12:01 ;;1.6;HEALTH LEVEL SEVEN;**88**;Oct 13, 1995 HLUCM004 ;CIOFO-O/LJA - HL7/Capacity Mgt API-II ;10/23/01 12:01 ;;1.6;HEALTH LEVEL SEVEN;**88**;Oct 13, 1995 HLUCM005 ;CIOFO-O/LJA - HL7/Capacity Mgt API-II ;10/23/01 12:01 ;;1.6;HEALTH LEVEL SEVEN;**88**;Oct 13, 1995 HLUCM006 ;CIOFO-O/LJA - HL7/Capacity Mgt API-II ;6/9/02 18:37 ;;1.6;HEALTH LEVEL SEVEN;**88**;Oct 13, 1995 HLUCM007 ;CIOFO-O/LJA - HL7/Capacity Mgt API-II ;10/23/01 12:01 ;;1.6;HEALTH LEVEL SEVEN;**88**;Oct 13, 1995 HLUCM008 ;CIOFO-O/LJA - HL7/Capacity Mgt API-II ;7/31/01 15:54 ;;1.6;HEALTH LEVEL SEVEN;**88**;Oct 13, 1995 Checksums: Routine Name Checksum Before Checksum After Patch List ------------- ----------------- --------------- ---------- HLUCM 8711789 8527659 **79,88** HLUCM001 6749680 9301547 **79,88** HLUCM002 4284229 6864282 **79,88** HLUCM003 ---- 8255457 **88** HLUCM004 ---- 9473283 **88** HLUCM005 ---- 10973154 **88** HLUCM006 ---- 10479350 **88** HLUCM007 ---- 7528798 **88** HLUCM008 ---- 9563420 **88** Sites should use CHECK^XTSUMBLD to verify checksums. Installation Instructions: ========================== Step 1. Users are allowed to be on the system during all steps in the installation of this patch. The actual installation of the software (step 6, below) takes less than 2 minutes. WARNING! Do not install this software during periods of time when calls to $$CM^HLUCM might be running. Step 2. Use the INSTALL/CHECK MESSAGE option on the PackMan menu to load the KIDS package onto your system. Step 3. Verify the checksums in the transport global using the 'Verify Checksums in Transport Global [XPD PRINT CHECKSUM]' menu option. Step 4. Backup of all software structures that will be overwritten by the patch using the 'Backup a Transport Global [XPD BACKUP]' menu option. (If desired, you may print a list of the changes that will be installed by this patch using the 'Compare Transport Global to Current System [XPD COMPARE TO SYSTEM]' menu option.) Step 5. DSM SITES: Review your mapped set. If any HLUCM-namespaced routines are mapped, remove them from the mapped set at this time. Step 6. The patch has now been loaded into a Transport global on your system. You now need to move the transport global into a build on your system. This is done using the 'Installation menu's 'Install Package(s) [XPD INSTALL BUILD]' menu option. When using this menu option to install the HL*1.6*88 build, you will be asked several questions. The questions, and the answers you should supply, are shown below: INSTALL NAME: Want KIDS to INHIBIT LOGONS during the install? Want to DISABLE Scheduled Options, Menu Options, and Protocols? Step 7. DSM Sites: Rebuild your mapped set if necessary. Routine Information: ==================== Routine Name: - HLUCM Routine Checksum: Routine Name: - HLUCM001 Routine Checksum: Routine Name: - HLUCM002 Routine Checksum: Routine Name: - HLUCM003 Routine Checksum: Routine Name: - HLUCM004 Routine Checksum: Routine Name: - HLUCM005 Routine Checksum: Routine Name: - HLUCM006 Routine Checksum: Routine Name: - HLUCM007 Routine Checksum: Routine Name: - HLUCM008 Routine Checksum: ============================================================================= User Information: Entered By : ANDREASSEN,LARRY Date Entered : NOV 28, 2001 Completed By: HERREN,CATHRYN Date Completed: DEC 05, 2002 Released By : GAYFIELD,LISA Date Released : DEC 10, 2002 ============================================================================= Packman Mail Message: ===================== $END TXT