Jon Blanchard

Forum Replies Created

Viewing 15 replies – 1 through 15 (of 46 total)
  • Author
    Replies
  • in reply to: Unable to get MSI index on msg [0.0.419971] for thread #121532
    Jon Blanchard
    Participant

      Stewart:

      Did you get this issue resolved and, if so, how?  I am getting the same error in the hcimonitord.log file in large quantities; it also extends the startup time for the container process that I am trying to start.

      Thanks.

      Migration Consultant
      Coffee Regional Medical Center
      Eastern Time Zone

      in reply to: HL/7 FHIR #81070
      Jon Blanchard
      Participant

        Hello all:

        This is year 2018…any update on activities involving FHIR integration?

        Migration Consultant
        Coffee Regional Medical Center
        Eastern Time Zone

        in reply to: Dropping xlate output msg not in RESEND_DEST_OVERRIDE list #84492
        Jon Blanchard
        Participant

          Cloverleaf 6.1.2 on AIX.

          I am experiencing this issue but, using the example that Jim presented:

          Code:

          A -> B_out

          B_in -> C
              -> D

          I am sending from the B_in smat file, setting the destination thread and unchecking the “include Metadata” checkbox.  Still getting the RESEND_DEST_OVERRIDE response.

          Migration Consultant
          Coffee Regional Medical Center
          Eastern Time Zone

          in reply to: Making TPS tcl procs more self-aware #85460
          Jon Blanchard
          Participant

            Forgot a couple of details…sorry.

            The global array will be accessed by each instance of the tcl proc, but the data stored will be specific to the tcl instance that generated it.  Multiple instances of the tcl proc access the global array within the same interpreter, but there is no sharing of data between them.  The global array exists as a common resource by name only, simply because the same script is executing in different UPOCs.

            My understanding is that the message and its metadata exist for the life of its passage through a single thread.  Once the thread sends the message to an external system or another thread, the message and metadata are destroyed.  The next thread then adds the message and new metadata into the database.  Since each instance of the tcl proc will most likely have a unique argument, there is no common set of args that can be carried in metadata.

            Thus, each instance of the tcl proc needs to be uniquely ID’d so that its entries in the global array are not accessed by any other instance of the tcl proc using the same global array.

            Migration Consultant
            Coffee Regional Medical Center
            Eastern Time Zone

            in reply to: Making TPS tcl procs more self-aware #85457
            Jon Blanchard
            Participant

              In a single instance of the tcl proc, in startup mode, a global array will be created if it does not already exist, then populated with components needed by the tcl proc as part of its run mode processing.  In run mode, each entry in the global array will be accessed during the tcl proc’s handling of the message data; no new rows will be created, so the array won’t eat up memory over time.    In shutdown mode, each element in the global array that was created by that tcl proc instance will be removed and, if no more entries exist in global array, the array will be unset.

              The global array is accessed using a subscript in the form , where DataItem is one or more tokens used by all instances of the tcl proc and UniqueTclProcID is the ID assigned to the individual tcl proc instance.

              The use of the CRC checksum sounds great; the only question I have left is if two instances of the tcl proc, which are in the same interpreter and use the same args, will end up using the same CRC checksum value.  Using a namespace sounds cool, too, but I will want to benchmark each method to see which consumes fewer CPU clock ticks.  Using the counter method might be great for simpler use cases, but my concern is that the counter value will be the same for two instances of the tcl proc at any chance point in time, based on the message volume that each instance is handling.

              So the end goal is to create a tcl proc which can handle messages at the TPS, Pre- or Post-Xlate and store the information that it needs to handle each message in the same manner, but efficiently.  I don’t envision this tcl proc being used within an Xlate.

              Hope that answers your questions.

              Migration Consultant
              Coffee Regional Medical Center
              Eastern Time Zone

              in reply to: Making TPS tcl procs more self-aware #85452
              Jon Blanchard
              Participant

                So, within a TPS tcl proc, the processing order using the CRC32 key value could be

                Code:


                start {
                  convert user args into key
                  preparse user args
                  store preparsed user args: set global_var_array($key) $preparse
                  .
                  .
                  (other code)
                  .
                  .
                }
                run {
                  convert user args into key
                  retrieve preparsed args: set preparse $global_var_array($key)
                  .
                  .
                  (other code)
                  .
                  .
                }
                shutdown {
                  convert user args into key
                  purge preparsed args: unset $global_var_array($key)
                  .
                  .
                  (other code)
                  .
                  .
                }

                How much CPU time is involved in the CRC32 conversion?

                Migration Consultant
                Coffee Regional Medical Center
                Eastern Time Zone

                in reply to: Using an Xlate to split an A17 into two A02s #85007
                Jon Blanchard
                Participant

                  Resolved!

                  My thanks to Jim and Robert for their great advice.  There was no problem with either version of my xlate; the Testing Engine simply doesn’t identify the two output messages as Message 1 and Message 2.  If you output the Testing Engine results to a file, they will be two separate and readable messages that can be read into a thread and processed.

                  The Infor development lead needs to read The Cat In The Hat…Thing 1 and Thing 2 were uniquely identified in the story, but they weren’t joined at the hip… 😕  

                  Time for an Enhancement Request…

                  Migration Consultant
                  Coffee Regional Medical Center
                  Eastern Time Zone

                  in reply to: Using an Xlate to split an A17 into two A02s #85006
                  Jon Blanchard
                  Participant

                    1. Using 1(%g1) in the basis has never generated a compile error, nor has it generated any erroneous outcome in actual use.  I contend that there is no difference between 1 and 1(%g1) as a basis, as long as the variable is correct.

                    2. The sending system does populate the Prior Patient Location field

                    3. I tried your suggestion about excluding the iteration action and performing a straight-line set of actions.  At this writing, I was attempting the same [suppress, iterate {populate, continue} on 1(%g1)] in another xlate on our 5.8 engine, then removed the iterate action and performed a straight line suppress-populate-continue-null out-populate-continue set of actions and the outcome was the same.  I even saved my changes, recompiled the xlate and opened a new testing page, just to be sure that I was testing the most current revision.  The outcome was the same on both 5.8 and 6.1.

                    Here is the xlate:

                    Code:

                    prologue
                       xlt_infile: hl7 2.2 HBOCHI_22B ADT_A17
                       who:        jblanchard
                       date:       July 18, 2017 5:08:52 PM CDT
                       xlt_outfile:        hl7 2.3  ADT_A08
                       type:       xlt
                       version:    7.0
                    end_prologue

                    { { OP COMMENT }
                       { COMMENT {File: abq_star_to_slink_a17.xlt (”slink” = Nuance ShadowLink)} }
                    }
                    { { OP COMMENT }
                       { COMMENT {Author: Unknown creator and creation date} }
                    }
                    { { OP COMMENT }
                       { COMMENT Revisions: }
                    }
                    { { OP COMMENT }
                       { COMMENT {2017 07 18 jeb: Added actions to convert an A17 to two A08s, for the ShadowLink server} }
                    }
                    { { OP SUPPRESS } }
                    { { OP DATECOPYOPT }
                       { ADDPREC 0 }
                       { FABRICATE 1 }
                       { USECURTM 1 }
                       { RANGE {49 20 19} }
                       { TMDEFS {01 01 00 00 00 0000 +0000} }
                       { DELIMIT {/ :} }
                    }
                    { { OP PATHCOPY }
                       { ERR 0 }
                       { IN 0(0).MSH }
                       { OUT 0(0).MSH }
                    }
                    { { OP COPY }
                       { ERR 2 }
                       { IN =ADT^A08 }
                       { OUT {{0(0).MSH(0).#9(0).[0]}} }
                    }
                    { { OP PATHCOPY }
                       { ERR 0 }
                       { IN 0(0).EVN }
                       { OUT 0(0).EVN }
                    }
                    { { OP PATHCOPY }
                       { ERR 0 }
                       { IN 1(0).PID }
                       { OUT 0(0).PID }
                    }
                    { { OP COPY }
                       { REM 1 }
                       { ERR 0 }
                       { IN {{1(0).PID.00106(0).[0]} 0(0).MSH.00004(0)} }
                       { OUT {{0(0).PID.00106(0).[0]}} }
                       { COPYSEP {} }
                    }
                    { { OP COPY }
                       { REM 1 }
                       { ERR 0 }
                       { IN {{1(0).PID.00121.[0]} 0(0).MSH.00004(0)} }
                       { OUT {{0(0).PID.00121.[0]}} }
                       { COPYSEP {} }
                    }
                    { { OP COPY }
                       { ERR 0 }
                       { IN @null }
                       { OUT {{0(0).PID.00106(0).[3]}} }
                    }
                    { { OP COPY }
                       { ERR 0 }
                       { IN @null }
                       { OUT {{0(0).PID.00106(0).[4]}} }
                    }
                    { { OP COPY }
                       { ERR 0 }
                       { IN @null }
                       { OUT {{0(0).PID.00121.[3]}} }
                    }
                    { { OP COPY }
                       { ERR 0 }
                       { IN @null }
                       { OUT {{0(0).PID.00121.[4]}} }
                    }
                    { { OP PATHCOPY }
                       { ERR 0 }
                       { IN 1(0).PV1 }
                       { OUT 0(0).PV1 }
                    }
                    { { OP PATHCOPY }
                       { ERR 0 }
                       { IN 1(0).PD1 }
                       { OUT 0(0).PD1 }
                    }
                    { { OP CONTINUE } }
                    { { OP PATHCOPY }
                       { ERR 0 }
                       { IN @null }
                       { OUT 0(0).PID }
                    }
                    { { OP PATHCOPY }
                       { ERR 0 }
                       { IN @null }
                       { OUT 0(0).PD1 }
                    }
                    { { OP PATHCOPY }
                       { ERR 0 }
                       { IN @null }
                       { OUT 0(0).PV1 }
                    }
                    { { OP PATHCOPY }
                       { ERR 0 }
                       { IN 1(1).PID }
                       { OUT 0(0).PID }
                    }
                    { { OP COPY }
                       { REM 1 }
                       { ERR 0 }
                       { IN {{1(1).PID.00106(0).[0]} 0(0).MSH.00004(0)} }
                       { OUT {{0(0).PID.00106(0).[0]}} }
                       { COPYSEP {} }
                    }
                    { { OP COPY }
                       { REM 1 }
                       { ERR 0 }
                       { IN {{1(1).PID.00121.[0]} 0(0).MSH.00004(0)} }
                       { OUT {{0(0).PID.00121.[0]}} }
                       { COPYSEP {} }
                    }
                    { { OP COPY }
                       { ERR 0 }
                       { IN @null }
                       { OUT {{0(0).PID.00106(0).[3]}} }
                    }
                    { { OP COPY }
                       { ERR 0 }
                       { IN @null }
                       { OUT {{0(0).PID.00106(0).[4]}} }
                    }
                    { { OP COPY }
                       { ERR 0 }
                       { IN @null }
                       { OUT {{0(0).PID.00121.[3]}} }
                    }
                    { { OP COPY }
                       { ERR 0 }
                       { IN @null }
                       { OUT {{0(0).PID.00121.[4]}} }
                    }
                    { { OP PATHCOPY }
                       { ERR 0 }
                       { IN 1(1).PV1 }
                       { OUT 0(0).PV1 }
                    }
                    { { OP PATHCOPY }
                       { ERR 0 }
                       { IN 1(1).PD1 }
                       { OUT 0(0).PD1 }
                    }
                    { { OP CONTINUE } }

                    And here is the outcome:

                    Code:

                    0(0).MSH(0)  :  >|^~&|ST01|M|PHS|M|20170716120701||ADT^A08|33539542|P|2.2|33539542||AL|A17|20170716120701|||as8987|1||0010635930M~0010635930^^^ST01P^M~00538647^^^ST01^PI||^^^””|””||||3|^^^^^””^P^NM001^NM001||^PRN^PH^^^^^^^^^5~””^ORN^PH^^^””^””^^^^^””~””^ORN^CP^^^””^””^^^^^””~^NET^X.400^|””^WPN^PH^^^””^””^^^^^””|E^ENGLISH^HL70296^E^ENGLISH^99CLAN|||1719300800M||||2^N|””|””|””||N|””|””|N||””||9384^RODRIGUEZ LUGO^MIRTA^M^^^MD^HL70010|1|I|2WM^207^01^M^OCC|1||2WM^209^01^M^^””^””|1303^PEREA^JOSEPH^R^^^MD^HL70010|1303^PEREA^JOSEPH^R^^^MD^HL70010|8473^HERNANDEZ^CAMILLE^””^^^NP^HL70010~12576^TOLIN^KIMBERLY^LYNN^^^CNP^HL70010|MD|||N|7||””|1303^PEREA^JOSEPH^R^^^MD^HL70010|IP||R||||||||||||||||””|||M|O|0|””||201707130127|””|| 20720.00|||””|^~&|ST01|M|PHS|M|20170716120701||ADT^A08|33539542|P|2.2|33539542||AL|A17|20170716120701|||as8987|2|HNE1769756948^^^NE^P|0015038291M~0015038291^^^ST01Q^M~0015038291^^^ST01P^M~00920079^^^ST01^PI||^^””^””|””||||3|^””^^^^USA^P^NM001^NM001||^PRN^PH^^^^^^^^^5~””^ORN^PH^^^””^””^^^^^””~””^ORN^CP^^^””^””^^^^^””~^NET^X.400^|””^WPN^PH^^^””^””^^^^^””|E^ENGLISH^HL70296^E^ENGLISH^99CLAN|||1719600347M||||2^N|””|””|””||N|””|””|N||””||12000^AYALA^SANTIAGO^””^^^MD^HL70010|2|I|2WM^209^01^M^OCC|1||2WM^207^01^M^^””^””|1303^PEREA^JOSEPH^R^^^MD^HL70010|88888^SELF^REFERRED^””^^^MD^HL70010|12576^TOLIN^KIMBERLY^LYNN^^^CNP^HL70010|MD|||N|7||””|1303^PEREA^JOSEPH^R^^^MD^HL70010|IP||R||||||||||||||||””|||M|O|0|””||201707160330|””|| 20720.00|||””<

                    Migration Consultant
                    Coffee Regional Medical Center
                    Eastern Time Zone

                    in reply to: HL7 parser #73084
                    Jon Blanchard
                    Participant

                      <span style="color: #471A60]Add an indicator for a repeating field number as follows”>

                      (segmentNumber)~…

                      Migration Consultant
                      Coffee Regional Medical Center
                      Eastern Time Zone

                      in reply to: Temporary Vars in a Contains comparison #84810
                      Jon Blanchard
                      Participant

                        <span style="color: #471A60]Here is the output from the Testing Engine”>

                        Code:

                        Please Wait ……
                        Command Issued: hcixlttest -i -e ASCII -d 1 -f nl ama_epic_to_gemaclab_adt.xlt /cloverleaf/cis6.1/integrator/ama_adt_t/data/maclab_A08.nl
                        Command output:

                        XLT is loaded from local site, read /cloverleaf/cis6.1/integrator/master_t/formats/hl7/2.5.1/Epic_AIP_711700_IB/fields from master
                        XLT is loaded from local site, read /cloverleaf/cis6.1/integrator/master_t/formats/hl7/2.3/GEMacLab_41_OB/fields from master
                        ama_epic_to_gemacllab_adt.xlt: @triggerEvent = A08
                        ama_epic_to_gemacllab_adt.xlt: @level1 = A18A34A35A36A39
                        ama_epic_to_gemacllab_adt.xlt: @level2 = A01A04A05A06A07A08A13A14
                        ama_epic_to_gemacllab_adt.xlt: @level3 = A01A02A03A04A05A06A07A08A11A12A13A14A17A18A34A35A36A38A39
                        ama_epic_to_gemacllab_adt.xlt: @level4 = A01A02A03A04A05A06A07A08A11A12A13A14A17A38
                        ama_epic_to_gemacllab_adt.xlt: @level5 = A01A02A04A05A06A07A08A11A12A13A14A17A38
                        ama_epic_to_gemacllab_adt.xlt: @level6 = A01A04A05A06A07A08A13A14
                        ama_epic_to_gemacllab_adt.xlt: @level7 = A01A03A04A05A06A07A08A11A12A13A14A38
                        ama_epic_to_gemacllab_adt.xlt: @level8 = A01A03A04A05A06A07A08A13A14
                        ama_epic_to_gemacllab_adt.xlt: @level9 = A01A04A05A06A07A08A13A14
                        abq_epic_to_gemaclab_adt.xlt: MSH Segment; 0(0).MSH(0).#9(0).[1] = A08
                        abq_epic_to_gemaclab_adt.xlt: PID Segment
                        abq_epic_to_gemaclab_adt.xlt: PD1 Segment
                        abq_epic_to_gemaclab_adt.xlt: MRG Segment
                        ama_epic_to_gemaclab_adt.xlt: @level1  ct  @TriggerEvent contain operation failed
                        abq_epic_to_gemaclab_adt.xlt: NK1 Segment
                        abq_epic_to_gemaclab_adt.xlt: PV1 Segment
                        abq_epic_to_gemaclab_adt.xlt: PV2 Segment
                        MESSAGE 1
                        Fetch failure on ‘triggerEventA’

                        Migration Consultant
                        Coffee Regional Medical Center
                        Eastern Time Zone

                        in reply to: Format for CT (Contains) #83681
                        Jon Blanchard
                        Participant

                          Is it possible to use a literal on the left side of the ct operator, such as

                          Code:

                          {=A01 A02 A03 A08} ct @hl7Event

                          When I attempt to compile the Xlate, the error returned is

                          Code:

                          [0:TEST] IF expression parse failed: Expected a relational operator
                          Error occurred at: ‘1 A04 A05 A08}  ct  @hl7Event’

                          I did stash the literal in an @ variable, but am still wondering.

                          Migration Consultant
                          Coffee Regional Medical Center
                          Eastern Time Zone

                          in reply to: NetConfig lock not releasing on 5.8 #72865
                          Jon Blanchard
                          Participant

                            This is still a problem in version 6.1.2, and made even worse after we set Open NetConfig as Read Only to true, then false.  The host server is cycled each time.

                            The lock management functionality needs some improvement.

                            Migration Consultant
                            Coffee Regional Medical Center
                            Eastern Time Zone

                            in reply to: Cloverleaf not loading the most current Netconfig file. #78725
                            Jon Blanchard
                            Participant

                              If changes were made to the NetConfig by user A, but not saved before user B breaks the lock, user A loses all changes made.  This is made even more complex when more than two users are involved.

                              That is why communication between teammates is important.

                              Migration Consultant
                              Coffee Regional Medical Center
                              Eastern Time Zone

                              in reply to: Cloverleaf Colorful Client GUI – Updated! #83402
                              Jon Blanchard
                              Participant

                                Is there any way to configure the color features in the new jar file, such as through a config.xml file?

                                Migration Consultant
                                Coffee Regional Medical Center
                                Eastern Time Zone

                                in reply to: clovlerleaf GUI help document not functioning for ‘search ‘ #83846
                                Jon Blanchard
                                Participant

                                  In IE 11, I opened the Compatibility View Settings dialog and added infor.com.  Clicked the Close button, refeshed the page and the help files appeared correctly.  This worked for the link listed in the Documents section of Clovertech; it did not work for the same help files that were stored on my local workstation computer.

                                  Migration Consultant
                                  Coffee Regional Medical Center
                                  Eastern Time Zone

                                Viewing 15 replies – 1 through 15 (of 46 total)