| 1 | ORY260 ; SLC/STAFF - Patch OR*3.0*260 post init ;8/21/06  13:13
 | 
|---|
| 2 |  ;;3.0;ORDER ENTRY/RESULTS REPORTING;**260**;Dec 17, 1997;Build 26
 | 
|---|
| 3 | POST ; post-init to patch OR*3.0*260
 | 
|---|
| 4 |  ; fix any string formatted date/times in CR index
 | 
|---|
| 5 |  ; remove Treatment type from graphing
 | 
|---|
| 6 |  N DA,DIR,ORMSG,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE K DIR,ORMSG
 | 
|---|
| 7 |  S ORMSG(1)="A task is being queued in the background to identify"
 | 
|---|
| 8 |  S ORMSG(2)="any Start or Start dates where times have trailing zeros."
 | 
|---|
| 9 |  S ORMSG(3)=""
 | 
|---|
| 10 |  S ORMSG(4)="These indexes will be reset with the correct canonic"
 | 
|---|
| 11 |  S ORMSG(5)="values by this background job. A mail message will be"
 | 
|---|
| 12 |  S ORMSG(6)="sent to the initiator of this patch at completion."
 | 
|---|
| 13 |  S ORMSG(7)=""
 | 
|---|
| 14 |  S ORMSG(8)=""
 | 
|---|
| 15 |  S ZTRTN="DQ^ORY260",ZTIO=""
 | 
|---|
| 16 |  S ZTDESC="Clean up - Patch 260",ZTDTH=$H,ZTSAVE("DUZ")=""
 | 
|---|
| 17 |  D ^%ZTLOAD
 | 
|---|
| 18 |  S ORMSG(9)="The task number is "_$G(ZTSK)
 | 
|---|
| 19 |  D MES^XPDUTL(.ORMSG) I '$D(ZTQUEUED) D
 | 
|---|
| 20 |  . N DIR,Y
 | 
|---|
| 21 |  . S DIR(0)="E",DIR("A")="Press return - installation is complete."
 | 
|---|
| 22 |  . D ^DIR
 | 
|---|
| 23 |  Q
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 | DQ ; dequeued
 | 
|---|
| 26 |  N BEGIN,CNT,DFN,ITEM,NODE,OK,START,STOP K ^TMP("ORPXRM",$J),^TMP("ORTXT",$J)
 | 
|---|
| 27 |  S BEGIN=$$NOW^XLFDT
 | 
|---|
| 28 |  S CNT=0
 | 
|---|
| 29 |  S DFN=0
 | 
|---|
| 30 |  F  S DFN=$O(^PXRMINDX(100,"PI",DFN)) Q:DFN<1  D
 | 
|---|
| 31 |  . S ITEM=0
 | 
|---|
| 32 |  . F  S ITEM=$O(^PXRMINDX(100,"PI",DFN,ITEM)) Q:ITEM<1  D
 | 
|---|
| 33 |  .. S START=""
 | 
|---|
| 34 |  .. F  S START=$O(^PXRMINDX(100,"PI",DFN,ITEM,START)) Q:START=""  D
 | 
|---|
| 35 |  ... S STOP=""
 | 
|---|
| 36 |  ... F  S STOP=$O(^PXRMINDX(100,"PI",DFN,ITEM,START,STOP)) Q:STOP=""  D
 | 
|---|
| 37 |  .... S OK=1
 | 
|---|
| 38 |  .... I START'=+START S OK=0
 | 
|---|
| 39 |  .... I OK,$E(STOP)'="U",STOP'=+STOP S OK=0
 | 
|---|
| 40 |  .... I OK Q
 | 
|---|
| 41 |  .... S NODE=""
 | 
|---|
| 42 |  .... F  S NODE=$O(^PXRMINDX(100,"PI",DFN,ITEM,START,STOP,NODE)) Q:NODE=""  D
 | 
|---|
| 43 |  ..... S ^TMP("ORPXRM",$J,NODE)=DFN_U_ITEM_U_START_U_STOP
 | 
|---|
| 44 |  ..... S CNT=CNT+1
 | 
|---|
| 45 |  ..... ;W !,NODE,?20,$P($G(^OR(100,+NODE,0)),U,8),?35,$P($G(^OR(100,+NODE,0)),U,9),?55,START
 | 
|---|
| 46 |  S ^TMP("ORTXT",$J,4)="-- "_CNT_" nodes to check --" ; overwrite on finish
 | 
|---|
| 47 |  S ^TMP("ORTXT",$J,5)=" "
 | 
|---|
| 48 |  S CNT=5
 | 
|---|
| 49 |  S NODE=""
 | 
|---|
| 50 |  F  S NODE=$O(^TMP("ORPXRM",$J,NODE)) Q:NODE=""  D
 | 
|---|
| 51 |  . D FIX(NODE,.CNT)
 | 
|---|
| 52 |  S ^TMP("ORTXT",$J,4)="-- "_(CNT-5)_" changes made --"
 | 
|---|
| 53 |  K ^TMP("ORPXRM",$J)
 | 
|---|
| 54 |  D TREMOVE("ORWG GRAPH VIEW") ; removes treatment type from graphing
 | 
|---|
| 55 |  D MAIL(BEGIN)
 | 
|---|
| 56 |  K ^TMP("ORTXT",$J)
 | 
|---|
| 57 |  Q
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 | FIX(NODE,CNT) ;
 | 
|---|
| 60 |  N DA,DATE1,DATE2,DFN,DIE,DR,ITEM,LINE,START,STOP,VALUES,ZERO
 | 
|---|
| 61 |  S VALUES=$G(^TMP("ORPXRM",$J,NODE))
 | 
|---|
| 62 |  S DFN=$P(VALUES,U)
 | 
|---|
| 63 |  S ITEM=$P(VALUES,U,2)
 | 
|---|
| 64 |  S DATE1=$P(VALUES,U,3)
 | 
|---|
| 65 |  S DATE2=$P(VALUES,U,4)
 | 
|---|
| 66 |  K ^PXRMINDX(100,"PI",DFN,ITEM,DATE1,DATE2,NODE)
 | 
|---|
| 67 |  K ^PXRMINDX(100,"IP",ITEM,DFN,DATE1,DATE2,NODE)
 | 
|---|
| 68 |  S DIE="^OR(100,"
 | 
|---|
| 69 |  S DA=+NODE
 | 
|---|
| 70 |  S ZERO=$G(^OR(100,DA,0))
 | 
|---|
| 71 |  S START=+$P(ZERO,U,8) I START=0 S START="@"
 | 
|---|
| 72 |  S STOP=+$P(ZERO,U,9) I STOP=0 S STOP="@"
 | 
|---|
| 73 |  S DR=""
 | 
|---|
| 74 |  I START'=DATE1 S DR="21///"_START
 | 
|---|
| 75 |  I START="@",$P(ZERO,U,8)="" S DR=""
 | 
|---|
| 76 |  I STOP'=DATE2 D
 | 
|---|
| 77 |  . I STOP="@",$E(DATE2)="U" Q
 | 
|---|
| 78 |  . I $L(DR) S DR=DR_";22///"_STOP Q
 | 
|---|
| 79 |  . S DR="22///"_STOP Q
 | 
|---|
| 80 |  I '$L(DR) Q
 | 
|---|
| 81 |  S LINE="Node: "_NODE
 | 
|---|
| 82 |  I DR["21///" S LINE=LINE_"; Start: "_DATE1_" -> "_START
 | 
|---|
| 83 |  I DR["22///" S LINE=LINE_"; Stop: "_DATE2_" -> "_STOP
 | 
|---|
| 84 |  D ^DIE
 | 
|---|
| 85 |  S CNT=CNT+1
 | 
|---|
| 86 |  S ^TMP("ORTXT",$J,CNT)=LINE
 | 
|---|
| 87 |  Q
 | 
|---|
| 88 |  ;
 | 
|---|
| 89 | TREMOVE(PARAM) ;
 | 
|---|
| 90 |  N ENTITY,INST,LINES,OK,VALUES K LINES,VALUES
 | 
|---|
| 91 |  D XENVAL^ORWGAPIX(.VALUES,PARAM)
 | 
|---|
| 92 |  I '$L($O(VALUES(""))) Q
 | 
|---|
| 93 |  S ENTITY=""
 | 
|---|
| 94 |  F  S ENTITY=$O(VALUES(ENTITY)) Q:ENTITY=""  D
 | 
|---|
| 95 |  . S INST=""
 | 
|---|
| 96 |  . F  S INST=$O(VALUES(ENTITY,INST)) Q:INST=""  D
 | 
|---|
| 97 |  .. D XGETWP^ORWGAPIX(.LINES,ENTITY,PARAM,INST)
 | 
|---|
| 98 |  .. D FIXLINES(.LINES,.OK)
 | 
|---|
| 99 |  .. I 'OK D FIXIT(.LINES,ENTITY,PARAM,INST)
 | 
|---|
| 100 |  Q
 | 
|---|
| 101 |  ;
 | 
|---|
| 102 | FIXLINES(LINES,OK) ;
 | 
|---|
| 103 |  N I,LINE,NLINE,NLINES,NNUM,NUM,PART K NLINES
 | 
|---|
| 104 |  S OK=1,NNUM=0
 | 
|---|
| 105 |  S NUM=0
 | 
|---|
| 106 |  F  S NUM=$O(LINES(NUM)) Q:NUM<1  D
 | 
|---|
| 107 |  . S LINE=$G(LINES(NUM,0))
 | 
|---|
| 108 |  . I '$L(LINE) Q
 | 
|---|
| 109 |  . S NLINE=LINE
 | 
|---|
| 110 |  . I LINE["~9000010.15" D
 | 
|---|
| 111 |  .. S NLINE="",OK=0
 | 
|---|
| 112 |  .. F I=1:1:999 S PART=$P(LINE,"|",I) Q:PART=""  D
 | 
|---|
| 113 |  ... I PART["~9000010.15" Q
 | 
|---|
| 114 |  ... S NLINE=NLINE_PART_"|"
 | 
|---|
| 115 |  . I NLINE="" Q
 | 
|---|
| 116 |  . S NNUM=NNUM+1
 | 
|---|
| 117 |  . S NLINES(NNUM,0)=NLINE
 | 
|---|
| 118 |  I OK Q
 | 
|---|
| 119 |  K LINES
 | 
|---|
| 120 |  M LINES=NLINES
 | 
|---|
| 121 |  Q
 | 
|---|
| 122 |  ;
 | 
|---|
| 123 | FIXIT(LINES,ENTITY,PARAM,INST) ;
 | 
|---|
| 124 |  D XDEL^ORWGAPIX(ENTITY,PARAM,INST)
 | 
|---|
| 125 |  I $L($O(LINES(""))) D XEN^ORWGAPIX(ENTITY,PARAM,INST,.LINES)
 | 
|---|
| 126 |  Q
 | 
|---|
| 127 |  ;
 | 
|---|
| 128 | MAIL(BEGIN) ; -- Send completion message to user who initiated cleanup
 | 
|---|
| 129 |  N TIMES,XMSUB,XMTEXT,XMDUN,XMDUZ,XMY,XMZ K XMY
 | 
|---|
| 130 |  S XMDUZ="PATCH OR*3.0*260 CLEAN-UP",XMY(.5)="" S:$G(DUZ) XMY(DUZ)=""
 | 
|---|
| 131 |  S TIMES="Started: "_$$FMTE^XLFDT(BEGIN)_"; Completed: "_$$FMTE^XLFDT($$NOW^XLFDT)_"."
 | 
|---|
| 132 |  S ^TMP("ORTXT",$J,1)="Clean up for patch OR*3.0*260"
 | 
|---|
| 133 |  S ^TMP("ORTXT",$J,2)=TIMES
 | 
|---|
| 134 |  S ^TMP("ORTXT",$J,3)="Order Node Date Cleanup:"
 | 
|---|
| 135 |  S XMTEXT="^TMP(""ORTXT"","_$J_","
 | 
|---|
| 136 |  S XMSUB="PATCH OR*3.0*260 Clean Up COMPLETED"
 | 
|---|
| 137 |  D ^XMD
 | 
|---|
| 138 |  Q
 | 
|---|