- SCCVEAE1 ;ALB/RMO,TMP - Add/Edit Conversion cont.; [ 04/05/95 8:46 AM ]
- ;;5.3;Scheduling;**211**;Aug 13, 1993
- ;
- CON(SCCVEVT,SCDTM,SCVALDT,SCDA) ;Should conversion event be processed for add/edit
- ; Input -- SCCVEVT Conversion event
- ; SCDTM Visit date/time
- ; SCVALDT Valid converted Visit date/time (SCDTM)
- ; SCDA Clinic stop code sub-file IEN
- ; Output -- 1=Yes and 0=No
- ;
- N SC0,SCECSTAT,Y,SCOE,SCSTOP,SCLN,DFN
- S DFN=+$P($G(^SDV(SCDTM,0)),U,2)
- S SC0=$G(^SDV(SCDTM,"CS",SCDA,0))
- S SCSTOP=+SC0
- S SCLN=+$P(SC0,U,3)
- S SCOE=+$P(SC0,U,8)
- S SCECSTAT=$P(SC0,U,9)
- ;
- ; -- do checks
- S Y=1
- IF Y,$P(SCVALDT,".")>SCCVACRP S Y=0 ; Greater than ACRP date
- IF Y,SCCVEVT=1,SCECSTAT S Y=0 ; Convert/already converted
- IF Y,SCCVEVT=2,'SCECSTAT S Y=0 ; Re-convert/never converted
- IF Y,'SCCVEVT,SCECSTAT S Y=0 ; Estimate/already converted
- ;
- ; -- 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
- ;
- ; -- if a/e for 900 stop, same clinic, no enounter
- ; and lower "CS" ien then current then don't convert
- IF Y,SCCV900=SCSTOP,SCLN D
- . N SCS,SCS0
- . S SCS=0
- . F S SCS=$O(^SDV(SCDTM,"CS",SCS)) Q:'SCS!(SCS=SCDA) S SCS0=$G(^(SCS,0)) IF +SCS0=SCCV900,+$P(SCS0,U,3)=SCLN,'$P(SCS0,U,8) S Y=0 Q
- ;
- ; -- if not a 900, did stop get added via appts? if so, don't convert.
- IF Y,SCCV900'=SCSTOP D
- . N SCAP,SCAP0,SCEND
- . S SCAP=$P(SCDTM,"."),SCEND=SCAP+.24
- . F S SCAP=$O(^DPT(DFN,"S",SCAP)) Q:'SCAP!(SCAP>SCEND) S SCAP0=$G(^(SCAP,0)) D Q:'Y
- . . ; -- must be valid made appt
- . . IF $P(SCAP0,U,2)'="",$P(SCAP0,U,2)'="I" Q
- . . ; -- if clinic specified then appt must be for same clinic
- . . IF SCLN,SCLN'=+SCAP0 Q
- . . ; -- if enc exists & c/o, compare enc stop code with sdv stop code
- . . IF $P(SCAP0,U,20) D Q
- . . . IF $P($G(^SCE($P(SCAP0,U,20),0)),U,3)=SCSTOP,$P($G(^SCE($P(SCAP0,U,20),0)),U,7) S Y=0
- . . ; -- compare clinic's stop code with sdv stop code
- . . IF $P($G(^SC(+SCAP0,0)),U,7)=SCSTOP S Y=0 Q
- ;
- Q +$G(Y)
- ;
- EN(SCCVEVT,SCDTM,SCDA,SCOEP,SCLOG) ; Entry point to convert an add/edit
- ; Input -- SCCVEVT Conversion event
- ; 0=Estimate 1=Convert 2=Re-convert
- ; SCDTM ien of SDV entry (~Visit date/time)
- ; SCDA Clinic stop code sub-file IEN
- ; SCOEP Parent outpatient encounter IEN [optional]
- ; SCLOG Scheduling conversion log IEN [optional]
- N SCCV,SCOE,SCDATA,SCCONS,SCEST,Z,SCVALDT
- ;
- ; -- make sure sdv d/t is valid
- S SCVALDT=$$DATECHCK^SDVSIT(SCDTM)
- ;
- S SCCONS("SRCE")="SD TO PCE DB CONV"
- S SCCONS("PKG")=$O(^DIC(9.4,"C","SD",0))
- ;
- ; Check if add/edit should be processed
- IF '$$CON(SCCVEVT,SCDTM,SCVALDT,SCDA) G ENQ
- ;
- ; Set-up conversion array and variables
- D SET^SCCVEAE3(SCCVEVT,+$G(SCLOG),SCDTM,SCVALDT,SCDA,.SCOEP,.SCOE,.SCCV)
- ;
- I 'SCCVEVT,$G(SCCV("ERR")) G ENQ
- ;
- ; Skip if no new enctr or visit needed & no error to log
- I '$G(SCCV("NEW")),'$D(SCCV("ERR")) G ENQ
- ;
- ; Increment number of add/edits found (estimating only)
- I 'SCCVEVT D EN^SCCVZZ("AE-1",SCOE,SCDTM,SCDA,+$P($G(SCCV("OE",0)),U,6),+$P($G(SCCV("OE",0)),U,2)) D INCRTOT^SCCVEGU1(.SCTOT,1,1)
- ;
- ; 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 SCERRIP,Y,SCE
- . S Y=SCDTM D D^DIQ S SCERRIP(1)=Y
- . S SCERRIP(2)=SCDA
- . S SCERRIP(5)=$$OTHERR^SCCVU2($G(SCCV("ERR")))
- . S SCERRIP(4)=$S('$G(SCOE):"Outpatient encounter",1:"Visit")
- . S SCE("DFN")=$P($G(^SDV(SCDTM,0)),U,2),SCE("ENC")=$G(SCOE),SCE("VSIT")="",SCE("DATE")=SCDTM
- . D GETERR^SCCVLOG1(4049005.001,.SCE,.SCERRIP,$G(SCLOG),0,.SCERRMSG)
- . S SCTOT(2.06)=$G(SCTOT(2.06))+1
- . S:$G(SCOE) ^XTMP("SCCV-ERR-"_+$G(SCLOG),"NO-VIS",SCOE)=""
- ;
- G:$G(SCCV("ERR")) ENQ
- ;
- ; Invoke DATA-TO-PCE call, store any errors
- S SCEST=""
- I $S('SCCVEVT:1,1:$P($G(^SCE(SCOE,0)),U,5)) D DATA2PCE^SCCVPCE(SCOE,.SCCONS,SCCVEVT,$S(SCCVEVT:$G(SCOEP),1:$P($G(^SCE(SCOE,0)),U,6)),SCDTM,SCDA,.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("AE-"_(Z+8),SCOE,SCDTM,SCDA,+$G(SCOEP),$P(SCEST,U,Z))
- ;
- ; Convert additional add/edit data
- D ENC(SCOE,.SCCV)
- ;
- ; Update add/edit as converted
- D DONE(SCDTM,SCDA,1)
- ;
- ; Update last entry and number of records
- I $G(SCLOG),'$G(SCOEP) D UPDREC^SCCVLOG(SCLOG,SCOE,"CST")
- I '$G(SCLOG),$G(SCTOT("A/E")) S SCTOT("OK")=1
- ENQ Q
- ;
- ENC(SCOE,SCCV) ; Convert additional add/edit data for encounter
- ; 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
- I SCCV("NEW")=1 D ;Only if conversion adds the encounter
- . I $P($G(SCCV("CS",0)),U,6)'="" S SCDATA(202)=$P(SCCV("CS",0),U,6)
- . I $P($G(SCCV("CS",0)),U,2)'="" S SCDATA(101)=$P(SCCV("CS",0),U,2)
- . I $P($G(SCCV("CS",1)),U)'="" S SCDATA(201)=$P(SCCV("CS",1),U)
- . I $P($G(SCCV("CS",0)),U,7)'="" S SCDATA(902)=$P(SCCV("CS",0),U,7)
- . S 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(SCDTM,SCDA,SCECSTAT) ; Update add/edit encounter conversion status
- ; Input -- SCDTM Visit date/time
- ; SCDA Clinic stop code sub-file IEN
- ; SCECSTAT Encounter conversion status
- ; Output -- None
- N SCDATA,SCIENS
- S SCIENS=SCDA_","_SCDTM
- S:'$P($G(^SDV(SCDTM,"CS",SCDA,0)),U,9) SCDATA(9)=SCECSTAT ; encounter conversion status
- I $D(SCDATA) D UPD^SCCVDBU(409.51,SCIENS,.SCDATA)
- Q
- ;
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSCCVEAE1 5804 printed Jan 18, 2025@03:39:50 Page 2
- SCCVEAE1 ;ALB/RMO,TMP - Add/Edit Conversion cont.; [ 04/05/95 8:46 AM ]
- +1 ;;5.3;Scheduling;**211**;Aug 13, 1993
- +2 ;
- CON(SCCVEVT,SCDTM,SCVALDT,SCDA) ;Should conversion event be processed for add/edit
- +1 ; Input -- SCCVEVT Conversion event
- +2 ; SCDTM Visit date/time
- +3 ; SCVALDT Valid converted Visit date/time (SCDTM)
- +4 ; SCDA Clinic stop code sub-file IEN
- +5 ; Output -- 1=Yes and 0=No
- +6 ;
- +7 NEW SC0,SCECSTAT,Y,SCOE,SCSTOP,SCLN,DFN
- +8 SET DFN=+$PIECE($GET(^SDV(SCDTM,0)),U,2)
- +9 SET SC0=$GET(^SDV(SCDTM,"CS",SCDA,0))
- +10 SET SCSTOP=+SC0
- +11 SET SCLN=+$PIECE(SC0,U,3)
- +12 SET SCOE=+$PIECE(SC0,U,8)
- +13 SET SCECSTAT=$PIECE(SC0,U,9)
- +14 ;
- +15 ; -- do checks
- +16 SET Y=1
- +17 ; Greater than ACRP date
- IF Y
- IF $PIECE(SCVALDT,".")>SCCVACRP
- SET Y=0
- +18 ; Convert/already converted
- IF Y
- IF SCCVEVT=1
- IF SCECSTAT
- SET Y=0
- +19 ; Re-convert/never converted
- IF Y
- IF SCCVEVT=2
- IF 'SCECSTAT
- SET Y=0
- +20 ; Estimate/already converted
- IF Y
- IF 'SCCVEVT
- IF SCECSTAT
- SET Y=0
- +21 ;
- +22 ; -- if check out required then must have a co completion date/time
- +23 IF Y
- IF $$REQ^SDM1A(SCDTM)="CO"
- IF '$PIECE($GET(^SCE(SCOE,0)),U,7)
- SET Y=0
- +24 ;
- +25 ; -- if a/e for 900 stop, same clinic, no enounter
- +26 ; and lower "CS" ien then current then don't convert
- +27 IF Y
- IF SCCV900=SCSTOP
- IF SCLN
- Begin DoDot:1
- +28 NEW SCS,SCS0
- +29 SET SCS=0
- +30 FOR
- SET SCS=$ORDER(^SDV(SCDTM,"CS",SCS))
- if 'SCS!(SCS=SCDA)
- QUIT
- SET SCS0=$GET(^(SCS,0))
- IF +SCS0=SCCV900
- IF +$PIECE(SCS0,U,3)=SCLN
- IF '$PIECE(SCS0,U,8)
- SET Y=0
- QUIT
- End DoDot:1
- +31 ;
- +32 ; -- if not a 900, did stop get added via appts? if so, don't convert.
- +33 IF Y
- IF SCCV900'=SCSTOP
- Begin DoDot:1
- +34 NEW SCAP,SCAP0,SCEND
- +35 SET SCAP=$PIECE(SCDTM,".")
- SET SCEND=SCAP+.24
- +36 FOR
- SET SCAP=$ORDER(^DPT(DFN,"S",SCAP))
- if 'SCAP!(SCAP>SCEND)
- QUIT
- SET SCAP0=$GET(^(SCAP,0))
- Begin DoDot:2
- +37 ; -- must be valid made appt
- +38 IF $PIECE(SCAP0,U,2)'=""
- IF $PIECE(SCAP0,U,2)'="I"
- QUIT
- +39 ; -- if clinic specified then appt must be for same clinic
- +40 IF SCLN
- IF SCLN'=+SCAP0
- QUIT
- +41 ; -- if enc exists & c/o, compare enc stop code with sdv stop code
- +42 IF $PIECE(SCAP0,U,20)
- Begin DoDot:3
- +43 IF $PIECE($GET(^SCE($PIECE(SCAP0,U,20),0)),U,3)=SCSTOP
- IF $PIECE($GET(^SCE($PIECE(SCAP0,U,20),0)),U,7)
- SET Y=0
- End DoDot:3
- QUIT
- +44 ; -- compare clinic's stop code with sdv stop code
- +45 IF $PIECE($GET(^SC(+SCAP0,0)),U,7)=SCSTOP
- SET Y=0
- QUIT
- End DoDot:2
- if 'Y
- QUIT
- End DoDot:1
- +46 ;
- +47 QUIT +$GET(Y)
- +48 ;
- EN(SCCVEVT,SCDTM,SCDA,SCOEP,SCLOG) ; Entry point to convert an add/edit
- +1 ; Input -- SCCVEVT Conversion event
- +2 ; 0=Estimate 1=Convert 2=Re-convert
- +3 ; SCDTM ien of SDV entry (~Visit date/time)
- +4 ; SCDA Clinic stop code sub-file IEN
- +5 ; SCOEP Parent outpatient encounter IEN [optional]
- +6 ; SCLOG Scheduling conversion log IEN [optional]
- +7 NEW SCCV,SCOE,SCDATA,SCCONS,SCEST,Z,SCVALDT
- +8 ;
- +9 ; -- make sure sdv d/t is valid
- +10 SET SCVALDT=$$DATECHCK^SDVSIT(SCDTM)
- +11 ;
- +12 SET SCCONS("SRCE")="SD TO PCE DB CONV"
- +13 SET SCCONS("PKG")=$ORDER(^DIC(9.4,"C","SD",0))
- +14 ;
- +15 ; Check if add/edit should be processed
- +16 IF '$$CON(SCCVEVT,SCDTM,SCVALDT,SCDA)
- GOTO ENQ
- +17 ;
- +18 ; Set-up conversion array and variables
- +19 DO SET^SCCVEAE3(SCCVEVT,+$GET(SCLOG),SCDTM,SCVALDT,SCDA,.SCOEP,.SCOE,.SCCV)
- +20 ;
- +21 IF 'SCCVEVT
- IF $GET(SCCV("ERR"))
- GOTO ENQ
- +22 ;
- +23 ; Skip if no new enctr or visit needed & no error to log
- +24 IF '$GET(SCCV("NEW"))
- IF '$DATA(SCCV("ERR"))
- GOTO ENQ
- +25 ;
- +26 ; Increment number of add/edits found (estimating only)
- +27 IF 'SCCVEVT
- DO EN^SCCVZZ("AE-1",SCOE,SCDTM,SCDA,+$PIECE($GET(SCCV("OE",0)),U,6),+$PIECE($GET(SCCV("OE",0)),U,2))
- DO INCRTOT^SCCVEGU1(.SCTOT,1,1)
- +28 ;
- +29 ; Log error if no encounter or no visit, exit if no encounter
- +30 IF SCCVEVT
- IF $SELECT('$GET(SCOE):1,1:'$PIECE($GET(SCCV("OE",0)),U,5))
- Begin DoDot:1
- +31 NEW SCERRIP,Y,SCE
- +32 SET Y=SCDTM
- DO D^DIQ
- SET SCERRIP(1)=Y
- +33 SET SCERRIP(2)=SCDA
- +34 SET SCERRIP(5)=$$OTHERR^SCCVU2($GET(SCCV("ERR")))
- +35 SET SCERRIP(4)=$SELECT('$GET(SCOE):"Outpatient encounter",1:"Visit")
- +36 SET SCE("DFN")=$PIECE($GET(^SDV(SCDTM,0)),U,2)
- SET SCE("ENC")=$GET(SCOE)
- SET SCE("VSIT")=""
- SET SCE("DATE")=SCDTM
- +37 DO GETERR^SCCVLOG1(4049005.001,.SCE,.SCERRIP,$GET(SCLOG),0,.SCERRMSG)
- +38 SET SCTOT(2.06)=$GET(SCTOT(2.06))+1
- +39 if $GET(SCOE)
- SET ^XTMP("SCCV-ERR-"_+$GET(SCLOG),"NO-VIS",SCOE)=""
- End DoDot:1
- if '$GET(SCOE)
- GOTO ENQ
- +40 ;
- +41 if $GET(SCCV("ERR"))
- GOTO ENQ
- +42 ;
- +43 ; Invoke DATA-TO-PCE call, store any errors
- +44 SET SCEST=""
- +45 IF $SELECT('SCCVEVT:1,1:$PIECE($GET(^SCE(SCOE,0)),U,5))
- DO DATA2PCE^SCCVPCE(SCOE,.SCCONS,SCCVEVT,$SELECT(SCCVEVT:$GET(SCOEP),1:$PIECE($GET(^SCE(SCOE,0)),U,6)),SCDTM,SCDA,.SCEST)
- +46 ;
- +47 ;Estimate exits here
- IF 'SCCVEVT
- Begin DoDot:1
- +48 FOR Z=1:1:3
- IF $PIECE(SCEST,U,Z)
- DO INCRTOT^SCCVEGU1(.SCTOT,Z+8,$PIECE(SCEST,U,Z))
- DO EN^SCCVZZ("AE-"_(Z+8),SCOE,SCDTM,SCDA,+$GET(SCOEP),$PIECE(SCEST,U,Z))
- End DoDot:1
- GOTO ENQ
- +49 ;
- +50 ; Convert additional add/edit data
- +51 DO ENC(SCOE,.SCCV)
- +52 ;
- +53 ; Update add/edit as converted
- +54 DO DONE(SCDTM,SCDA,1)
- +55 ;
- +56 ; Update last entry and number of records
- +57 IF $GET(SCLOG)
- IF '$GET(SCOEP)
- DO UPDREC^SCCVLOG(SCLOG,SCOE,"CST")
- +58 IF '$GET(SCLOG)
- IF $GET(SCTOT("A/E"))
- SET SCTOT("OK")=1
- ENQ QUIT
- +1 ;
- ENC(SCOE,SCCV) ; Convert additional add/edit data for encounter
- +1 ; Input -- SCOE Outpatient encounter IEN
- +2 ; SCCV Conversion array
- +3 ; Output -- None
- +4 NEW SCDATA
- +5 ; visit file entry
- IF $GET(SCCV("VST"))
- IF '$PIECE($GET(^SCE(SCOE,0)),U,5)
- SET SCDATA(.05)=SCCV("VST")
- +6 ;Only if conversion adds the encounter
- IF SCCV("NEW")=1
- Begin DoDot:1
- +7 IF $PIECE($GET(SCCV("CS",0)),U,6)'=""
- SET SCDATA(202)=$PIECE(SCCV("CS",0),U,6)
- +8 IF $PIECE($GET(SCCV("CS",0)),U,2)'=""
- SET SCDATA(101)=$PIECE(SCCV("CS",0),U,2)
- +9 IF $PIECE($GET(SCCV("CS",1)),U)'=""
- SET SCDATA(201)=$PIECE(SCCV("CS",1),U)
- +10 IF $PIECE($GET(SCCV("CS",0)),U,7)'=""
- SET SCDATA(902)=$PIECE(SCCV("CS",0),U,7)
- +11 ; created by conversion
- SET SCDATA(901)=1
- End DoDot:1
- +12 IF $GET(SCCV("VST"))
- DO ENCCNV^SCCVEAP1(.SCDATA)
- +13 IF $DATA(SCDATA)
- DO UPD^SCCVDBU(409.68,SCOE,.SCDATA)
- ENCQ QUIT
- +1 ;
- DONE(SCDTM,SCDA,SCECSTAT) ; Update add/edit encounter conversion status
- +1 ; Input -- SCDTM Visit date/time
- +2 ; SCDA Clinic stop code sub-file IEN
- +3 ; SCECSTAT Encounter conversion status
- +4 ; Output -- None
- +5 NEW SCDATA,SCIENS
- +6 SET SCIENS=SCDA_","_SCDTM
- +7 ; encounter conversion status
- if '$PIECE($GET(^SDV(SCDTM,"CS",SCDA,0)),U,9)
- SET SCDATA(9)=SCECSTAT
- +8 IF $DATA(SCDATA)
- DO UPD^SCCVDBU(409.51,SCIENS,.SCDATA)
- +9 QUIT
- +10 ;