POC Lab Setup questions

282 views
Skip to first unread message

Kevin Toppenberg

unread,
Feb 27, 2011, 5:29:14 PM2/27/11
to Hardhats
I have been trying to setup up our lab interface by lab POC instructions.

I have followed these instructions in the Installation and Users guide, found here:

First the data, then below I will outline my questions/problems.
(I find that by explicitly laying out the information, sometimes my questions answer themselves).

***************************************************

I have setup the following files, in order:
1. LA7 MESSAGE PARAMETER file, using these values:

Record# 1, in FILE: 62.48
   .01-CONFIGURATION : LA7POC1
     1-PROTOCOL : HEALTH LEVEL SEVEN
     2-STATUS : ACTIVE
     3-GRACE PERIOD FOR MESSAGES : 7
     4-LOG ERRORS : ON
     5-PROCESS IN : D QUE^LA7VIN
    11-INTERFACE TYPE : POC
    20-ALERT CONDITION :
       Multiple Entry #1
       .01-ALERT CONDITION : ERROR ON MESSAGE


2. LOAD/WORK LIST, giving these entries: 

Record# 1, in FILE: 68.2
   .01-NAME : LAUGHLIN LIST
   .02-LOAD TRANSFORM : UNIVERSAL
   .03-TYPE : POINT OF CARE
   .04-CUPS PER TRAY : 0
   .05-FULL TRAY'S ONLY : NO
   .06-EXPAND PANELS ON PRINT : NO
   .08-VERIFY BY : ACCESSION
   .09-SUPPRESS SEQUENCE # : NO
    .1-INCLUDE UNCOLLECTED ACCESSIONS : NO
   .11-SHORT TEST LIST : YES
   .14-WKLD METHOD : GENERIC
   .15-WKLD CODE METHOD NAME : GENERIC
   .16-WKLD CODE SUFFIX : .0000
     1-MAJOR ACCESSION AREA : LMH ACCESSION AREA
    11-DATE OF SETUP : JAN 26,2011
    50-PROFILE :
       Multiple Entry #1
       .01-PROFILE : ROUTINE
         1-TEST :
           Multiple Entry #1
           .01-TEST : 1,25-DIHYDROXYVIT D3
             1-SPECIMEN : SERUM
             2-BUILD NAME ONLY : NO
             3-POC WKLD METHOD : GENERIC
             4-POC COLLECTION SAMPLE : SERUM

           Multiple Entry #2
           .01-TEST : GLUCOSE,RANDOM
             1-SPECIMEN : SERUM
             2-BUILD NAME ONLY : NO
             3-POC WKLD METHOD : GENERIC
             4-POC COLLECTION SAMPLE : SERUM

           Multiple Entry #3
           .01-TEST : UREA NITROGEN
             1-SPECIMEN : SERUM
             2-BUILD NAME ONLY : NO
             3-POC WKLD METHOD : GENERIC
             4-POC COLLECTION SAMPLE : SERUM

           Multiple Entry #4
           .01-TEST : CREATININE
             1-SPECIMEN : SERUM
             2-BUILD NAME ONLY : NO
             3-POC WKLD METHOD : GENERIC
             4-POC COLLECTION SAMPLE : SERUM

           Multiple Entry #5
           .01-TEST : BUN/CREATININE RATIO
             1-SPECIMEN : SERUM
             2-BUILD NAME ONLY : NO
             3-POC WKLD METHOD : GENERIC
             4-POC COLLECTION SAMPLE : SERUM

           Multiple Entry #6
           .01-TEST : SODIUM
             1-SPECIMEN : SERUM
             2-BUILD NAME ONLY : NO
             3-POC WKLD METHOD : GENERIC
             4-POC COLLECTION SAMPLE : SERUM

           Multiple Entry #7
           .01-TEST : CHLORIDE
             1-SPECIMEN : SERUM
             2-BUILD NAME ONLY : NO
             3-POC WKLD METHOD : GENERIC
             4-POC COLLECTION SAMPLE : SERUM

           Multiple Entry #8
           .01-TEST : POTASSIUM
             1-SPECIMEN : SERUM
             2-BUILD NAME ONLY : NO
             3-POC WKLD METHOD : GENERIC
             4-POC COLLECTION SAMPLE : SERUM

           Multiple Entry #9
           .01-TEST : CO2
             1-SPECIMEN : SERUM
             2-BUILD NAME ONLY : NO
             3-POC WKLD METHOD : GENERIC
             4-POC COLLECTION SAMPLE : SERUM

           Multiple Entry #10
           .01-TEST : ANION GAP
             1-SPECIMEN : SERUM
             2-BUILD NAME ONLY : NO
             3-POC WKLD METHOD : GENERIC
             4-POC COLLECTION SAMPLE : SERUM

           Multiple Entry #11
           .01-TEST : CALCIUM
             1-SPECIMEN : SERUM
             2-BUILD NAME ONLY : NO
             3-POC WKLD METHOD : GENERIC
             4-POC COLLECTION SAMPLE : SERUM

           Multiple Entry #12
           .01-TEST : OSMOLALITY,CALCULATED
             1-SPECIMEN : SERUM
             2-BUILD NAME ONLY : NO
             3-POC WKLD METHOD : GENERIC
             4-POC COLLECTION SAMPLE : SERUM

           Multiple Entry #13
           .01-TEST : GLOMERULAR FILTRATION RATE
             1-SPECIMEN : SERUM
             2-BUILD NAME ONLY : NO
             3-POC WKLD METHOD : GENERIC
             4-POC COLLECTION SAMPLE : SERUM

         2-ACCESSION AREA : LMH ACCESSION AREA
       2.1-UID VERIFICATION : ANY ACCESSION AREA
       2.2-STORE DUPLICATE COMMENTS : NO
       2.3-DEFAULT REFERENCE LABORATORY : LAUGHLIN MEM HOSPITAL

3. I set up the AUTO INSTRUMENT file, giving this:

Record# 198, in FILE: 62.4
  .001-NUMBER : 198
   .01-NAME : LA7POC1
     3-LOAD/WORK LIST : LAUGHLIN LIST
     5-ENTRY for LAGEN ROUTINE : Accession cross-reference
     6-CROSS LINKED BY : ID
     8-MESSAGE CONFIGURATION : LA7POC1
    10-METHOD : LMH LAB
    11-DEFAULT ACCESSION AREA : LMH ACCESSION AREA
    12-OVERLAY DATA : NO
    18-STORE REMARKS : YES
    30-CHEM TESTS :
       Multiple Entry #2
      .001-NUMBER : 2
       .01-TEST : CREATININE
         6-UI TEST CODE : 84457.0000
         8-SPECIMEN : SERUM
        11-ROUTINE STORAGE : TV(4,1)
        14-ACCEPT RESULTS FOR THIS TEST : FINAL ONLY
        18-STORE REMARKS : FINAL ONLY
        19-REMARK PREFIX : For test Creatinine:
        21-STORE REFERENCE RANGE : YES
        22-NOTIFY ABNORMAL FLAGS : NO

       Multiple Entry #3
      .001-NUMBER : 3
       .01-TEST : UREA NITROGEN
         6-UI TEST CODE : BUN
         8-SPECIMEN : SERUM
        11-ROUTINE STORAGE : TV(3,1)
        14-ACCEPT RESULTS FOR THIS TEST : FINAL ONLY
        18-STORE REMARKS : YES
        19-REMARK PREFIX : For BUN:
        21-STORE REFERENCE RANGE : YES
        22-NOTIFY ABNORMAL FLAGS : NO

       Multiple Entry #4
      .001-NUMBER : 4
       .01-TEST : GLUCOSE,RANDOM
         6-UI TEST CODE : GLU
         8-SPECIMEN : SERUM
        11-ROUTINE STORAGE : TV(2,1)
        14-ACCEPT RESULTS FOR THIS TEST : FINAL ONLY
        18-STORE REMARKS : FINAL ONLY
        19-REMARK PREFIX : For Glucose:
        21-STORE REFERENCE RANGE : YES
        22-NOTIFY ABNORMAL FLAGS : NO

       Multiple Entry #5
      .001-NUMBER : 5
       .01-TEST : SODIUM
         6-UI TEST CODE : NA
         8-SPECIMEN : SERUM
        11-ROUTINE STORAGE : TV(5,1)
        14-ACCEPT RESULTS FOR THIS TEST : FINAL ONLY
        18-STORE REMARKS : FINAL ONLY
        19-REMARK PREFIX : For Na:
        21-STORE REFERENCE RANGE : YES
        22-NOTIFY ABNORMAL FLAGS : NO

       Multiple Entry #6
      .001-NUMBER : 6
       .01-TEST : POTASSIUM
         6-UI TEST CODE : K
         8-SPECIMEN : SERUM
        11-ROUTINE STORAGE : TV(6,1)
        14-ACCEPT RESULTS FOR THIS TEST : FINAL ONLY
        18-STORE REMARKS : FINAL ONLY
        19-REMARK PREFIX : For K:
        21-STORE REFERENCE RANGE : YES
        22-NOTIFY ABNORMAL FLAGS : NO

       Multiple Entry #7
      .001-NUMBER : 7
       .01-TEST : CHLORIDE
         6-UI TEST CODE : CL
         8-SPECIMEN : SERUM
        11-ROUTINE STORAGE : TV(7,1)
        14-ACCEPT RESULTS FOR THIS TEST : FINAL ONLY
        18-STORE REMARKS : FINAL ONLY
        19-REMARK PREFIX : For Cl:
        21-STORE REFERENCE RANGE : YES
        22-NOTIFY ABNORMAL FLAGS : NO

       Multiple Entry #8
      .001-NUMBER : 8
       .01-TEST : CO2
         6-UI TEST CODE : CO2
         8-SPECIMEN : SERUM
        11-ROUTINE STORAGE : TV(8,1)
        14-ACCEPT RESULTS FOR THIS TEST : FINAL ONLY
        18-STORE REMARKS : FINAL ONLY
        19-REMARK PREFIX : For CO2:
        21-STORE REFERENCE RANGE : YES
        22-NOTIFY ABNORMAL FLAGS : NO

       Multiple Entry #9
      .001-NUMBER : 9
       .01-TEST : ANION GAP
         6-UI TEST CODE : GAP
         8-SPECIMEN : SERUM
        11-ROUTINE STORAGE : TV(790,1)
        14-ACCEPT RESULTS FOR THIS TEST : FINAL ONLY
        18-STORE REMARKS : FINAL ONLY
        19-REMARK PREFIX : For GAP:
        21-STORE REFERENCE RANGE : YES
        22-NOTIFY ABNORMAL FLAGS : NO

       Multiple Entry #10
      .001-NUMBER : 10
       .01-TEST : CALCIUM
         6-UI TEST CODE : CA
         8-SPECIMEN : SERUM
        11-ROUTINE STORAGE : TV(9,1)
        14-ACCEPT RESULTS FOR THIS TEST : FINAL ONLY
        18-STORE REMARKS : YES
        19-REMARK PREFIX : For Ca:
        21-STORE REFERENCE RANGE : YES
        22-NOTIFY ABNORMAL FLAGS : NO

       Multiple Entry #12
      .001-NUMBER : 12
       .01-TEST : OSMOLALITY,CALCULATED
         6-UI TEST CODE : OSMOC
         8-SPECIMEN : SERUM
        11-ROUTINE STORAGE : TV(46,1)
        14-ACCEPT RESULTS FOR THIS TEST : FINAL ONLY
        18-STORE REMARKS : FINAL ONLY
        19-REMARK PREFIX : For OsmoCalc:
        21-STORE REFERENCE RANGE : YES
        22-NOTIFY ABNORMAL FLAGS : NO

       Multiple Entry #13
      .001-NUMBER : 13
       .01-TEST : BUN/CREATININE RATIO
         6-UI TEST CODE : BCRAT
         8-SPECIMEN : SERUM
        11-ROUTINE STORAGE : TV(TMG,1)
        14-ACCEPT RESULTS FOR THIS TEST : FINAL ONLY
        18-STORE REMARKS : FINAL ONLY
        19-REMARK PREFIX : For BUN/Cr:
        21-STORE REFERENCE RANGE : YES
        22-NOTIFY ABNORMAL FLAGS : NO

       Multiple Entry #14
      .001-NUMBER : 14
       .01-TEST : GLOMERULAR FILTRATION RATE
         6-UI TEST CODE : GFR
         8-SPECIMEN : SERUM
        11-ROUTINE STORAGE : TV(TMG,2)
        14-ACCEPT RESULTS FOR THIS TEST : FINAL ONLY
        18-STORE REMARKS : FINAL ONLY
        19-REMARK PREFIX : For GFR:
        21-STORE REFERENCE RANGE : YES
        22-NOTIFY ABNORMAL FLAGS : NO

       Multiple Entry #15
      .001-NUMBER : 15
       .01-TEST : CALCIUM,IONIZED
         6-UI TEST CODE : IONIZED CA
         8-SPECIMEN : SERUM
        11-ROUTINE STORAGE : TV(TMG,3)
        14-ACCEPT RESULTS FOR THIS TEST : FINAL ONLY
        18-STORE REMARKS : FINAL ONLY
        19-REMARK PREFIX : For Ionized CA:
        21-STORE REFERENCE RANGE : YES
        22-NOTIFY ABNORMAL FLAGS : NO

       Multiple Entry #16
      .001-NUMBER : 16
       .01-TEST : 25-OH VITAMIN D,TOTAL
         6-UI TEST CODE : VIT D HYD3
         8-SPECIMEN : SERUM
        11-ROUTINE STORAGE : TV(113,1)
        14-ACCEPT RESULTS FOR THIS TEST : FINAL ONLY
        18-STORE REMARKS : FINAL ONLY
        19-REMARK PREFIX : For Vit D:
        21-STORE REFERENCE RANGE : YES
        22-NOTIFY ABNORMAL FLAGS : NO

       Multiple Entry #17
      .001-NUMBER : 17
       .01-TEST : 25-OH VITAMIN D2
         6-UI TEST CODE : VIT D HYD1
         8-SPECIMEN : SERUM
        11-ROUTINE STORAGE : TV(TMG,4)
        14-ACCEPT RESULTS FOR THIS TEST : FINAL ONLY
        18-STORE REMARKS : FINAL ONLY
        19-REMARK PREFIX : For Vit D2:
        21-STORE REFERENCE RANGE : YES
        22-NOTIFY ABNORMAL FLAGS : NO

       Multiple Entry #18
      .001-NUMBER : 18
       .01-TEST : 25-OH VITAMIN D3
         6-UI TEST CODE : VIT D HYD2
         8-SPECIMEN : SERUM
        11-ROUTINE STORAGE : TV(,)  <------- P.S, why this???
        14-ACCEPT RESULTS FOR THIS TEST : FINAL ONLY
        18-STORE REMARKS : FINAL ONLY
        19-REMARK PREFIX : For Vit D3:
        21-STORE REFERENCE RANGE : YES
        22-NOTIFY ABNORMAL FLAGS : NO

       Multiple Entry #19
      .001-NUMBER : 19
       .01-TEST : PO4
         6-UI TEST CODE : PHOS
         8-SPECIMEN : SERUM
        11-ROUTINE STORAGE : TV(10,1)
        14-ACCEPT RESULTS FOR THIS TEST : FINAL ONLY
        18-STORE REMARKS : FINAL ONLY
        19-REMARK PREFIX : For Phos:
        21-STORE REFERENCE RANGE : YES
        22-NOTIFY ABNORMAL FLAGS : NO

4. I then run the Print POC Test Code Mapping report:

Point of Care Test Code Mapping                              Page: 1
 for interface: LA7POC1                                   Printed: Feb 27, 2011
=============================================================

VistA ADT feed enabled: NO

POC Order Test Codes using Load/Work List: LAUGHLIN LIST
#  Lab Test                   Order NLT Code      Specimen(IEN)       HL7 Spec
                              Order NLT Name      Collection Sample   WKLD Code
--------------------------------------------------------------------------------

 1 1,25-DIHYDROXYVIT D3       <Missing>           SERUM(72)           SER
                                                  SERUM               .0000
   Warning - test does not have NATIONAL VA LAB CODE assigned.

 2 GLUCOSE,RANDOM             <Missing>           SERUM(72)           SER
                                                  SERUM               .0000
   Warning - test does not have NATIONAL VA LAB CODE assigned.

 3 UREA NITROGEN              <Missing>           SERUM(72)           SER
                                                  SERUM               .0000
   Warning - test does not have NATIONAL VA LAB CODE assigned.

 4 CREATININE                 <Missing>           SERUM(72)           SER
                                                  SERUM               .0000
   Warning - test does not have NATIONAL VA LAB CODE assigned.

 5 BUN/CREATININE RATIO       <Missing>           SERUM(72)           SER
                                                  SERUM               .0000
   Warning - test does not have NATIONAL VA LAB CODE assigned.

 6 SODIUM                     <Missing>           SERUM(72)           SER
                                                  SERUM               .0000
   Warning - test does not have NATIONAL VA LAB CODE assigned.

 7 CHLORIDE                   <Missing>           SERUM(72)           SER
                                                  SERUM               .0000
   Warning - test does not have NATIONAL VA LAB CODE assigned.

 8 POTASSIUM                  <Missing>           SERUM(72)           SER
                                                  SERUM               .0000
   Warning - test does not have NATIONAL VA LAB CODE assigned.

 9 CO2                        <Missing>           SERUM(72)           SER
                                                  SERUM               .0000
   Warning - test does not have NATIONAL VA LAB CODE assigned.

10 ANION GAP                  <Missing>           SERUM(72)           SER
                                                  SERUM               .0000
   Warning - test does not have NATIONAL VA LAB CODE assigned.

11 CALCIUM                    <Missing>           SERUM(72)           SER
                                                  SERUM               .0000
   Warning - test does not have NATIONAL VA LAB CODE assigned.

12 OSMOLALITY,CALCULATED      <Missing>           SERUM(72)           SER
                                                  SERUM               .0000
   Warning - test does not have NATIONAL VA LAB CODE assigned.

13 GLOMERULAR FILTRATION RAT  <Missing>           SERUM(72)           SER
                                                  SERUM               .0000
   Warning - test does not have NATIONAL VA LAB CODE assigned.

POC Result Test Codes using Auto Instrument: LA7POC1
#  Lab Test                   Result NLT Code          Specimen(IEN)
   Dataname(IEN)              Result NLT Name          HL7 Spec
--------------------------------------------------------------------------------

 2 CREATININE                 84457.0000               SERUM(72)
   CREATININE(4)              Creatinine Random        SER

 3 UREA NITROGEN              BUN                      SERUM(72)
   UREA NITROGEN(3)                                    SER
   Warning - test does not have RESULT NLT CODE assigned.

 4 GLUCOSE,RANDOM             GLU                      SERUM(72)
   GLUCOSE(2)                                          SER
   Warning - test does not have RESULT NLT CODE assigned.

 5 SODIUM                     NA                       SERUM(72)
   SODIUM(5)                                           SER
   Warning - test does not have RESULT NLT CODE assigned.

 6 POTASSIUM                  K                        SERUM(72)
   POTASSIUM(6)                                        SER
   Warning - test does not have RESULT NLT CODE assigned.

 7 CHLORIDE                   CL                       SERUM(72)
   CHLORIDE(7)                                         SER
   Warning - test does not have RESULT NLT CODE assigned.

 8 CO2                        CO2                      SERUM(72)
   CO2(8)                                              SER
   Warning - test does not have RESULT NLT CODE assigned.

 9 ANION GAP                  GAP                      SERUM(72)
   ANION GAP(790)                                      SER
   Warning - test does not have RESULT NLT CODE assigned.

10 CALCIUM                    CA                       SERUM(72)
   CALCIUM(9)                                          SER
   Warning - test does not have RESULT NLT CODE assigned.

12 OSMOLALITY,CALCULATED      OSMOC                    SERUM(72)
   OSMOLALITY(46)                                      SER
   Warning - test does not have RESULT NLT CODE assigned.

13 BUN/CREATININE RATIO       BCRAT                    SERUM(72)
   BUN/CREATININE RATIO(TMG)                           SER
   Warning - test does not have RESULT NLT CODE assigned.

14 GLOMERULAR FILTRATION RAT  GFR                      SERUM(72)
   GLOMERULAR FILTRATIO(TMG)                           SER
   Warning - test does not have RESULT NLT CODE assigned.

15 CALCIUM,IONIZED            IONIZED CA               SERUM(72)
   CALCIUM,IONIZED(TMG)                                SER
   Warning - test does not have RESULT NLT CODE assigned.

16 25-OH VITAMIN D,TOTAL      VIT D HYD3               SERUM(72)
   25 OH VITAMIN D(113)                                SER
   Warning - test does not have RESULT NLT CODE assigned.

17 25-OH VITAMIN D2           VIT D HYD1               SERUM(72)
   25 OH VITAMIN D2(TMG)                               SER
   Warning - test does not have RESULT NLT CODE assigned.

18 25-OH VITAMIN D3           VIT D HYD2               SERUM(72)
   25 OH VITAMIN D3()                                  SER
   Warning - test does not have RESULT NLT CODE assigned.

19 PO4                        PHOS                     SERUM(72)
   PO4(10)                                             SER
   Warning - test does not have RESULT NLT CODE assigned.

***************************************************

So it appears, on the report above, that almost every test has something missing.  Looking in the code for the report I find that it cycles through the LOAD/WORK LIST file, in the specified PROFILE entry, in the TEST multiple.

For each TEST (a pointer to file #60, LABORATORY TEST), then looks in that record for the NATIONAL VAL LAB CODE field (#64), which itself is a pointer to file #64 (WKLD CODE).  It also looks for the field RESULT NLT CODE (#64.1), also a pointer to file #64 (WKLD CODE).

In short, fields 64 & 64.1 are missing values in LABORATORY TEST file.  I don't understand why my database doesn't already have this mapping, but oh well.

So I went through each of the tests above, and mapped the fields.  There are some custom lab entries I have made (BUN/CREATININE RATION, GLOMERULAR FILTRATION RATE), and there are no possible entries in the WKLD CODE (#64) file, and I am not sure if it is safe to add to that or now.  Both of these are calculated values, and I am not sure how they are supposed to be handled.

My report now looks like this:

***************************************************


Point of Care Test Code Mapping                              Page: 1
 for interface: LA7POC1                                   Printed: Feb 27, 2011
================================================================================

VistA ADT feed enabled: NO

POC Order Test Codes using Load/Work List: LAUGHLIN LIST
#  Lab Test                   Order NLT Code      Specimen(IEN)       HL7 Spec
                              Order NLT Name      Collection Sample   WKLD Code
--------------------------------------------------------------------------------

 1 1,25-DIHYDROXYVIT D3       83653.0000          SERUM(72)           SER
                              Cholecalciferol     SERUM               .0000

 2 GLUCOSE,RANDOM             83756.0000          SERUM(72)           SER
                              Glucose             SERUM               .0000

 3 UREA NITROGEN              83940.0000          SERUM(72)           SER
                              BUN                 SERUM               .0000

 4 CREATININE                 82565.0000          SERUM(72)           SER
                              Creatinine          SERUM               .0000

 5 BUN/CREATININE RATIO       <Missing>           SERUM(72)           SER
                                                  SERUM               .0000
   Warning - test does not have NATIONAL VA LAB CODE assigned.

 6 SODIUM                     84295.0000          SERUM(72)           SER
                              Sodium              SERUM               .0000

 7 CHLORIDE                   82435.0000          SERUM(72)           SER
                              Chloride            SERUM               .0000

 8 POTASSIUM                  84140.0000          SERUM(72)           SER
                              Potassium           SERUM               .0000

 9 CO2                        82830.0000          SERUM(72)           SER
                              Carbon Dioxide ContentSERUM             .0000

10 ANION GAP                  81213.0000          SERUM(72)           SER
                              Anion Gap           SERUM               .0000

11 CALCIUM                    82310.0000          SERUM(72)           SER
                              Calcium             SERUM               .0000

12 OSMOLALITY,CALCULATED      83925.0000          SERUM(72)           SER
                              Osmolality          SERUM               .0000

13 GLOMERULAR FILTRATION RAT  <Missing>           SERUM(72)           SER
                                                  SERUM               .0000
   Warning - test does not have NATIONAL VA LAB CODE assigned.

POC Result Test Codes using Auto Instrument: LA7POC1
#  Lab Test                   Result NLT Code          Specimen(IEN)
   Dataname(IEN)              Result NLT Name          HL7 Spec
--------------------------------------------------------------------------------

 2 CREATININE                 84457.0000               SERUM(72)
   CREATININE(4)              Creatinine Random        SER
   Warning - RESULT NLT CODE does not match UI TEST CODE.
 3 UREA NITROGEN              BUN                      SERUM(72)
   UREA NITROGEN(3)                                    SER
   Warning - RESULT NLT CODE does not match UI TEST CODE.
 4 GLUCOSE,RANDOM             GLU                      SERUM(72)
   GLUCOSE(2)                                          SER
   Warning - RESULT NLT CODE does not match UI TEST CODE.
 5 SODIUM                     NA                       SERUM(72)
   SODIUM(5)                                           SER
   Warning - RESULT NLT CODE does not match UI TEST CODE.
 6 POTASSIUM                  K                        SERUM(72)
   POTASSIUM(6)                                        SER
   Warning - RESULT NLT CODE does not match UI TEST CODE.
 7 CHLORIDE                   CL                       SERUM(72)
   CHLORIDE(7)                                         SER
   Warning - RESULT NLT CODE does not match UI TEST CODE.
 8 CO2                        CO2                      SERUM(72)
   CO2(8)                                              SER
   Warning - RESULT NLT CODE does not match UI TEST CODE.
 9 ANION GAP                  GAP                      SERUM(72)
   ANION GAP(790)                                      SER
   Warning - RESULT NLT CODE does not match UI TEST CODE.
10 CALCIUM                    CA                       SERUM(72)
   CALCIUM(9)                                          SER
   Warning - RESULT NLT CODE does not match UI TEST CODE.
12 OSMOLALITY,CALCULATED      OSMOC                    SERUM(72)
   OSMOLALITY(46)                                      SER
   Warning - RESULT NLT CODE does not match UI TEST CODE.
13 BUN/CREATININE RATIO       BCRAT                    SERUM(72)
   BUN/CREATININE RATIO(TMG)                           SER
   Warning - test does not have RESULT NLT CODE assigned.

14 GLOMERULAR FILTRATION RAT  GFR                      SERUM(72)
   GLOMERULAR FILTRATIO(TMG)                           SER
   Warning - test does not have RESULT NLT CODE assigned.

15 CALCIUM,IONIZED            IONIZED CA               SERUM(72)
   CALCIUM,IONIZED(TMG)                                SER
   Warning - RESULT NLT CODE does not match UI TEST CODE.
16 25-OH VITAMIN D,TOTAL      VIT D HYD3               SERUM(72)
   25 OH VITAMIN D(113)                                SER
   Warning - RESULT NLT CODE does not match UI TEST CODE.
17 25-OH VITAMIN D2           VIT D HYD1               SERUM(72)
   25 OH VITAMIN D2(TMG)                               SER
   Warning - RESULT NLT CODE does not match UI TEST CODE.
18 25-OH VITAMIN D3           VIT D HYD2               SERUM(72)
   25 OH VITAMIN D3()                                  SER
   Warning - test does not have RESULT NLT CODE assigned.

19 PO4                        PHOS                     SERUM(72)
   PO4(10)                                             SER
   Warning - RESULT NLT CODE does not match UI TEST CODE.

***************************************************
So, trying to figure out why I get the error: 
"Warning - RESULT NLT CODE does not match UI TEST CODE."

Looking at the code, we have the sources of these two values:

RESULT NLT CODE comes from 62.4 -> 62.41:.01:64.1:1
and
UI TEST CODE comes from 62.4 --> 62.41:6

or, written out long form:

AUTO INSTRUMENT file (62.4)
  CHEM TESTS (piece 3)
    FLD .01 TEST (->file #60 (LABORATORY TEST))
      -> FLD 64.1 (RESULT NLT CODE) (->file #64 (WKLD CODE))
           -> FLD 1 (WKLD CODE) ==> "RESULT NLT CODE"
    FLD 6 UI TEST CODE (free text)
  

I create a report to show the conflicting values:

AUTO INSTRUMENT List                                  FEB 27,2011@16:31   PAGE 1
NUMBER  NAME        TEST     UI TEST CODE                    .01:64.1:1
--------------------------------------------------------------------------------

198     LA7POC1     CREATIN  CRE                             82565.0000
                    UREA NI  BUN                             83940.0000
                    GLUCOSE  GLU                             83756.0000
                    SODIUM   NA                              84295.0000
                    POTASSI  K                               84140.0000
                    CHLORID  CL                              82435.0000
                    CO2      CO2                             82830.0000
                    ANION G  GAP                             81213.0000
                    CALCIUM  CA                              82310.0000
                    OSMOLAL  OSMOC                           83925.0000
                    BUN/CRE  BCRAT
                    GLOMERU  GFR
                    CALCIUM  IONIZED CA                      81045.0000
                    25-OH V  VIT D HYD3                      83997.0000
                    25-OH V  VIT D HYD1                      83997.0000
                    25-OH V  VIT D HYD2
                    PO4      PHOS                            83851.0000
199     LA7POC2
200     LA7POC3
201     LA7POC4
202     LA7POC5

***************************************************
OK.  Summary questions

1. When I started doing lab setup (with LEDI instructions), it seemed to indicate that the UI TEST CODE was the code that would be found in the HL7 Message, so it could identify what test result was being sent back.  So those are what I put in.  Now it looks like the POC instructiosn are indicating that the codes in the HL7 message should be a number like 82565.0000.  This doesn't seem right.  I am not going to be able to get my hospital to put in codes like that.  And trying to write a Mirth transform to convert the thousands of possible tests seems burdensome.

2. I don't understand the significance of the WKLD CODE field.  The data dictionary says "The code number of the AMIS report for the procedure."  I won't likely be using that report, so it seems to me that I don't need an accurate number.  I need to come up with numbers for my custom tests (BUN/CREATININE RATIO, GFR).  The file description for the WKLD CODE file says that it should not be edited directly, as it is a standardized national file.

3. It looks like the storage location for my custom tests are not correct.  For example, in the following dump, CREATININE (a pre-existing test) is stored at TV(4,1), while BUN/CREATININE RATIO is stored at TV(TMG,1).  TMG is my name space, but I don't know what TV is, or how that field 11 go setup.  And 25-OH VITAMIN D3 has TV(,), which is bound to cause problems.

Record# 198, in FILE: 62.4
  .001-NUMBER : 198
   .01-NAME : LA7POC1
...
    30-CHEM TESTS :
       Multiple Entry #2
      .001-NUMBER : 2
       .01-TEST : CREATININE
         6-UI TEST CODE : 84457.0000
         8-SPECIMEN : SERUM
        11-ROUTINE STORAGE : TV(4,1)
        14-ACCEPT RESULTS FOR THIS TEST : FINAL ONLY
        18-STORE REMARKS : FINAL ONLY
        19-REMARK PREFIX : For test Creatinine:
        21-STORE REFERENCE RANGE : YES
        22-NOTIFY ABNORMAL FLAGS : NO

...
       Multiple Entry #13
      .001-NUMBER : 13
       .01-TEST : BUN/CREATININE RATIO
         6-UI TEST CODE : BCRAT
         8-SPECIMEN : SERUM
        11-ROUTINE STORAGE : TV(TMG,1)
        14-ACCEPT RESULTS FOR THIS TEST : FINAL ONLY
        18-STORE REMARKS : FINAL ONLY
        19-REMARK PREFIX : For BUN/Cr:
        21-STORE REFERENCE RANGE : YES
        22-NOTIFY ABNORMAL FLAGS : NO

...
       Multiple Entry #18
      .001-NUMBER : 18
       .01-TEST : 25-OH VITAMIN D3
         6-UI TEST CODE : VIT D HYD2
         8-SPECIMEN : SERUM
        11-ROUTINE STORAGE : TV(,)  <------- P.S, why this???
        14-ACCEPT RESULTS FOR THIS TEST : FINAL ONLY
        18-STORE REMARKS : FINAL ONLY
        19-REMARK PREFIX : For Vit D3:
        21-STORE REFERENCE RANGE : YES
        22-NOTIFY ABNORMAL FLAGS : NO

When I added the custom field, here are some notes I created: 
Add tests to the CHEM TESTS (multiple) field (#30) and enter the universal test code for the reference laboratory test in the UI TEST CODE sub-field (#6). Each test will have to be scripted to match the result codes that the non-VA reference laboratory provided and will be transmitting to VistA. 

NOTE: To add an entry in the AUTO INSTRUMENT file, there must be a matching entry in the LABORATORY TEST file (#60).  And likewise, there must be an FIELD defined in the [LAB DATA(#63)] : [CHEM, HEM, TOX, RIA, SER, etc.] subfile.  I added my custom fields with field numbers starting at 22700, and stored them on node TMG.

Record# 5069, in FILE: 60
   .01-NAME : BUN/CREATININE RATIO
     2-SYNONYM :
       Multiple Entry #1
       .01-SYNONYM : BUN/CR
     3-TYPE : BOTH
     4-SUBSCRIPT : CHEM, HEM, TOX, SER, RIA, ETC.
     5-LOCATION (DATA NAME) : CH;TMG;1  ←  created automat. from fld 400
    13-FIELD : DD(63.04,22700,
    17-HIGHEST URGENCY ALLOWED : STAT
    51-PRINT NAME : BUN/CR
   400-DATA NAME : BUN/CREATININE RATIO ← 63.04 subfile *FIELD*
   410-INPUT TRANSFORM : K:$L(X)>7!($L(X)<1) X
   411-DATA TYPE : FREE TEXT
----- Press Key To Continue -----

Here is the field definition.  In subfile 63.04
^DD(63.04,22700,0) = BUN/CREATININE RATIO^FJ7^^TMG;1^K:$L(X)>7!($L(X)<1) X
^DD(63.04,22700,3) = Answer must be 1-7 characters in length.
^DD(63.04,22700,"DT") = 3110219
 <> <> <>

I've done about as much as I can at this point.  I'm kind of stuck.  Any help is always appreciated.

Thanks,
Kevin

John McCormack

unread,
Mar 7, 2011, 1:22:27 AM3/7/11
to hard...@googlegroups.com
Kevin,


1. When I started doing lab setup (with LEDI instructions), it seemed to indicate that the UI TEST CODE was the code that would be found in the HL7 Message, so it could identify what test result was being sent back.  So those are what I put in.  Now it looks like the POC instructions are indicating that the codes in the HL7 message should be a number like 82565.0000.  This doesn't seem right.  I am not going to be able to get my hospital to put in codes like that.  And trying to write a Mirth transform to convert the thousands of possible tests seems burdensome.

The POC interface is a one-way system, vendor's COTS to VistA. To facilitate setup and support as it's an entirely "local" interface, the VA NLT codes assigned by the site to each test was chosen as the codes for the interface to simplify setup on VistA. These codes are used for workload, billing and CAP LMIP. So at a VA Medical Center you want the staff to have to enter codes that you do not want to do on Mirth?



2. I don't understand the significance of the WKLD CODE field.  The data dictionary says "The code number of the AMIS report for the procedure."  I won't likely be using that report, so it seems to me that I don't need an accurate number.  I need to come up with numbers for my custom tests (BUN/CREATININE RATIO, GFR).  The file description for the WKLD CODE file says that it should not be edited directly, as it is a standardized national file.

There may already be codes.
PROCEDURE: Creatinine eGFR              WKLD CODE: 82135.0000                   UNIT FOR COUNT: SPEC
PROCEDURE: BUN/Creat Ratio              WKLD CODE: 81218.0000                   UNIT FOR COUNT: SPEC




3. It looks like the storage location for my custom tests are not correct.  For example, in the following dump, CREATININE (a pre-existing test) is stored at TV(4,1), while BUN/CREATININE RATIO is stored at TV(TMG,1).  TMG is my name space, but I don't know what TV is, or how that field 11 go setup.  And 25-OH VITAMIN D3 has TV(,), which is bound to cause problems.

I'm concerned when I see output like this 11-ROUTINE STORAGE : TV(TMG,1)
You should use the following options to create/edit.
    LRWU5       Add a new data name
    LRWU6       Modify an existing data name
--
http://groups.google.com/group/Hardhats
To unsubscribe, send email to Hardhats+u...@googlegroups.com

-- 
"If you can read this, thank a teacher;
          ... if you are reading it in English, thank a soldier."

kdt...@gmail.com

unread,
Mar 7, 2011, 12:31:14 PM3/7/11
to Hardhats
John,

Thank you for your reply. See below for my comments. Then I have a
new question.

On Mar 7, 1:22 am, John McCormack <johnm...@ix.netcom.com> wrote:
> Kevin,
>
...
> These codes are used for workload, billing and CAP LMIP. So at a VA Medical Center you want the staff to have to enter codes that
> you do not want to do on Mirth?

I guess it is a question of where it is easier to have the transform
occur. With Mirth, it seems that I would have to write JavaScript
that says:
If code = BMP, then code = 1234.5678
if code = CBC, then code = 2345.6789 etc.

It just seems that doing this in an programming environment where I
have access to the VistA database makes more sense. You could have a
mapping arrangement set up that might be more maintainable over time.

But I am now past this point. I wedged in some code in the HL-7
pathway that allows me to do just such a server-side transformation.
So don't think I need to worry about this point now.

> 2. ... I need to come up with numbers for my custom tests (BUN/CREATININE RATIO, GFR).  ...
>
> There may already be codes.
> PROCEDURE: Creatinine eGFR              WKLD CODE: 82135.0000                   UNIT FOR COUNT: SPEC
> PROCEDURE: BUN/Creat Ratio              WKLD CODE: 81218.0000                   UNIT FOR COUNT: SPEC
>

Thank you for pointing out those codes. I will see if I can use them
to get it working.


> 3. ... I'm concerned when I see output like this 11-ROUTINE STORAGE : TV(TMG,1)
> You should use the following options to create/edit.
>      LRWU5       Add a new data name
>      LRWU6       Modify an existing data name
>

OK. I wasn't aware of those options. I will explore using them.


New issue: I keep getting an Alert generated that says 'POC: Lab
Rollover has not completed as of <date/time>. It is firing about once
an hour. I could track this down by searching the source code, but if
you knew off the top of your head which way to search, I would
appreciate any guidance.

I want to apologize again for grumbling about the lab package. As I
have been walking through the code, I very much appreciate the clarity
with which it was written. There are comments and helpful variable
names. It is a refreshing improvement from older, more dense, coding
styles. Also, the error reporting and documentation is much better
than I have generated in my own code. It is a complex problem to
address, and is bound to take some fiddling to get it to work.

Thanks again,
Kevin Toppenberg

skip ormsby

unread,
Mar 7, 2011, 12:51:15 PM3/7/11
to hard...@googlegroups.com
Kevin check out the LAB user manual.  Besides scheduling Rollover there are several other LAB tasks that need to be run (generally right after Mid-night at a 24x7 hospital).

kdt...@gmail.com

unread,
Mar 7, 2011, 6:39:49 PM3/7/11
to Hardhats
OK. I have looked here:
http://www4.va.gov/vdl/application.asp?appid=71

I see :
Laboratory User Guide for LA*5.2*68 2010-07-14
Laboratory User Manual Version 5.2 2005-06-09

The first just seems to be documentation only for a patch.
The second document is 198 pages worth of documentation about
processes that don't apply to my site.

I searched for Rollover and find this on page 65.
----------------------
To avoid confusion with data from the previous shift, the Clear
Instrument/Worklist Data [LRINSTCLR] option should be run at the
beginning of every day (or perhaps, every shift). For example, if
there is an accession number 120 verified, then that data still exists
under that accession number. If you then run a new accession number
120, you would get the data from the previous accession number 120. If
you ran another sample through the system for accession 120 for the
current time period, you would then have two sets of data for the
accession number 120. (If you have ROLLOVER (specified in ACCESSION
file (#68) and the data is unverified, you would not be able to create
a new accession 120. This is complicated by the fact that the AUTO
INSTRUMENT file (#62.4) allows two ways of running the programs, one
of which is that every sample gets a uniqueentry in the ^LAH global,
even if it belongs to the same tray and cup and to the same person.
This means you can consecutively accumulate multiple copies of data.
The technologist then must make a decision about which set of data or
combination of sets is correct. This cannot be batch verified. To
avoid this situation, you clear the instrument using the Clear
Instrument/Worklist Data option.
----------------------

I also find that there is an option:
Rollover Accession (Manual) [LR ROLLOVER]

Rollover Accession (Manual) This option should be used if the task
option LRTASK ROLLOVER does not run for some reason. This option
should not be the normal method for transferring incomplete accession
from the previous day to the present day's accession file. If it
becomes necessary to use this option, there has probably been a
problem with TASK MANAGER. IRM Service should be notified if this
option is required to move accession onto day's list.

I then searched for options LRTASK and find this:
1 LRTASK ACS SUPERVISOR'S SUMMARY REPORT FOR TASKMAN
2 LRTASK CONJAM LOAD CONTROLS ON THE ACCESSION LISTS.
3 LRTASK CUM TASK THE CUMULATIVE TO RUN EACH NITE
4 LRTASK CUM FILEROOM TASK CUMULATIVE FILEROOM REPORT
5 LRTASK DAILY INTERIM 1 QUEUED INTERIM DAILY REPORT
(FIRST)
6 LRTASK DAILY INTERIM 2 QUEUED INTERIM DAILY REPORT
(SECOND)
7 LRTASK DISCHARGE Patient Lab Discharge Summary
8 LRTASK LAB START-UP THE BACK GROUND 'LAB' ROUTINE
9 LRTASK NIGHTY NIGHTLY CLEANUP
10 LRTASK PHSET CREATE NEW COLLECTION LIST
11 LRTASK PHSET1 CREATE NEW COLLECTION LIST
12 LRTASK ROLLOVER ROLLOVER ACCESSION


So I have ensured that I have the follow tasks scheduled to run every
evening:
--LRTASK LAB
--LRTASK NIGHTLY
--LRTASK ROLLOVER

The other ones look like auto report generators, which I would not
want.

We'll see if this changes things. Thanks for the heads up.

Kevin

John McCormack

unread,
Mar 8, 2011, 1:27:39 AM3/8/11
to hard...@googlegroups.com
Schedule LRTASK NIGHTY, LRTASK ROLOVER, LA7TASK NIGHTY.

LRTASK LAB does not need to be scheduled. It's for the old LSI Lab interface when VA wrote their own interface routines, pre HL7.

--

kdt...@gmail.com

unread,
Mar 8, 2011, 7:19:09 AM3/8/11
to Hardhats
My system doesn't seem to have LR7TASK NIGHTLY:


Select OPTION to schedule or reschedule: lr7task ??

Select OPTION to schedule or reschedule: LR7TASK NIGHTLY ??

Select OPTION to schedule or reschedule: LR7
1 LR7O 60-64 AUTO Semi-automatic Linking of file 60 to 64
2 LR7O 60-64 MANUAL Manual Linking of file 60 to 64
3 LR7O ALL LAB TESTS Update CPRS with all Lab test
parameters
4 LR7O AUTO RESULT NLT Result NLT Auto Linker
5 LR7O MAN RESULT NLT Link Result NLT Manual
Press <Enter> to see more, '^' to exit this list, OR
CHOOSE 1-5:
6 LR7O ORDER PARAMETERS Update CPRS with Lab order
parameters
7 LR7O PAR DOMAIN Domain Level Parameter Edit
8 LR7O PAR LOC Location Level Parameter Edit
9 LR7O PAR PKG Package Level Parameter Edit
10 LR7O SINGLE LAB TEST Update CPRS with Single Lab test
CHOOSE 1-10: ??

Select OPTION to schedule or reschedule:

Do I need to track down a missing patch?

Kevin

Thom H.

unread,
Mar 8, 2011, 7:52:34 AM3/8/11
to Hardhats
Kevin,

Not LR7... LA7...

As in -

36 LA7S PENDING PRINT LEDI Print LEDI Pending Orders
37 LA7S PRINT CATALOG Electronic Catalog Print
38 LA7S RESULTS RETRANSMIT Retransmit LEDI Lab Results
39 LA7S VIEW INDIVIDUAL ENTRY View Individual Electronic
Catalog Entry
40 LA7TASK NIGHTY Lab Messaging Nightly Cleanup
<===================
Press <RETURN> to see more, '^' to exit this list, OR
CHOOSE 1-40:
> - Show quoted text -

kdt...@gmail.com

unread,
Mar 8, 2011, 5:36:34 PM3/8/11
to Hardhats
Dooh! Thanks

Kevin

kdt...@gmail.com

unread,
Mar 8, 2011, 11:08:16 PM3/8/11
to Hardhats
On Feb 27, 5:29 pm, Kevin Toppenberg <kdt...@gmail.com> wrote:
> I have been trying to setup up our lab interface by lab POC instructions.
>

OK. I have followed John's advice and set up the test I want only by
using the setup menu options, not by using Fileman. I seem to be
making progress.

I am now getting this error:

Date: ....
Text: Msg #21 SSN ###-##-#### not found in PATIENT file 9#2).

Except in my case there is there is the real SSN of one of my
patients.

I have looked up this patient in the PATIENT file, and his SSN is
there, and the numbers match (except in the patient file they are
stored without "-"'s).

I thought this was because the HL-7 message was sending it with
hyphens, so I wrote a transform to take the hyphens out. But I still
get the message.

Can anyone save me the effort of walking through the code and finding
exactly why the lookup fails? Does this ring any bells with anyone?

Thanks
Kevin


John McCormack

unread,
Mar 8, 2011, 11:29:40 PM3/8/11
to hard...@googlegroups.com

In LRVRPOC, it does a FileMan look-up using the SSN cross-reference. If it fails then it generates the exception.
I believe that the SSN field does not have the SSN with the hyphenation. The hyphens are usually added for display purposes to
improve readability. However the SSN per se does not have hyphens (dashes).

LOOK ; Check for data
K LRDFN,LRERR
S LRODT=DT,(LREND,LRERR)=0
S DFN=$$FIND1^DIC(2,"","X",LASSN,"SSN","","")
I 'DFN D Q
. S LRERR=$$CREATE^LA7LOG(101,1)
. D SENDACK^LRVRPOCU

--

kdt...@gmail.com

unread,
Mar 9, 2011, 1:16:35 PM3/9/11
to Hardhats
In field 3 of the PID from my hospital, they are providing a MRN that
VistA knows nothing about. But they do provide SSN in field 16
(according the HL7 standard).

As I step through the code in PID^LA7VIN2, the code first tries to
find the patient from field 3, but then falls back to locating the
patient based on field 16. And in my case it does correctly set DFN.

Then, I step through the rest of the messaging processing, and it all
seems to be OK. I can't find the place where it generated the "CAN'T
FIND SSN" error mentioned before.

I am concerned that I have stepped through this so many times, that I
have many instances of the message stuck in the que, and it may even
be processing old messages that haven't been cleared out.

I look in the LA7 MESSAGE QUE file, and I find 26 messages. 1-21 have
status of "INCOMING ERROR". 22, 23 have status of " INCOMING
PURGEABLE." And 24-26 have "INCOMING QUEUED FOR ACTION".

I just noticed that the code cycles through all the messages in the
que in 62.49, and it is only AFTER all the messages have been
processed that alerts are generated.

Looking at my alerts, I now see newly-generated messages for 22-26.
Alert for #26 (the last one processed) again gives me the error about
SSN not found in Patient file.

So I am not sure where these errors are being generated, because I
have not yet found the 1 line in the code that branches between OK and
error and see what the test is.

I am thinking that I need to transform my message so that field 3
contains a patient identifier that it understands. The HL-7 intarface
specification for POC says this about piece #3 of the PID segment:

------------------------------
3.5.7.3 PID-3 PATIENT IDENTIFIER LIST (CX)
PATIENT IDENTIFIER is an extended composite element made up of the
following:
Components: <ID (ST)> ^ <check digit (ST)> ^ <code identifying the
check digit scheme employed (ID)>^ < assigning authority (HD)> ^
<identifier type code (ID)> ^ < assigning facility (HD)^ <effective
date (DT)> ^ <expiration date (DT)>
Subcomponents of assigning authority: <namespace ID (IS)> & <universal
ID (ST)> & <universal ID type (ID)>
Subcomponents of assigning facility: <namespace ID (IS)> & <universal
ID (ST)> & <universal ID type (ID)>
VistA will accept VA Integration Control Number (ICN) and/or Social
Security Number (SSN) in this field.
------------------

Formatting this to something more readable:
3.5.7.3 PID-3 PATIENT IDENTIFIER LIST (CX)
PATIENT IDENTIFIER is an extended composite element made up of the
following:

Components:
1- <ID (ST)> ^
2- <check digit (ST)> ^
3- <code identifying the check digit scheme employed (ID)>^
4- < assigning authority (HD)> ^
Subcomponents of assigning authority:
4.1 <namespace ID (IS)> &
4.2 <universal ID (ST)> &
4.3 <universal ID type (ID)>
5- <identifier type code (ID)> ^
6- < assigning facility (HD)^
Subcomponents of assigning facility:
6.1 <namespace ID (IS)> &
6.2 <universal ID (ST)> &
6.3 <universal ID type (ID)>
7- <effective date (DT)> ^
8- <expiration date (DT)>

VistA will accept VA Integration Control Number (ICN) and/or Social
Security Number (SSN) in this field.

------------------
In the example PID segment from the same documentation we have:

PID|||999999999^^^170^SS||LRpatient^One||19550502000000|M||||||||||
1006926423V927391||||||||||||

Or the key field 3: "999999999^^^170^SS"

1 (ID) - 999999999^
2 - ^
3- ^
4 (assigning authority )- 170^
5 (identifier type code)- SS

------------------

It seems that "SS" should not first be introduced in an example, but
oh well. In the mumps code itself, it looks like "NI" or "PI" are
also valid codes, but I don't see those documented.

What is the value for "170". It is an IEN? Would I use 170 at my
site or another value?

I just looked in PID^LA7VIN2, and I can't see that piece 4 (assigning
authority) is used. So it looks like it could be anything. And it
also appears that if SS is not provided, that it is taken as default,
so it looks like field 3 can be just an SSN and nothing else.
However, it can not include any "-"'s.

I feel like I am stuck in quicksand. I don't feel that the printed
documentation is sufficient to achieve a solution. Am I missing
something?

Kevin

kdt...@gmail.com

unread,
Mar 9, 2011, 1:49:58 PM3/9/11
to Hardhats
I just looked more closely at the code in LRVRPOC. It looks like
maybe this is called on a delayed basis, and it seems to be where some
verification takes place.

The function below (LOOK^LRVRPOC) is called from a loop:

--------------------

S LAIEN=0
F S LAIEN=$O(^LAH(LRLL,1,LAIEN)) Q:LAIEN<1 D
. I $$S^%ZTLOAD S ZTSTOP=1 Q ; Task has been requested to stop
. K LRERR
. S LASSN=$P($G(^LAH(LRLL,1,LAIEN,.1,"PID","SSN")),"^")
. ; Interface message number in ^LAHM(62.49
. S LA76249=+$P($G(^LAH(LRLL,1,LAIEN,0)),U,13)
. ; File #62.48 configuration link
. S LA76248=""
. I LA76249 S LA76248=$$GET1^DIQ(62.49,LA76249_",",.5,"I")
. D LOOK,NEXT,ZAPALL^LRVR3(LRLL,LAIEN)
D END
Q
--------------------

But I am confused. My ^LAH global is essentially empty:

ASTRON>zwr ^LAH(*)
^LAH(1)=0

I was going to step through the code and try to catch the error, but
with an empty array, I can't.

--------------------

Also, I have tried to search for the text "not found in" in all the
L*.m files, and looked at each one. I can't see where the error
message: "Msg #25, SSN ###-##-#### not found in PATIENT file (#2)" is
coming from. It seems like I stepped into one error message in the
past, and it was created from a template. but I can't remember the
details.

--------------------
Also, I took the key lookup from that code:

S DFN=$$FIND1^DIC(2,"","X",LASSN,"SSN","","")

I set LASSN to be the SSN as provided in the HL7 message (field 16)
and called the above code. It returns the correct DFN.

Kevin

On Mar 8, 11:29 pm, John McCormack <johnm...@ix.netcom.com> wrote:

Nancy Anthracite

unread,
Mar 9, 2011, 3:49:49 PM3/9/11
to hard...@googlegroups.com, kdt...@gmail.com
John will comment on this I am sure, but POC was supposed to use more than one
patient identifier and doesn't. John wrote code for the correction and gave
the fix to Ignacio. It will be coming out with the next WV EHR release as
well.


--
Nancy Anthracite

John McCormack

unread,
Mar 10, 2011, 12:17:17 AM3/10/11
to hard...@googlegroups.com
1. The error regarding the SSN is generated by the code I quoted earlier.

LOOK ; Check for data
K LRDFN,LRERR
S LRODT=DT,(LREND,LRERR)=0
S DFN=$$FIND1^DIC(2,"","X",LASSN,"SSN","","")
I 'DFN D Q
. S LRERR=$$CREATE^LA7LOG(101,1)
. D SENDACK^LRVRPOCU

Error 101 is found in file #62.485

S LRERR=$$CREATE^LA7LOG(101,1)

CODE: 101 TEXT: Msg #|1|, SSN |2| not found in PATIENT file (#2).
SEND ALERT: YES BUILD LOGIC: S LA7TXT(1)=$G(LA76249),LA7TXT(2)=$G(LASSN)

2. General observations: many of the Lab HL7 interfaces (Lab UI, Lab LEDI, Lab POC) use a common code base for some functions. When
processing incoming ORU messages they are generally handled by the routines in the LA7VIN* namespace. Some interfaces generally use
one type of patient identifier, others another. In the case of the POC interface, the POC vendors indicated they would only support
SSN as that was the current patient identifier used within VA AT THE TIME the interlace was developed. It's somewhat similar to the
situation with providers and FDA approval of drugs. There are occasions when providers prescribe medications for other that the
indications that the drug was approved by the FDA. How is that possible? Where is it documented?

3. Lab HL7 interfaces are designed to process messages through "stages".
Stage 1 - Receive the message from the HL package, perform cursory checking on MSH, store message in file #62.49, return
control to HL package to allow communication link to continue. Task message processing from #62.49

Stage 2 - Process message from file #62.49.
Lab UI - process message, store in LAH global, generate application ACK and await user initiating processing
and verification.
Lab LEDI - same as Lab UI.
Lab POC - process message, store in LAH global and task process POC processing.

Stage 3 - Verification/release
Lab UI - user using option LRVR reviews and verifies lab results for release, viewable in CPRS
Lab LEDI -same as Lab UI
Lab POC - background task takes info from message that been stored in LAH global, determines the ordering
provider, ordering
location, tests to order, specimen types, urgency and creates Lab order, Lab accession , CPRS order
and stores and
releases results.

kdt...@gmail.com

unread,
Mar 10, 2011, 9:18:43 PM3/10/11
to Hardhats
John,

Thank you for pointing out the multi-phased processing approach. It
helped me locate the section I needed to change so that I could debug
straight through the process.

Here is what is happening.

The problem is in DPT^LRVRPOC, not LOOK^LRVRPOC

Here are the steps that lead to the error:

FNLRDFN(DFN)
--> DEM^LRX
--> DEM^VADPT

Here is the code in question:

I +G(LRDPF)=2 N I,X,N,Y D
. D DEM^VADPT D:'VAERR
. . S PNM=VADM(1),SEX=$P(VADM(2),U)
. . ; S DOB=$P(VADM(3),U),SSN=$P(VADM(2),U)
. . S DOB=$P(VADM(3),U),SSN=VA("PID") ; for VOE
. . S AGE=VADM(4),AGE(2)=$$AGE2(DOB,$G(LRCDT))
D SSNFM^LRU
Q

Out of this block is coming SSN with hyphens. I.g.
SSN="123-45-6789"

Your code doesn't seem to expect this. Because it processes this
number further, and I get:
SSN="123--4-5-6789" <-- fake numbers, but hyphens correct
SSN(1)=2 <--- real number
SSN(2)="123-45-6789" <--- fake numbers, but hyphens correct

And is is this SSN value (with hyphens) that is passed into DPT:

--> D DPT(SSN(2))

DPT() accepts SSN(2) as the variable LRASSN, and tries to do a Fileman
lookup with it. It is not found, causing the error log to be
created: $$CREATE^LA7LOG(101,1).

I initially thought this was a problem with DEM^VADPT, but looking
closer at the line included above:

. . ; S DOB=$P(VADM(3),U),SSN=$P(VADM(2),U)
. . S DOB=$P(VADM(3),U),SSN=VA("PID") ; for VOE

Notice the comment "for VOE". I don't know how that got there, but it
seems to be pulling SSN from a different source for the instance of
VOE.

For now, I am going to try to compensate for this issue by putting the
following in DPT^LRVRPOC

SET LRASSN=$TR(LRASSN,"-"-,"")

Here's crossing my finger.....

Kevin

kdt...@gmail.com

unread,
Mar 10, 2011, 9:27:43 PM3/10/11
to Hardhats
Correction:

I am going to fix the code as follows:

I +G(LRDPF)=2 N I,X,N,Y D
. D DEM^VADPT D:'VAERR
. . S PNM=VADM(1),SEX=$P(VADM(2),U)
. . ; S DOB=$P(VADM(3),U),SSN=$P(VADM(2),U)
. . S DOB=$P(VADM(3),U),SSN=VA("PID") ; for VOE
. . S AGE=VADM(4),AGE(2)=$$AGE2(DOB,$G(LRCDT))
D SSNFM^LRU
SET SSN(2)=$TR(SSN(2),"-","") ;"<--- added
Q

This is because SSN(2) is also used in LOOK^LRVRPOC

Kevin

On Mar 10, 9:18 pm, "kdt...@gmail.com" <kdt...@gmail.com> wrote:
> John,
>
...

John McCormack

unread,
Mar 10, 2011, 10:59:31 PM3/10/11
to hard...@googlegroups.com
This issue is similar to what Ignacio encountered and is in the fix that Nancy mentioned in a previous thread

On 3/9/2011 2:49 PM, Nancy Anthracite wrote:
> John will comment on this I am sure, but POC was supposed to use more than one
> patient identifier and doesn't. John wrote code for the correction and gave
> the fix to Ignacio. It will be coming out with the next WV EHR release as
> well.

kdt...@gmail.com

unread,
Mar 11, 2011, 8:15:03 AM3/11/11
to Hardhats
Nancy wrote that you had created that patch and would comment further.

--What was the nature of that fix?
--Did you put in the ;VOE line, or someone else?
--If I take out that particular line, will I be causing another
problem??
--Where is this patch that I can apply it?

Kevin

Nancy Anthracite

unread,
Mar 11, 2011, 12:18:29 PM3/11/11
to hard...@googlegroups.com, kdt...@gmail.com
Kevin, it is integrated into another bigger update patch but one that was used
during the development process is attached. It is probably not properly
namespaced and number-spaced, however, so bear that in mind.


--
Nancy Anthracite

VW_1_0_250005_20100913_V1.KID

Bob

unread,
Nov 7, 2013, 3:06:03 PM11/7/13
to hard...@googlegroups.com, Hardhats
We are implementing the Lab POC interface for a Nova Medical pHOx Ultra instrument.

I've read through the manuals and seem to be stuck at a similar point as Kevin with regard to the "RESULT NLT CODE does not match UI TEST CODE" warnings.

The instrument identifies each result by "standardized" test names.  So that's what I've entered into the UI Test Code field in the Auto Instrument file.

We have a Data Innovations Instrument Manager PC that sets between the instrument and VistA.

My question is:  Will mapping the instrument's test names to what we picked for the Result NLT Code, and changing the UI Test Code field to that same value fix this warning/error?  I have a sinking feeling I know the answer but want to be sure before proceeding.

Regards,
Bob Dobbins
UT College of Veterinary Medicine


Kevin Toppenberg

unread,
Nov 7, 2013, 3:48:56 PM11/7/13
to hard...@googlegroups.com, Hardhats
I see your question, but I'll let someone else answer.  I'm afraid I might give you wrong information.

Kevin

David Whitten

unread,
Nov 7, 2013, 4:16:54 PM11/7/13
to Hardhats,
Joe Thurber at North Carolina knows this far better than I, but I seem
to recall that this issue might be tied to LOINC to identify unique
Lab Test Names. And of course, John McCormack and Frank Stalling know
a lot about VistA Lab because they were involved in writing a lot of
it.

A potential "gotcha" is that the RESULT NLT CODE has the LOINC code
for a particular entry in the LABORATORY TEST file, NOT the LOINC code
in the SITE/SPECIMEN multiple. The LOINC code in the SITE/SPECIMEN
multiple is not used.

David
> --
> ---
> You received this message because you are subscribed to the Google Groups
> "Hardhats" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to hardhats+u...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.

Steven McPhelan

unread,
Nov 7, 2013, 6:17:25 PM11/7/13
to hardhats

If this is the message you are getting:
Warning - RESULT NLT CODE does not match UI TEST CODE.
Then this message is generated at DQP+66^LA7PCFG (patch 67)


X=^LAB(62.4,LA7624,3,I,0)
LR60=+X
LA7CODE=$P(X,U,6)
LR64=+$P($G(^LAB(60,LR60,64)),"^",2)
LR64(0)=$G(^LAM(LR64,0))
I LR64>0,$P(LR64(0),"^",2)'=LA7CODE

In English, this
1. The M code has a specific AUTO INSTRUMENT (#62.4) ien
2. Using that ien the M code is now FOR looping on the CHEM TESTS multiple in file 62.4
   a. It found an entry in this multiple where
       1) Let me remember, we are in the CHEM TESTS multiple in file 62.4
       1) The .01 field is a pointer to file 60 (variable LR60)
       2) Field 6 is UI TEST CODE which is free set and is =LA7CODE
3. File 64 [WKLD CODE]
   a. Use the file 60 pointer from 2.a.1 [i.e., LR60]
   b. Get value of field #64.1 [RESULT NLT CODE] which is a pointer to file 64 [WKLD CODE]
   c. From file 64, get value of field 1 [WKLD CODE] which is free text

Now in straight English:
1. Apparently you chose the option to "Print POC Test Code Mapping"
2. You selected a specific Auto-Instrument entry (file 62.4)
3. The program loops on the CHEM TESTS multiple looking for problems
4. In the CHEM TESTS multiple in file 62.4 it found an entry where

This report should have shown you something like this:
 4 <file 60 lab test name>    <free text of ui test code from chem tests multiple in file 62.4>

So from this display, you have the starting point which is the Auto-Instrument file entry.
Then the display shows you the entry in the CHEM TESTS multiple for that Auto-Instrument which has the issue.
It is showing you the name of the file 60 pointer in the CHEM TESTS multiple.
It is showing the assoicated file 60 field UI TEST CODE value which is free text.
From file 60 it gets the linked pointer to file 64.
From that file 64 pointer it gets the free text value stored in the RESULT NLT CODE field
The UI TEST CODE (file 60) and the RESULT NLT CODE (file 64) better match or you get the message.
It would be best to fix this issue using the proper Lab Option.  It has been many a year since I actively used lab options as an end user.  So I would leave this up to experienced lab adpacs to assist in the proper way to edit this using Lab Options.
 
However, as long as you are sure of the pointer mappings:
Chem test in auto-instrument is pointing the to the proper file 60 entry
That file 60 entry is pointing to the proper WKLD CODE entry
Then since file 62.4 is basically an end-user data-input file, you should be able to just edit the UI TEST CODE free text value in the CHEM TESTS multiple in the AUTO-INSTRUMENT file to exactly match the RESULT NLT CODE value in file 64 which is linked to the file 60 entry pointed to by that auto-instrument entry.  If you don't know the proper lab option to edit this field, then I believe it would be safe to just us FileMan enter/edit to edit this ONE field only for this one entry.  You should always use the proper Lab option if you can.
 
The description for ^DD(62.41,6) is:
For traditional interfaces:
This is the code to send the instrument for downloading of load lists
that this test is requested.
  This field used by various BI-DIRECTIONAL INTERFACES
  eg. for test BUN enter / as the download code for the ETACHEM instrument.
For Universal Interfaces:
For sites using this instrument in a Universal Interface configuration,
this field is used to define the instrument 'name' for a test. This
'name' is used as an identifier for the test in all messages sent to
and from the instrument.  It is important that the Universal Interface
PC has the name defined in this instrument's configuration exactly as
it is here in the auto instrument file, including upper and lower case.
This field does NOT have to be the test name, but can be.  The name of
this field should not be taken literally, it is used for both uploading
and downloading, uni-directional as well as bi-directional.

In a Universal Interface configuration this field is used as the
primary identifier in all of the HL7 messages passed between DHCP
and the UI PC.  It must be defined on the PC exacly as it is entered
here. It can be any alphanumeric string that passes the transform.
There is an "AC" cross reference on this field that is used as a
lookup when a message is received.  If test results are not being
downloaded or uploaded for this test, it might be because the
Download Code does not match exactly with the idenitifer on the PC
for this instrument configuration.
--
Steve

The urge to save humanity is almost always a false front for the urge to rule - HL Mencken

Bob

unread,
Nov 8, 2013, 5:23:19 PM11/8/13
to hard...@googlegroups.com
Steve,

Thanks for the detailed reply!

Unfortunately the instrument will only send the test name in the HL7 messages with the results.

So it sounds like I need to change the UI TEST CODE for each test on this Auto Instrument file entry to match the RESULT NLT CODE on the test.  Then I need to create a test mapping on the Data Innovations that maps the test name in the HL7 message to the UI TEST CODE / RESULT NLT CODE.

Kevin Toppenberg

unread,
Nov 9, 2013, 9:12:34 AM11/9/13
to hard...@googlegroups.com
Bob,

At our side, I had to create a layer of transformation code that takes the test name, as provided in the HL7 message, and transform it into something that VistA understands.

If you want to contact me off line, I can discuss it with out.

Kevin

Bob

unread,
Jan 30, 2015, 4:01:15 PM1/30/15
to hard...@googlegroups.com
Hi Kevin!

It has been over a year since I worked on implementing Lab POC here.

I think I've found the issue with our current setup. The instrument I'm trying to get working with POC is already communicating via the universal interface and a Data Innovations Instrument Manager PC.

Is your POC setup to talk directly to the HL7 standard listener, or is it through the Universal Interface or 3rd party software?


Bob

Kevin Toppenberg

unread,
Jan 31, 2015, 2:20:35 PM1/31/15
to hard...@googlegroups.com
Bob,

We are not using POC lab, meaning point of care testing, with the equipment in the office.  We are interfaced to 2 different reference labs.  One sends us HL-7 messages to a common file-system folder.  And the other I think comes in through a machine running Mirth.  It's be > 1 yr since I set it up, so I can't recall all the details.

What problems are you having?

Kevin

Kevin Toppenberg

unread,
Feb 1, 2015, 10:37:17 AM2/1/15
to hard...@googlegroups.com
Having said that, I think we are using the POC system at least partly in our import process.  I would be happy to demonstrate it to you, including the addition of new tests on-the-fly, sometime if you want.

Kevin
Reply all
Reply to author
Forward
0 new messages