SRHLVUO2 ;BIR/DLR - Surgery Interface (Cont.) Utilities for building Outgoing HL7 Segments ; [ 06/23/99   7:14 AM ]
 ;;3.0; Surgery ;**41,88,127**;24 Jun 93
 ; Per VHA Directive 10-93-142, this routine SHOULD NOT be modified.
ZIS(SRI) ;sets ^TMP("HLS",$J,HLSDT,I) global for sending ZIS Appointment Information - Service Segment(s)
 N X,XX,SRJ,SRM,SRP,SRREP,SRX,ZIS
 S X=0 F  S X=$O(^SRF(CASE,13,X)) Q:'X  I $G(^(X,2))'="" D
 .S ZIS(1)=$P(^SRF(CASE,13,X,2),U) I ZIS(1)'="" S SRX=$$CPT^ICPTCOD(ZIS(1),$P($G(^SRF(CASE,0)),U,9)),ZIS(1)=$P(SRX,U,2)_HLCOMP_$P(SRX,U,3)_HLCOMP_"C4",ZIS(5)=$S($P(^SRF(CASE,13,X,0),U,3)="Y":"CONFIRMED",1:"PENDING")
 .K ZIS(6) S (SRJ,SRREP)=0 F  S SRJ=$O(^SRF(CASE,13,X,"MOD",SRJ)) Q:'SRJ  S SRP=$P(^SRF(CASE,13,X,"MOD",SRJ,0),U),SRM=$$MOD^ICPTMOD(SRP,"I",$P($G(^SRF(CASE,0)),U,9)) D
 ..S ZIS(6)=$G(ZIS(6))_$S(SRREP:HLREP,1:"")_$P(SRM,U,2)_HLCOMP_$P(SRM,U,3)_HLCOMP,SRREP=1
 .S ^TMP("HLS",$J,HLSDT,SRI)="ZIS"_HLFS F XX=1:1:5 S ^TMP("HLS",$J,HLSDT,SRI)=^TMP("HLS",$J,HLSDT,SRI)_$G(ZIS(XX))_$S(XX=5:"",1:HLFS)
 .I $L($G(ZIS(6))) S ^TMP("HLS",$J,HLSDT,SRI)=^TMP("HLS",$J,HLSDT,SRI)_HLFS_ZIS(6)
 .S SRI=SRI+1
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSRHLVUO2   1146     printed  Sep 23, 2025@20:16:03                                                                                                                                                                                                    Page 2
SRHLVUO2  ;BIR/DLR - Surgery Interface (Cont.) Utilities for building Outgoing HL7 Segments ; [ 06/23/99   7:14 AM ]
 +1       ;;3.0; Surgery ;**41,88,127**;24 Jun 93
 +2       ; Per VHA Directive 10-93-142, this routine SHOULD NOT be modified.
ZIS(SRI)  ;sets ^TMP("HLS",$J,HLSDT,I) global for sending ZIS Appointment Information - Service Segment(s)
 +1        NEW X,XX,SRJ,SRM,SRP,SRREP,SRX,ZIS
 +2        SET X=0
           FOR 
               SET X=$ORDER(^SRF(CASE,13,X))
               if 'X
                   QUIT 
               IF $GET(^(X,2))'=""
                   Begin DoDot:1
 +3                    SET ZIS(1)=$PIECE(^SRF(CASE,13,X,2),U)
                       IF ZIS(1)'=""
                           SET SRX=$$CPT^ICPTCOD(ZIS(1),$PIECE($GET(^SRF(CASE,0)),U,9))
                           SET ZIS(1)=$PIECE(SRX,U,2)_HLCOMP_$PIECE(SRX,U,3)_HLCOMP_"C4"
                           SET ZIS(5)=$SELECT($PIECE(^SRF(CASE,13,X,0),U,3)="Y":"CONFIRMED",1:"PENDING")
 +4                    KILL ZIS(6)
                       SET (SRJ,SRREP)=0
                       FOR 
                           SET SRJ=$ORDER(^SRF(CASE,13,X,"MOD",SRJ))
                           if 'SRJ
                               QUIT 
                           SET SRP=$PIECE(^SRF(CASE,13,X,"MOD",SRJ,0),U)
                           SET SRM=$$MOD^ICPTMOD(SRP,"I",$PIECE($GET(^SRF(CASE,0)),U,9))
                           Begin DoDot:2
 +5                            SET ZIS(6)=$GET(ZIS(6))_$SELECT(SRREP:HLREP,1:"")_$PIECE(SRM,U,2)_HLCOMP_$PIECE(SRM,U,3)_HLCOMP
                               SET SRREP=1
                           End DoDot:2
 +6                    SET ^TMP("HLS",$JOB,HLSDT,SRI)="ZIS"_HLFS
                       FOR XX=1:1:5
                           SET ^TMP("HLS",$JOB,HLSDT,SRI)=^TMP("HLS",$JOB,HLSDT,SRI)_$GET(ZIS(XX))_$SELECT(XX=5:"",1:HLFS)
 +7                    IF $LENGTH($GET(ZIS(6)))
                           SET ^TMP("HLS",$JOB,HLSDT,SRI)=^TMP("HLS",$JOB,HLSDT,SRI)_HLFS_ZIS(6)
 +8                    SET SRI=SRI+1
                   End DoDot:1
 +9        QUIT