ORY216 ;SLC/MKB - Clean-up existing Allergy orders ;3/16/04  14:28
 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**216**;Dec 17, 1997
 ;
POST ; -- postinit
 N ORDG,ORX S ORDG=+$O(^ORD(100.98,"B","ALG",0)) Q:ORDG'>0
 S $P(^ORD(100.98,ORDG,0),U,4)="" ;clear Default Dialog
 S ORX("GMRAOR ALLERGY ENTER/EDIT")="" D EN^ORYDLG(216,.ORX)
 D TASK
 Q
 ;
TASK ; -- queue job to complete ART orders
 Q:$G(^XTMP("ORGMRA","PAT"))<0  ;already done
 N ZTDESC,ZTRTN,ZTIO,ZTSAVE,ZTDTH,ZTSK,ORMSG
 S ORMSG(1)="A background job has been queued to complete any currently active"
 S ORMSG(2)="Allergy/Adverse Reaction orders." D MES^XPDUTL(.ORMSG)
 S ZTDESC="Mark ART orders as complete",ZTRTN="EN^ORY216"
 S ZTIO="",ZTDTH=$H,ZTSAVE("DUZ")="" D ^%ZTLOAD K ORMSG
 S ORMSG="Task "_$S($G(ZTSK):"#"_ZTSK,1:"not")_" started."
 D MES^XPDUTL(ORMSG)
 I '$G(ZTSK) D BMES^XPDUTL("Use TASK^ORY216 to queue this job to complete ART orders as soon as possible!")
 Q
 ;
EN ; -- main loop to complete ART orders on:
 ;      ^OR(100,"ACT",ORVP,invORLOG,ORDG,ORIFN)
 ;
 N ORDG,ORNOW,ORVP,ORLOG,ORIFN
 S ORDG=+$O(^ORD(100.98,"B","ALG",0)) Q:ORDG'>0
 S ORNOW=+$E($$NOW^XLFDT,1,12),ORVP=$G(^XTMP("ORGMRA","PAT")) I '$D(^(0)) D
 . S ^XTMP("ORGMRA",0)=$$FMADD^XLFDT(ORNOW,90)_U_ORNOW_"^ART orders completion"
 F  S ORVP=$O(^OR(100,"ACT",ORVP)) Q:ORVP=""  D  Q:$G(ZTSTOP)
 . S ORLOG=0 F  S ORLOG=$O(^OR(100,"ACT",ORVP,ORLOG)) Q:ORLOG'>0  D
 .. S ORIFN=0 F  S ORIFN=+$O(^OR(100,"ACT",ORVP,ORLOG,ORDG,ORIFN)) Q:ORIFN'>0  D
 ... Q:$P($G(^OR(100,ORIFN,3)),U,3)=2  ;already completed
 ... D STATUS^ORCSAVE2(ORIFN,2) S $P(^OR(100,ORIFN,6),U,6)=ORNOW
 . S ^XTMP("ORGMRA","PAT")=ORVP
 . I $D(ZTQUEUED) S:$$S^%ZTLOAD ZTSTOP=1 Q:$G(ZTSTOP)
 I '$G(ZTSTOP) S ^XTMP("ORGMRA","PAT")=-1 D MAIL ;done
 Q
 ;
MAIL ; -- Send completion message to user who initiated conversion
 N XMSUB,XMTEXT,XMDUZ,XMY,XMZ,XMMG,ORTXT,DIFROM
 S XMDUZ="PATCH OR*3*216 ART ORDERS COMPLETION",XMY(.5)="" S:$G(DUZ) XMY(DUZ)=""
 S ORTXT(1)="The task triggered by patch OR*3*216"_$S($G(ZTSK):" (Task #"_ZTSK_")",1:"")_" to complete ART orders"
 S ORTXT(2)="finished at "_$$FMTE^XLFDT($$NOW^XLFDT)_"."
 S XMTEXT="ORTXT(",XMSUB="PATCH OR*3*216 ART ORDERS COMPLETED"
 D ^XMD
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HORY216   2228     printed  Sep 23, 2025@20:15:34                                                                                                                                                                                                      Page 2
ORY216    ;SLC/MKB - Clean-up existing Allergy orders ;3/16/04  14:28
 +1       ;;3.0;ORDER ENTRY/RESULTS REPORTING;**216**;Dec 17, 1997
 +2       ;
POST      ; -- postinit
 +1        NEW ORDG,ORX
           SET ORDG=+$ORDER(^ORD(100.98,"B","ALG",0))
           if ORDG'>0
               QUIT 
 +2       ;clear Default Dialog
           SET $PIECE(^ORD(100.98,ORDG,0),U,4)=""
 +3        SET ORX("GMRAOR ALLERGY ENTER/EDIT")=""
           DO EN^ORYDLG(216,.ORX)
 +4        DO TASK
 +5        QUIT 
 +6       ;
TASK      ; -- queue job to complete ART orders
 +1       ;already done
           if $GET(^XTMP("ORGMRA","PAT"))<0
               QUIT 
 +2        NEW ZTDESC,ZTRTN,ZTIO,ZTSAVE,ZTDTH,ZTSK,ORMSG
 +3        SET ORMSG(1)="A background job has been queued to complete any currently active"
 +4        SET ORMSG(2)="Allergy/Adverse Reaction orders."
           DO MES^XPDUTL(.ORMSG)
 +5        SET ZTDESC="Mark ART orders as complete"
           SET ZTRTN="EN^ORY216"
 +6        SET ZTIO=""
           SET ZTDTH=$HOROLOG
           SET ZTSAVE("DUZ")=""
           DO ^%ZTLOAD
           KILL ORMSG
 +7        SET ORMSG="Task "_$SELECT($GET(ZTSK):"#"_ZTSK,1:"not")_" started."
 +8        DO MES^XPDUTL(ORMSG)
 +9        IF '$GET(ZTSK)
               DO BMES^XPDUTL("Use TASK^ORY216 to queue this job to complete ART orders as soon as possible!")
 +10       QUIT 
 +11      ;
EN        ; -- main loop to complete ART orders on:
 +1       ;      ^OR(100,"ACT",ORVP,invORLOG,ORDG,ORIFN)
 +2       ;
 +3        NEW ORDG,ORNOW,ORVP,ORLOG,ORIFN
 +4        SET ORDG=+$ORDER(^ORD(100.98,"B","ALG",0))
           if ORDG'>0
               QUIT 
 +5        SET ORNOW=+$EXTRACT($$NOW^XLFDT,1,12)
           SET ORVP=$GET(^XTMP("ORGMRA","PAT"))
           IF '$DATA(^(0))
               Begin DoDot:1
 +6                SET ^XTMP("ORGMRA",0)=$$FMADD^XLFDT(ORNOW,90)_U_ORNOW_"^ART orders completion"
               End DoDot:1
 +7        FOR 
               SET ORVP=$ORDER(^OR(100,"ACT",ORVP))
               if ORVP=""
                   QUIT 
               Begin DoDot:1
 +8                SET ORLOG=0
                   FOR 
                       SET ORLOG=$ORDER(^OR(100,"ACT",ORVP,ORLOG))
                       if ORLOG'>0
                           QUIT 
                       Begin DoDot:2
 +9                        SET ORIFN=0
                           FOR 
                               SET ORIFN=+$ORDER(^OR(100,"ACT",ORVP,ORLOG,ORDG,ORIFN))
                               if ORIFN'>0
                                   QUIT 
                               Begin DoDot:3
 +10      ;already completed
                                   if $PIECE($GET(^OR(100,ORIFN,3)),U,3)=2
                                       QUIT 
 +11                               DO STATUS^ORCSAVE2(ORIFN,2)
                                   SET $PIECE(^OR(100,ORIFN,6),U,6)=ORNOW
                               End DoDot:3
                       End DoDot:2
 +12               SET ^XTMP("ORGMRA","PAT")=ORVP
 +13               IF $DATA(ZTQUEUED)
                       if $$S^%ZTLOAD
                           SET ZTSTOP=1
                       if $GET(ZTSTOP)
                           QUIT 
               End DoDot:1
               if $GET(ZTSTOP)
                   QUIT 
 +14      ;done
           IF '$GET(ZTSTOP)
               SET ^XTMP("ORGMRA","PAT")=-1
               DO MAIL
 +15       QUIT 
 +16      ;
MAIL      ; -- Send completion message to user who initiated conversion
 +1        NEW XMSUB,XMTEXT,XMDUZ,XMY,XMZ,XMMG,ORTXT,DIFROM
 +2        SET XMDUZ="PATCH OR*3*216 ART ORDERS COMPLETION"
           SET XMY(.5)=""
           if $GET(DUZ)
               SET XMY(DUZ)=""
 +3        SET ORTXT(1)="The task triggered by patch OR*3*216"_$SELECT($GET(ZTSK):" (Task #"_ZTSK_")",1:"")_" to complete ART orders"
 +4        SET ORTXT(2)="finished at "_$$FMTE^XLFDT($$NOW^XLFDT)_"."
 +5        SET XMTEXT="ORTXT("
           SET XMSUB="PATCH OR*3*216 ART ORDERS COMPLETED"
 +6        DO ^XMD
 +7        QUIT