How to overcome OBX-5 size limit?

Homepage Clovertech Forums Read Only Archives Cloverleaf Cloverleaf How to overcome OBX-5 size limit?

  • Creator
    Topic
  • #48796
    Rainer Hurle
    Participant

    From a medical application we send encapsulated PDF reports (Base64 encoded) via HL7 in OBX-5 field, as required by the IHE Cardiology Technical Framework. Those Base64 strings exceed the 64K limit of the OBX-5 field (IHE says: “An actor… must support encapsulated data with a length beyond the nominal 65536 byte limit of the OBX-5”). So, currently I’m having the problem that CloverLeaf truncates strings that are longer than 64K. In the HL7 Configurator I can set the length of OBX-5 manually to a maximum length of 100000 bytes, which does not really help, because this is still to small.

    Is there any way to have CloverLeaf generate OBX-5 fields of unlimited length?

    Rainer Hurle

Viewing 29 reply threads
  • Author
    Replies
    • #59727
      Jim Kosloskey
      Participant

      Rainer,

      You can change the field length in the OUTBOUND HL/7 variant definition (I expect you have a variant defined).

      I cannot recall if a value of zero or a value of -1 makes the field indeterminant in length, but one of those values works. I had to do this once before.

      Jim Kosloskey

      email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.

    • #59728
      Rainer Hurle
      Participant

      Jim,

      I tried as you proposed. I created a variant and used the “HL7 Configurator” to modify field 00537 and segment OBX-5. In the “Field Length” edit control, I cannot enter a negative value. So, after setting field length to “0” and replacing the field in the OBX message, I resent the message: OBX-5 in the HL7 message is empty!

      Am I doing something wrong? I use HL7 2.3.1 and Cloverleaf 5.2, if that matters.

      Rainer

    • #59729
      Anonymous
      Participant

      Rainer

      OBX:5 has maximau 65536

      Please see the HL2.3 spec here. Perhaps HL2.4 may have higer value.

      Thanks

      Reggie

      B.1.55 OBX – Observation/Result

      Seq# Item# Name OPT DT Len (Max) Reps Sender Variable Receiver Variable

      1 00559 Set ID – OBX SI (10)

      2 00676 Value Type C ID (2)

      3 00560 Observation Identifier R CE (590)

      4 00769 Observation Sub-Id C ST (20)

      5 00561 Observation Results C ST (65536) ( )

      6 00562 Units ST (60)

      7 00563 Reference Range ST (10)

      8 00564 Abnormal Flags ST (5) ( )

      9 00639 Probability NM (5)

      10 00565 Nature of Abnormal Test ID (2) ( )

      11 00566 Observ. Result Status R ID (1)

      12 00567 Date Last Normal Value TS (26)

      13 00581 User Defined Access Checks ST (20)

      14 00582 Date/Time of Observation TS (26)

      15 00583 Producer

    • #59730
      Jim Kosloskey
      Participant

      Rainier,

      Try leaving the lenth empty.

      I am on vacation and I can try this when I return next week – but I recall you can set the value to infinite (unless this has changed in a later release).

      Jim Kosloskey

      email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.

    • #59731
      Rainer Hurle
      Participant

      Jim,

      I’d appreciate your advice on how to set this value to “infinite”. I tried several methods but didn’t succeed (leaving the field blank causes Cloverleaf to use a default of “0”). Thank you.

      Rainer Hurle

    • #59732
      Traci Zee
      Participant

      Ranier,

      I use the HL7 configurator to change the OBX-5 field to something other than a default and save it.  This creates an entry in the ‘fields’ file for that variant.

      Then, I use an editor on the fields file to have a length more than 100000.  ‘Infinite’ is a relative term and I expect you don’t really want say a 100 MB pdf to go through the engine.  I’d be worried that something that large would cause bad things to happen.  I just give it a extraordinarily large value for the pdfs that I expect to get in my lab results.

      You’ll need to do this with both the inbound and outbound variants.

      Traci Zee

      Emdeon Business Services

      678.231.7201

    • #59733
      Rainer Hurle
      Participant

      Traci,

      your solution works for me!

      I manually edited the “fields” file and set the length to ‘-1’ (as Jim proposed). Now, inbound and outbound size seem to not be limited any longer. I tested with a pdf file larger than 100000 characters which is now transmitted correctly.

      Many thanks to you and all who replied.

      Rainer Hurle

    • #59734
      Jim Kosloskey
      Participant

      Rainer,

      Aha!!!

      So there is a bug in the Platform 5 GUI!!

      I recall when I had this working I was on 3.3.1.

      Please report this to Cloverleaf(R) support to be included as a bug. The GUI should allow the specification of -1 as that means ‘no limit’.

      Quovadx- if you are watching- we should not have to use an editor to accomplish what used to be supported by the GUI (prior to Platform 5).

      Jim Kosloskey

      email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.

    • #59735
      Gary Atkinson
      Participant

      So, is this a bug in 5.5?  Changing the field len in the field file to -1 shows as zero in the gui??

    • #59736
      Jim Kosloskey
      Participant

      Gary,

      The GUI (5.6) still does not let you put -1 in the field length for HL/7 variant so I suspect 5.5 won’t either.

      You will need to use a text editor to edit the field in the fields file in the appropriate formats directory. In order to get an entry you can c hange, you might go into the gui and change the OBX-5 filed length to something other than its current value (but not -1). Then go into the fields fiel with the editor and change the length to -1.

      email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.

    • #59737
      Gary Atkinson
      Participant

      Still shows as 0 in GUI when LEN -1 in the fields file.

    • #59738
      Jim Kosloskey
      Participant

      Gary,

      See my reply to your other post on this topic.

      I still think this is a bug in the GUI but it will work.

      Please contact support and ask to report a bug.

      email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.

    • #59739
      Troy Morton
      Participant

      Hi Rainer,

      Another option is to send only a pointer to the PDF file in HL7 through the engine, then on the backend (OB TPS) write a proc that puts the PDF back into the message just before its sent to the desitnation.

      Sending large messages through the engine can be problematic to performance and the amount of memory or swap space used by Cloverleaf especially in a high message volume environment.

      Troy

    • #59740
      Rob Abbott
      Keymaster

      I have submitted this as a defect.

      I tested on several 5.x versions and none currently allow a minus sign to be entered in the field length text box.

      Current workaround is to edit the fields file manually if you really want -1, or enter a very large number in the GUI.

      Rob Abbott
      Cloverleaf Emeritus

    • #59741
      Kevin Crist
      Participant

      I have a question about this, we are in the process sending a pdf’s through the engine, this is the first time we have done this and there are a few more systems to do after this. One vendor says the size of their pdf can be 1meg…to me this seems a little big but i am new on this venture, will this cause some system issues or will cloverleaf even take it? Just curious about how to go about these adventures. We are running CL5.4.1 on  a HP 9000 rp4440 Server.

      2 – Dual Core Pair Processors (PA8900)

      12.288Gb RAM

      6

    • #59742
      Troy Morton
      Participant

      Hi Kevin,

      In my opinion, the most significant factor in Cloverleaf performance when you’re workign with large messages is the Recovery Database.

    • #59743
      Sam Craig
      Participant

      Rob Abbott wrote:

      I have submitted this as a defect.

      I tested on several 5.x versions and none currently allow a minus sign to be entered in the field length text box.

      Current workaround is to edit the fields file manually if you really want -1, or enter a very large number in the GUI.

      One other thing Rob, the GUI will only allow a number up to 100,000.

    • #59744
      Jim Kosloskey
      Participant

      Rob,

      Thanks for submitting this as a defect.

      email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.

    • #59745
      Kevin Crist
      Participant

      Does anyone have any examples or some details about how to setup a pdf with a pointer. i am wondering if this will be the best way to go but have not a clue how to get there.

      Thanks.

    • #59746
      Rainer Hurle
      Participant

      Hi Troy,

      thanks for your suggestion, right now the trick with the manual adjustment of the length setting works fine for us.

      Troy Morton wrote:

      Hi Rainer,

      Another option is to send only a pointer to the PDF file in HL7 through the engine, then on the backend (OB TPS) write a proc that puts the PDF back into the message just before its sent to the desitnation.

      Sending large messages through the engine can be problematic to performance and the amount of memory or swap space used by Cloverleaf especially in a high message volume environment.

      Troy

    • #59747
      Gary Atkinson
      Participant

      Kevin I think it depends on the receiving system.  For example, Cerner requires I specific set-up in OBX:5.

    • #59748
      Richard Hart
      Participant

      Hi Kevin.

      We are using the Cloverleaf web services to pass documents (using MTOM),  we strip out the document when we receive the message and grab it again when we send the message out.

      In HL7, the document could be stripped out of the HL7 field and the field replaced with a unique ID by the receiving application.  If this is completed in a TCL module, then the message is a string and there are no field size issues.

      When the message is sent out, the last action (pre-write?) could grab it and put it back again.

      You may need to add some housekeeping for the file clean-up.

      read_file and write_file are useful for this and the uuid module can provide unique ids.

    • #59749
      Russ Ross
      Participant

      Kevin Crist wrote:

      Code:

      Does anyone have any examples or some details about how to setup a pdf with a pointer. i am wondering if this will be the best way to go but have not a clue how to get there.

      The time I did this sort of thing, I was fortunate enough to be included in the design early on but after everyone had gotten hostile because they couldn’t figure out how to effectively send across massive amounts of giant documents.

      I was able to calm down the troubled project team by convincing them to use the pointer method.

      I still remember how crazy and upset they had become with frustration prior to my participation.

      That first brainstorming session was quite intertaining being the only sane and calm person in the room, while all the others had snapped with frustration and verbally imploding as a group against each other.

      I even think some restraining orders were issued.

      I was able to get both parties to agree on using a document pointer and not have the source system application send the document in the message from the start.

      So happily the source application was made to send a pointer to the document, which was either a URL or a fully qualified filename to a shared drive including the path.  

      I’m thinking it was a URL but this was too many years back for me to remember specifically.

      I was aware of the -1 for unlimited field size back then but we all agreed that would take more than its fair share of the cloverleaf integration engine, plus we knew a document could have HL7 delimiter characters in it and I didn’t know about base64 encoding way back then as a way around this problem.

      The downstream receiving application was modified to use the document pointer to retreive/access the document as needed.

      Unfortuately, I’m not always so fortuante to be involved early on in the integration design and have to deal with legacy applications.

      Consequently, I do have a DMS to TRAN integration that does send the document in the message.

      We discovered that some people are nuts and create documents so ridicuously large that infinite size is almost too small for them.

      So I gree that you still want to limit the size to whatever the largest limit is agreed on because someone will find a way to exceed it.

      My approach was to check the documents size and set a flag in the user meta data to note the doucment had been truncated because it was deemed too large.

      Then the desired appropriate actions could be taken when encoutering the user metadat flag being turned on.

      In my case wording was added to the end of the document stating it was too large and had been truncated and email/page alerts would be sent out to support personnel to resolve.

      Here is a URL I posted illustrating exactly how I set the user metat data in the xlate and how I retrieved it downstream in the outobund protocol UPOC:

      <a href="http://clovertech.infor.com/viewtopic.php?t=1367&&#8221; class=”bbcode_url”>http://clovertech.infor.com/viewtopic.php?t=1367&amp;

      Russ Ross
      RussRoss318@gmail.com

    • #59750
      Charlie Bursell
      Participant

      Kevin Crist wrote:

      Does anyone have any examples or some details about how to setup a pdf with a pointer. i am wondering if this will be the best way to go but have not a clue how to get there.

      Thanks.

      Take a look at MDM message type.  The TX.16 field is defined like:

      {ITEM 00927} {NAME {Unique Document File Name}} {LEN 30} {TYPE ST}

    • #59751
      Jim Kosloskey
      Participant

      Kevin,

      Since you are concerned about using the Reference Pointer in the OBX segment, here is some information:

      The use of a Reference Pointer in the OBX requires that OBX-2 field be valued with ‘RP’ (RP is the Reference Pointer HL/7 Data Type).  The OBX-2 field indicates the Data Type of the OBX-5 field.

      Now the actuual Pointer will be in the OBX-5 field.

      The RP Data Type has a specific structure. That is covered in detail in Chapter 2 of the HL/7 standard (I think it is Chapter 2 of any 2.x version).

      I am pretty sure the RP Data Type is not specified in version 2.1. I know it exists in version 2.3 and beyond.

      Essentially this is the construct of the RP Data Type:

      Component-1 : Pointer (ST Data Type Component). This is where the actual pointer goes.

      Component-2: Application ID (HD Data Type Component)

         This consists of 3 sub-components (typically separated by the &):

                 Namespace ID (IS Data Type)

                 Universal ID (ST Data Type)

                 Universal ID Type (ID Data Type)

         This component is used to identify the Application that houses the object pointed to by the pointer.

      Component-3: Type of Data (ID Data Type). There is a Table in the standard that indicates possible/recommended values but this essentially states the general category of the data that will be foind in the object pointed to by Component-1.

      Component-4: Subtype (ID Data Type). There is another Table in the standard that contains possible/recommended values. The standard also describes how to specify local entries to both the Type of Data and subtype Tables for exceptoins to what is in the respective Tables. This is a component which further clarifies Componenet-3. For example if the code in Component-3 indicated Image Data Component-4 might indicate RTF (Rich Text Format).

      If you decide to use a Reference Pointer in the OBX – might as well do it corectly and follow the standard.

      You have 2 options as I see it within Cloverleaf(R) Xlate:

      1. Change the Data  Type for field ‘Observation Value’ in the inbound and outbound variant from ‘ST’ to ‘RP’ and then you will see all of the components that make up the RP Data Type (but not the sub-components because the Xlate does not present those in the message tree).

      2. Leave the ‘Observation Value’ Data Type alone (ST) and use the component and subcomponent notation by typing it in yourself with each reference.

      There may be other resolutions…

      email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.

    • #59752
      Kevin Crist
      Participant

      Has anyone ever worked with BDI software. We are sending pdfs to our Mckesson HPF system and they have installed BDI on that server and apparently it reads the pdf’s and puts them where they need to be. Has anyone worked with this?

    • #59753
      Peter Heggie
      Participant

      We are also interested in converting a BDI file to HL7 in order to get a transcribed report out of the file. Does anyone have experience converting a BDI file?

      Peter Heggie

    • #59754
      Matthew Rasmussen
      Participant

      Hello, (GUI 5.6.5P) I have tried the -1 approach as well we the 100000 approach, but my OBX-5 is still getting capped @ 64K.

    • #59755
      Jim Kosloskey
      Participant

      -1 should work on 5.6 using an editor not the GUI HL/7 Configrator- just make sure you don’t touch it in the GUI configurator

      email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.

    • #59756
      Kumar Ananth
      Member

      We have a tcl proc that checks the message and throws it out if the size is larger than 64K. I had to remove that as I had to pass HL7 BASE64 PDF from a vendor to Cerner. I’ve created a new variant and bumped the OBX-5 to handle the message size in CL. Looks like Cerner is not able to digest all of OBX-5 content which is over 64K and vendor can’t break it into repeating OBX-5. So, I need to send the OBX-5 content as repeating OBX-5 with each OBX-5 less than 64K. Any suggestions on how/where (xlate or tcl) to accomplish this? Anyone willing to share your script or provide a starter script?

      TIA

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

Forum Statistics

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