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