| [613] | 1 | SD5384PT ;ALB/MLI - clean-up routine to remove credit stop code encounters ; 12 Dec 96 @ 10:02
 | 
|---|
 | 2 |  ;;5.3;Scheduling;**84**;AUG 13, 1993
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 |  ; This routine will loop through the Outpatient Encounter file for a date range and
 | 
|---|
 | 5 |  ; look for credit stop codes which are:
 | 
|---|
 | 6 |  ; 
 | 
|---|
 | 7 |  ;    a.  associated with location where the stop code is the same as the
 | 
|---|
 | 8 |  ;        credit stop code.
 | 
|---|
 | 9 |  ;
 | 
|---|
 | 10 |  ;    b.  associated with a non-count clinic.
 | 
|---|
 | 11 |  ;
 | 
|---|
 | 12 |  ; Credit stop code encounters (originating process = 4) found which meet one of
 | 
|---|
 | 13 |  ; the above criteria will be deleted.
 | 
|---|
 | 14 |  ;
 | 
|---|
 | 15 |  ; The variables SDBEGDT and SDENDDT can be set prior to calling EN if a date range
 | 
|---|
 | 16 |  ; other than 10/1/96 through the present is desired.  The process will be queued
 | 
|---|
 | 17 |  ; and a mail message of findings will be sent.
 | 
|---|
 | 18 |  ;
 | 
|---|
 | 19 |  ; If SDNODEL is defined, no data will be deleted.
 | 
|---|
 | 20 |  ;
 | 
|---|
 | 21 |  ;
 | 
|---|
 | 22 | EN ; process task
 | 
|---|
 | 23 |  N SDCOUNT,SDSTART
 | 
|---|
 | 24 |  S SDSTART=$$NOW^XLFDT()
 | 
|---|
 | 25 |  D LOOP ; loop through entries and delete
 | 
|---|
 | 26 |  D MAIL ; build mail message of results
 | 
|---|
 | 27 |  Q
 | 
|---|
 | 28 |  ; 
 | 
|---|
 | 29 |  ;
 | 
|---|
 | 30 | LOOP ; loop through encounter file and delete bogus credit stop entries
 | 
|---|
 | 31 |  ;
 | 
|---|
 | 32 |  ; Input Variables (all optional):
 | 
|---|
 | 33 |  ; SDBEGDT  = Beginning date of encounter search (default 2961001)
 | 
|---|
 | 34 |  ; SDENDDT  = Ending date of encounter search (default DT)
 | 
|---|
 | 35 |  ; SDCLINIC = array of specific locations to look at (otherwise all)
 | 
|---|
 | 36 |  ; SDNODEL  = 1 if data should not be deleted during run
 | 
|---|
 | 37 |  ;   
 | 
|---|
 | 38 |  ; Variables used:
 | 
|---|
 | 39 |  ; SDALL    = 1 if all clinics searched...otherwise 0
 | 
|---|
 | 40 |  ; SDDATE   = loop counter for encounter date                        
 | 
|---|
 | 41 |  ; SDENC    = loop counter for IEN of outpt encounter file
 | 
|---|
 | 42 |  ; SDNODE   = 0 node of ^SCE
 | 
|---|
 | 43 |  ; SDCRED   = credit stop code pointer
 | 
|---|
 | 44 |  ; SDCOUNT  = counter, subscripted by location IEN, of deleted credit
 | 
|---|
 | 45 |  ;            stop code encounters
 | 
|---|
 | 46 |  ;
 | 
|---|
 | 47 |  N SDALL,SDCRED,SDDATE,SDENC,SDNODE,SDPAR
 | 
|---|
 | 48 |  S SDBEGDT=$G(SDBEGDT,2961001),SDENDDT=$G(SDENDDT,DT)+.9
 | 
|---|
 | 49 |  S SDALL='$O(SDCLINIC(0)),SDDATE=SDBEGDT-.1
 | 
|---|
 | 50 |  F  S SDDATE=$O(^SCE("B",SDDATE)) Q:'SDDATE!(SDDATE>SDENDDT)  D
 | 
|---|
 | 51 |  .  S SDENC=""
 | 
|---|
 | 52 |  .  F  S SDENC=$O(^SCE("B",SDDATE,SDENC)) Q:'SDENC  D
 | 
|---|
 | 53 |  .  .  S SDNODE=$G(^SCE(SDENC,0))
 | 
|---|
 | 54 |  .  .  I $P(SDNODE,"^",8)'=4 Q                                            ; not a credit stop encounter
 | 
|---|
 | 55 |  .  .  I 'SDALL D  Q                                                      ; if only select clinics chosen
 | 
|---|
 | 56 |  .  .  .  I $D(SDCLINIC(+$P(SDNODE,"^",4))) D DEL(SDENC)                  ; delete credit associated with location
 | 
|---|
 | 57 |  .  .  S SDCRED=$P(SDNODE,"^",3)
 | 
|---|
 | 58 |  .  .  S SDPAR=$G(^SCE(+$P(SDNODE,"^",6),0))                              ; get parent encounter
 | 
|---|
 | 59 |  .  .  I $P(SDPAR,"^",12)=12 D DEL(SDENC) Q                               ; delete credit for non-counts
 | 
|---|
 | 60 |  .  .  I SDCRED=$P(SDPAR,"^",3) D DEL(SDENC) Q                            ; delete if credit stop = stop
 | 
|---|
 | 61 | LOOPQ Q
 | 
|---|
 | 62 |  ;
 | 
|---|
 | 63 |  ;
 | 
|---|
 | 64 | DEL(IEN) ; delete encounter and increment counter by location
 | 
|---|
 | 65 |  ;
 | 
|---|
 | 66 |  ; Input - IEN of Outpatient Encounter file
 | 
|---|
 | 67 |  ;
 | 
|---|
 | 68 |  N DA,DIK,LOC
 | 
|---|
 | 69 |  S LOC=$P($G(^SCE(IEN,0)),"^",4)
 | 
|---|
 | 70 |  S SDCOUNT(LOC)=$G(SDCOUNT(LOC))+1
 | 
|---|
 | 71 |  S DIK="^SCE("
 | 
|---|
 | 72 |  S DA=IEN
 | 
|---|
 | 73 |  I '$G(SDNODEL) D ^DIK
 | 
|---|
 | 74 |  Q
 | 
|---|
 | 75 |  ;
 | 
|---|
 | 76 |  ;
 | 
|---|
 | 77 | MAIL ; send bulletin of results
 | 
|---|
 | 78 |  N DIFROM,SDTEXT
 | 
|---|
 | 79 |  S SDCOUNT=0
 | 
|---|
 | 80 |  D LINE("The Credit Stop Code Encounter clean-up has run to completion at "_$P($$SITE^VASITE(),"^",2)_"."),LINE("")
 | 
|---|
 | 81 |  D LINE("    Start Time:         "_$$FMTE^XLFDT(SDSTART))
 | 
|---|
 | 82 |  D LINE("    End Time:           "_$$FMTE^XLFDT($$NOW^XLFDT())),LINE("")
 | 
|---|
 | 83 |  I '$O(SDCLINIC(0)) D
 | 
|---|
 | 84 |  . D LINE("Credit stop code encounters for all clinics were deleted IF either:")
 | 
|---|
 | 85 |  . D LINE("    a.  the credit stop code associated with the clinic was equal")
 | 
|---|
 | 86 |  . D LINE("        to the stop code associated with the clinic.")
 | 
|---|
 | 87 |  . D LINE("    b.  the clinic was set up as NON-COUNT.")
 | 
|---|
 | 88 |  . D LINE("")
 | 
|---|
 | 89 |  . D LINE("The following is a list of clinics for which credit stop code")
 | 
|---|
 | 90 |  . D LINE("encounters were deleted:")
 | 
|---|
 | 91 |  . F I=0:0 S I=$O(SDCOUNT(I)) Q:'I  D LINE("   #"_I_" - "_$P($G(^SC(I,0)),"^",1)_"..."_+SDCOUNT(I)_" encounters deleted")
 | 
|---|
 | 92 |  . I '$O(SDCOUNT(0)) D LINE("   No credit stop code encounters were found meeting the above criteria.")
 | 
|---|
 | 93 |  E  D
 | 
|---|
 | 94 |  . D LINE("Credit stop code encounters were deleted for the following")
 | 
|---|
 | 95 |  . D LINE("Hospital Locations:")
 | 
|---|
 | 96 |  . 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")
 | 
|---|
 | 97 |  S XMSUB="Credit Stop Code Encounter Clean-up is Complete",XMN=0
 | 
|---|
 | 98 |  S XMTEXT="SDTEXT("
 | 
|---|
 | 99 |  S XMDUZ=.5,XMY(DUZ)=""
 | 
|---|
 | 100 |  D ^XMD
 | 
|---|
 | 101 |  K XMDUZ,XMN,XMSUB,XMTEXT,XMY
 | 
|---|
 | 102 |  Q
 | 
|---|
 | 103 |  ;
 | 
|---|
 | 104 |  ;
 | 
|---|
 | 105 | LINE(TEXT) ; add text to mail message
 | 
|---|
 | 106 |  S SDCOUNT=SDCOUNT+1,SDTEXT(SDCOUNT)=TEXT
 | 
|---|
 | 107 |  Q
 | 
|---|
 | 108 |  ;
 | 
|---|
 | 109 |  ;
 | 
|---|
 | 110 | CLINIC ; entry point if a site wants to delete ALL credit stop encounters associated with one (or more) hospital location(s)
 | 
|---|
 | 111 |  ;
 | 
|---|
 | 112 |  ; do not use without consulting customer support or development first...
 | 
|---|
 | 113 |  ;
 | 
|---|
 | 114 |  N SDCLINIC
 | 
|---|
 | 115 |  S VAUTVB="SDCLINIC",VAUTSTR="clinic",VAUTNALL=1,VAUTNI=2
 | 
|---|
 | 116 |  S DIC="^SC(",DIC("S")="I $P(^(0),U,3)=""C"""
 | 
|---|
 | 117 |  D FIRST^VAUTOMA
 | 
|---|
 | 118 |  I Y'<0 W !!,"Queuing credit stop encounter cleanup:" D QUEUE
 | 
|---|
 | 119 |  D RETRAN
 | 
|---|
 | 120 |  Q
 | 
|---|
 | 121 |  ;
 | 
|---|
 | 122 |  ;
 | 
|---|
 | 123 | QUEUE ; queue process to run
 | 
|---|
 | 124 |  N I
 | 
|---|
 | 125 |  S ZTDESC="Credit stop code encounter clean-up process"
 | 
|---|
 | 126 |  S ZTIO=""
 | 
|---|
 | 127 |  F I="SDBEGDT","SDENDDT","SDCLINIC","SDNODEL" S ZTSAVE(I)=""
 | 
|---|
 | 128 |  S ZTRTN="EN^SD5384PT"
 | 
|---|
 | 129 |  D ^%ZTLOAD
 | 
|---|
 | 130 |  I $D(ZTSK) W !,"Task number = ",ZTSK
 | 
|---|
 | 131 |  K ZTDESC,ZTIO,ZTRTN,ZTSAVE,ZTSK
 | 
|---|
 | 132 |  Q
 | 
|---|
 | 133 |  ;
 | 
|---|
 | 134 |  ;
 | 
|---|
 | 135 | RETRAN ; flag errors of one type to retransmit
 | 
|---|
 | 136 |  N DTOUT,DIROUT,DIRUT,DUOUT,ERROR,X,Y,DIR,SDLOOP
 | 
|---|
 | 137 |  S DIR(0)="P^409.76:AQEMZ"
 | 
|---|
 | 138 |  D ^DIR
 | 
|---|
 | 139 |  I Y'>0 Q
 | 
|---|
 | 140 |  S ERROR=+Y,SDLOOP=0
 | 
|---|
 | 141 |  F  S SDLOOP=$O(^SD(409.75,SDLOOP)) Q:'SDLOOP  S X=$G(^(SDLOOP,0)) D
 | 
|---|
 | 142 |  .  I $P(X,"^",2)=ERROR D XMITFLAG^SCDXFU01(+X,0)
 | 
|---|
 | 143 |  Q
 | 
|---|