VAFHLZSC ;ALB/ESD - Create generic HL7 ZSC Segment ; 06-MAY-1996
;;5.3;Registration;**94**;Aug 13, 1993
;
; This function will create VA-specific ZSC segment(s) for a
; given outpatient encounter. The ZSC segment is designed to transfer
; service indicator (stop code) information pertaining to a patient
; visit.
;
EN(VAFENC,VAFSTR,VAFHLQ,VAFHLFS,VAFARRY) ; Entry point to return the HL7 ZSC segment
;
; Input: VAFENC - IEN of the Outpatient Encounter (#409.68) file.
; VAFSTR - String of fields requested separated by commas.
; VAFHLQ - Optional HL7 null variable. If not there, use
; default HL7 variable.
; VAFHLFS - Optional HL7 field separator. If not there, use
; default HL7 variable.
; VAFARRY - Optional user-supplied array name which will hold HL7 ZSC segments
;
; Output: Array of HL7 ZSC segments
;
;
N I,VAFIDX,VAFNODE,VAFSCODE,VAFY
S VAFARRY=$G(VAFARRY)
;
; - If VAFARRY not defined, use ^TMP("VAFHL",$J,"STOPCODE")
S:(VAFARRY="") VAFARRY="^TMP(""VAFHL"",$J,""STOPCODE"")"
;
; - If VAFHLQ or VAFHLFS aren't passed in, use default HL7 variables
S VAFHLQ=$S($D(VAFHLQ):VAFHLQ,1:$G(HLQ)),VAFHLFS=$S($D(VAFHLFS):VAFHLFS,1:$G(HLFS))
I '$G(VAFENC)!($G(VAFSTR)']"") S @VAFARRY@(1,0)="ZSC"_VAFHLFS_1 G ENQ
S VAFIDX=0,VAFSTR=","_VAFSTR_","
;
; - Get stop codes for encounter
D SCODE^SCDXUTL0(VAFENC,"VAFSCODE")
;
; - Set stop code array to 0 if no stop codes to loop thru once
I '$G(VAFSCODE(0)) S VAFSCODE(1)=0
;
ALL ; - All stop codes for encounter
F I=0:0 S I=$O(VAFSCODE(I)) Q:I="" D
.;
.S VAFNODE=$G(^DIC(40.7,+VAFSCODE(I),0))
.S:($P(VAFNODE,"^",1)="") $P(VAFNODE,"^",1)=VAFHLQ
.S:($P(VAFNODE,"^",2)="") $P(VAFNODE,"^",2)=VAFHLQ
.;
.; - build array of HL7 (ZSC) segments
.D BUILD
;
ENQ Q
;
;
BUILD ; - Build array of HL7 (ZSC) segments
S $P(VAFY,VAFHLFS,3)="",VAFIDX=VAFIDX+1
;
; - Sequential number (required field)
S $P(VAFY,VAFHLFS,1)=VAFIDX
;
; - Build HL7 (ZSC) segment fields
I VAFSTR[",2," S $P(VAFY,VAFHLFS,2)=$P(VAFNODE,"^",2) ; Stop Code
I VAFSTR[",3," S $P(VAFY,VAFHLFS,3)=$P(VAFNODE,"^",1) ; Name
;
; - Set all stop codes into array
S @VAFARRY@(VAFIDX,0)="ZSC"_VAFHLFS_$G(VAFY)
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HVAFHLZSC 2315 printed Oct 16, 2024@19:04:09 Page 2
VAFHLZSC ;ALB/ESD - Create generic HL7 ZSC Segment ; 06-MAY-1996
+1 ;;5.3;Registration;**94**;Aug 13, 1993
+2 ;
+3 ; This function will create VA-specific ZSC segment(s) for a
+4 ; given outpatient encounter. The ZSC segment is designed to transfer
+5 ; service indicator (stop code) information pertaining to a patient
+6 ; visit.
+7 ;
EN(VAFENC,VAFSTR,VAFHLQ,VAFHLFS,VAFARRY) ; Entry point to return the HL7 ZSC segment
+1 ;
+2 ; Input: VAFENC - IEN of the Outpatient Encounter (#409.68) file.
+3 ; VAFSTR - String of fields requested separated by commas.
+4 ; VAFHLQ - Optional HL7 null variable. If not there, use
+5 ; default HL7 variable.
+6 ; VAFHLFS - Optional HL7 field separator. If not there, use
+7 ; default HL7 variable.
+8 ; VAFARRY - Optional user-supplied array name which will hold HL7 ZSC segments
+9 ;
+10 ; Output: Array of HL7 ZSC segments
+11 ;
+12 ;
+13 NEW I,VAFIDX,VAFNODE,VAFSCODE,VAFY
+14 SET VAFARRY=$GET(VAFARRY)
+15 ;
+16 ; - If VAFARRY not defined, use ^TMP("VAFHL",$J,"STOPCODE")
+17 if (VAFARRY="")
SET VAFARRY="^TMP(""VAFHL"",$J,""STOPCODE"")"
+18 ;
+19 ; - If VAFHLQ or VAFHLFS aren't passed in, use default HL7 variables
+20 SET VAFHLQ=$SELECT($DATA(VAFHLQ):VAFHLQ,1:$GET(HLQ))
SET VAFHLFS=$SELECT($DATA(VAFHLFS):VAFHLFS,1:$GET(HLFS))
+21 IF '$GET(VAFENC)!($GET(VAFSTR)']"")
SET @VAFARRY@(1,0)="ZSC"_VAFHLFS_1
GOTO ENQ
+22 SET VAFIDX=0
SET VAFSTR=","_VAFSTR_","
+23 ;
+24 ; - Get stop codes for encounter
+25 DO SCODE^SCDXUTL0(VAFENC,"VAFSCODE")
+26 ;
+27 ; - Set stop code array to 0 if no stop codes to loop thru once
+28 IF '$GET(VAFSCODE(0))
SET VAFSCODE(1)=0
+29 ;
ALL ; - All stop codes for encounter
+1 FOR I=0:0
SET I=$ORDER(VAFSCODE(I))
if I=""
QUIT
Begin DoDot:1
+2 ;
+3 SET VAFNODE=$GET(^DIC(40.7,+VAFSCODE(I),0))
+4 if ($PIECE(VAFNODE,"^",1)="")
SET $PIECE(VAFNODE,"^",1)=VAFHLQ
+5 if ($PIECE(VAFNODE,"^",2)="")
SET $PIECE(VAFNODE,"^",2)=VAFHLQ
+6 ;
+7 ; - build array of HL7 (ZSC) segments
+8 DO BUILD
End DoDot:1
+9 ;
ENQ QUIT
+1 ;
+2 ;
BUILD ; - Build array of HL7 (ZSC) segments
+1 SET $PIECE(VAFY,VAFHLFS,3)=""
SET VAFIDX=VAFIDX+1
+2 ;
+3 ; - Sequential number (required field)
+4 SET $PIECE(VAFY,VAFHLFS,1)=VAFIDX
+5 ;
+6 ; - Build HL7 (ZSC) segment fields
+7 ; Stop Code
IF VAFSTR[",2,"
SET $PIECE(VAFY,VAFHLFS,2)=$PIECE(VAFNODE,"^",2)
+8 ; Name
IF VAFSTR[",3,"
SET $PIECE(VAFY,VAFHLFS,3)=$PIECE(VAFNODE,"^",1)
+9 ;
+10 ; - Set all stop codes into array
+11 SET @VAFARRY@(VAFIDX,0)="ZSC"_VAFHLFS_$GET(VAFY)
+12 QUIT