| 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 | 
|---|