Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ORQ21

ORQ21.m

Go to the documentation of this file.
  1. ORQ21 ; SLC/MKB/GSS - Detailed Order Report cont ;13-Mar-2014 16:39;PLS
  1. ;;3.0;ORDER ENTRY/RESULTS REPORTING;**141,190,1005,1007,195,215,243,1010,1011,1012,1013**;Dec 17, 1997;Build 242
  1. ;
  1. ; DBIA 2400 OEL^PSOORRL ^TMP("PS",$J)
  1. ; DBIA 2266 EN30^RAO7PC1 ^TMP($J,"RAE2")
  1. ; Modified - IHS/MSC/PLS - 03/15/2011 - Line M2+10
  1. ; 04/15/2013 - Line ACTLOG+19
  1. ; 06/05/2013 - Line M2+13
  1. ; 09/11/2013 - Line MED+3
  1. ; 03/12/2014 - New SSDSIG,SSDNTP EPs
  1. RAD(TCOM) ; -- add RA data for 2.5 orders
  1. N RAIFN,CASE,PROC,ORD,ORI,X,ORTTL,ORB
  1. S RAIFN=$G(^OR(100,ORIFN,4)) Q:RAIFN'>0
  1. D EN30^RAO7PC1(RAIFN) Q:'$D(^TMP($J,"RAE2",+ORVP)) ;DBIA 2266
  1. S ORD=$G(^TMP($J,"RAE2",+ORVP,"ORD")),CASE=$O(^(0)) Q:'CASE S PROC=$O(^(CASE,""))
  1. I '$G(TCOM) D ;else add only Tech Comments
  1. . S CNT=CNT+1,@ORY@(CNT)=$$LJ^XLFSTR("Procedure:",30)_$S($L(ORD):ORD,1:PROC)
  1. . S ORI=0,ORTTL="Procedure Modifiers: ",ORB=1
  1. . F S ORI=$O(^TMP($J,"RAE2",+ORVP,CASE,PROC,"M",ORI)) Q:ORI'>0 S CNT=CNT+1,@ORY@(CNT)=ORTTL_^(ORI),ORTTL=$$REPEAT^XLFSTR(" ",30)
  1. . S CNT=CNT+1,@ORY@(CNT)="History and Reason for Exam:"
  1. . F S ORI=$O(^TMP($J,"RAE2",+ORVP,CASE,PROC,"H",ORI)) Q:ORI'>0 S CNT=CNT+1,@ORY@(CNT)=" "_^(ORI)
  1. RAD1 I $L($G(^TMP($J,"RAE2",+ORVP,CASE,PROC,"TCOM",1))) S X=^(1) D
  1. . N DIWL,DIWR,DIWF,I K ^UTILITY($J,"W")
  1. . S DIWL=1,DIWR=72,DIWF="C72" D ^DIWP
  1. . S CNT=CNT+1,@ORY@(CNT)="Technologist's Comment:",ORB=1
  1. . S I=0 F S I=$O(^UTILITY($J,"W",DIWL,I)) Q:I'>0 S CNT=CNT+1,@ORY@(CNT)=" "_^(I,0)
  1. I $D(^TMP($J,"RAE2",+ORVP,CASE,PROC,"CM")) D
  1. . S ORTTL="Contrast Media used: ",ORI=0,ORB=1
  1. . F S ORI=$O(^TMP($J,"RAE2",+ORVP,CASE,PROC,"CM",ORI)) Q:ORI<1 S CNT=CNT+1,@ORY@(CNT)=ORTTL_$P(^(ORI),U,2),ORTTL=$$REPEAT^XLFSTR(" ",30)
  1. K ^TMP($J,"RAE2",+ORVP),^UTILITY($J,"W")
  1. S:$G(ORB) CNT=CNT+1,@ORY@(CNT)=" " ;blank
  1. Q
  1. ;
  1. MED ; -- Add Pharmacy order data
  1. Q:$G(^OR(100,ORIFN,4))["N" ;non-VA med -- no refill history
  1. D SSDSIG($$VALUE^ORCSAVE2(+ORIFN,"SSRREQIEN")) ;IHS/MSC/PLS - 03/12/2014
  1. D SSDNTP($$VALUE^ORCSAVE2(+ORIFN,"SSRREQIEN")) ;IHS/MSC/PLS - 03/12/2014
  1. N TYPE,NODE,RXN,OR5,STAT S TYPE=$P(OR0,U,12)
  1. I TYPE="O",$G(^OR(100,ORIFN,4))["V" S TYPE="I" ;IHS/MSC/PLS - 09/11/2013 Fix for Outpatient IV Orders
  1. I '$D(^TMP("PS",$J,0)) D ;get PS data / DBIA 2400
  1. . N PSIFN S PSIFN=$G(^OR(100,ORIFN,4))
  1. . S:TYPE="O" PSIFN=$TR(PSIFN,"S","P")_$S(PSIFN?1.N:"R",1:"")
  1. . D OEL^PSOORRL(+ORVP,PSIFN_";"_TYPE) ;DBIA 2400
  1. S NODE=$G(^TMP("PS",$J,0)),RXN=$G(^("RXN",0)),STAT=$P(NODE,U,6)
  1. I '$L(NODE) K ^TMP("PS",$J) Q ;error
  1. I $O(^TMP("PS",$J,"DD",0)) D ;Disp Drugs
  1. . N I,X,Y S X="Dispense Drugs (units/dose): ",I=0
  1. . F S I=$O(^TMP("PS",$J,"DD",I)) Q:I'>0 S Y=$G(^(I,0)) S:Y CNT=CNT+1,@ORY@(CNT)=X_$$GET1^DIQ(50,+Y_",",.01)_" ("_$P(Y,U,2)_")"
  1. S:$P(NODE,U,9) CNT=CNT+1,@ORY@(CNT)="Total Dose: "_$P(NODE,U,9)
  1. M1 I TYPE="I" D ;admin data
  1. . N I,X,Y I $O(^TMP("PS",$J,"B",0)) D
  1. .. S X="IV Print Name: ",I=0
  1. .. F S I=$O(^TMP("PS",$J,"B",I)) Q:I<1 S Y=$G(^(I,0)) S:$L(Y) CNT=CNT+1,@ORY@(CNT)=X_$P(Y,U),X=$$REPEAT^XLFSTR(" ",30) I $L($P(Y,U,3)) S CNT=CNT+1,@ORY@(CNT)=X_" "_$P(Y,U,3)
  1. . S I=+$O(^TMP("PS",$J,"SCH",0)),X=$P($G(^(I,0)),U,2)
  1. . S:$L(X) CNT=CNT+1,@ORY@(CNT)="Schedule Type: "_X
  1. . S X="Administration Times: ",I=0
  1. . F S I=$O(^TMP("PS",$J,"ADM",I)) Q:I'>0 S Y=$G(^(I,0)) S:$L(Y) CNT=CNT+1,@ORY@(CNT)=X_Y,X=$$REPEAT^XLFSTR(" ",30)
  1. M2 I TYPE="O" D ;fill history
  1. . N FILLD,RET,X,Y,I
  1. . S:$P(NODE,U,12) CNT=CNT+1,@ORY@(CNT)="Last Filled: "_$$FMTE^XLFDT($P(NODE,U,12),2)
  1. . S CNT=CNT+1,@ORY@(CNT)="Refills Remaining: "_$P(NODE,U,4)
  1. . I $P(RXN,U,6)!$G(^TMP("PS",$J,"REF",0)) S X="Filled: " D
  1. .. I $P(RXN,U,6) S FILLD=$P(RXN,U,6)_"^^^"_$P(RXN,U,7)_U_$P(RXN,U,3,4) D FILLED("R")
  1. .. S RET=$G(^TMP("PS",$J,"RXN","RSTC")) I RET'="" D RETURNS(RET)
  1. .. S I=0 F S I=$O(^TMP("PS",$J,"REF",I)) Q:I'>0 D
  1. ... S FILLD=$G(^(I,0)) D FILLED("R")
  1. ... S RET=$G(^TMP("PS",$J,"REF",I,"RSTC")) I RET'="" D RETURNS(RET)
  1. . I $G(^TMP("PS",$J,"PAR",0)) S I=0,X="Partial Fills: " F S I=$O(^TMP("PS",$J,"PAR",I)) Q:I'>0 S FILLD=$G(^(I,0)) D FILLED("P")
  1. . S:RXN CNT=CNT+1,@ORY@(CNT)="Prescription#: "_$P(RXN,U)
  1. .S:$L($$GETRXNRM^BEHORXFN(+ORIFN)) CNT=CNT+1,@ORY@(CNT)="RXNorm Code: "_$$GETRXNRM^BEHORXFN(+ORIFN)
  1. .S CNT=CNT+1,@ORY@(CNT)="Discharge Medication: "_$$EXTERNAL^DILFD(52,9999999.28,,$$VALUE^ORCSAVE2(ORIFN,"DSCMED")) ;IHS/MSC/PLS - 06/05/13
  1. M3 S:$P(RXN,U,5) CNT=CNT+1,@ORY@(CNT)="Pharmacist: "_$P($G(^VA(200,+$P(RXN,U,5),0)),U)
  1. I $G(STAT)="ACTIVE/SUSP" S CNT=CNT+1,@ORY@(CNT)="Prescription Status: "_STAT_" - Order is active. Fill or Refill has been requested."
  1. D ACTLOG($G(^OR(100,ORIFN,4))) ;IHS/MSC/PLS - Display activity log
  1. S:$P(NODE,U,13) CNT=CNT+1,@ORY@(CNT)="NOT TO BE GIVEN" K ^TMP("PS",$J)
  1. S CNT=CNT+1,@ORY@(CNT)=" " ;blank
  1. S OR5=$G(^OR(100,ORIFN,5)) I $L(OR5) D ;SC data
  1. . N X,Y,I
  1. . S CNT=CNT+1,@ORY@(CNT)=" " ;blank line
  1. . S CNT=CNT+1,@ORY@(CNT)="First Party Pay Exemptions"
  1. . S X="For conditions related to: "
  1. . F I=1:1:8 S Y=$P(OR5,U,I) I Y S CNT=CNT+1,@ORY@(CNT)=X_$$SC(I),X=$$REPEAT^XLFSTR(" ",30)
  1. Q
  1. ;
  1. BA ;Billing Aware data display
  1. N DXIEN,DXV,ICD9,ICDR,OCT,ORFMDAT
  1. S OCT=0,X=""
  1. ; Get the date of the order for CSV/CTD usage
  1. S ORFMDAT=$$ORFMDAT^ORWDBA3(ORIFN)
  1. ; $O through diagnoses for an order
  1. F S OCT=$O(^OR(100,ORIFN,5.1,OCT)) Q:OCT'?1N.N D
  1. . ; DXIEN=Dx IEN
  1. . S DXIEN=+^OR(100,ORIFN,5.1,OCT,0)
  1. . ; Get Dx record for date ORFMDAT
  1. . S ICDR=$$ICDDX^ICDCODE(DXIEN,ORFMDAT)
  1. . ; Get Dx verbiage and ICD code
  1. . S DXV=$P(ICDR,U,4),ICD9=$P(ICDR,U,2)
  1. . S X=" "
  1. . I OCT=1 D
  1. .. S CNT=CNT+1,@ORY@(CNT)=" " ;blank line
  1. .. S CNT=CNT+1,@ORY@(CNT)="Clinical Indicators"
  1. .. S X="Diagnosis of: "
  1. . S X=X_ICD9_" - "_DXV,CNT=CNT+1,@ORY@(CNT)=X
  1. I OCT'="" D ;if there are diagnoses show Treatment Factors
  1. . S X="For conditions related to: "
  1. . F I=1:1:8 S Y=$P(^OR(100,ORIFN,5.2),U,I) I Y D
  1. .. S CNT=CNT+1,@ORY@(CNT)=X_$$SC(I),X=$$REPEAT^XLFSTR(" ",30)
  1. Q
  1. ;
  1. FILLED(TYPE) ; -- add FILLD data
  1. N Y S Y=$$FMTE^XLFDT($P(FILLD,U),2)_" ("_$$ROUTING($P(FILLD,U,5))_")"
  1. S:TYPE="R"&$P(FILLD,U,4) Y=Y_" released "_$$FMTE^XLFDT($P(FILLD,U,4),2)
  1. S:TYPE="P"&$P(FILLD,U,3) Y=Y_" Qty: "_$P(FILLD,U,3)
  1. S CNT=CNT+1,@ORY@(CNT)=X_Y,X=$$REPEAT^XLFSTR(" ",30)
  1. S:$L($P(FILLD,U,6)) CNT=CNT+1,@ORY@(CNT)=X_$P(FILLD,U,6)
  1. Q
  1. RETURNS(NODE) ; add Return to Stock Data
  1. N DATE,NAME,TEXT,X
  1. S DATE=$$FMTE^XLFDT($P(NODE,U))
  1. S NAME=$P(^VA(200,$P(NODE,U,2),0),U)
  1. S X=$$REPEAT^XLFSTR(" ",13)
  1. S TEXT="Return to Stock: "_X_DATE_" by "_NAME
  1. S CNT=CNT+1,@ORY@(CNT)=TEXT
  1. S X=$$REPEAT^XLFSTR(" ",30)
  1. S TEXT=X_"Comments: "_$P(NODE,U,3)
  1. S CNT=CNT+1,@ORY@(CNT)=TEXT
  1. Q
  1. ;
  1. ROUTING(X) ; -- Returns external form
  1. N Y S Y=$S($G(X)="M":"Mail",$G(X)="W":"Window",1:$G(X))
  1. Q Y
  1. ;
  1. SC(J) ; -- Returns name of SC field by piece number
  1. I '$G(J) Q ""
  1. I J=1 Q "SERVICE CONNECTED CONDITION"
  1. I J=2 Q "MILITARY SEXUAL TRAUMA"
  1. I J=3 Q "AGENT ORANGE EXPOSURE"
  1. I J=4 Q "IONIZING RADIATION EXPOSURE"
  1. I J=5 Q "ENVIRONMENTAL CONTAMINANTS"
  1. I J=6 Q "HEAD OR NECK CANCER"
  1. I J=7 Q "COMBAT VETERAN"
  1. I J=8 Q "SHIPBOARD HAZARD AND DEFENSE"
  1. Q ""
  1. ; IHS/MSC/PLS - Display Dispense SIG in RXD
  1. ; Input: RREQ - IEN to APSP REFILL REQUEST File
  1. SSDSIG(RREQ) ;EP-
  1. Q:'$G(RREQ)!'$$TEST^CIAUOS("SSDSIG^APSPFNC1")
  1. N DSIG
  1. S DSIG=$$SSDSIG^APSPFNC1(RREQ)
  1. I $L(DSIG) D
  1. .S CNT=CNT+1
  1. .S @ORY@(CNT)="Surescripts Dispense SIG for parent order("+$$GET1^DIQ(9009033.91,RREQ,".06:39.3")+"): "
  1. .S CNT=CNT+1
  1. .S @ORY@(CNT)=" "_DSIG
  1. .S CNT=CNT+1
  1. .S @ORY@(CNT)=" "
  1. Q
  1. ; IHS/MSC/PLS - Display Surescripts Notes to Pharmacist in RXD
  1. ; Input: RREQ - IEN to APSP REFILL REQUEST File
  1. SSDNTP(RREQ) ;EP-
  1. Q:'$G(RREQ)!'$$TEST^CIAUOS("SSDNTP^APSPFNC1")
  1. N DNTP
  1. S DNTP=$$SSDNTP^APSPFNC1(RREQ)
  1. I $L(DNTP) D
  1. .S CNT=CNT+1
  1. .S @ORY@(CNT)="Surescripts Dispense Notes to Prescriber for parent order("+$$GET1^DIQ(9009033.91,RREQ,".06:39.3")+"): "
  1. .S CNT=CNT+1
  1. .S @ORY@(CNT)=" "_DNTP
  1. .S CNT=CNT+1
  1. .S @ORY@(CNT)=" "
  1. Q
  1. ; IHS/MSC/PLS - Display activity log in order detail
  1. ACTLOG(RX) ;EP
  1. Q:'$G(RX)
  1. ;Q:'$$GET1^DIQ(52,RX,9999999.23,"I") ; Only display activity log for autofinished prescriptions
  1. N ACTD,ALP,AD,COM,BRK
  1. D ACTLOG^APSPFNC1(.ACTD,RX)
  1. I $D(ACTD) D
  1. .S CNT=CNT+1
  1. .S @ORY@(CNT)=" "
  1. .S CNT=CNT+1
  1. .S @ORY@(CNT)="Activity Log"
  1. .S CNT=CNT+1
  1. .S @ORY@(CNT)="# Date Reason Rx Ref Initiator Of Activity"
  1. .S CNT=CNT+1
  1. .S $P(@ORY@(CNT),"=",79)="="
  1. .S ALP=0 F S ALP=$O(ACTD(ALP)) Q:'ALP D
  1. ..S AD=ACTD(ALP),IENS=$P(AD,U)_","_RX_","
  1. ..S COM=$P(AD,U,6)
  1. ..S CNT=CNT+1
  1. ..S @ORY@(CNT)=$P(AD,U)_" "_$P($$FMTE^XLFDT($P(AD,U,2),"2Z"),"@")_" "_$$LJ^XLFSTR($$GET1^DIQ(52.3,IENS,.02),15)_$$LJ^XLFSTR($$GET1^DIQ(52.3,IENS,.03),15)_$$GET1^DIQ(52.3,IENS,.03)
  1. ..I $L($P(AD,U,7))!($L($P(AD,U,8))) D
  1. ...S CNT=CNT+1
  1. ...S @ORY@(CNT)=$$LJ^XLFSTR("Device: "_$P(AD,U,7),50)_" Type: "_$$GET1^DIQ(52.3,IENS,9999999.02)
  1. ..I $L(COM) D
  1. ...I $L(COM)<71 D
  1. ....S CNT=CNT+1
  1. ....S @ORY@(CNT)="Comments: "_COM
  1. ...E D
  1. ....I $E(COM,1,70)'[" " D
  1. .....S CNT=CNT+1
  1. .....S @ORY@(CNT)="Comments: "_$E(COM,1,70)
  1. .....S CNT=CNT+1
  1. .....S @ORY@(CNT)=$E(COM,71,245)
  1. ....E D
  1. .....F BRK=245:-1 Q:BRK=0 I $E(COM,BRK)=" ",BRK<71 D Q
  1. ......S CNT=CNT+1
  1. ......S @ORY@(CNT)="Comments: "_$E(COM,1,BRK)
  1. ......S CNT=CNT+1
  1. ......S @ORY@(CNT)=$E(COM,BRK,245)
  1. Q