SCCVEAP3 ;ALB/RMO,TMP - Appointment Conversion cont.; [ 04/05/95  10:19 AM ]
 ;;5.3;Scheduling;**211**;Aug 13, 1993
 ;
SET(SCCVEVT,SCLOG,DFN,SCDTM,SCCLN,SCDA,SCOE,SCCV) ; Set variables
 ; Input  -- SCCVEVT  Conversion event
 ;           SCLOG    Scheduling conversion log IEN
 ;           DFN      Patient IEN
 ;           SCDTM    Appointment date/time
 ;           SCCLN    Clinic IEN
 ; Output -- SCDA     Clinic appt patient sub-file IEN
 ;           SCOE     Outpatient encounter IEN
 ;           SCCV     Conversion array:
 ;                    SCCV("EVT")       Conversion event
 ;                        ("LOG")       Scheduling conversion log IEN
 ;                        ("NEW")       Outpatient encounter
 ;                                       created by conversion flag
 ;                                       0 = no new encounter or visit
 ;                                       1 = new encounter and visit
 ;                                       2 = new visit only
 ;                        ("SCDA")      Multiple entry in ^SC for this pt
 ;                        ("OE",0)      Outpatient encounter 0th node
 ;                        ("PT",0)      Patient appt 0th node
 ;                        ("PT","R")    Patient appt "R" node (Remarks)
 ;                        ("CL1",0)     Clinic's 0th node
 ;                        ("CL",0)      Clinic appt patient 0th node
 ;                        ("CL","C")    Clinic appt patient "C" node (Check in/out)
 ;                        ("ERR")       Code for specific error, if any
 ;                        ("VST")       Visit file IEN
 ;
 N SCOE0,SCDATA,SCIENS
 ;
 S:'$G(SCDA) SCDA=+$$FIND^SDAM2(DFN,SCDTM,SCCLN) ; Find multiple entry in ^SC for this pt
 ;
 S SCOE=+$P($G(^DPT(DFN,"S",SCDTM,0)),U,20),SCOE0=$G(^SCE(SCOE,0))
 ;
 ; -- following is commented out ; left for reference purposes
 ; -- this 'if' should always fail ; CON^SCCVEAP1 has this covered
 ;IF 'SCOE,'SCDA S SCCV("ERR")=1 G SETQ
 ;
 S SCCV("SCDA")=SCDA
 S SCCV("EVT")=SCCVEVT
 ;
 S SCCV("LOG")=SCLOG
 S SCCV("PT",0)=$G(^DPT(DFN,"S",SCDTM,0)),SCCV("PT","R")=$G(^("R"))
 S SCCV("CL",0)=$G(^SC(SCCLN,"S",SCDTM,1,SCDA,0)),SCCV("CL","C")=$G(^("C"))
 S SCCV("CL1",0)=$G(^SC(SCCLN,0))
 ;
 ; On re-convert, delete previously converted data
 I SCCVEVT=2 D
 . N SCDATA
 . ; only delete for reconvert if we created the encounter or completed
 . ;   the conversion by adding the visit
 . Q:'$$CCREATE^SCCVU(SCOE)
 . ;
 . S SCCV("OE",0)=SCOE0
 . D RECNVT(SCOE,SCOE0,.SCCONS)
 . S SCOE0=$G(^SCE(SCOE,0)) S:SCOE0="" SCOE=0
 ;
 S SCCV("NEW")=$S('SCOE:1,'$P(SCOE0,U,5):2,1:0)
 ;
 G:'SCCV("NEW") SETQ ; Already has both an encounter and visit
 ;
 ; Increment total number of encounters/visits that would be created by
 ;   conversion (if estimating)
 I 'SCCVEVT D  G SETQ ; -- Estimate exits here
 . D INCRTOT^SCCVEGU1(.SCTOT,SCCV("NEW")+6,1)
 . D EN^SCCVZZ("APPT-"_(SCCV("NEW")+6),SCOE,SCDTM,$P($G(SCCV("PT",0)),U),+$P(SCOE0,U,6))
 . D CREDIT^SCCVEAP4(SCOE,SCDTM,.SCCV,0)
 ;
 I 'SCOE D  ; Create enctr/visit
 . N SCCVT
 . D SETSCCVT^SCCVEAP2(.SCCVT,.SCCONS)
 . IF 'SCDA F  L +^SC(SCCLN,"S",SCDTM,1,999999):5 IF $T S ^SC(SCCLN,"S",SCDTM,1,999999,0)=DFN Q
 . S SCOE=$$GETAPT^SDVSIT2(DFN,SCDTM,SCCLN,"")
 . IF 'SCDA K ^SC(SCCLN,"S",SCDTM,1,999999) L -^SC(SCCLN,"S",SCDTM,1,999999)
 . Q:'SCOE
 . I $P($G(^SCE(SCOE,0)),U,3) S SCCV("HIST")=1
 . S SCTOT(1.02)=$G(SCTOT(1.02))+1
 ;
 S SCCV("OE")=+SCOE
 S SCCV("OE",0)=$G(^SCE(+SCOE,0))
 S SCCV("VST")=$P(SCCV("OE",0),U,5)
 S SCCV("ORG")=1,SCCV("REF")=SCDA
 ;
 I 'SCCV("VST"),SCOE,SCCV("NEW")'=1 D
 . S SCCV("VST")=$$VISIT^SCCVEAP2(SCDTM,.SCCV) ; create visit if encounter already exists, but no visit
 . D CREDIT^SCCVEAP4(SCOE,SCDTM,.SCCV,SCCVEVT)
 ;
SETQ Q
 ;
RECNVT(SCOE,SCOE0,SCCONS) ;Delete data added by conversion
 ;
 N Z,SCVST,SCENC,SCENC0,SCCHLD,PXKNOEVT
 ;
 S PXKNOEVT=1 ;Don't want event driver to fire off
 ;
 S SCVST(0,SCOE,+$P(SCOE0,U,5))=+$G(^SCE(SCOE,"CNV")) ;Parent
 D DELPTR(SCOE)
 ;
 S SCENC=0 F  S SCENC=$O(^SCE("APAR",SCOE,SCENC)) Q:'SCENC  D
 . S SCVST(1,SCENC,+$P($G(^SCE(SCENC,0)),U,5))=+$G(^SCE(SCENC,"CNV"))
 . D DELPTR(SCENC)
 ;
 S SCCHLD="" F  S SCCHLD=$O(SCVST(SCCHLD)) Q:SCCHLD=""  S SCENC=0 F  S SCENC=$O(SCVST(SCCHLD,SCENC)) Q:'SCENC  S SCVST="" F  S SCVST=$O(SCVST(SCCHLD,SCENC,SCVST)) Q:SCVST=""  D
 . I SCVST(SCCHLD,SCENC,SCVST),$D(^SCE(SCENC,0)) D DELE^SCCVCST2(SCENC) ;Created by conversion - delete enctr
 . Q:'SCVST!SCCHLD  ;No need to delete children visits - they should go away w/parent
 . S Z=$$DELVFILE^PXAPI("ALL",SCVST,$G(SCCONS("PKG")),$G(SCCONS("SRCE")))
 Q
 ;
DELPTR(SCE) ; Delete visit pointer if encounter still exists
 ; SCE = encounter IEN
 N SCDATA
 I $P($G(^SCE(SCE,0)),U,5) S SCDATA(.05)="@" D UPD^SCCVDBU(409.68,SCE,.SCDATA)
 ;
 Q
 ;
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSCCVEAP3   4865     printed  Sep 23, 2025@20:15:07                                                                                                                                                                                                    Page 2
SCCVEAP3  ;ALB/RMO,TMP - Appointment Conversion cont.; [ 04/05/95  10:19 AM ]
 +1       ;;5.3;Scheduling;**211**;Aug 13, 1993
 +2       ;
SET(SCCVEVT,SCLOG,DFN,SCDTM,SCCLN,SCDA,SCOE,SCCV) ; Set variables
 +1       ; Input  -- SCCVEVT  Conversion event
 +2       ;           SCLOG    Scheduling conversion log IEN
 +3       ;           DFN      Patient IEN
 +4       ;           SCDTM    Appointment date/time
 +5       ;           SCCLN    Clinic IEN
 +6       ; Output -- SCDA     Clinic appt patient sub-file IEN
 +7       ;           SCOE     Outpatient encounter IEN
 +8       ;           SCCV     Conversion array:
 +9       ;                    SCCV("EVT")       Conversion event
 +10      ;                        ("LOG")       Scheduling conversion log IEN
 +11      ;                        ("NEW")       Outpatient encounter
 +12      ;                                       created by conversion flag
 +13      ;                                       0 = no new encounter or visit
 +14      ;                                       1 = new encounter and visit
 +15      ;                                       2 = new visit only
 +16      ;                        ("SCDA")      Multiple entry in ^SC for this pt
 +17      ;                        ("OE",0)      Outpatient encounter 0th node
 +18      ;                        ("PT",0)      Patient appt 0th node
 +19      ;                        ("PT","R")    Patient appt "R" node (Remarks)
 +20      ;                        ("CL1",0)     Clinic's 0th node
 +21      ;                        ("CL",0)      Clinic appt patient 0th node
 +22      ;                        ("CL","C")    Clinic appt patient "C" node (Check in/out)
 +23      ;                        ("ERR")       Code for specific error, if any
 +24      ;                        ("VST")       Visit file IEN
 +25      ;
 +26       NEW SCOE0,SCDATA,SCIENS
 +27      ;
 +28      ; Find multiple entry in ^SC for this pt
           if '$GET(SCDA)
               SET SCDA=+$$FIND^SDAM2(DFN,SCDTM,SCCLN)
 +29      ;
 +30       SET SCOE=+$PIECE($GET(^DPT(DFN,"S",SCDTM,0)),U,20)
           SET SCOE0=$GET(^SCE(SCOE,0))
 +31      ;
 +32      ; -- following is commented out ; left for reference purposes
 +33      ; -- this 'if' should always fail ; CON^SCCVEAP1 has this covered
 +34      ;IF 'SCOE,'SCDA S SCCV("ERR")=1 G SETQ
 +35      ;
 +36       SET SCCV("SCDA")=SCDA
 +37       SET SCCV("EVT")=SCCVEVT
 +38      ;
 +39       SET SCCV("LOG")=SCLOG
 +40       SET SCCV("PT",0)=$GET(^DPT(DFN,"S",SCDTM,0))
           SET SCCV("PT","R")=$GET(^("R"))
 +41       SET SCCV("CL",0)=$GET(^SC(SCCLN,"S",SCDTM,1,SCDA,0))
           SET SCCV("CL","C")=$GET(^("C"))
 +42       SET SCCV("CL1",0)=$GET(^SC(SCCLN,0))
 +43      ;
 +44      ; On re-convert, delete previously converted data
 +45       IF SCCVEVT=2
               Begin DoDot:1
 +46               NEW SCDATA
 +47      ; only delete for reconvert if we created the encounter or completed
 +48      ;   the conversion by adding the visit
 +49               if '$$CCREATE^SCCVU(SCOE)
                       QUIT 
 +50      ;
 +51               SET SCCV("OE",0)=SCOE0
 +52               DO RECNVT(SCOE,SCOE0,.SCCONS)
 +53               SET SCOE0=$GET(^SCE(SCOE,0))
                   if SCOE0=""
                       SET SCOE=0
               End DoDot:1
 +54      ;
 +55       SET SCCV("NEW")=$SELECT('SCOE:1,'$PIECE(SCOE0,U,5):2,1:0)
 +56      ;
 +57      ; Already has both an encounter and visit
           if 'SCCV("NEW")
               GOTO SETQ
 +58      ;
 +59      ; Increment total number of encounters/visits that would be created by
 +60      ;   conversion (if estimating)
 +61      ; -- Estimate exits here
           IF 'SCCVEVT
               Begin DoDot:1
 +62               DO INCRTOT^SCCVEGU1(.SCTOT,SCCV("NEW")+6,1)
 +63               DO EN^SCCVZZ("APPT-"_(SCCV("NEW")+6),SCOE,SCDTM,$PIECE($GET(SCCV("PT",0)),U),+$PIECE(SCOE0,U,6))
 +64               DO CREDIT^SCCVEAP4(SCOE,SCDTM,.SCCV,0)
               End DoDot:1
               GOTO SETQ
 +65      ;
 +66      ; Create enctr/visit
           IF 'SCOE
               Begin DoDot:1
 +67               NEW SCCVT
 +68               DO SETSCCVT^SCCVEAP2(.SCCVT,.SCCONS)
 +69               IF 'SCDA
                       FOR 
                           LOCK +^SC(SCCLN,"S",SCDTM,1,999999):5
                           IF $TEST
                               SET ^SC(SCCLN,"S",SCDTM,1,999999,0)=DFN
                               QUIT 
 +70               SET SCOE=$$GETAPT^SDVSIT2(DFN,SCDTM,SCCLN,"")
 +71               IF 'SCDA
                       KILL ^SC(SCCLN,"S",SCDTM,1,999999)
                       LOCK -^SC(SCCLN,"S",SCDTM,1,999999)
 +72               if 'SCOE
                       QUIT 
 +73               IF $PIECE($GET(^SCE(SCOE,0)),U,3)
                       SET SCCV("HIST")=1
 +74               SET SCTOT(1.02)=$GET(SCTOT(1.02))+1
               End DoDot:1
 +75      ;
 +76       SET SCCV("OE")=+SCOE
 +77       SET SCCV("OE",0)=$GET(^SCE(+SCOE,0))
 +78       SET SCCV("VST")=$PIECE(SCCV("OE",0),U,5)
 +79       SET SCCV("ORG")=1
           SET SCCV("REF")=SCDA
 +80      ;
 +81       IF 'SCCV("VST")
               IF SCOE
                   IF SCCV("NEW")'=1
                       Begin DoDot:1
 +82      ; create visit if encounter already exists, but no visit
                           SET SCCV("VST")=$$VISIT^SCCVEAP2(SCDTM,.SCCV)
 +83                       DO CREDIT^SCCVEAP4(SCOE,SCDTM,.SCCV,SCCVEVT)
                       End DoDot:1
 +84      ;
SETQ       QUIT 
 +1       ;
RECNVT(SCOE,SCOE0,SCCONS) ;Delete data added by conversion
 +1       ;
 +2        NEW Z,SCVST,SCENC,SCENC0,SCCHLD,PXKNOEVT
 +3       ;
 +4       ;Don't want event driver to fire off
           SET PXKNOEVT=1
 +5       ;
 +6       ;Parent
           SET SCVST(0,SCOE,+$PIECE(SCOE0,U,5))=+$GET(^SCE(SCOE,"CNV"))
 +7        DO DELPTR(SCOE)
 +8       ;
 +9        SET SCENC=0
           FOR 
               SET SCENC=$ORDER(^SCE("APAR",SCOE,SCENC))
               if 'SCENC
                   QUIT 
               Begin DoDot:1
 +10               SET SCVST(1,SCENC,+$PIECE($GET(^SCE(SCENC,0)),U,5))=+$GET(^SCE(SCENC,"CNV"))
 +11               DO DELPTR(SCENC)
               End DoDot:1
 +12      ;
 +13       SET SCCHLD=""
           FOR 
               SET SCCHLD=$ORDER(SCVST(SCCHLD))
               if SCCHLD=""
                   QUIT 
               SET SCENC=0
               FOR 
                   SET SCENC=$ORDER(SCVST(SCCHLD,SCENC))
                   if 'SCENC
                       QUIT 
                   SET SCVST=""
                   FOR 
                       SET SCVST=$ORDER(SCVST(SCCHLD,SCENC,SCVST))
                       if SCVST=""
                           QUIT 
                       Begin DoDot:1
 +14      ;Created by conversion - delete enctr
                           IF SCVST(SCCHLD,SCENC,SCVST)
                               IF $DATA(^SCE(SCENC,0))
                                   DO DELE^SCCVCST2(SCENC)
 +15      ;No need to delete children visits - they should go away w/parent
                           if 'SCVST!SCCHLD
                               QUIT 
 +16                       SET Z=$$DELVFILE^PXAPI("ALL",SCVST,$GET(SCCONS("PKG")),$GET(SCCONS("SRCE")))
                       End DoDot:1
 +17       QUIT 
 +18      ;
DELPTR(SCE) ; Delete visit pointer if encounter still exists
 +1       ; SCE = encounter IEN
 +2        NEW SCDATA
 +3        IF $PIECE($GET(^SCE(SCE,0)),U,5)
               SET SCDATA(.05)="@"
               DO UPD^SCCVDBU(409.68,SCE,.SCDATA)
 +4       ;
 +5        QUIT 
 +6       ;