- ORY260 ; SLC/STAFF - Patch OR*3.0*260 post init ;8/21/06 13:13
- ;;3.0;ORDER ENTRY/RESULTS REPORTING;**260**;Dec 17, 1997;Build 26
- POST ; post-init to patch OR*3.0*260
- ; fix any string formatted date/times in CR index
- ; remove Treatment type from graphing
- N DA,DIR,ORMSG,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE K DIR,ORMSG
- S ORMSG(1)="A task is being queued in the background to identify"
- S ORMSG(2)="any Start or Start dates where times have trailing zeros."
- S ORMSG(3)=""
- S ORMSG(4)="These indexes will be reset with the correct canonic"
- S ORMSG(5)="values by this background job. A mail message will be"
- S ORMSG(6)="sent to the initiator of this patch at completion."
- S ORMSG(7)=""
- S ORMSG(8)=""
- S ZTRTN="DQ^ORY260",ZTIO=""
- S ZTDESC="Clean up - Patch 260",ZTDTH=$H,ZTSAVE("DUZ")=""
- D ^%ZTLOAD
- S ORMSG(9)="The task number is "_$G(ZTSK)
- D MES^XPDUTL(.ORMSG) I '$D(ZTQUEUED) D
- . N DIR,Y
- . S DIR(0)="E",DIR("A")="Press return - installation is complete."
- . D ^DIR
- Q
- ;
- DQ ; dequeued
- N BEGIN,CNT,DFN,ITEM,NODE,OK,START,STOP K ^TMP("ORPXRM",$J),^TMP("ORTXT",$J)
- S BEGIN=$$NOW^XLFDT
- S CNT=0
- S DFN=0
- F S DFN=$O(^PXRMINDX(100,"PI",DFN)) Q:DFN<1 D
- . S ITEM=0
- . F S ITEM=$O(^PXRMINDX(100,"PI",DFN,ITEM)) Q:ITEM<1 D
- .. S START=""
- .. F S START=$O(^PXRMINDX(100,"PI",DFN,ITEM,START)) Q:START="" D
- ... S STOP=""
- ... F S STOP=$O(^PXRMINDX(100,"PI",DFN,ITEM,START,STOP)) Q:STOP="" D
- .... S OK=1
- .... I START'=+START S OK=0
- .... I OK,$E(STOP)'="U",STOP'=+STOP S OK=0
- .... I OK Q
- .... S NODE=""
- .... F S NODE=$O(^PXRMINDX(100,"PI",DFN,ITEM,START,STOP,NODE)) Q:NODE="" D
- ..... S ^TMP("ORPXRM",$J,NODE)=DFN_U_ITEM_U_START_U_STOP
- ..... S CNT=CNT+1
- ..... ;W !,NODE,?20,$P($G(^OR(100,+NODE,0)),U,8),?35,$P($G(^OR(100,+NODE,0)),U,9),?55,START
- S ^TMP("ORTXT",$J,4)="-- "_CNT_" nodes to check --" ; overwrite on finish
- S ^TMP("ORTXT",$J,5)=" "
- S CNT=5
- S NODE=""
- F S NODE=$O(^TMP("ORPXRM",$J,NODE)) Q:NODE="" D
- . D FIX(NODE,.CNT)
- S ^TMP("ORTXT",$J,4)="-- "_(CNT-5)_" changes made --"
- K ^TMP("ORPXRM",$J)
- D TREMOVE("ORWG GRAPH VIEW") ; removes treatment type from graphing
- D MAIL(BEGIN)
- K ^TMP("ORTXT",$J)
- Q
- ;
- FIX(NODE,CNT) ;
- N DA,DATE1,DATE2,DFN,DIE,DR,ITEM,LINE,START,STOP,VALUES,ZERO
- S VALUES=$G(^TMP("ORPXRM",$J,NODE))
- S DFN=$P(VALUES,U)
- S ITEM=$P(VALUES,U,2)
- S DATE1=$P(VALUES,U,3)
- S DATE2=$P(VALUES,U,4)
- K ^PXRMINDX(100,"PI",DFN,ITEM,DATE1,DATE2,NODE)
- K ^PXRMINDX(100,"IP",ITEM,DFN,DATE1,DATE2,NODE)
- S DIE="^OR(100,"
- S DA=+NODE
- S ZERO=$G(^OR(100,DA,0))
- S START=+$P(ZERO,U,8) I START=0 S START="@"
- S STOP=+$P(ZERO,U,9) I STOP=0 S STOP="@"
- S DR=""
- I START'=DATE1 S DR="21///"_START
- I START="@",$P(ZERO,U,8)="" S DR=""
- I STOP'=DATE2 D
- . I STOP="@",$E(DATE2)="U" Q
- . I $L(DR) S DR=DR_";22///"_STOP Q
- . S DR="22///"_STOP Q
- I '$L(DR) Q
- S LINE="Node: "_NODE
- I DR["21///" S LINE=LINE_"; Start: "_DATE1_" -> "_START
- I DR["22///" S LINE=LINE_"; Stop: "_DATE2_" -> "_STOP
- D ^DIE
- S CNT=CNT+1
- S ^TMP("ORTXT",$J,CNT)=LINE
- Q
- ;
- TREMOVE(PARAM) ;
- N ENTITY,INST,LINES,OK,VALUES K LINES,VALUES
- D XENVAL^ORWGAPIX(.VALUES,PARAM)
- I '$L($O(VALUES(""))) Q
- S ENTITY=""
- F S ENTITY=$O(VALUES(ENTITY)) Q:ENTITY="" D
- . S INST=""
- . F S INST=$O(VALUES(ENTITY,INST)) Q:INST="" D
- .. D XGETWP^ORWGAPIX(.LINES,ENTITY,PARAM,INST)
- .. D FIXLINES(.LINES,.OK)
- .. I 'OK D FIXIT(.LINES,ENTITY,PARAM,INST)
- Q
- ;
- FIXLINES(LINES,OK) ;
- N I,LINE,NLINE,NLINES,NNUM,NUM,PART K NLINES
- S OK=1,NNUM=0
- S NUM=0
- F S NUM=$O(LINES(NUM)) Q:NUM<1 D
- . S LINE=$G(LINES(NUM,0))
- . I '$L(LINE) Q
- . S NLINE=LINE
- . I LINE["~9000010.15" D
- .. S NLINE="",OK=0
- .. F I=1:1:999 S PART=$P(LINE,"|",I) Q:PART="" D
- ... I PART["~9000010.15" Q
- ... S NLINE=NLINE_PART_"|"
- . I NLINE="" Q
- . S NNUM=NNUM+1
- . S NLINES(NNUM,0)=NLINE
- I OK Q
- K LINES
- M LINES=NLINES
- Q
- ;
- FIXIT(LINES,ENTITY,PARAM,INST) ;
- D XDEL^ORWGAPIX(ENTITY,PARAM,INST)
- I $L($O(LINES(""))) D XEN^ORWGAPIX(ENTITY,PARAM,INST,.LINES)
- Q
- ;
- MAIL(BEGIN) ; -- Send completion message to user who initiated cleanup
- N TIMES,XMSUB,XMTEXT,XMDUN,XMDUZ,XMY,XMZ K XMY
- S XMDUZ="PATCH OR*3.0*260 CLEAN-UP",XMY(.5)="" S:$G(DUZ) XMY(DUZ)=""
- S TIMES="Started: "_$$FMTE^XLFDT(BEGIN)_"; Completed: "_$$FMTE^XLFDT($$NOW^XLFDT)_"."
- S ^TMP("ORTXT",$J,1)="Clean up for patch OR*3.0*260"
- S ^TMP("ORTXT",$J,2)=TIMES
- S ^TMP("ORTXT",$J,3)="Order Node Date Cleanup:"
- S XMTEXT="^TMP(""ORTXT"","_$J_","
- S XMSUB="PATCH OR*3.0*260 Clean Up COMPLETED"
- D ^XMD
- Q
- ORY260 ; SLC/STAFF - Patch OR*3.0*260 post init ;8/21/06 13:13
- +1 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**260**;Dec 17, 1997;Build 26
- POST ; post-init to patch OR*3.0*260
- +1 ; fix any string formatted date/times in CR index
- +2 ; remove Treatment type from graphing
- +3 NEW DA,DIR,ORMSG,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE
- KILL DIR,ORMSG
- +4 SET ORMSG(1)="A task is being queued in the background to identify"
- +5 SET ORMSG(2)="any Start or Start dates where times have trailing zeros."
- +6 SET ORMSG(3)=""
- +7 SET ORMSG(4)="These indexes will be reset with the correct canonic"
- +8 SET ORMSG(5)="values by this background job. A mail message will be"
- +9 SET ORMSG(6)="sent to the initiator of this patch at completion."
- +10 SET ORMSG(7)=""
- +11 SET ORMSG(8)=""
- +12 SET ZTRTN="DQ^ORY260"
- SET ZTIO=""
- +13 SET ZTDESC="Clean up - Patch 260"
- SET ZTDTH=$HOROLOG
- SET ZTSAVE("DUZ")=""
- +14 DO ^%ZTLOAD
- +15 SET ORMSG(9)="The task number is "_$GET(ZTSK)
- +16 DO MES^XPDUTL(.ORMSG)
- IF '$DATA(ZTQUEUED)
- Begin DoDot:1
- +17 NEW DIR,Y
- +18 SET DIR(0)="E"
- SET DIR("A")="Press return - installation is complete."
- +19 DO ^DIR
- End DoDot:1
- +20 QUIT
- +21 ;
- DQ ; dequeued
- +1 NEW BEGIN,CNT,DFN,ITEM,NODE,OK,START,STOP
- KILL ^TMP("ORPXRM",$JOB),^TMP("ORTXT",$JOB)
- +2 SET BEGIN=$$NOW^XLFDT
- +3 SET CNT=0
- +4 SET DFN=0
- +5 FOR
- SET DFN=$ORDER(^PXRMINDX(100,"PI",DFN))
- IF DFN<1
- QUIT
- Begin DoDot:1
- +6 SET ITEM=0
- +7 FOR
- SET ITEM=$ORDER(^PXRMINDX(100,"PI",DFN,ITEM))
- IF ITEM<1
- QUIT
- Begin DoDot:2
- +8 SET START=""
- +9 FOR
- SET START=$ORDER(^PXRMINDX(100,"PI",DFN,ITEM,START))
- IF START=""
- QUIT
- Begin DoDot:3
- +10 SET STOP=""
- +11 FOR
- SET STOP=$ORDER(^PXRMINDX(100,"PI",DFN,ITEM,START,STOP))
- IF STOP=""
- QUIT
- Begin DoDot:4
- +12 SET OK=1
- +13 IF START'=+START
- SET OK=0
- +14 IF OK
- IF $EXTRACT(STOP)'="U"
- IF STOP'=+STOP
- SET OK=0
- +15 IF OK
- QUIT
- +16 SET NODE=""
- +17 FOR
- SET NODE=$ORDER(^PXRMINDX(100,"PI",DFN,ITEM,START,STOP,NODE))
- IF NODE=""
- QUIT
- Begin DoDot:5
- +18 SET ^TMP("ORPXRM",$JOB,NODE)=DFN_U_ITEM_U_START_U_STOP
- +19 SET CNT=CNT+1
- +20 ;W !,NODE,?20,$P($G(^OR(100,+NODE,0)),U,8),?35,$P($G(^OR(100,+NODE,0)),U,9),?55,START
- End DoDot:5
- End DoDot:4
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +21 ; overwrite on finish
- SET ^TMP("ORTXT",$JOB,4)="-- "_CNT_" nodes to check --"
- +22 SET ^TMP("ORTXT",$JOB,5)=" "
- +23 SET CNT=5
- +24 SET NODE=""
- +25 FOR
- SET NODE=$ORDER(^TMP("ORPXRM",$JOB,NODE))
- IF NODE=""
- QUIT
- Begin DoDot:1
- +26 DO FIX(NODE,.CNT)
- End DoDot:1
- +27 SET ^TMP("ORTXT",$JOB,4)="-- "_(CNT-5)_" changes made --"
- +28 KILL ^TMP("ORPXRM",$JOB)
- +29 ; removes treatment type from graphing
- DO TREMOVE("ORWG GRAPH VIEW")
- +30 DO MAIL(BEGIN)
- +31 KILL ^TMP("ORTXT",$JOB)
- +32 QUIT
- +33 ;
- FIX(NODE,CNT) ;
- +1 NEW DA,DATE1,DATE2,DFN,DIE,DR,ITEM,LINE,START,STOP,VALUES,ZERO
- +2 SET VALUES=$GET(^TMP("ORPXRM",$JOB,NODE))
- +3 SET DFN=$PIECE(VALUES,U)
- +4 SET ITEM=$PIECE(VALUES,U,2)
- +5 SET DATE1=$PIECE(VALUES,U,3)
- +6 SET DATE2=$PIECE(VALUES,U,4)
- +7 KILL ^PXRMINDX(100,"PI",DFN,ITEM,DATE1,DATE2,NODE)
- +8 KILL ^PXRMINDX(100,"IP",ITEM,DFN,DATE1,DATE2,NODE)
- +9 SET DIE="^OR(100,"
- +10 SET DA=+NODE
- +11 SET ZERO=$GET(^OR(100,DA,0))
- +12 SET START=+$PIECE(ZERO,U,8)
- IF START=0
- SET START="@"
- +13 SET STOP=+$PIECE(ZERO,U,9)
- IF STOP=0
- SET STOP="@"
- +14 SET DR=""
- +15 IF START'=DATE1
- SET DR="21///"_START
- +16 IF START="@"
- IF $PIECE(ZERO,U,8)=""
- SET DR=""
- +17 IF STOP'=DATE2
- Begin DoDot:1
- +18 IF STOP="@"
- IF $EXTRACT(DATE2)="U"
- QUIT
- +19 IF $LENGTH(DR)
- SET DR=DR_";22///"_STOP
- QUIT
- +20 SET DR="22///"_STOP
- QUIT
- End DoDot:1
- +21 IF '$LENGTH(DR)
- QUIT
- +22 SET LINE="Node: "_NODE
- +23 IF DR["21///"
- SET LINE=LINE_"; Start: "_DATE1_" -> "_START
- +24 IF DR["22///"
- SET LINE=LINE_"; Stop: "_DATE2_" -> "_STOP
- +25 DO ^DIE
- +26 SET CNT=CNT+1
- +27 SET ^TMP("ORTXT",$JOB,CNT)=LINE
- +28 QUIT
- +29 ;
- TREMOVE(PARAM) ;
- +1 NEW ENTITY,INST,LINES,OK,VALUES
- KILL LINES,VALUES
- +2 DO XENVAL^ORWGAPIX(.VALUES,PARAM)
- +3 IF '$LENGTH($ORDER(VALUES("")))
- QUIT
- +4 SET ENTITY=""
- +5 FOR
- SET ENTITY=$ORDER(VALUES(ENTITY))
- IF ENTITY=""
- QUIT
- Begin DoDot:1
- +6 SET INST=""
- +7 FOR
- SET INST=$ORDER(VALUES(ENTITY,INST))
- IF INST=""
- QUIT
- Begin DoDot:2
- +8 DO XGETWP^ORWGAPIX(.LINES,ENTITY,PARAM,INST)
- +9 DO FIXLINES(.LINES,.OK)
- +10 IF 'OK
- DO FIXIT(.LINES,ENTITY,PARAM,INST)
- End DoDot:2
- End DoDot:1
- +11 QUIT
- +12 ;
- FIXLINES(LINES,OK) ;
- +1 NEW I,LINE,NLINE,NLINES,NNUM,NUM,PART
- KILL NLINES
- +2 SET OK=1
- SET NNUM=0
- +3 SET NUM=0
- +4 FOR
- SET NUM=$ORDER(LINES(NUM))
- IF NUM<1
- QUIT
- Begin DoDot:1
- +5 SET LINE=$GET(LINES(NUM,0))
- +6 IF '$LENGTH(LINE)
- QUIT
- +7 SET NLINE=LINE
- +8 IF LINE["~9000010.15"
- Begin DoDot:2
- +9 SET NLINE=""
- SET OK=0
- +10 FOR I=1:1:999
- SET PART=$PIECE(LINE,"|",I)
- IF PART=""
- QUIT
- Begin DoDot:3
- +11 IF PART["~9000010.15"
- QUIT
- +12 SET NLINE=NLINE_PART_"|"
- End DoDot:3
- End DoDot:2
- +13 IF NLINE=""
- QUIT
- +14 SET NNUM=NNUM+1
- +15 SET NLINES(NNUM,0)=NLINE
- End DoDot:1
- +16 IF OK
- QUIT
- +17 KILL LINES
- +18 MERGE LINES=NLINES
- +19 QUIT
- +20 ;
- FIXIT(LINES,ENTITY,PARAM,INST) ;
- +1 DO XDEL^ORWGAPIX(ENTITY,PARAM,INST)
- +2 IF $LENGTH($ORDER(LINES("")))
- DO XEN^ORWGAPIX(ENTITY,PARAM,INST,.LINES)
- +3 QUIT
- +4 ;
- MAIL(BEGIN) ; -- Send completion message to user who initiated cleanup
- +1 NEW TIMES,XMSUB,XMTEXT,XMDUN,XMDUZ,XMY,XMZ
- KILL XMY
- +2 SET XMDUZ="PATCH OR*3.0*260 CLEAN-UP"
- SET XMY(.5)=""
- IF $GET(DUZ)
- SET XMY(DUZ)=""
- +3 SET TIMES="Started: "_$$FMTE^XLFDT(BEGIN)_"; Completed: "_$$FMTE^XLFDT($$NOW^XLFDT)_"."
- +4 SET ^TMP("ORTXT",$JOB,1)="Clean up for patch OR*3.0*260"
- +5 SET ^TMP("ORTXT",$JOB,2)=TIMES
- +6 SET ^TMP("ORTXT",$JOB,3)="Order Node Date Cleanup:"
- +7 SET XMTEXT="^TMP(""ORTXT"","_$JOB_","
- +8 SET XMSUB="PATCH OR*3.0*260 Clean Up COMPLETED"
- +9 DO ^XMD
- +10 QUIT