| [613] | 1 | SD5384NC ;ALB/MLI - Non-count encounter cleanup ; January 13, 1996
 | 
|---|
 | 2 |  ;;5.3;Scheduling;**84**;AUG 13, 1993
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 |  ; This routine will update encounters to be non-count for locations
 | 
|---|
 | 5 |  ; selected.  It was written to correct problems caused when clinics
 | 
|---|
 | 6 |  ; were changed to non-count after 10/1/96.  It will also delete any
 | 
|---|
 | 7 |  ; related entries from the Transmitted Outpatient Encounter file.
 | 
|---|
 | 8 |  ;
 | 
|---|
 | 9 |  ; To run, call the routine from the top (D ^SD5384NC).  You will be
 | 
|---|
 | 10 |  ; asked for one or more hospital location entries which are set-up
 | 
|---|
 | 11 |  ; as non-count.  You will be asked for a date range where you can
 | 
|---|
 | 12 |  ; select beginning 10/1/96 and ending today's date.  It is STRONGLY
 | 
|---|
 | 13 |  ; recommended that you select the range where the problem actually
 | 
|---|
 | 14 |  ; occurred to reduce the amount of processing this routine will
 | 
|---|
 | 15 |  ; have to do.  For example, if you changed the locations to non-count
 | 
|---|
 | 16 |  ; on 11/4/96, enter 11/4/96 as your end date.
 | 
|---|
 | 17 |  ;
 | 
|---|
 | 18 | EN ; ask questions, queue process
 | 
|---|
 | 19 |  N DIROUT,DIRUT,DTOUT,DUOUT,RANGE,SDBEG,SDEND,SDLOC
 | 
|---|
 | 20 |  D GETLOC(.SDLOC) I '$O(SDLOC(0)) G ENQ
 | 
|---|
 | 21 |  W ! S RANGE=$$GETDTRNG^SCDXUTL1(2961001,$P($$NOW^XLFDT(),".",1)) I RANGE<0 G ENQ
 | 
|---|
 | 22 |  S SDBEG=$P(RANGE,"^"),SDEND=$P(RANGE,"^",2)
 | 
|---|
 | 23 |  D QUEUE ; to queue process
 | 
|---|
 | 24 |  ;D DQ ; for testing
 | 
|---|
 | 25 | ENQ Q
 | 
|---|
 | 26 |  ;
 | 
|---|
 | 27 |  ;
 | 
|---|
 | 28 | GETLOC(ARRAY) ; get list of location(s)
 | 
|---|
 | 29 |  S DIC="^SC(",DIC("S")="I $P(^(0),""^"",17)=""Y"""
 | 
|---|
 | 30 |  S VAUTSTR="clinic",VAUTNI=2,VAUTVB="ARRAY",VAUTNALL=1
 | 
|---|
 | 31 |  D FIRST^VAUTOMA
 | 
|---|
 | 32 |  Q
 | 
|---|
 | 33 |  ;
 | 
|---|
 | 34 |  ;
 | 
|---|
 | 35 | QUEUE ; queue job
 | 
|---|
 | 36 |  N I,ZTDESC,ZTIO,ZTRTN,ZTSAVE,ZTSK
 | 
|---|
 | 37 |  S ZTIO="",ZTDESC="Reset non-count encounters",ZTRTN="DQ^SD5384NC"
 | 
|---|
 | 38 |  F I="SDLOC(","SDBEG","SDEND" S ZTSAVE(I)=""
 | 
|---|
 | 39 |  D ^%ZTLOAD
 | 
|---|
 | 40 |  I $G(ZTSK) W !,"Task queued:  #",ZTSK
 | 
|---|
 | 41 |  Q
 | 
|---|
 | 42 |  ;
 | 
|---|
 | 43 |  ;
 | 
|---|
 | 44 | DQ ; dequeue point...collect results and generate message.
 | 
|---|
 | 45 |  N SDCOUNT,SDSTART
 | 
|---|
 | 46 |  S SDSTART=$$NOW^XLFDT()
 | 
|---|
 | 47 |  S SDCOUNT=0
 | 
|---|
 | 48 |  D COLLECT
 | 
|---|
 | 49 |  D RESULTS
 | 
|---|
 | 50 |  Q
 | 
|---|
 | 51 |  ;
 | 
|---|
 | 52 |  ;
 | 
|---|
 | 53 | COLLECT ; collect data
 | 
|---|
 | 54 |  N OK,SDI,SDJ,SDX
 | 
|---|
 | 55 |  F SDI=SDBEG:0 S SDI=$O(^SCE("B",SDI)) Q:'SDI!(SDI>(SDEND+.9))  D
 | 
|---|
 | 56 |  . F SDJ=0:0 S SDJ=$O(^SCE("B",SDI,SDJ)) Q:'SDJ  D
 | 
|---|
 | 57 |  . . ;
 | 
|---|
 | 58 |  . . S SDX=$G(^SCE(SDJ,0)) I 'SDX Q                     ; no 0 node
 | 
|---|
 | 59 |  . . S SDLOC=+$P(SDX,"^",4)                             ; location of encounter
 | 
|---|
 | 60 |  . . I '$D(SDLOC(SDLOC)) Q                              ; not for a selected location
 | 
|---|
 | 61 |  . . I $P(SDX,"^",6) Q                                  ; child encounter
 | 
|---|
 | 62 |  . . I $P(SDX,"^",12)=12 Q                              ; not non-count
 | 
|---|
 | 63 |  . . ;
 | 
|---|
 | 64 |  . . D FILE("^SCE(",SDJ,".12////12")                    ; file as non-count
 | 
|---|
 | 65 |  . . D EN^SDCOM(SDJ,0,,.ERROR)                          ; call to update check-out
 | 
|---|
 | 66 |  . . S OK=$$DELXMIT^SCDXFU03(SDJ,1)                     ; delete trans outpt enc entry
 | 
|---|
 | 67 |  . . ;
 | 
|---|
 | 68 |  . . S $P(SDLOC(SDLOC),"^",2)=$P(SDLOC(SDLOC),"^",2)+1  ; increment counter by location
 | 
|---|
 | 69 |  Q
 | 
|---|
 | 70 |  ;
 | 
|---|
 | 71 |  ;
 | 
|---|
 | 72 | FILE(DIE,DA,DR) ; update entry defined in DA in file DIE with DR string
 | 
|---|
 | 73 |  N X,Y
 | 
|---|
 | 74 |  D ^DIE
 | 
|---|
 | 75 |  Q
 | 
|---|
 | 76 |  ;
 | 
|---|
 | 77 |  ;
 | 
|---|
 | 78 | RESULTS ; generate an e-mail bulletin when done
 | 
|---|
 | 79 |  N DIFROM,I,LINE,X
 | 
|---|
 | 80 |  S SDCOUNT=0
 | 
|---|
 | 81 |  D LINE("The Non-count Encounter cleanup has run to completion."),LINE("")
 | 
|---|
 | 82 |  D LINE("    Start Time:         "_$$FMTE^XLFDT(SDSTART))
 | 
|---|
 | 83 |  D LINE("    End Time:           "_$$FMTE^XLFDT($$NOW^XLFDT())),LINE("")
 | 
|---|
 | 84 |  F I=0:0 S I=$O(SDLOC(I)) Q:'I  D
 | 
|---|
 | 85 |  . S X=+$P(SDLOC(I),"^",2)
 | 
|---|
 | 86 |  . I X=1 S LINE="1 entry"
 | 
|---|
 | 87 |  . I X=0 S LINE="No entries"
 | 
|---|
 | 88 |  . I X>1 S LINE=X_" entries"
 | 
|---|
 | 89 |  . S LINE=LINE_" updated to be non-count for "_$P(SDLOC(I),"^",1)_" clinic (IEN #"_I_")"
 | 
|---|
 | 90 |  . D LINE(LINE)
 | 
|---|
 | 91 |  S XMSUB="Non-count Encounter Cleanup is Complete",XMN=0
 | 
|---|
 | 92 |  S XMTEXT="SDTEXT("
 | 
|---|
 | 93 |  S XMDUZ=.5,XMY(DUZ)=""
 | 
|---|
 | 94 |  D ^XMD
 | 
|---|
 | 95 |  K SDCOUNT,SDTEXT,XMDUZ,XMN,XMSUB,XMTEXT,XMY
 | 
|---|
 | 96 |  Q
 | 
|---|
 | 97 |  ;
 | 
|---|
 | 98 |  ;
 | 
|---|
 | 99 | LINE(TEXT) ; add text to mail message
 | 
|---|
 | 100 |  S SDCOUNT=SDCOUNT+1,SDTEXT(SDCOUNT)=TEXT
 | 
|---|
 | 101 |  Q
 | 
|---|