- 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 Feb 19, 2025@00:05:17 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 ;