SCMSVZCL ;ALB/ESD HL7 ZCL Segment Validation ; 11/9/99 2:28pm
;;5.3;Scheduling;**44,66,180,239,1015**;Aug 13, 1993;Build 21
;
;
EN(ZCLARRY,HLQ,HLFS,VALERR,DFN) ;
; Entry point to return the HL7 ZCL (Outpatient Classification) validation segment
;
; Input: ZCLARRY - Array of ZCL Segments
; HLQ - HL7 null variable
; HLFS - HL7 field separator
; VALERR - Array to put the errors in
; DFN - The patient's DFN
;
;
; Output: 1 if ZCL passed validity check
; Error message if ZCL failed validity check in form of:
; -1^"xxx failed validity check" (xxx=element in ZCL segment)
;
;
N I,J,MSG,VALID,X,Z,ZCLSEG,SEG,CNT,DATA,SCSETID,VAR,SCCLASS,VALUE,TYPE
S VALID=1,MSG="-1^Element in ZCL segment failed validity check"
S I=0,J="",ZCLARRY=$G(ZCLARRY),SEG="ZCL",(SCSETID,CNT)=1
S:(ZCLARRY="") ZCLARRY="^TMP(""VAFHL"",$J,""CLASS"")"
;
;- Validate classification fields
F S I=+$O(@ZCLARRY@(I)) Q:'I F S J=$O(@ZCLARRY@(I,J)) Q:J="" D
. S VALID=1
. S ZCLSEG=$G(@ZCLARRY@(I,J))
. S ZCLSEG=$$CONVERT^SCMSVUT0(ZCLSEG,HLFS,HLQ)
. D VALIDATE^SCMSVUT0(SEG,ZCLSEG,"0012",VALERR,.CNT)
. I $G(@VALERR@(SEG,CNT-1))="0012" Q
. S TYPE=$P(ZCLSEG,HLFS,3)
. F Z=1,2,3,32,4,41 DO
.. S DATA=$P(ZCLSEG,HLFS,$E(Z,1,1))
.. ;
.. ;MST check for type 5 encounter 1
.. I (Z=32),DATA'=5 Q
.. I (Z=32),DATA=5 S VALUE=$P(ZCLSEG,HLFS,4) Q:VALUE'=1
.. ;
.. D VALIDATE^SCMSVUT0(SEG,DATA,$P($T(@(Z)),";",3),VALERR,.CNT)
.. K VALUE
.. Q
. Q
;
I '$D(VALID) D VALIDATE^SCMSVUT0(SEG,"","0012",VALERR,.CNT)
;
ENQ Q $S($D(@VALERR@(SEG)):MSG,1:1)
;
;
;- ZCL data elements validated
;
1 ;;0035;HL7 SEGMENT NAME
2 ;;9150;HL7 SEQUENTIAL NUMBER (SET ID)
3 ;;9000;CLASSIFICATION TYPE
32 ;;9030;MST status inconsistent with classification type
4 ;;9050;Answer to classification questions missing
41 ;;9020;Veteran status inconsistent with classification type
SCMSVZCL ;ALB/ESD HL7 ZCL Segment Validation ; 11/9/99 2:28pm
+1 ;;5.3;Scheduling;**44,66,180,239,1015**;Aug 13, 1993;Build 21
+2 ;
+3 ;
EN(ZCLARRY,HLQ,HLFS,VALERR,DFN) ;
+1 ; Entry point to return the HL7 ZCL (Outpatient Classification) validation segment
+2 ;
+3 ; Input: ZCLARRY - Array of ZCL Segments
+4 ; HLQ - HL7 null variable
+5 ; HLFS - HL7 field separator
+6 ; VALERR - Array to put the errors in
+7 ; DFN - The patient's DFN
+8 ;
+9 ;
+10 ; Output: 1 if ZCL passed validity check
+11 ; Error message if ZCL failed validity check in form of:
+12 ; -1^"xxx failed validity check" (xxx=element in ZCL segment)
+13 ;
+14 ;
+15 NEW I,J,MSG,VALID,X,Z,ZCLSEG,SEG,CNT,DATA,SCSETID,VAR,SCCLASS,VALUE,TYPE
+16 SET VALID=1
SET MSG="-1^Element in ZCL segment failed validity check"
+17 SET I=0
SET J=""
SET ZCLARRY=$GET(ZCLARRY)
SET SEG="ZCL"
SET (SCSETID,CNT)=1
+18 IF (ZCLARRY="")
SET ZCLARRY="^TMP(""VAFHL"",$J,""CLASS"")"
+19 ;
+20 ;- Validate classification fields
+21 FOR
SET I=+$ORDER(@ZCLARRY@(I))
IF 'I
QUIT
FOR
SET J=$ORDER(@ZCLARRY@(I,J))
IF J=""
QUIT
Begin DoDot:1
+22 SET VALID=1
+23 SET ZCLSEG=$GET(@ZCLARRY@(I,J))
+24 SET ZCLSEG=$$CONVERT^SCMSVUT0(ZCLSEG,HLFS,HLQ)
+25 DO VALIDATE^SCMSVUT0(SEG,ZCLSEG,"0012",VALERR,.CNT)
+26 IF $GET(@VALERR@(SEG,CNT-1))="0012"
QUIT
+27 SET TYPE=$PIECE(ZCLSEG,HLFS,3)
+28 FOR Z=1,2,3,32,4,41
Begin DoDot:2
+29 SET DATA=$PIECE(ZCLSEG,HLFS,$EXTRACT(Z,1,1))
+30 ;
+31 ;MST check for type 5 encounter 1
+32 IF (Z=32)
IF DATA'=5
QUIT
+33 IF (Z=32)
IF DATA=5
SET VALUE=$PIECE(ZCLSEG,HLFS,4)
IF VALUE'=1
QUIT
+34 ;
+35 DO VALIDATE^SCMSVUT0(SEG,DATA,$PIECE($TEXT(@(Z)),";",3),VALERR,.CNT)
+36 KILL VALUE
+37 QUIT
End DoDot:2
+38 QUIT
End DoDot:1
+39 ;
+40 IF '$DATA(VALID)
DO VALIDATE^SCMSVUT0(SEG,"","0012",VALERR,.CNT)
+41 ;
ENQ QUIT $SELECT($DATA(@VALERR@(SEG)):MSG,1:1)
+1 ;
+2 ;
+3 ;- ZCL data elements validated
+4 ;
1 ;;0035;HL7 SEGMENT NAME
2 ;;9150;HL7 SEQUENTIAL NUMBER (SET ID)
3 ;;9000;CLASSIFICATION TYPE
32 ;;9030;MST status inconsistent with classification type
4 ;;9050;Answer to classification questions missing
41 ;;9020;Veteran status inconsistent with classification type