[613] | 1 | VAFHLZSC ;ALB/ESD - Create generic HL7 ZSC Segment ; 06-MAY-1996
|
---|
| 2 | ;;5.3;Registration;**94**;Aug 13, 1993
|
---|
| 3 | ;
|
---|
| 4 | ; This function will create VA-specific ZSC segment(s) for a
|
---|
| 5 | ; given outpatient encounter. The ZSC segment is designed to transfer
|
---|
| 6 | ; service indicator (stop code) information pertaining to a patient
|
---|
| 7 | ; visit.
|
---|
| 8 | ;
|
---|
| 9 | EN(VAFENC,VAFSTR,VAFHLQ,VAFHLFS,VAFARRY) ; Entry point to return the HL7 ZSC segment
|
---|
| 10 | ;
|
---|
| 11 | ; Input: VAFENC - IEN of the Outpatient Encounter (#409.68) file.
|
---|
| 12 | ; VAFSTR - String of fields requested separated by commas.
|
---|
| 13 | ; VAFHLQ - Optional HL7 null variable. If not there, use
|
---|
| 14 | ; default HL7 variable.
|
---|
| 15 | ; VAFHLFS - Optional HL7 field separator. If not there, use
|
---|
| 16 | ; default HL7 variable.
|
---|
| 17 | ; VAFARRY - Optional user-supplied array name which will hold HL7 ZSC segments
|
---|
| 18 | ;
|
---|
| 19 | ; Output: Array of HL7 ZSC segments
|
---|
| 20 | ;
|
---|
| 21 | ;
|
---|
| 22 | N I,VAFIDX,VAFNODE,VAFSCODE,VAFY
|
---|
| 23 | S VAFARRY=$G(VAFARRY)
|
---|
| 24 | ;
|
---|
| 25 | ; - If VAFARRY not defined, use ^TMP("VAFHL",$J,"STOPCODE")
|
---|
| 26 | S:(VAFARRY="") VAFARRY="^TMP(""VAFHL"",$J,""STOPCODE"")"
|
---|
| 27 | ;
|
---|
| 28 | ; - If VAFHLQ or VAFHLFS aren't passed in, use default HL7 variables
|
---|
| 29 | S VAFHLQ=$S($D(VAFHLQ):VAFHLQ,1:$G(HLQ)),VAFHLFS=$S($D(VAFHLFS):VAFHLFS,1:$G(HLFS))
|
---|
| 30 | I '$G(VAFENC)!($G(VAFSTR)']"") S @VAFARRY@(1,0)="ZSC"_VAFHLFS_1 G ENQ
|
---|
| 31 | S VAFIDX=0,VAFSTR=","_VAFSTR_","
|
---|
| 32 | ;
|
---|
| 33 | ; - Get stop codes for encounter
|
---|
| 34 | D SCODE^SCDXUTL0(VAFENC,"VAFSCODE")
|
---|
| 35 | ;
|
---|
| 36 | ; - Set stop code array to 0 if no stop codes to loop thru once
|
---|
| 37 | I '$G(VAFSCODE(0)) S VAFSCODE(1)=0
|
---|
| 38 | ;
|
---|
| 39 | ALL ; - All stop codes for encounter
|
---|
| 40 | F I=0:0 S I=$O(VAFSCODE(I)) Q:I="" D
|
---|
| 41 | .;
|
---|
| 42 | .S VAFNODE=$G(^DIC(40.7,+VAFSCODE(I),0))
|
---|
| 43 | .S:($P(VAFNODE,"^",1)="") $P(VAFNODE,"^",1)=VAFHLQ
|
---|
| 44 | .S:($P(VAFNODE,"^",2)="") $P(VAFNODE,"^",2)=VAFHLQ
|
---|
| 45 | .;
|
---|
| 46 | .; - build array of HL7 (ZSC) segments
|
---|
| 47 | .D BUILD
|
---|
| 48 | ;
|
---|
| 49 | ENQ Q
|
---|
| 50 | ;
|
---|
| 51 | ;
|
---|
| 52 | BUILD ; - Build array of HL7 (ZSC) segments
|
---|
| 53 | S $P(VAFY,VAFHLFS,3)="",VAFIDX=VAFIDX+1
|
---|
| 54 | ;
|
---|
| 55 | ; - Sequential number (required field)
|
---|
| 56 | S $P(VAFY,VAFHLFS,1)=VAFIDX
|
---|
| 57 | ;
|
---|
| 58 | ; - Build HL7 (ZSC) segment fields
|
---|
| 59 | I VAFSTR[",2," S $P(VAFY,VAFHLFS,2)=$P(VAFNODE,"^",2) ; Stop Code
|
---|
| 60 | I VAFSTR[",3," S $P(VAFY,VAFHLFS,3)=$P(VAFNODE,"^",1) ; Name
|
---|
| 61 | ;
|
---|
| 62 | ; - Set all stop codes into array
|
---|
| 63 | S @VAFARRY@(VAFIDX,0)="ZSC"_VAFHLFS_$G(VAFY)
|
---|
| 64 | Q
|
---|