1 | VAFHLZRD ;ALB/KCL - CREATE HL7 RATED DISABILITIES (ZRD) SEGMENTS ; 13-SEPTEMBER-1997
|
---|
2 | ;;5.3;Registration;**122,144**;Aug 13,1993
|
---|
3 | ;
|
---|
4 | ;
|
---|
5 | ; This generic function creates HL7 VA-Specific Rated Disabilities
|
---|
6 | ; (ZRD) segments for a patient.
|
---|
7 | ;
|
---|
8 | EN(DFN,VAFSTR,VAFHLQ,VAFHLFS,VAFARRY) ;--
|
---|
9 | ; Entry point to return HL7 Rated Disabilities (ZRD) segments.
|
---|
10 | ;
|
---|
11 | ; Input:
|
---|
12 | ; DFN - internal entry number of Patient (#2) file
|
---|
13 | ; VAFSTR - (optional) string of fields requested, separated
|
---|
14 | ; by commas. If not passed return all data fields.
|
---|
15 | ; VAFHLQ - (optional) HL7 null variable.
|
---|
16 | ; VAFHLS - (optional) HL7 field separator.
|
---|
17 | ; VAFARRY - (optional) user-supplied array name which will
|
---|
18 | ; hold HL7 ZRD segments. Otherwise, ^TMP("VAFZRD",$J
|
---|
19 | ; will be used.
|
---|
20 | ;
|
---|
21 | ; Output:
|
---|
22 | ; Array containing the HL7 ZRD segments.
|
---|
23 | ;
|
---|
24 | N VAFINDX,VAFSUB,VAFNODE,VAFY,X
|
---|
25 | S VAFARRY=$G(VAFARRY)
|
---|
26 | ;
|
---|
27 | ; if VAFHLQ or VAFHLFS not passed, use default HL7 variables
|
---|
28 | S VAFHLQ=$S($D(VAFHLQ):VAFHLQ,1:$G(HLQ)),VAFHLFS=$S($D(VAFHLFS):VAFHLFS,1:$G(HLFS))
|
---|
29 | ;
|
---|
30 | ; if VAFARRY not defined, use ^TMP("VAFZRD",$J)
|
---|
31 | S:(VAFARRY="") VAFARRY="^TMP(""VAFZRD"",$J)"
|
---|
32 | ;
|
---|
33 | ; if DFN not passed, exit
|
---|
34 | I '$G(DFN) S @VAFARRY@(1,0)="ZRD"_VAFHLFS_1 G ENQ
|
---|
35 | ;
|
---|
36 | ; if VAFSTR not passed, return all data fields
|
---|
37 | I $G(VAFSTR)']"" S VAFSTR="1,2,3,4"
|
---|
38 | S (VAFINDX,VAFSUB)=0,VAFSTR=","_VAFSTR_","
|
---|
39 | ;
|
---|
40 | ; get all rated disabilities for patient
|
---|
41 | F S VAFSUB=$O(^DPT(DFN,.372,VAFSUB)) Q:'VAFSUB D
|
---|
42 | .;
|
---|
43 | .; - get rated disabilities node
|
---|
44 | .S VAFNODE=$G(^DPT(DFN,.372,+VAFSUB,0))
|
---|
45 | .;
|
---|
46 | .; - build array of ZRD segments
|
---|
47 | .D BUILD
|
---|
48 | ;
|
---|
49 | ; if no rated disabilities, build ZRD
|
---|
50 | I 'VAFINDX D
|
---|
51 | .S @VAFARRY@(1,0)="ZRD"_VAFHLFS_1_VAFHLFS_VAFHLFS_VAFHLFS
|
---|
52 | ;
|
---|
53 | ENQ Q
|
---|
54 | ;
|
---|
55 | ;
|
---|
56 | BUILD ; Build array of ZRD segments
|
---|
57 | N DCNODE ;0 node of Disability Condition
|
---|
58 | N DXCODE
|
---|
59 | N NAME
|
---|
60 | ;
|
---|
61 | ;if the Rated Disability node doesn't point to a Disability Condition,
|
---|
62 | ;then the data is meaningless and should not be sent
|
---|
63 | Q:'$P(VAFNODE,"^")
|
---|
64 | S DCNODE=$G(^DIC(31,$P(VAFNODE,"^"),0))
|
---|
65 | S DXCODE=$P(DCNODE,"^",3)
|
---|
66 | Q:DXCODE=""
|
---|
67 | S NAME=$P(DCNODE,"^",1)
|
---|
68 | ;
|
---|
69 | S VAFINDX=VAFINDX+1,$P(VAFY,"^",4)=""
|
---|
70 | S $P(VAFY,VAFHLFS,1)=VAFINDX ; Set ID
|
---|
71 | I VAFSTR[",2," S $P(VAFY,VAFHLFS,2)=DXCODE_$E($G(HLECH))_NAME ;Disabilty Condition
|
---|
72 | I VAFSTR[",3," S $P(VAFY,VAFHLFS,3)=$S($P(VAFNODE,"^",2)]"":$P(VAFNODE,"^",2),1:VAFHLQ) ; Disability %
|
---|
73 | I VAFSTR[",4," S $P(VAFY,VAFHLFS,4)=$S($P(VAFNODE,"^",3)]"":$P(VAFNODE,"^",3),1:VAFHLQ) ; Service Connected?
|
---|
74 | ;
|
---|
75 | ; set segment into array
|
---|
76 | S @VAFARRY@(VAFINDX,0)="ZRD"_VAFHLFS_$G(VAFY)
|
---|
77 | Q
|
---|