SCCVEDI1 ;ALB/RMO,TMP - Disposition Conversion cont.; [ 04/05/95 8:12 AM ]
;;5.3;Scheduling;**211**;Aug 13, 1993
;
CON(SCCVEVT,DFN,SCDTM,SCCVDIS) ; Should conversion event be processed for disposition
; Input -- SCCVEVT Conversion event
; DFN Patient IEN
; SCDTM Visit date/time
; SCCVDIS Array of disposition clinics
;
; Output -- 1=Yes and 0=No
;
N SCECSTAT,Y,SCOE,SCDIS0,SCTYPE,SCDIV
S SCDIS0=$G(^DPT(DFN,"DIS",9999999-SCDTM,0))
S SCTYPE=$P(SCDIS0,U,2)
S SCDIV=+$P(SCDIS0,U,4)
S SCOE=+$P(SCDIS0,U,18)
S SCECSTAT=$P(SCDIS0,U,19)
;
; -- do checks
S Y=1
; -- don't use if date is greater than ACRP date
IF Y,$P(SCDTM,".")>SCCVACRP S Y=0
; -- don't use if application w/o exam
IF Y,SCTYPE=2 S Y=0
; -- don't use if no dispo clinic division & > 1 defined for site
IF Y,'$G(SCCVDIS(SCDIV)),'$G(SCCVDIS(0)) S Y=0
; -- don't use if convert and already converted
IF Y,SCCVEVT=1,SCECSTAT S Y=0
; -- don't use if re-convert and not converted
IF Y,SCCVEVT=2,'SCECSTAT S Y=0
; -- don't use if estimate and converted
IF Y,'SCCVEVT,SCECSTAT S Y=0
; -- if check out required then must have a co completion date/time
IF Y,$$REQ^SDM1A(SCDTM)="CO",'$P($G(^SCE(SCOE,0)),U,7) S Y=0
Q +$G(Y)
;
EN(SCCVEVT,DFN,SCDTM,SCLOG) ; Entry point to convert a disposition
; Input -- SCCVEVT Conversion event
; 0=Estimate 1=Convert 2=Re-convert
; DFN Patient IEN
; SCDTM Visit date/time
; SCLOG Scheduling conversion log IEN [optional]
N SCCV,SCOE,SCCONS,SCEST
;
S SCCONS("SRCE")="SD TO PCE DB CONV"
S SCCONS("PKG")=$O(^DIC(9.4,"C","SD",0))
;
;Set up the array for extracting a default disp clinic for the division
I '$D(SCCVDIS) D
. N SCCL,SCDIV,Z
. S Z=0 F S Z=$O(^PX(815,1,"DHL",Z)) Q:'Z S SCCL=+$G(^(Z,0)),SCDIV=$P($G(^SC(SCCL,0)),U,15) I SCDIV,'$D(SCCVDIS(SCDIV)) S SCCVDIS(SCDIV)=SCCL
. ; Default (0) is used if division does not have a valid disp clinic
. S SCCVDIS(0)=+$P($G(^SD(404.91,1,"CNV")),U,2)
;
; Check if disposition should be processed
IF '$$CON(SCCVEVT,DFN,SCDTM,.SCCVDIS) G ENQ
;
; Set-up conversion array and variables
D SET^SCCVEDI3(SCCVEVT,+$G(SCLOG),DFN,.SCOE,.SCCV)
;
I 'SCCVEVT,$G(SCCV("ERR")) G ENQ
;
; Don't process no new enctr or visit needed & no error to log
I '$G(SCCV("NEW")),'$D(SCCV("ERR")) G ENQ
;
; Increment number of dispositions found (estimating only)
I 'SCCVEVT D INCRTOT^SCCVEGU1(.SCTOT,5,1),EN^SCCVZZ("DIS-5",SCOE,SCDTM)
;
; Log error if no encounter or no visit - exit if no encounter
I SCCVEVT,$S('$G(SCOE):1,1:'$P($G(SCCV("OE",0)),U,5)) D G:'$G(SCOE) ENQ
. N SCE,SCERRIP,Y
. S SCERRIP(1)=$P($G(^DPT(DFN,0)),U)
. S Y=SCDTM D D^DIQ S SCERRIP(2)=Y
. S SCERRIP(5)=$$OTHERR^SCCVU2($G(SCCV("ERR")))
. S SCERRIP(4)=$S('$G(SCOE):"Outpatient encounter",1:"Visit")
. S SCE("DFN")=DFN,SCE("ENC")=$G(SCOE),SCE("VSIT")="",SCE("DATE")=SCDTM
. D GETERR^SCCVLOG1(4049005.003,.SCE,.SCERRIP,$G(SCLOG),0,.SCERRMSG)
. S:$G(SCOE) ^XTMP("SCCV-ERR-"_+SCLOG,"NO-VIS",SCOE)=""
. S SCTOT(2.06)=$G(SCTOT(2.06))+1
;
G:$G(SCCV("ERR")) ENQ
;
; Convert additional disposition data
I SCCVEVT D ENC(SCOE,.SCCV)
;
; Convert children
D CHLD^SCCVEAP2(SCOE,.SCCV,$G(SCLOG))
;
; Invoke DATA-TO-PCE call, store any errors
I $S('SCCVEVT:1,1:$P($G(^SCE(SCOE,0)),U,5)) D DATA2PCE^SCCVPCE(SCOE,.SCCONS,SCCVEVT,$G(SCOEP),"","",.SCEST)
;
I 'SCCVEVT D G ENQ ;Estimate exits here
.F Z=1:1:3 I $P(SCEST,U,Z) D INCRTOT^SCCVEGU1(.SCTOT,Z+8,$P(SCEST,U,Z)) D EN^SCCVZZ("DIS-"_(Z+8),SCOE,SCDTM,"","",$P(SCEST,U,Z))
;
; Update disposition as converted
D DONE(DFN,SCDTM,1)
;
; Update last entry and number of records
I $G(SCLOG) D UPDREC^SCCVLOG(SCLOG,SCOE,"CST")
I '$G(SCLOG) S SCTOT("OK")=1
;
ENQ Q
;
ENC(SCOE,SCCV) ; Convert additional disposition data for the encounter
; $$GETDISP^SDVIST2 creates the encounter and seeds it with disp data
; Input -- SCOE Outpatient encounter IEN
; SCCV Conversion array
; Output -- None
N SCDATA
I $G(SCCV("VST")),'$P($G(^SCE(SCOE,0)),U,5) S SCDATA(.05)=SCCV("VST") ; visit file entry
S:$G(SCCV("NEW"))=1 SCDATA(901)=1 ; created by conversion
I $G(SCCV("VST")) D ENCCNV^SCCVEAP1(.SCDATA)
I $D(SCDATA) D UPD^SCCVDBU(409.68,SCOE,.SCDATA)
;
ENCQ Q
;
DONE(DFN,SCDTM,SCECSTAT) ; Update disposition encounter conversion status
; Input -- DFN Patient IEN
; SCDTM Visit date/time
; SCECSTAT Encounter conversion status
; Output -- None
N SCDATA,SCIENS
S SCIENS=(9999999-SCDTM)_","_DFN
S:'$P($G(^DPT(DFN,"DIS",+SCIENS,0)),U,19) SCDATA(19)=SCECSTAT ; encounter conversion status
I $D(SCDATA) D UPD^SCCVDBU(2.101,SCIENS,.SCDATA)
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSCCVEDI1 4830 printed Oct 16, 2024@18:39:26 Page 2
SCCVEDI1 ;ALB/RMO,TMP - Disposition Conversion cont.; [ 04/05/95 8:12 AM ]
+1 ;;5.3;Scheduling;**211**;Aug 13, 1993
+2 ;
CON(SCCVEVT,DFN,SCDTM,SCCVDIS) ; Should conversion event be processed for disposition
+1 ; Input -- SCCVEVT Conversion event
+2 ; DFN Patient IEN
+3 ; SCDTM Visit date/time
+4 ; SCCVDIS Array of disposition clinics
+5 ;
+6 ; Output -- 1=Yes and 0=No
+7 ;
+8 NEW SCECSTAT,Y,SCOE,SCDIS0,SCTYPE,SCDIV
+9 SET SCDIS0=$GET(^DPT(DFN,"DIS",9999999-SCDTM,0))
+10 SET SCTYPE=$PIECE(SCDIS0,U,2)
+11 SET SCDIV=+$PIECE(SCDIS0,U,4)
+12 SET SCOE=+$PIECE(SCDIS0,U,18)
+13 SET SCECSTAT=$PIECE(SCDIS0,U,19)
+14 ;
+15 ; -- do checks
+16 SET Y=1
+17 ; -- don't use if date is greater than ACRP date
+18 IF Y
IF $PIECE(SCDTM,".")>SCCVACRP
SET Y=0
+19 ; -- don't use if application w/o exam
+20 IF Y
IF SCTYPE=2
SET Y=0
+21 ; -- don't use if no dispo clinic division & > 1 defined for site
+22 IF Y
IF '$GET(SCCVDIS(SCDIV))
IF '$GET(SCCVDIS(0))
SET Y=0
+23 ; -- don't use if convert and already converted
+24 IF Y
IF SCCVEVT=1
IF SCECSTAT
SET Y=0
+25 ; -- don't use if re-convert and not converted
+26 IF Y
IF SCCVEVT=2
IF 'SCECSTAT
SET Y=0
+27 ; -- don't use if estimate and converted
+28 IF Y
IF 'SCCVEVT
IF SCECSTAT
SET Y=0
+29 ; -- if check out required then must have a co completion date/time
+30 IF Y
IF $$REQ^SDM1A(SCDTM)="CO"
IF '$PIECE($GET(^SCE(SCOE,0)),U,7)
SET Y=0
+31 QUIT +$GET(Y)
+32 ;
EN(SCCVEVT,DFN,SCDTM,SCLOG) ; Entry point to convert a disposition
+1 ; Input -- SCCVEVT Conversion event
+2 ; 0=Estimate 1=Convert 2=Re-convert
+3 ; DFN Patient IEN
+4 ; SCDTM Visit date/time
+5 ; SCLOG Scheduling conversion log IEN [optional]
+6 NEW SCCV,SCOE,SCCONS,SCEST
+7 ;
+8 SET SCCONS("SRCE")="SD TO PCE DB CONV"
+9 SET SCCONS("PKG")=$ORDER(^DIC(9.4,"C","SD",0))
+10 ;
+11 ;Set up the array for extracting a default disp clinic for the division
+12 IF '$DATA(SCCVDIS)
Begin DoDot:1
+13 NEW SCCL,SCDIV,Z
+14 SET Z=0
FOR
SET Z=$ORDER(^PX(815,1,"DHL",Z))
if 'Z
QUIT
SET SCCL=+$GET(^(Z,0))
SET SCDIV=$PIECE($GET(^SC(SCCL,0)),U,15)
IF SCDIV
IF '$DATA(SCCVDIS(SCDIV))
SET SCCVDIS(SCDIV)=SCCL
+15 ; Default (0) is used if division does not have a valid disp clinic
+16 SET SCCVDIS(0)=+$PIECE($GET(^SD(404.91,1,"CNV")),U,2)
End DoDot:1
+17 ;
+18 ; Check if disposition should be processed
+19 IF '$$CON(SCCVEVT,DFN,SCDTM,.SCCVDIS)
GOTO ENQ
+20 ;
+21 ; Set-up conversion array and variables
+22 DO SET^SCCVEDI3(SCCVEVT,+$GET(SCLOG),DFN,.SCOE,.SCCV)
+23 ;
+24 IF 'SCCVEVT
IF $GET(SCCV("ERR"))
GOTO ENQ
+25 ;
+26 ; Don't process no new enctr or visit needed & no error to log
+27 IF '$GET(SCCV("NEW"))
IF '$DATA(SCCV("ERR"))
GOTO ENQ
+28 ;
+29 ; Increment number of dispositions found (estimating only)
+30 IF 'SCCVEVT
DO INCRTOT^SCCVEGU1(.SCTOT,5,1)
DO EN^SCCVZZ("DIS-5",SCOE,SCDTM)
+31 ;
+32 ; Log error if no encounter or no visit - exit if no encounter
+33 IF SCCVEVT
IF $SELECT('$GET(SCOE):1,1:'$PIECE($GET(SCCV("OE",0)),U,5))
Begin DoDot:1
+34 NEW SCE,SCERRIP,Y
+35 SET SCERRIP(1)=$PIECE($GET(^DPT(DFN,0)),U)
+36 SET Y=SCDTM
DO D^DIQ
SET SCERRIP(2)=Y
+37 SET SCERRIP(5)=$$OTHERR^SCCVU2($GET(SCCV("ERR")))
+38 SET SCERRIP(4)=$SELECT('$GET(SCOE):"Outpatient encounter",1:"Visit")
+39 SET SCE("DFN")=DFN
SET SCE("ENC")=$GET(SCOE)
SET SCE("VSIT")=""
SET SCE("DATE")=SCDTM
+40 DO GETERR^SCCVLOG1(4049005.003,.SCE,.SCERRIP,$GET(SCLOG),0,.SCERRMSG)
+41 if $GET(SCOE)
SET ^XTMP("SCCV-ERR-"_+SCLOG,"NO-VIS",SCOE)=""
+42 SET SCTOT(2.06)=$GET(SCTOT(2.06))+1
End DoDot:1
if '$GET(SCOE)
GOTO ENQ
+43 ;
+44 if $GET(SCCV("ERR"))
GOTO ENQ
+45 ;
+46 ; Convert additional disposition data
+47 IF SCCVEVT
DO ENC(SCOE,.SCCV)
+48 ;
+49 ; Convert children
+50 DO CHLD^SCCVEAP2(SCOE,.SCCV,$GET(SCLOG))
+51 ;
+52 ; Invoke DATA-TO-PCE call, store any errors
+53 IF $SELECT('SCCVEVT:1,1:$PIECE($GET(^SCE(SCOE,0)),U,5))
DO DATA2PCE^SCCVPCE(SCOE,.SCCONS,SCCVEVT,$GET(SCOEP),"","",.SCEST)
+54 ;
+55 ;Estimate exits here
IF 'SCCVEVT
Begin DoDot:1
+56 FOR Z=1:1:3
IF $PIECE(SCEST,U,Z)
DO INCRTOT^SCCVEGU1(.SCTOT,Z+8,$PIECE(SCEST,U,Z))
DO EN^SCCVZZ("DIS-"_(Z+8),SCOE,SCDTM,"","",$PIECE(SCEST,U,Z))
End DoDot:1
GOTO ENQ
+57 ;
+58 ; Update disposition as converted
+59 DO DONE(DFN,SCDTM,1)
+60 ;
+61 ; Update last entry and number of records
+62 IF $GET(SCLOG)
DO UPDREC^SCCVLOG(SCLOG,SCOE,"CST")
+63 IF '$GET(SCLOG)
SET SCTOT("OK")=1
+64 ;
ENQ QUIT
+1 ;
ENC(SCOE,SCCV) ; Convert additional disposition data for the encounter
+1 ; $$GETDISP^SDVIST2 creates the encounter and seeds it with disp data
+2 ; Input -- SCOE Outpatient encounter IEN
+3 ; SCCV Conversion array
+4 ; Output -- None
+5 NEW SCDATA
+6 ; visit file entry
IF $GET(SCCV("VST"))
IF '$PIECE($GET(^SCE(SCOE,0)),U,5)
SET SCDATA(.05)=SCCV("VST")
+7 ; created by conversion
if $GET(SCCV("NEW"))=1
SET SCDATA(901)=1
+8 IF $GET(SCCV("VST"))
DO ENCCNV^SCCVEAP1(.SCDATA)
+9 IF $DATA(SCDATA)
DO UPD^SCCVDBU(409.68,SCOE,.SCDATA)
+10 ;
ENCQ QUIT
+1 ;
DONE(DFN,SCDTM,SCECSTAT) ; Update disposition encounter conversion status
+1 ; Input -- DFN Patient IEN
+2 ; SCDTM Visit date/time
+3 ; SCECSTAT Encounter conversion status
+4 ; Output -- None
+5 NEW SCDATA,SCIENS
+6 SET SCIENS=(9999999-SCDTM)_","_DFN
+7 ; encounter conversion status
if '$PIECE($GET(^DPT(DFN,"DIS",+SCIENS,0)),U,19)
SET SCDATA(19)=SCECSTAT
+8 IF $DATA(SCDATA)
DO UPD^SCCVDBU(2.101,SCIENS,.SCDATA)
+9 QUIT
+10 ;