DGPFHLQ1 ;ALB/RPM - PRF HL7 BUILD QRD SEGMENT ; 02/02/03
;;5.3;Registration;**425,1015**;Aug 13, 1993;Build 21
;
;
QRD(DGQID,DGWHO,DGFLD,DGHL) ;QRD HL7 segment API
;This function wraps the data retrieval and segment creation APIs and
;returns a formatted QRD segment.
;
; Input:
; DGQID - (required) Query ID (DFN)
; DGWHO - (required) Who Subject Filter (Integrated Control Number)
; DGFLD - (optional) List of comma-separated fields (sequence #'s)
; to include. Defaults to all required fields (1-4,7-10).
; DGHL - VistA HL7 environment array
;
; Output:
; Function Value - QRD segment on success, "" on failure
;
N DGQRD
N DGVAL
;
S DGQRD=""
I $G(DGQID)>0,$G(DGWHO)]"" D
. S DGFLD=$$CKSTR^DGPFHLUT("1,2,3,4,7,8,9,10",DGFLD) ;validate fields
. S DGFLD=","_DGFLD_","
. I $$QRDVAL(DGFLD,DGQID,DGWHO,.DGVAL) D
. . S DGQRD=$$BLDSEG^DGPFHLUT("QRD",.DGVAL,.DGHL)
Q DGQRD
;
QRDVAL(DGFLD,DGQID,DGWHO,DGVAL) ;build QRD value array
;
; Input:
; DGFLD - Fields string
; DGQID - Query ID (DFN)
; DGWHO - Who Subject filter (ICN)
;
; Output:
; Function Value - 1 on success, 0 on failure
; DGVAL - QRD field array [SUB1:field, SUB2:repetition,
; SUB3:component, SUB4:sub-component
;
N DGRSLT
;
S DGRSLT=0
I $G(DGQID)>0,$G(DGWHO)]"",$G(DGFLD)]"" D
. ;
. ; seq 1 (required) Query Date/Time
. I DGFLD[",1," D Q:(+DGVAL(1)'>0)
. . S DGVAL(1)=$$FMTHL7^XLFDT($$NOW^XLFDT())
. ;
. ; seq 2 (required) Query Format Code
. I DGFLD[",2," D
. . S DGVAL(2)="R" ;always "R"ecord
. ;
. ; seq 3 (required) Query Priority
. I DGFLD[",3," D
. . S DGVAL(3)="I" ;always "I"mmediate
. ;
. ; seq 4 (required) Query ID
. I DGFLD[",4," D
. . S DGVAL(4)=DGQID
. ;
. ; seq 5 (optional) Deferred Response Type
. I DGFLD[",5," D
. . S DGVAL(5)=""
. ;
. ; seq 6 (optional) Deferred Response Date/Time
. I DGFLD[",6," D
. . S DGVAL(6)=""
. ;
. ; seq 7 (required) Quantity Limited Request
. I DGFLD[",7," D
. . S DGVAL(7,1,1)=10
. . S DGVAL(7,1,2)="RD" ;records
. ;
. ; seq 8 (required) Who Subject Filter
. I DGFLD[",8," D
. . S DGVAL(8,1,1)=DGWHO
. . S DGVAL(8,1,9,1)="USVHA"
. . S DGVAL(8,1,9,2)=""
. . S DGVAL(8,1,9,3)="L"
. ;
. ; seq 9 (required) What Subject Filter
. I DGFLD[",9," D
. . S DGVAL(9,1,1)="OTH"
. . S DGVAL(9,1,2)="Other"
. . S DGVAL(9,1,3)="HL0048"
. ;
. ; seq 10 (required) What Dept. Data Code
. I DGFLD[",10," D
. . S DGVAL(10,1,1)="PRFA"
. . S DGVAL(10,1,2)="Patient Record Flag Assignments"
. . S DGVAL(10,1,3)="L"
. ;
. ; seq 11 (optional) What Data Code Value Qual.
. I DGFLD[",11," D
. . S DGVAL(11)=""
. ;
. ; seq 12 (optional) Query Results Level
. I DGFLD[",12," D
. . S DGVAL(12)=""
. ;
. S DGRSLT=1
I 'DGRSLT K DGVAL
Q DGRSLT
DGPFHLQ1 ;ALB/RPM - PRF HL7 BUILD QRD SEGMENT ; 02/02/03
+1 ;;5.3;Registration;**425,1015**;Aug 13, 1993;Build 21
+2 ;
+3 ;
QRD(DGQID,DGWHO,DGFLD,DGHL) ;QRD HL7 segment API
+1 ;This function wraps the data retrieval and segment creation APIs and
+2 ;returns a formatted QRD segment.
+3 ;
+4 ; Input:
+5 ; DGQID - (required) Query ID (DFN)
+6 ; DGWHO - (required) Who Subject Filter (Integrated Control Number)
+7 ; DGFLD - (optional) List of comma-separated fields (sequence #'s)
+8 ; to include. Defaults to all required fields (1-4,7-10).
+9 ; DGHL - VistA HL7 environment array
+10 ;
+11 ; Output:
+12 ; Function Value - QRD segment on success, "" on failure
+13 ;
+14 NEW DGQRD
+15 NEW DGVAL
+16 ;
+17 SET DGQRD=""
+18 IF $GET(DGQID)>0
IF $GET(DGWHO)]""
Begin DoDot:1
+19 ;validate fields
SET DGFLD=$$CKSTR^DGPFHLUT("1,2,3,4,7,8,9,10",DGFLD)
+20 SET DGFLD=","_DGFLD_","
+21 IF $$QRDVAL(DGFLD,DGQID,DGWHO,.DGVAL)
Begin DoDot:2
+22 SET DGQRD=$$BLDSEG^DGPFHLUT("QRD",.DGVAL,.DGHL)
End DoDot:2
End DoDot:1
+23 QUIT DGQRD
+24 ;
QRDVAL(DGFLD,DGQID,DGWHO,DGVAL) ;build QRD value array
+1 ;
+2 ; Input:
+3 ; DGFLD - Fields string
+4 ; DGQID - Query ID (DFN)
+5 ; DGWHO - Who Subject filter (ICN)
+6 ;
+7 ; Output:
+8 ; Function Value - 1 on success, 0 on failure
+9 ; DGVAL - QRD field array [SUB1:field, SUB2:repetition,
+10 ; SUB3:component, SUB4:sub-component
+11 ;
+12 NEW DGRSLT
+13 ;
+14 SET DGRSLT=0
+15 IF $GET(DGQID)>0
IF $GET(DGWHO)]""
IF $GET(DGFLD)]""
Begin DoDot:1
+16 ;
+17 ; seq 1 (required) Query Date/Time
+18 IF DGFLD[",1,"
Begin DoDot:2
+19 SET DGVAL(1)=$$FMTHL7^XLFDT($$NOW^XLFDT())
End DoDot:2
IF (+DGVAL(1)'>0)
QUIT
+20 ;
+21 ; seq 2 (required) Query Format Code
+22 IF DGFLD[",2,"
Begin DoDot:2
+23 ;always "R"ecord
SET DGVAL(2)="R"
End DoDot:2
+24 ;
+25 ; seq 3 (required) Query Priority
+26 IF DGFLD[",3,"
Begin DoDot:2
+27 ;always "I"mmediate
SET DGVAL(3)="I"
End DoDot:2
+28 ;
+29 ; seq 4 (required) Query ID
+30 IF DGFLD[",4,"
Begin DoDot:2
+31 SET DGVAL(4)=DGQID
End DoDot:2
+32 ;
+33 ; seq 5 (optional) Deferred Response Type
+34 IF DGFLD[",5,"
Begin DoDot:2
+35 SET DGVAL(5)=""
End DoDot:2
+36 ;
+37 ; seq 6 (optional) Deferred Response Date/Time
+38 IF DGFLD[",6,"
Begin DoDot:2
+39 SET DGVAL(6)=""
End DoDot:2
+40 ;
+41 ; seq 7 (required) Quantity Limited Request
+42 IF DGFLD[",7,"
Begin DoDot:2
+43 SET DGVAL(7,1,1)=10
+44 ;records
SET DGVAL(7,1,2)="RD"
End DoDot:2
+45 ;
+46 ; seq 8 (required) Who Subject Filter
+47 IF DGFLD[",8,"
Begin DoDot:2
+48 SET DGVAL(8,1,1)=DGWHO
+49 SET DGVAL(8,1,9,1)="USVHA"
+50 SET DGVAL(8,1,9,2)=""
+51 SET DGVAL(8,1,9,3)="L"
End DoDot:2
+52 ;
+53 ; seq 9 (required) What Subject Filter
+54 IF DGFLD[",9,"
Begin DoDot:2
+55 SET DGVAL(9,1,1)="OTH"
+56 SET DGVAL(9,1,2)="Other"
+57 SET DGVAL(9,1,3)="HL0048"
End DoDot:2
+58 ;
+59 ; seq 10 (required) What Dept. Data Code
+60 IF DGFLD[",10,"
Begin DoDot:2
+61 SET DGVAL(10,1,1)="PRFA"
+62 SET DGVAL(10,1,2)="Patient Record Flag Assignments"
+63 SET DGVAL(10,1,3)="L"
End DoDot:2
+64 ;
+65 ; seq 11 (optional) What Data Code Value Qual.
+66 IF DGFLD[",11,"
Begin DoDot:2
+67 SET DGVAL(11)=""
End DoDot:2
+68 ;
+69 ; seq 12 (optional) Query Results Level
+70 IF DGFLD[",12,"
Begin DoDot:2
+71 SET DGVAL(12)=""
End DoDot:2
+72 ;
+73 SET DGRSLT=1
End DoDot:1
+74 IF 'DGRSLT
KILL DGVAL
+75 QUIT DGRSLT