1 | DGROHLQ1 ;DJH/AMA - ROM HL7 BUILD QRD SEGMENT ; 28 Apr 2004 4:31 PM
|
---|
2 | ;;5.3;Registration;**533,572**;Aug 13, 1993
|
---|
3 | ;
|
---|
4 | QRD(DGDFN,DGICN,DGFLD,DGHL,DGUSER) ;QRD HL7 segment API
|
---|
5 | ;This function wraps the data retrieval and segment creation APIs
|
---|
6 | ;and returns a formatted QRD segment.
|
---|
7 | ; Called from BLDQRY and BLDORF^DGROHLQ
|
---|
8 | ;
|
---|
9 | ; Input:
|
---|
10 | ; DGDFN - (required) DFN
|
---|
11 | ; DGICN - (required) Integrated Control Number
|
---|
12 | ; DGFLD - (optional) List of comma-separated fields (sequence #'s)
|
---|
13 | ; to include. Defaults to all required fields (1-4,7-10).
|
---|
14 | ; DGHL - VistA HL7 environment array
|
---|
15 | ; DGUSER - (optional) String of user data from New Person File
|
---|
16 | ; (SSN~Name~DUZ~Phone). If this is populated, it means
|
---|
17 | ; this is the QRY to the LST. If not, it's the ORF going
|
---|
18 | ; back to the Querying Site. ;added in DG*5.3*572
|
---|
19 | ;
|
---|
20 | ; Output:
|
---|
21 | ; Function Value - QRD segment on success, "" on failure
|
---|
22 | ;
|
---|
23 | N DGQRD,DGVAL
|
---|
24 | ;
|
---|
25 | S DGQRD=""
|
---|
26 | I $G(DGDFN)>0,$G(DGICN)]"" D
|
---|
27 | . S DGFLD=$$CKSTR^DGROHLUT("1,2,3,4,5,6,7,8,9,10",DGFLD) ;validte flds
|
---|
28 | . S DGFLD=","_DGFLD_","
|
---|
29 | . I $$QRDVAL(DGFLD,DGDFN,DGICN,.DGVAL,$G(DGUSER)) D ;DG*5.3*572 added DGUSER
|
---|
30 | . . S DGQRD=$$BLDSEG^DGROHLUT("QRD",.DGVAL,.DGHL)
|
---|
31 | Q DGQRD
|
---|
32 | ;
|
---|
33 | QRDVAL(DGFLD,DGDFN,DGICN,DGVAL,DGUSER) ;build QRD value array
|
---|
34 | ;
|
---|
35 | ; Input:
|
---|
36 | ; DGFLD - Fields string
|
---|
37 | ; DGDFN - DFN
|
---|
38 | ; DGICN - ICN
|
---|
39 | ; DGUSER - (optional) String of user data from New Person File
|
---|
40 | ; (SSN~Name~DUZ~Phone) ;DG*5.3*572
|
---|
41 | ;
|
---|
42 | ; Output:
|
---|
43 | ; Function Value - 1 on success, 0 on failure
|
---|
44 | ; DGVAL - QRD field array [SUB1:field, SUB2:repetition,
|
---|
45 | ; SUB3:component, SUB4:sub-component]
|
---|
46 | ;
|
---|
47 | N DGRSLT
|
---|
48 | ;
|
---|
49 | S DGRSLT=0
|
---|
50 | I $G(DGDFN)>0,$G(DGICN)]"",$G(DGFLD)]"" D
|
---|
51 | . ;
|
---|
52 | . ; seq 1 (required) Query Date/Time
|
---|
53 | . I DGFLD[",1," D Q:(+DGVAL(1)'>0)
|
---|
54 | . . S DGVAL(1)=$$FMTHL7^XLFDT($$NOW^XLFDT())
|
---|
55 | . ;
|
---|
56 | . ; seq 2 (required) Query Format Code
|
---|
57 | . I DGFLD[",2," D
|
---|
58 | . . S DGVAL(2)="R" ;always "R"ecord
|
---|
59 | . ;
|
---|
60 | . ; seq 3 (required) Query Priority
|
---|
61 | . I DGFLD[",3," D
|
---|
62 | . . S DGVAL(3)="I" ;always "I"mmediate
|
---|
63 | . ;
|
---|
64 | . ; seq 4 (required) Identifying Information
|
---|
65 | . ;DG*5.3*572 - if the QRY to the LST, send the QS DFN and User info
|
---|
66 | . ; - if the ORF back to the QS, just send the QS DFN
|
---|
67 | . I DGFLD[",4," D
|
---|
68 | . . S DGVAL(4)=DGDFN_$S($G(DGUSER):"~"_DGUSER,1:"") ;DG*5.3*572
|
---|
69 | . ;
|
---|
70 | . ; seq 5 (optional) Deferred Response Type
|
---|
71 | . ; Indicates version of ROM messages
|
---|
72 | . I DGFLD[",5," D
|
---|
73 | . . S DGVAL(5)="572"
|
---|
74 | . ;
|
---|
75 | . ; seq 6 (optional) Deferred Response Date/Time
|
---|
76 | . I DGFLD[",6," D
|
---|
77 | . . S DGVAL(6)=""
|
---|
78 | . ;
|
---|
79 | . ; seq 7 (required) Quantity Limited Request
|
---|
80 | . I DGFLD[",7," D
|
---|
81 | . . S DGVAL(7,1,1)=10
|
---|
82 | . . S DGVAL(7,1,2)="RD" ;records
|
---|
83 | . ;
|
---|
84 | . ; seq 8 (required) ICN
|
---|
85 | . I DGFLD[",8," D
|
---|
86 | . . S DGVAL(8,1,1)=DGICN
|
---|
87 | . . S DGVAL(8,1,9,1)="USVHA"
|
---|
88 | . . S DGVAL(8,1,9,2)=""
|
---|
89 | . . S DGVAL(8,1,9,3)="L"
|
---|
90 | . ;
|
---|
91 | . ; seq 9 (required) What Subject Filter
|
---|
92 | . I DGFLD[",9," D
|
---|
93 | . . S DGVAL(9,1,1)="OTH"
|
---|
94 | . . S DGVAL(9,1,2)="Other"
|
---|
95 | . . S DGVAL(9,1,3)="HL0048"
|
---|
96 | . ;
|
---|
97 | . ; seq 10 (required) What Dept. Data Code
|
---|
98 | . I DGFLD[",10," D
|
---|
99 | . . S DGVAL(10,1,1)="ROMDD"
|
---|
100 | . . S DGVAL(10,1,2)="Register Once Messaging Demographic Data"
|
---|
101 | . . S DGVAL(10,1,3)="L"
|
---|
102 | . ;
|
---|
103 | . ; seq 11 (optional) What Data Code Value Qual.
|
---|
104 | . I DGFLD[",11," D
|
---|
105 | . . S DGVAL(11)=""
|
---|
106 | . ;
|
---|
107 | . ; seq 12 (optional) Query Results Level
|
---|
108 | . I DGFLD[",12," D
|
---|
109 | . . S DGVAL(12)=""
|
---|
110 | . ;
|
---|
111 | . S DGRSLT=1
|
---|
112 | I 'DGRSLT K DGVAL
|
---|
113 | Q DGRSLT
|
---|