SCCVCST5 ;ALB/TMP - Scheduling Conversion Template Utilities - CST; APR 20, 1998
;;5.3;Scheduling;**211**;Aug 13, 1993
;
VAL1(SCCVEVT,SCFILE,SCCVDA,SCMULT) ;Validate that entry selected can be converted
;
N OK,DATA,SCERR,SCCLN,ENC,SCF
S OK=0,DATA=$G(@SCFILE@(SCCVDA,0))
S SCF=SCFILE
;
I DATA="" S SCERR=1 G VAL1Q
;
I SCFILE["SCE" D G:$G(SCERR)!(SCF["SDV") VAL1Q
. ; Encounter - change SCF,SCCVDA,DATA for enctr type
. I DATA>SCCVACRP S SCERR=2 Q ;Date must be before 10-1-96
. I SCCVEVT=1,$P(DATA,U,5) S SCERR=3 Q ;Can't already have a visit
. I SCCVEVT=2,'$P($G(^SCE(SCCVDA,"CNV")),U,4) S SCERR=8 Q ;Must be converted to reconvert
. I $P(DATA,U,6)!($P(DATA,U,8)>3) S SCERR=4 Q ;Can't convert a child encounter
. S SCF=$$SETFL^SCCVCST3($P(DATA,U,8),SCCVDFN)
. I SCF["SDV" S OK=1 Q ;No further checks needed for A/E
. S SCCVDA=+DATA
. S:SCF["""DIS""" SCCVDA=9999999-SCCVDA
. S DATA=$G(@SCF@(SCCVDA,0))
. S:DATA="" SCERR=1
;
I SCF["""DIS""" D G VAL1Q ; Disposition
. I SCCVEVT=2 S ENC=$P(DATA,U,18) D Q
.. I '$P(DATA,U,19)!'$P($G(^SCE(ENC,"CNV")),U,4) S SCERR=8 Q ;Must be converted to reconvert
.. S OK=1
. ;
. I SCCVEVT=1,$P(DATA,U,18),$P($G(^SCE(+$P(DATA,U,18),0)),U,5) S SCERR=3 Q
. IF SCCVEVT=1,$$REQ^SDM1A(+DATA)="CO",'$P($G(^SCE(+$P(DATA,U,18),0)),U,7) S SCERR=9 Q ; Must be checked out
. I $P(DATA,U,2)=2 S SCERR=5 Q ;Must be dispositioned properly
. S OK=1
;
I SCF["""S""" D G VAL1Q ; Appt
. I SCCVEVT=2 S ENC=+$P(DATA,U,20) D Q
.. I '$P(DATA,U,23)!'$P($G(^SCE(ENC,"CNV")),U,4) S SCERR=8 Q ;Must be converted to reconvert
.. S OK=1
. ;
. I SCCVEVT=1,$P(DATA,U,20),$P($G(^SCE(+$P(DATA,U,20),0)),U,5) S SCERR=3 Q
. IF SCCVEVT=1,$$REQ^SDM1A(SCCVDA)="CO",'$P($G(^SCE(+$P(DATA,U,20),0)),U,7) S SCERR=9 Q ; Must be checked out
. I $P(DATA,U,2)'="",$P(DATA,U,2)'="I",$P(DATA,U,2)'="NT" S SCERR=6 Q ; Can't be 'unfinished' status
. I $P($G(^SC(+DATA,0)),U,3)'="C" S SCERR=7 Q ;Must be clinic
. S OK=1
;
I SCF["SDV",SCF=SCFILE D G VAL1Q ; Full standalone add/edit
. N SCCS,DATA1,STAT
. S SCCS=0 F S SCCS=$O(@SCF@(SCCVDA,"CS",SCCS)) Q:'SCCS S DATA1=$G(^(SCCS,0)) W "." D Q:OK
.. S ENC=+$P(DATA1,U,8)
.. ; In 'CS' nodes at least one entry must:
.. ; - be a non-child encounter (error 4)
.. ; - have no encounter or no visit if converting (error 3)
.. ; - have already been converted if reconverting (error 8)
.. ; - must be checked out if requred (error 9)
.. ;
.. S STAT=0
.. IF 'STAT,$P($G(^SCE(ENC,0)),U,6) S STAT=4 ; -- not child check
.. ;
.. IF 'STAT,SCCVEVT=1 D
... IF 'ENC Q ; -- no encounter check
... IF $P($G(^SCE(ENC,0)),U,5) S STAT=3 Q ; -- no visit check
.. ;
.. IF 'STAT,SCCVEVT'=1 D
... IF '$P($G(^SCE(ENC,"CNV")),U,4)!'$P(DATA1,U,9) S STAT=8 ; -- must be already converted check
.. ;
.. IF 'STAT,$$REQ^SDM1A(SCCVDA)="CO",'$P($G(^SCE(+ENC,0)),U,7) S STAT=9 ; -- must be checked out check
.. ;
.. I 'STAT K SCERR S OK=1 Q ; -- at least one node passes
.. S SCERR(STAT)=""
;
VAL1Q I $G(SCMULT) K SCERR
I $D(SCERR) D DISPERR^SCCVCST4(.SCERR,SCF) S OK=0
Q OK
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSCCVCST5 3196 printed Dec 13, 2024@02:38:33 Page 2
SCCVCST5 ;ALB/TMP - Scheduling Conversion Template Utilities - CST; APR 20, 1998
+1 ;;5.3;Scheduling;**211**;Aug 13, 1993
+2 ;
VAL1(SCCVEVT,SCFILE,SCCVDA,SCMULT) ;Validate that entry selected can be converted
+1 ;
+2 NEW OK,DATA,SCERR,SCCLN,ENC,SCF
+3 SET OK=0
SET DATA=$GET(@SCFILE@(SCCVDA,0))
+4 SET SCF=SCFILE
+5 ;
+6 IF DATA=""
SET SCERR=1
GOTO VAL1Q
+7 ;
+8 IF SCFILE["SCE"
Begin DoDot:1
+9 ; Encounter - change SCF,SCCVDA,DATA for enctr type
+10 ;Date must be before 10-1-96
IF DATA>SCCVACRP
SET SCERR=2
QUIT
+11 ;Can't already have a visit
IF SCCVEVT=1
IF $PIECE(DATA,U,5)
SET SCERR=3
QUIT
+12 ;Must be converted to reconvert
IF SCCVEVT=2
IF '$PIECE($GET(^SCE(SCCVDA,"CNV")),U,4)
SET SCERR=8
QUIT
+13 ;Can't convert a child encounter
IF $PIECE(DATA,U,6)!($PIECE(DATA,U,8)>3)
SET SCERR=4
QUIT
+14 SET SCF=$$SETFL^SCCVCST3($PIECE(DATA,U,8),SCCVDFN)
+15 ;No further checks needed for A/E
IF SCF["SDV"
SET OK=1
QUIT
+16 SET SCCVDA=+DATA
+17 if SCF["""DIS"""
SET SCCVDA=9999999-SCCVDA
+18 SET DATA=$GET(@SCF@(SCCVDA,0))
+19 if DATA=""
SET SCERR=1
End DoDot:1
if $GET(SCERR)!(SCF["SDV")
GOTO VAL1Q
+20 ;
+21 ; Disposition
IF SCF["""DIS"""
Begin DoDot:1
+22 IF SCCVEVT=2
SET ENC=$PIECE(DATA,U,18)
Begin DoDot:2
+23 ;Must be converted to reconvert
IF '$PIECE(DATA,U,19)!'$PIECE($GET(^SCE(ENC,"CNV")),U,4)
SET SCERR=8
QUIT
+24 SET OK=1
End DoDot:2
QUIT
+25 ;
+26 IF SCCVEVT=1
IF $PIECE(DATA,U,18)
IF $PIECE($GET(^SCE(+$PIECE(DATA,U,18),0)),U,5)
SET SCERR=3
QUIT
+27 ; Must be checked out
IF SCCVEVT=1
IF $$REQ^SDM1A(+DATA)="CO"
IF '$PIECE($GET(^SCE(+$PIECE(DATA,U,18),0)),U,7)
SET SCERR=9
QUIT
+28 ;Must be dispositioned properly
IF $PIECE(DATA,U,2)=2
SET SCERR=5
QUIT
+29 SET OK=1
End DoDot:1
GOTO VAL1Q
+30 ;
+31 ; Appt
IF SCF["""S"""
Begin DoDot:1
+32 IF SCCVEVT=2
SET ENC=+$PIECE(DATA,U,20)
Begin DoDot:2
+33 ;Must be converted to reconvert
IF '$PIECE(DATA,U,23)!'$PIECE($GET(^SCE(ENC,"CNV")),U,4)
SET SCERR=8
QUIT
+34 SET OK=1
End DoDot:2
QUIT
+35 ;
+36 IF SCCVEVT=1
IF $PIECE(DATA,U,20)
IF $PIECE($GET(^SCE(+$PIECE(DATA,U,20),0)),U,5)
SET SCERR=3
QUIT
+37 ; Must be checked out
IF SCCVEVT=1
IF $$REQ^SDM1A(SCCVDA)="CO"
IF '$PIECE($GET(^SCE(+$PIECE(DATA,U,20),0)),U,7)
SET SCERR=9
QUIT
+38 ; Can't be 'unfinished' status
IF $PIECE(DATA,U,2)'=""
IF $PIECE(DATA,U,2)'="I"
IF $PIECE(DATA,U,2)'="NT"
SET SCERR=6
QUIT
+39 ;Must be clinic
IF $PIECE($GET(^SC(+DATA,0)),U,3)'="C"
SET SCERR=7
QUIT
+40 SET OK=1
End DoDot:1
GOTO VAL1Q
+41 ;
+42 ; Full standalone add/edit
IF SCF["SDV"
IF SCF=SCFILE
Begin DoDot:1
+43 NEW SCCS,DATA1,STAT
+44 SET SCCS=0
FOR
SET SCCS=$ORDER(@SCF@(SCCVDA,"CS",SCCS))
if 'SCCS
QUIT
SET DATA1=$GET(^(SCCS,0))
WRITE "."
Begin DoDot:2
+45 SET ENC=+$PIECE(DATA1,U,8)
+46 ; In 'CS' nodes at least one entry must:
+47 ; - be a non-child encounter (error 4)
+48 ; - have no encounter or no visit if converting (error 3)
+49 ; - have already been converted if reconverting (error 8)
+50 ; - must be checked out if requred (error 9)
+51 ;
+52 SET STAT=0
+53 ; -- not child check
IF 'STAT
IF $PIECE($GET(^SCE(ENC,0)),U,6)
SET STAT=4
+54 ;
+55 IF 'STAT
IF SCCVEVT=1
Begin DoDot:3
+56 ; -- no encounter check
IF 'ENC
QUIT
+57 ; -- no visit check
IF $PIECE($GET(^SCE(ENC,0)),U,5)
SET STAT=3
QUIT
End DoDot:3
+58 ;
+59 IF 'STAT
IF SCCVEVT'=1
Begin DoDot:3
+60 ; -- must be already converted check
IF '$PIECE($GET(^SCE(ENC,"CNV")),U,4)!'$PIECE(DATA1,U,9)
SET STAT=8
End DoDot:3
+61 ;
+62 ; -- must be checked out check
IF 'STAT
IF $$REQ^SDM1A(SCCVDA)="CO"
IF '$PIECE($GET(^SCE(+ENC,0)),U,7)
SET STAT=9
+63 ;
+64 ; -- at least one node passes
IF 'STAT
KILL SCERR
SET OK=1
QUIT
+65 SET SCERR(STAT)=""
End DoDot:2
if OK
QUIT
End DoDot:1
GOTO VAL1Q
+66 ;
VAL1Q IF $GET(SCMULT)
KILL SCERR
+1 IF $DATA(SCERR)
DO DISPERR^SCCVCST4(.SCERR,SCF)
SET OK=0
+2 QUIT OK
+3 ;