- SD5384PT ;ALB/MLI - clean-up routine to remove credit stop code encounters ; 12 Dec 96 @ 10:02
- ;;5.3;Scheduling;**84,1015**;AUG 13, 1993;Build 21
- ;
- ; This routine will loop through the Outpatient Encounter file for a date range and
- ; look for credit stop codes which are:
- ;
- ; a. associated with location where the stop code is the same as the
- ; credit stop code.
- ;
- ; b. associated with a non-count clinic.
- ;
- ; Credit stop code encounters (originating process = 4) found which meet one of
- ; the above criteria will be deleted.
- ;
- ; The variables SDBEGDT and SDENDDT can be set prior to calling EN if a date range
- ; other than 10/1/96 through the present is desired. The process will be queued
- ; and a mail message of findings will be sent.
- ;
- ; If SDNODEL is defined, no data will be deleted.
- ;
- ;
- EN ; process task
- N SDCOUNT,SDSTART
- S SDSTART=$$NOW^XLFDT()
- D LOOP ; loop through entries and delete
- D MAIL ; build mail message of results
- Q
- ;
- ;
- LOOP ; loop through encounter file and delete bogus credit stop entries
- ;
- ; Input Variables (all optional):
- ; SDBEGDT = Beginning date of encounter search (default 2961001)
- ; SDENDDT = Ending date of encounter search (default DT)
- ; SDCLINIC = array of specific locations to look at (otherwise all)
- ; SDNODEL = 1 if data should not be deleted during run
- ;
- ; Variables used:
- ; SDALL = 1 if all clinics searched...otherwise 0
- ; SDDATE = loop counter for encounter date
- ; SDENC = loop counter for IEN of outpt encounter file
- ; SDNODE = 0 node of ^SCE
- ; SDCRED = credit stop code pointer
- ; SDCOUNT = counter, subscripted by location IEN, of deleted credit
- ; stop code encounters
- ;
- N SDALL,SDCRED,SDDATE,SDENC,SDNODE,SDPAR
- S SDBEGDT=$G(SDBEGDT,2961001),SDENDDT=$G(SDENDDT,DT)+.9
- S SDALL='$O(SDCLINIC(0)),SDDATE=SDBEGDT-.1
- F S SDDATE=$O(^SCE("B",SDDATE)) Q:'SDDATE!(SDDATE>SDENDDT) D
- . S SDENC=""
- . F S SDENC=$O(^SCE("B",SDDATE,SDENC)) Q:'SDENC D
- . . S SDNODE=$G(^SCE(SDENC,0))
- . . I $P(SDNODE,"^",8)'=4 Q ; not a credit stop encounter
- . . I 'SDALL D Q ; if only select clinics chosen
- . . . I $D(SDCLINIC(+$P(SDNODE,"^",4))) D DEL(SDENC) ; delete credit associated with location
- . . S SDCRED=$P(SDNODE,"^",3)
- . . S SDPAR=$G(^SCE(+$P(SDNODE,"^",6),0)) ; get parent encounter
- . . I $P(SDPAR,"^",12)=12 D DEL(SDENC) Q ; delete credit for non-counts
- . . I SDCRED=$P(SDPAR,"^",3) D DEL(SDENC) Q ; delete if credit stop = stop
- LOOPQ Q
- ;
- ;
- DEL(IEN) ; delete encounter and increment counter by location
- ;
- ; Input - IEN of Outpatient Encounter file
- ;
- N DA,DIK,LOC
- S LOC=$P($G(^SCE(IEN,0)),"^",4)
- S SDCOUNT(LOC)=$G(SDCOUNT(LOC))+1
- S DIK="^SCE("
- S DA=IEN
- I '$G(SDNODEL) D ^DIK
- Q
- ;
- ;
- MAIL ; send bulletin of results
- N DIFROM,SDTEXT
- S SDCOUNT=0
- D LINE("The Credit Stop Code Encounter clean-up has run to completion at "_$P($$SITE^VASITE(),"^",2)_"."),LINE("")
- D LINE(" Start Time: "_$$FMTE^XLFDT(SDSTART))
- D LINE(" End Time: "_$$FMTE^XLFDT($$NOW^XLFDT())),LINE("")
- I '$O(SDCLINIC(0)) D
- . D LINE("Credit stop code encounters for all clinics were deleted IF either:")
- . D LINE(" a. the credit stop code associated with the clinic was equal")
- . D LINE(" to the stop code associated with the clinic.")
- . D LINE(" b. the clinic was set up as NON-COUNT.")
- . D LINE("")
- . D LINE("The following is a list of clinics for which credit stop code")
- . D LINE("encounters were deleted:")
- . F I=0:0 S I=$O(SDCOUNT(I)) Q:'I D LINE(" #"_I_" - "_$P($G(^SC(I,0)),"^",1)_"..."_+SDCOUNT(I)_" encounters deleted")
- . I '$O(SDCOUNT(0)) D LINE(" No credit stop code encounters were found meeting the above criteria.")
- E D
- . D LINE("Credit stop code encounters were deleted for the following")
- . D LINE("Hospital Locations:")
- . F I=0:0 S I=$O(SDCLINIC(I)) Q:'I D LINE(" #"_I_" - "_$P($G(^SC(I,0)),"^",1)_"..."_+$G(SDCOUNT(I))_" encounters deleted")
- S XMSUB="Credit Stop Code Encounter Clean-up is Complete",XMN=0
- S XMTEXT="SDTEXT("
- S XMDUZ=.5,XMY(DUZ)=""
- D ^XMD
- K XMDUZ,XMN,XMSUB,XMTEXT,XMY
- Q
- ;
- ;
- LINE(TEXT) ; add text to mail message
- S SDCOUNT=SDCOUNT+1,SDTEXT(SDCOUNT)=TEXT
- Q
- ;
- ;
- CLINIC ; entry point if a site wants to delete ALL credit stop encounters associated with one (or more) hospital location(s)
- ;
- ; do not use without consulting customer support or development first...
- ;
- N SDCLINIC
- S VAUTVB="SDCLINIC",VAUTSTR="clinic",VAUTNALL=1,VAUTNI=2
- S DIC="^SC(",DIC("S")="I $P(^(0),U,3)=""C"""
- D FIRST^VAUTOMA
- I Y'<0 W !!,"Queuing credit stop encounter cleanup:" D QUEUE
- D RETRAN
- Q
- ;
- ;
- QUEUE ; queue process to run
- N I
- S ZTDESC="Credit stop code encounter clean-up process"
- S ZTIO=""
- F I="SDBEGDT","SDENDDT","SDCLINIC","SDNODEL" S ZTSAVE(I)=""
- S ZTRTN="EN^SD5384PT"
- D ^%ZTLOAD
- I $D(ZTSK) W !,"Task number = ",ZTSK
- K ZTDESC,ZTIO,ZTRTN,ZTSAVE,ZTSK
- Q
- ;
- ;
- RETRAN ; flag errors of one type to retransmit
- N DTOUT,DIROUT,DIRUT,DUOUT,ERROR,X,Y,DIR,SDLOOP
- S DIR(0)="P^409.76:AQEMZ"
- D ^DIR
- I Y'>0 Q
- S ERROR=+Y,SDLOOP=0
- F S SDLOOP=$O(^SD(409.75,SDLOOP)) Q:'SDLOOP S X=$G(^(SDLOOP,0)) D
- . I $P(X,"^",2)=ERROR D XMITFLAG^SCDXFU01(+X,0)
- Q
- SD5384PT ;ALB/MLI - clean-up routine to remove credit stop code encounters ; 12 Dec 96 @ 10:02
- +1 ;;5.3;Scheduling;**84,1015**;AUG 13, 1993;Build 21
- +2 ;
- +3 ; This routine will loop through the Outpatient Encounter file for a date range and
- +4 ; look for credit stop codes which are:
- +5 ;
- +6 ; a. associated with location where the stop code is the same as the
- +7 ; credit stop code.
- +8 ;
- +9 ; b. associated with a non-count clinic.
- +10 ;
- +11 ; Credit stop code encounters (originating process = 4) found which meet one of
- +12 ; the above criteria will be deleted.
- +13 ;
- +14 ; The variables SDBEGDT and SDENDDT can be set prior to calling EN if a date range
- +15 ; other than 10/1/96 through the present is desired. The process will be queued
- +16 ; and a mail message of findings will be sent.
- +17 ;
- +18 ; If SDNODEL is defined, no data will be deleted.
- +19 ;
- +20 ;
- EN ; process task
- +1 NEW SDCOUNT,SDSTART
- +2 SET SDSTART=$$NOW^XLFDT()
- +3 ; loop through entries and delete
- DO LOOP
- +4 ; build mail message of results
- DO MAIL
- +5 QUIT
- +6 ;
- +7 ;
- LOOP ; loop through encounter file and delete bogus credit stop entries
- +1 ;
- +2 ; Input Variables (all optional):
- +3 ; SDBEGDT = Beginning date of encounter search (default 2961001)
- +4 ; SDENDDT = Ending date of encounter search (default DT)
- +5 ; SDCLINIC = array of specific locations to look at (otherwise all)
- +6 ; SDNODEL = 1 if data should not be deleted during run
- +7 ;
- +8 ; Variables used:
- +9 ; SDALL = 1 if all clinics searched...otherwise 0
- +10 ; SDDATE = loop counter for encounter date
- +11 ; SDENC = loop counter for IEN of outpt encounter file
- +12 ; SDNODE = 0 node of ^SCE
- +13 ; SDCRED = credit stop code pointer
- +14 ; SDCOUNT = counter, subscripted by location IEN, of deleted credit
- +15 ; stop code encounters
- +16 ;
- +17 NEW SDALL,SDCRED,SDDATE,SDENC,SDNODE,SDPAR
- +18 SET SDBEGDT=$GET(SDBEGDT,2961001)
- SET SDENDDT=$GET(SDENDDT,DT)+.9
- +19 SET SDALL='$ORDER(SDCLINIC(0))
- SET SDDATE=SDBEGDT-.1
- +20 FOR
- SET SDDATE=$ORDER(^SCE("B",SDDATE))
- IF 'SDDATE!(SDDATE>SDENDDT)
- QUIT
- Begin DoDot:1
- +21 SET SDENC=""
- +22 FOR
- SET SDENC=$ORDER(^SCE("B",SDDATE,SDENC))
- IF 'SDENC
- QUIT
- Begin DoDot:2
- +23 SET SDNODE=$GET(^SCE(SDENC,0))
- +24 ; not a credit stop encounter
- IF $PIECE(SDNODE,"^",8)'=4
- QUIT
- +25 ; if only select clinics chosen
- IF 'SDALL
- Begin DoDot:3
- +26 ; delete credit associated with location
- IF $DATA(SDCLINIC(+$PIECE(SDNODE,"^",4)))
- DO DEL(SDENC)
- End DoDot:3
- QUIT
- +27 SET SDCRED=$PIECE(SDNODE,"^",3)
- +28 ; get parent encounter
- SET SDPAR=$GET(^SCE(+$PIECE(SDNODE,"^",6),0))
- +29 ; delete credit for non-counts
- IF $PIECE(SDPAR,"^",12)=12
- DO DEL(SDENC)
- QUIT
- +30 ; delete if credit stop = stop
- IF SDCRED=$PIECE(SDPAR,"^",3)
- DO DEL(SDENC)
- QUIT
- End DoDot:2
- End DoDot:1
- LOOPQ QUIT
- +1 ;
- +2 ;
- DEL(IEN) ; delete encounter and increment counter by location
- +1 ;
- +2 ; Input - IEN of Outpatient Encounter file
- +3 ;
- +4 NEW DA,DIK,LOC
- +5 SET LOC=$PIECE($GET(^SCE(IEN,0)),"^",4)
- +6 SET SDCOUNT(LOC)=$GET(SDCOUNT(LOC))+1
- +7 SET DIK="^SCE("
- +8 SET DA=IEN
- +9 IF '$GET(SDNODEL)
- DO ^DIK
- +10 QUIT
- +11 ;
- +12 ;
- MAIL ; send bulletin of results
- +1 NEW DIFROM,SDTEXT
- +2 SET SDCOUNT=0
- +3 DO LINE("The Credit Stop Code Encounter clean-up has run to completion at "_$PIECE($$SITE^VASITE(),"^",2)_".")
- DO LINE("")
- +4 DO LINE(" Start Time: "_$$FMTE^XLFDT(SDSTART))
- +5 DO LINE(" End Time: "_$$FMTE^XLFDT($$NOW^XLFDT()))
- DO LINE("")
- +6 IF '$ORDER(SDCLINIC(0))
- Begin DoDot:1
- +7 DO LINE("Credit stop code encounters for all clinics were deleted IF either:")
- +8 DO LINE(" a. the credit stop code associated with the clinic was equal")
- +9 DO LINE(" to the stop code associated with the clinic.")
- +10 DO LINE(" b. the clinic was set up as NON-COUNT.")
- +11 DO LINE("")
- +12 DO LINE("The following is a list of clinics for which credit stop code")
- +13 DO LINE("encounters were deleted:")
- +14 FOR I=0:0
- SET I=$ORDER(SDCOUNT(I))
- IF 'I
- QUIT
- DO LINE(" #"_I_" - "_$PIECE($GET(^SC(I,0)),"^",1)_"..."_+SDCOUNT(I)_" encounters deleted")
- +15 IF '$ORDER(SDCOUNT(0))
- DO LINE(" No credit stop code encounters were found meeting the above criteria.")
- End DoDot:1
- +16 IF '$TEST
- Begin DoDot:1
- +17 DO LINE("Credit stop code encounters were deleted for the following")
- +18 DO LINE("Hospital Locations:")
- +19 FOR I=0:0
- SET I=$ORDER(SDCLINIC(I))
- IF 'I
- QUIT
- DO LINE(" #"_I_" - "_$PIECE($GET(^SC(I,0)),"^",1)_"..."_+$GET(SDCOUNT(I))_" encounters deleted")
- End DoDot:1
- +20 SET XMSUB="Credit Stop Code Encounter Clean-up is Complete"
- SET XMN=0
- +21 SET XMTEXT="SDTEXT("
- +22 SET XMDUZ=.5
- SET XMY(DUZ)=""
- +23 DO ^XMD
- +24 KILL XMDUZ,XMN,XMSUB,XMTEXT,XMY
- +25 QUIT
- +26 ;
- +27 ;
- LINE(TEXT) ; add text to mail message
- +1 SET SDCOUNT=SDCOUNT+1
- SET SDTEXT(SDCOUNT)=TEXT
- +2 QUIT
- +3 ;
- +4 ;
- CLINIC ; entry point if a site wants to delete ALL credit stop encounters associated with one (or more) hospital location(s)
- +1 ;
- +2 ; do not use without consulting customer support or development first...
- +3 ;
- +4 NEW SDCLINIC
- +5 SET VAUTVB="SDCLINIC"
- SET VAUTSTR="clinic"
- SET VAUTNALL=1
- SET VAUTNI=2
- +6 SET DIC="^SC("
- SET DIC("S")="I $P(^(0),U,3)=""C"""
- +7 DO FIRST^VAUTOMA
- +8 IF Y'<0
- WRITE !!,"Queuing credit stop encounter cleanup:"
- DO QUEUE
- +9 DO RETRAN
- +10 QUIT
- +11 ;
- +12 ;
- QUEUE ; queue process to run
- +1 NEW I
- +2 SET ZTDESC="Credit stop code encounter clean-up process"
- +3 SET ZTIO=""
- +4 FOR I="SDBEGDT","SDENDDT","SDCLINIC","SDNODEL"
- SET ZTSAVE(I)=""
- +5 SET ZTRTN="EN^SD5384PT"
- +6 DO ^%ZTLOAD
- +7 IF $DATA(ZTSK)
- WRITE !,"Task number = ",ZTSK
- +8 KILL ZTDESC,ZTIO,ZTRTN,ZTSAVE,ZTSK
- +9 QUIT
- +10 ;
- +11 ;
- RETRAN ; flag errors of one type to retransmit
- +1 NEW DTOUT,DIROUT,DIRUT,DUOUT,ERROR,X,Y,DIR,SDLOOP
- +2 SET DIR(0)="P^409.76:AQEMZ"
- +3 DO ^DIR
- +4 IF Y'>0
- QUIT
- +5 SET ERROR=+Y
- SET SDLOOP=0
- +6 FOR
- SET SDLOOP=$ORDER(^SD(409.75,SDLOOP))
- IF 'SDLOOP
- QUIT
- SET X=$GET(^(SDLOOP,0))
- Begin DoDot:1
- +7 IF $PIECE(X,"^",2)=ERROR
- DO XMITFLAG^SCDXFU01(+X,0)
- End DoDot:1
- +8 QUIT