| 1 | ORY134 ;SLC/DAN ;3/28/02  12:35
 | 
|---|
| 2 |  ;;3.0;ORDER ENTRY/RESULTS REPORTING;**134**;Dec 17, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;Finds current orders with incorrect fractional dose entries containing two decimal places.
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  N ORMSG,ZTSK
 | 
|---|
| 7 |  S ORMSG(1)=""
 | 
|---|
| 8 |  S ORMSG(2)="This patch contains a post-init.  This post-init will"
 | 
|---|
| 9 |  S ORMSG(3)="run in the background and will identify potential fractional dose problems."
 | 
|---|
| 10 |  S ORMSG(4)="It will then send a mail message to the iniator and holders of the PSNMGR key"
 | 
|---|
| 11 |  S ORMSG(5)="indicating which orders need to be reviewed."
 | 
|---|
| 12 |  S ORMSG(6)=""
 | 
|---|
| 13 |  D MES^XPDUTL(.ORMSG)
 | 
|---|
| 14 |  S ZTRTN="DQ^ORY134",ZTDESC="Patch OR*3*134 database review",ZTIO="",ZTSAVE("DUZ")="",ZTDTH=$H
 | 
|---|
| 15 |  D ^%ZTLOAD
 | 
|---|
| 16 |  I $G(ZTSK) D MES^XPDUTL("Post-init queued to background as task number "_ZTSK_".")
 | 
|---|
| 17 |  Q
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 | DQ ;Enter here for queued task
 | 
|---|
| 20 |  K ^TMP("ORFIX",$J)
 | 
|---|
| 21 |  D FIX,MAIL
 | 
|---|
| 22 |  K ^TMP("ORFIX",$J),^TMP("ORTXT",$J)
 | 
|---|
| 23 |  Q
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 | FIX ;This section will identify active orders with fractional dose problems
 | 
|---|
| 26 |  N PAT,DATE,IEN,PTID
 | 
|---|
| 27 |  S PAT=""
 | 
|---|
| 28 |  F  S PAT=$O(^OR(100,"AC",PAT)) Q:PAT=""  D
 | 
|---|
| 29 |  .S DATE=0 F  S DATE=$O(^OR(100,"AC",PAT,DATE)) Q:'+DATE  D
 | 
|---|
| 30 |  ..S IEN=0 F  S IEN=$O(^OR(100,"AC",PAT,DATE,IEN)) Q:'+IEN  D
 | 
|---|
| 31 |  ...Q:$$NMSP^ORCD($P($G(^OR(100,IEN,0)),U,14))'="PS"  ;quit if not pharmacy
 | 
|---|
| 32 |  ...S PTID=$$PTID(PAT) Q:PTID=-1  ;get patient ID quit if referral or couldn't determine name
 | 
|---|
| 33 |  ...I $$VALUE^ORX8(IEN,"INSTR")["0.." I '$$UPDT S ^TMP("ORFIX",$J,$P($$STATUS^ORQOR2(IEN),U,2),PTID,IEN)=$$DRUG
 | 
|---|
| 34 |  Q
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 | MAIL ;Send results of review in a mail message to initiator
 | 
|---|
| 37 |  N I,XMSUB,XMTEXT,XMDUZ,XMY,STA,IEN,PAT
 | 
|---|
| 38 |  S XMSUB="Patch OR*3*134 review completed"
 | 
|---|
| 39 |  S XMDUZ="Patch OR*3*134 Post-Init"
 | 
|---|
| 40 |  S XMY(.5)="" S:$G(DUZ) XMY(DUZ)="" D PSNMGR(.XMY)
 | 
|---|
| 41 |  S XMTEXT="^TMP(""ORTXT"",$J,"
 | 
|---|
| 42 |  K ^TMP("ORTXT",$J)
 | 
|---|
| 43 |  S I=1
 | 
|---|
| 44 |  S ^TMP("ORTXT",$J,I)="The database review for patch OR*3*134 has completed.",I=I+1
 | 
|---|
| 45 |  S ^TMP("ORTXT",$J,I)="Below is a listing of patients that need to have",I=I+1
 | 
|---|
| 46 |  S ^TMP("ORTXT",$J,I)="their prescriptions reviewed and possibly updated.",I=I+1
 | 
|---|
| 47 |  S ^TMP("ORTXT",$J,I)="",I=I+1
 | 
|---|
| 48 |  S ^TMP("ORTXT",$J,I)="For orders in an active (active, pending, hold, etc) state it is",I=I+1
 | 
|---|
| 49 |  S ^TMP("ORTXT",$J,I)="recommended that the order be evaluated and updated according to",I=I+1
 | 
|---|
| 50 |  S ^TMP("ORTXT",$J,I)="the following guidelines.",I=I+1
 | 
|---|
| 51 |  S ^TMP("ORTXT",$J,I)="",I=I+1
 | 
|---|
| 52 |  S ^TMP("ORTXT",$J,I)="If the order has refills remaining or if the order can",I=I+1
 | 
|---|
| 53 |  S ^TMP("ORTXT",$J,I)="potentially be renewed, edit the invalid dosage which will",I=I+1
 | 
|---|
| 54 |  S ^TMP("ORTXT",$J,I)="create a new order with a valid SIG.  The appropriate number",I=I+1
 | 
|---|
| 55 |  S ^TMP("ORTXT",$J,I)="of remaining refills must then be added to the new order.",I=I+1
 | 
|---|
| 56 |  S ^TMP("ORTXT",$J,I)="",I=I+1
 | 
|---|
| 57 |  S ^TMP("ORTXT",$J,I)="If the order has no refills remaining and the order will not",I=I+1
 | 
|---|
| 58 |  S ^TMP("ORTXT",$J,I)="be renewed then the order should be discontinued.",I=I+1
 | 
|---|
| 59 |  S ^TMP("ORTXT",$J,I)="",I=I+1
 | 
|---|
| 60 |  S ^TMP("ORTXT",$J,I)="Depending on the status of the order the DRUG listed in the report",I=I+1
 | 
|---|
| 61 |  S ^TMP("ORTXT",$J,I)="will either be a dispense drug or an orderable item.",I=I+1
 | 
|---|
| 62 |  S ^TMP("ORTXT",$J,I)="",I=I+1
 | 
|---|
| 63 |  I '$D(^TMP("ORFIX",$J)) S ^TMP("ORTXT",$J,I)="No problems were found.  No manual intervention is required.",I=I+1
 | 
|---|
| 64 |  S ^TMP("ORTXT",$J,I)="",I=I+1
 | 
|---|
| 65 |  S STA="" F  S STA=$O(^TMP("ORFIX",$J,STA)) Q:STA=""  D
 | 
|---|
| 66 |  .S ^TMP("ORTXT",$J,I)="Order Status - "_STA,I=I+1,^TMP("ORTXT",$J,I)="",I=I+1
 | 
|---|
| 67 |  .S PAT=0 F  S PAT=$O(^TMP("ORFIX",$J,STA,PAT)) Q:PAT=""  D
 | 
|---|
| 68 |  ..S IEN=0 F  S IEN=$O(^TMP("ORFIX",$J,STA,PAT,IEN)) Q:'+IEN  D
 | 
|---|
| 69 |  ...S ^TMP("ORTXT",$J,I)=PAT_$$REPEAT^XLFSTR(" ",(40-$L(PAT)))_"DRUG = "_^TMP("ORFIX",$J,STA,PAT,IEN),I=I+1
 | 
|---|
| 70 |  .S ^TMP("ORTXT",$J,I)="",I=I+1
 | 
|---|
| 71 |  D ^XMD ;send results
 | 
|---|
| 72 |  Q
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 | PTID(IEN) ;Return pt name and 1A4U identifiers or -1 if unable to determine
 | 
|---|
| 75 |  N DFN,VADM
 | 
|---|
| 76 |  I +IEN=0!(IEN'["DPT") Q -1
 | 
|---|
| 77 |  S DFN=+IEN
 | 
|---|
| 78 |  D ^VADPT
 | 
|---|
| 79 |  I $G(VADM(1))="" Q -1
 | 
|---|
| 80 |  Q $E(VADM(1),1)_$E(VADM(2),6,9)_"  "_VADM(1)
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 | UPDT() ;Function to determine if order has been updated yet.
 | 
|---|
| 83 |  N TXT,I,UPDT
 | 
|---|
| 84 |  S UPDT=1
 | 
|---|
| 85 |  D TEXT^ORQ12(.TXT,IEN_";"_$P($G(^OR(100,IEN,3)),U,7),80) ;get current order text
 | 
|---|
| 86 |  F I=1:1:TXT I TXT(I)["0.." S UPDT=0 Q
 | 
|---|
| 87 |  Q UPDT
 | 
|---|
| 88 |  ;
 | 
|---|
| 89 | DRUG() ;Get dispense drug or orderable item
 | 
|---|
| 90 |  N VALUE
 | 
|---|
| 91 |  S VALUE=$$VALUE^ORX8(IEN,"DRUG",,"E")
 | 
|---|
| 92 |  I VALUE="" S VALUE=$$VALUE^ORX8(IEN,"ORDERABLE",,"E")
 | 
|---|
| 93 |  Q VALUE
 | 
|---|
| 94 |  ;
 | 
|---|
| 95 | PSNMGR(XMY) ;Add PSNMGR key holders to XMY array
 | 
|---|
| 96 |  ;DBIA 10076 allows direct read of XUSEC
 | 
|---|
| 97 |  N USER
 | 
|---|
| 98 |  S USER=0 F  S USER=$O(^XUSEC("PSNMGR",USER)) Q:'USER  S XMY(USER)=""
 | 
|---|
| 99 |  Q
 | 
|---|