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