Holding a message

Homepage Clovertech Forums Read Only Archives Cloverleaf Cloverleaf Holding a message

  • Creator
    Topic
  • #54196
    Scott Rush
    Participant

    Has anyone ever had a situation where the disposition of the current message is predicated on the next message?

    The Epic tech wants me to put logic in such that if the next message ORC-1 is NW, then both messages should be killed.

    I’m not sure the best way to tackle this problem.

    Any ideas are welcome.

Viewing 11 reply threads
  • Author
    Replies
    • #80539
      William Rowley
      Participant

      This probably not the exact help you’re looking for but…

      I would sit down with the two vendors and show/explain the way an HL7 order conversation should work per the standard. Then send them back to their desks to correct their interface so the engine does not need to base the handling of an asynchronous message on the values/contents of another asychronous message (that may never come) or refund the money paid for the non-compliant interface.

      But that’s just my opinion – I could be wrong.

    • #80540
      Scott Rush
      Participant

      No argument here, but Epic can’t prevent this from happening in their system.

      I guess moving to Epic did not solve ALL our problems.  ðŸ˜‰

      (Sarcasm)

    • #80541
      Jeff Dinsmore
      Participant

      It’s definitely possible to hold messages and process them based on other messages – put them in a DB or file and process them later – but I would also wonder why.

      Can you explain the case you’re talking about in more detail?  If we know more, perhaps we can offer some solutions.

      Jeff Dinsmore
      Chesapeake Regional Healthcare

    • #80542
      Mark Thompson
      Participant

      Scott,

      I have seen this done at least 3 ways depending on the impact of loosing the message and the skill sets of the implementer.  A moderate level of Tcl skill is required for all of them.

      1. Copy the message to global (or namespace) memory and clear it when the next message comes through.  Pros: Very fast and effecient.  Cons: Message disappears if you crash the engine process.  Potential for memory leaks if not well coded.

      2. Save the message in a database.  Pros: Moderately fast.  Cons: Message may disappear if you corrupt the database.

      3. Save the message in a file.  Pros: Message is as secure as your operating system’s file system processing.  May be able to use fileset/local threads to reduce Tcl coding.  Cons: Slowest of the options considered.  Messasge may disappear if your file system gets corrupted, but at that point loosing 1 message won’t be your biggest concern.

      I’m sure others can expand the list of pros and cons for any of these options.  I have personally implemented #1 & #3.  Option #2 seems to be the most common choice among CloverTechies during recent discussions.

      Your best option is always to push vendors to follow standard HL7 functionality.  If they get the acceptance sign-off there is little incentive to go back and make it work correctly.  If they fix it now, it will also work correctly for their future clients – who could be one of us.

      - Mark Thompson
      HealthPartners

    • #80543
      Kevin Kinnell
      Participant

      Scott —

      You can also push a little higher into the Epic interface technical support.  A lot of newer interface TS’s don’t really get it, and their programming experience is limited to what is essentially a MUMPS networked database.

      The higher level understands that an engine doesn’t automatically save messages for future use.  They aren’t astonished by it, and usually have some experience with other solutions.

    • #80544
      Scott Rush
      Participant

      Thanks everyone!

      I did it via a file yesterday.

      Epic is good at presenting to upper management before pulling me or any of our techs in so there is no questioning of their solutions when there is high visibility and a gap.

      I just do it rather than try and change the direction when it has gotten so far down the rails … and Epic knows it.

      I hear ya about some of these Epic kids.

      I wonder if their mamas know they are “playing” adult.  ðŸ˜‰

      The turn over at Epic is astonishing!

      Epic doesn’t solve everything.

      It is not the end all, be all.

      Ha ha  … just had to say that to a forum where people would understand.

    • #80545
      Brandon Grudt
      Participant

      Scott Rush wrote:


      Epic doesn’t solve everything.

      It is not the end all, be all.

      Ha ha

    • #80546
      Kevin Kinnell
      Participant

      😈

    • #80547
      Mike Strout
      Participant

      I am dealing with a similar issue with Epic message flow, where I need to kill a message based on the contents of the previous message. I thought about throwing the message into a file and just comparing it to the subsequent message, but this would cause about 24,000 file reads and about 16,000 file writes to this file daily. It seems it would be way more efficient to just throw this file in memory.

      I don’t care if I lose what is in memory on a process or server shutdown. The script is just for optimizing the ADT feed. Worst case is a few messages would go through that didn’t need to.

      Does someone have a code snippet that would demonstrate how to write and read global variables? There isn’t much in the Cloverleaf docs.

    • #80548
      Kevin Kinnell
      Participant

      Mike,

      Set up your globals when the process starts and access them during the run phase.  I don’t have any code left anymore, but I used to do this in 5.3 with a small list.  It was essentially a very short list of provider ids I needed to screen out of a thread, but I couldn’t justify loading it every time the proc was run, small or not.

      How big a chunk of memory are you talking about?  If you are screening ADT based on duplication, Epic can be set to kill duplicates that are sent in a short time span.

    • #80549
      Steve Pringle
      Participant

      Mike – (with apologies to all if I’m hijacking this thread) –

      I’m curious as to why you need to go to such lengths to optimize the ADT feed.  We just finished implementing Epic Ambulatory and we’re starting to implement Epic Enterprise.  We didn’t run into any ADT issues with Epic Ambulatory.

      On another note, and perhaps we’re the exception, but our Epic interface counterparts have been top notch technically.

      thanks,

      Steve

    • #80550
      Terry Kellum
      Participant

      Slightly different situation, but I have an issue where “John Doe” registrations suddenly become the real person at a point after initial registration.  The downstream system that I support has safety built into the process where if 2 or more demographic elements change, it drops the transaction and doesn’t apply the changes.  This is a good thing, with the exception of the “John/Jane Doe” situation.

      I’ve solved this use case by logging the John or Jane into an SQLite database table.  Every time John or Jane hits, it’s checked against that table.  Every trans is checked against the patient account number.  If the patient account number hits, the process feeds multiple A08s, each changing a single demographic element, until the full “correct” record has been transmitted, with removal of the John Doe record from the table.

      The nice thing about Cloverleaf is that you control both the horizontal and the vertical.  That then leaves you with the pure dilemma to decide if you SHOULD do “a thing”.

Viewing 11 reply threads
  • The forum ‘Cloverleaf’ is closed to new topics and replies.

Forum Statistics

Registered Users
5,117
Forums
28
Topics
9,292
Replies
34,435
Topic Tags
286
Empty Topic Tags
10