| 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 | 
|---|