| 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 | 
|---|