| [613] | 1 | LA7QRY ;DALOI/JMC - Lab HL7 Query Utility ; 1/27/04 8:25am
 | 
|---|
 | 2 |  ;;5.2;AUTOMATED LAB INSTRUMENTS;**46,69**;Sep 27, 1994
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 |  ; Reference to variable DIQUIET supported by DBIA #2098
 | 
|---|
 | 5 |  ; Reference to ^DPT("SSN") global supported by DBIA #10035
 | 
|---|
 | 6 |  ;
 | 
|---|
 | 7 |  Q
 | 
|---|
 | 8 |  ;
 | 
|---|
 | 9 | GCPR(LA7PTID,LA7SDT,LA7EDT,LA7SC,LA7SPEC,LA7ERR,LA7DEST,LA7HL7) ; Entry point for Government Computerized Patient Record query
 | 
|---|
 | 10 |  ;
 | 
|---|
 | 11 |  ; Call with LA7PTID = patient identifier, either SSN or MPI/ICN
 | 
|---|
 | 12 |  ;                     if MPI/ICN then should be full ICN (10 digit
 | 
|---|
 | 13 |  ;                     number followed by "V" and six digit checksum)
 | 
|---|
 | 14 |  ;                     For example: 1000720100V271387 
 | 
|---|
 | 15 |  ;            LA7SDT = start date of query (FileMan D/T,time optional)
 | 
|---|
 | 16 |  ;            LA7EDT = end date of query (FileMan D/T, time optional)
 | 
|---|
 | 17 |  ;                     (FileMan D/T^type of date ("CD" or "RAD")
 | 
|---|
 | 18 |  ;                     Both start and end date values can pass a
 | 
|---|
 | 19 |  ;                     parameter in the second piece to indicate that 
 | 
|---|
 | 20 |  ;                     the date values are for specimen collection
 | 
|---|
 | 21 |  ;                     date/time (CD) or results available date (RAD)
 | 
|---|
 | 22 |  ;                     Example: LA7SDT="2991001.1239^CD"
 | 
|---|
 | 23 |  ;                              LA7EDT="2991002.0331^CD"
 | 
|---|
 | 24 |  ;                              LA7SDT="3010201^RAD"
 | 
|---|
 | 25 |  ;                              LA7EDT="3010201^RAD"
 | 
|---|
 | 26 |  ;
 | 
|---|
 | 27 |  ;             LA7SC = Array of search codes, either NLT or LOINC
 | 
|---|
 | 28 |  ;                     (code^coding system ("NLT" or "LN");
 | 
|---|
 | 29 |  ;                     Example: LA7SC(1)="89628.0000^NLT"
 | 
|---|
 | 30 |  ;                              LA7SC(2)="84330.0000^NLT"
 | 
|---|
 | 31 |  ;                              LA7SC(3)="84295.0000^NLT"
 | 
|---|
 | 32 |  ;                              LA7SC(4)="14749-6^LN"
 | 
|---|
 | 33 |  ;
 | 
|---|
 | 34 |  ;                   = The "*" (wildcard) for any code;
 | 
|---|
 | 35 |  ;                     Example: LA7SC="*"
 | 
|---|
 | 36 |  ;
 | 
|---|
 | 37 |  ;                   = A list of subscripts (separated by commas) from
 | 
|---|
 | 38 |  ;                     where the results will be extracted ("CH", "MI"
 | 
|---|
 | 39 |  ;                     or "SP").
 | 
|---|
 | 40 |  ;                     Example: LA7SC="CH,MI" (CH and MI results only)
 | 
|---|
 | 41 |  ;
 | 
|---|
 | 42 |  ;           LA7SPEC = array of specimen types using HL7 source table
 | 
|---|
 | 43 |  ;                     0070 or "*" (wildcard) for any code
 | 
|---|
 | 44 |  ;                     Currently specimen type only supported for CH
 | 
|---|
 | 45 |  ;                     and MI subscripted tests.
 | 
|---|
 | 46 |  ;                     Example: LA7SPEC="*"
 | 
|---|
 | 47 |  ;                                or
 | 
|---|
 | 48 |  ;                              LA7SPEC(1)="UR"
 | 
|---|
 | 49 |  ;                              LA7SPEC(2)="SER"
 | 
|---|
 | 50 |  ;                              LA7SPEC(3)="PLAS"
 | 
|---|
 | 51 |  ;
 | 
|---|
 | 52 |  ;           LA7DEST = closed root global reference to return search
 | 
|---|
 | 53 |  ;                     results (optional). If this parameter is
 | 
|---|
 | 54 |  ;                     omitted or equals an empty string, then node
 | 
|---|
 | 55 |  ;                     ^TMP("HLS",$J) is used.
 | 
|---|
 | 56 |  ;                     Example: LA7DEST=$NA(^TMP("ZZTMP",$J))
 | 
|---|
 | 57 |  ;
 | 
|---|
 | 58 |  ;            LA7HL7 = HL7 field separator and encoding characters (4)
 | 
|---|
 | 59 |  ;                     to use to encode results (optional).
 | 
|---|
 | 60 |  ;                     If undefined or incomplete (length<5) then
 | 
|---|
 | 61 |  ;                     field separator = "|" and encoding characters =
 | 
|---|
 | 62 |  ;                     "^\~&"
 | 
|---|
 | 63 |  ;
 | 
|---|
 | 64 |  ; Returns    LA7DEST = contains global reference of search results
 | 
|---|
 | 65 |  ;            in HL7 message structure, usually ^TMP("HLS",$J)
 | 
|---|
 | 66 |  ;
 | 
|---|
 | 67 |  ;            LA7ERR = array (by reference) containing any errors
 | 
|---|
 | 68 |  ;
 | 
|---|
 | 69 |  N DFN,DIQUIET,LA76248,LA7CODE,LA7PTYP,LA7QUIT,LA7SCSRC,LRDFN,LRIDT,LRSS,LRSSLST,TMP
 | 
|---|
 | 70 |  ;
 | 
|---|
 | 71 |  D CLEANUP
 | 
|---|
 | 72 |  S U="^",DT=$$DT^XLFDT,DTIME=$$DTIME^XUP($G(DUZ))
 | 
|---|
 | 73 |  S GBL=$S($G(LA7DEST)'="":LA7DEST,1:"^TMP(""HLS"","_$J_")")
 | 
|---|
 | 74 |  K LA7ERR
 | 
|---|
 | 75 |  ; Prevent FileMan from issuing any unwanted WRITE(s).
 | 
|---|
 | 76 |  S DIQUIET=1
 | 
|---|
 | 77 |  ; Currently not using file #62.48 for configuration information.
 | 
|---|
 | 78 |  S LA76248=0
 | 
|---|
 | 79 |  ;
 | 
|---|
 | 80 |  ; Identify patient, quit if error
 | 
|---|
 | 81 |  D PATID^LA7QRY2
 | 
|---|
 | 82 |  I $D(LA7ERR)  Q ""
 | 
|---|
 | 83 |  ;
 | 
|---|
 | 84 |  ; Resolve search codes to lab datanames
 | 
|---|
 | 85 |  S LA7SCSRC=$G(LA7SC)
 | 
|---|
 | 86 |  S TMP=$$SCLIST^LA7QRY2(LA7SCSRC)
 | 
|---|
 | 87 |  Q:$D(LA7ERR) ""
 | 
|---|
 | 88 |  S LA7SC=TMP  D:LA7SC'="*" CHKSC^LA7QRY1
 | 
|---|
 | 89 |  ;
 | 
|---|
 | 90 |  ; Convert specimen codes to file #61 Topography entries
 | 
|---|
 | 91 |  S LA7SPEC=$G(LA7SPEC)
 | 
|---|
 | 92 |  I LA7SPEC'="*"  D SPEC^LA7QRY1
 | 
|---|
 | 93 |  ;
 | 
|---|
 | 94 |  ; Search by collection or results available date
 | 
|---|
 | 95 |  I $P(LA7SDT,"^",2)="" S $P(LA7SDT,"^",2)="CD"
 | 
|---|
 | 96 |  I $P(LA7SDT,"^",2)="RAD" D BRAD^LA7QRY2
 | 
|---|
 | 97 |  I $P(LA7SDT,"^",2)="CD" D BCD^LA7QRY2
 | 
|---|
 | 98 |  ;
 | 
|---|
 | 99 |  I '$D(^TMP("LA7-QRY",$J)) D
 | 
|---|
 | 100 |  . S LA7ERR(99)="No results found for requested parameters"
 | 
|---|
 | 101 |  . S GBL=""
 | 
|---|
 | 102 |  E  D BUILDMSG^LA7QRY1
 | 
|---|
 | 103 |  ;
 | 
|---|
 | 104 |  D CLEANUP  S LA7SC=LA7SCSRC
 | 
|---|
 | 105 |  ;
 | 
|---|
 | 106 |  Q GBL
 | 
|---|
 | 107 |  ;
 | 
|---|
 | 108 |  ;
 | 
|---|
 | 109 | CLEANUP ; Cleanup TMP nodes that are used.
 | 
|---|
 | 110 |  ;
 | 
|---|
 | 111 |  N I
 | 
|---|
 | 112 |  ;
 | 
|---|
 | 113 |  F I="LA7-61","LA7-DN","LA7-LN","LA7-NLT","LA7-QRY" K ^TMP(I,$J)
 | 
|---|
 | 114 |  D KVAR^LRX
 | 
|---|
 | 115 |  ;
 | 
|---|
 | 116 |  Q
 | 
|---|