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

ORCHECK.m

Go to the documentation of this file.
  1. ORCHECK ;SLC/MKB-Order checking calls ;Jun 19, 2020@09:03:02
  1. ;;3.0;ORDER ENTRY/RESULTS REPORTING;**7,56,70,94,141,215,243,293,280,346,357,352,345,311,269,382,545,405**;Dec 17, 1997;Build 211
  1. ;;Per VA Directive 6402, this routine should not be modified.
  1. DISPLAY ; -- DISPLAY event [called from ORCDLG,ORCACT4,ORCMED]
  1. ; Expects ORVP, ORNMSP, ORTAB, [ORWARD]
  1. Q:$$GET^XPAR("DIV^SYS^PKG","ORK SYSTEM ENABLE/DISABLE")'="E"
  1. N ORX,ORY,I
  1. I ORNMSP="PS" D ;reset to PSJ, PSJI, or PSO
  1. . I $G(ORDG) S I=$P($G(^ORD(100.98,+ORDG,0)),U,3),I=$P(I," ") Q:'$L(I) S ORNMSP="PS"_$S(I="UD":"I",1:I) Q
  1. . I $G(ORXFER) S I=$P($P(^TMP("OR",$J,ORTAB,0),U,3),";",3) S:I="" I=$G(ORWARD) S ORNMSP="PS"_$S(I:"O",1:"I") ;opposite of list
  1. S ORX(1)="|"_ORNMSP,ORX=1
  1. D EN^ORKCHK(.ORY,+ORVP,.ORX,"DISPLAY") Q:'$D(ORY)
  1. S I=0 F S I=$O(ORY(I)) Q:I'>0 W !,$P(ORY(I),U,4) ; display only
  1. Q
  1. ;
  1. SELECT ; -- SELECT event
  1. ; Expects ORVP, ORDAILOG(PROMPT,ORI), ORNMSP
  1. Q:$$GET^XPAR("DIV^SYS^PKG","ORK SYSTEM ENABLE/DISABLE")'="E"
  1. N ORX,ORY,OI,ORDODSG
  1. S OI=+$G(ORDIALOG(PROMPT,ORI)),ORDODSG=0
  1. S ORX=1,ORX(1)=OI_"|"_ORNMSP_"|"_$$USID^ORMBLD(OI)
  1. D EN^ORKCHK(.ORY,+ORVP,.ORX,"SELECT",,.ORDODSG),RETURN:$D(ORY)
  1. Q
  1. ;
  1. ACCEPT(MODE) ; -- ACCEPT event [called from ORCDLG,ORCACT4,ORCMED]
  1. ; Expects ORVP, ORDIALOG(), ORNMSP
  1. K ^TMP($J,"ORK XTRA TXT")
  1. Q:$$GET^XPAR("DIV^SYS^PKG","ORK SYSTEM ENABLE/DISABLE")'="E"
  1. N ORX,ORY,ORZ,OI,ORSTRT,ORI,ORIT,ORID,ORSP,ORDODSG
  1. S:'$L($G(MODE)) MODE="ACCEPT"
  1. S OI=$$PTR^ORCD("OR GTX ORDERABLE ITEM"),ORSTRT=$$START,ORX=0,ORDODSG=0
  1. S ORI=0 F S ORI=$O(ORDIALOG(OI,ORI)) Q:ORI'>0 D STUF
  1. I $G(ORDG)=+$O(^ORD(100.98,"B","IV RX",0)) S OI=$$PTR^ORCD("OR GTX ADDITIVE"),ORI=0 F S ORI=$O(ORDIALOG(OI,ORI)) Q:ORI'>0 D STUF
  1. D EN^ORKCHK(.ORY,+ORVP,.ORX,MODE,,.ORDODSG),RETURN:$D(ORY),FDBDOWN(0)
  1. Q
  1. STUF S ORIT=ORDIALOG(OI,ORI),ORSP=""
  1. S:ORNMSP="LR" ORSP=+$G(ORDIALOG($$PTR^ORCD("OR GTX SPECIMEN"),ORI))
  1. S ORID=$S($E(ORNMSP,1,2)="PS":$$DRUG(ORIT,OI),1:$$USID^ORMBLD(ORIT))
  1. S ORZ=1,ORZ(1)=ORIT_"|"_ORNMSP_"|"_ORID
  1. I MODE'="ALL" D EN^ORKCHK(.ORY,+ORVP,.ORZ,"SELECT",,.ORDODSG),RETURN:$D(ORY)
  1. S ORX=ORX+1,ORX(ORX)=ORZ(1)_"|"_ORSTRT_"||"_ORSP K ORY,ORZ
  1. Q
  1. ;
  1. DELAY(MODE) ; -- Delayed ACCEPT event [called from ORMEVNT]
  1. ; Expects ORVP, ORIFN
  1. Q:$$GET^XPAR("DIV^SYS^PKG","ORK SYSTEM ENABLE/DISABLE")'="E"
  1. N ORX,ORY,ORCHECK,ORDODSG S:'$L($G(MODE)) MODE="NOTIF"
  1. S ORDODSG=0
  1. D BLD(+ORIFN),EN^ORKCHK(.ORY,+ORVP,.ORX,MODE,,.ORDODSG) Q:'$D(ORY)
  1. D RETURN I MODE="NOTIF" S ORCHECK("OK")="Notification sent to provider" D OC^ORCSAVE2 Q ; silent
  1. Q
  1. ;
  1. BLD(ORDER) ; -- Build new ORX(#) for ORDER
  1. Q:'$G(ORDER) Q:'$D(^OR(100,ORDER,0)) ;Q:$P($G(^(3)),U,11) ;edit/renew
  1. N PKG,START,ORI,ITEM,USID,SPEC,ORDG,PTR,INST,ORXSETIV
  1. S ORXSETIV=0
  1. S ORDG=$P(^OR(100,ORDER,0),U,11),PKG=$$GET1^DIQ(9.4,$P(^(0),U,14)_",",1)
  1. I PKG="PS",$G(ORDG) S ORI=$P($G(^ORD(100.98,+ORDG,0)),U,3),ORI=$P(ORI," "),PKG=PKG_$S(ORI="UD":"I",1:ORI)
  1. S START=$$START(ORDER),ORI=0
  1. I PKG="PSJ" D
  1. .N ORITEMS,IDX
  1. .D MAYBEIV^ORWDXR01(.ORITEMS,ORDER)
  1. .Q:$G(ORITEMS)=""
  1. .F IDX=1:1:$L(ORITEMS,U) D
  1. ..S ORX=+$G(ORX)+1,ORX(ORX)=$P(ORITEMS,U,IDX),$P(ORX(ORX),"|",3)=$$DRUG(+ORX(ORX),$P(ORX(ORX),"|",3),ORDER)
  1. ..S $P(ORX(ORX),"|",4)=START
  1. ..S ORXSETIV=1
  1. Q:ORXSETIV
  1. F S ORI=$O(^OR(100,ORDER,4.5,"ID","ORDERABLE",ORI)) Q:ORI'>0 D
  1. . S INST=$P($G(^OR(100,ORDER,4.5,ORI,0)),U,3),PTR=$P($G(^(0)),U,2),ITEM=+$G(^(1))
  1. . S USID=$S(PKG?1"PS".E:$$DRUG(ITEM,PTR,ORDER),1:$$USID^ORMBLD(ITEM))
  1. . S SPEC=$S(PKG="LR":$$VALUE^ORCSAVE2(ORDER,"SPECIMEN",INST),1:"")
  1. . S ORX=+$G(ORX)+1,ORX(ORX)=ITEM_"|"_PKG_"|"_USID_"|"_START_"|"_ORDER_"|"_SPEC
  1. Q
  1. ;
  1. REMDUPS ;
  1. N IFN,CDL,I,J,CDL2,OVRIDE,OVRIDE2
  1. S IFN=0 F S IFN=$O(ORCHECK(IFN)) Q:'IFN D
  1. . S CDL=0 F S CDL=$O(ORCHECK(IFN,CDL)) Q:'CDL D
  1. .. S I=0 F S I=$O(ORCHECK(IFN,CDL,I)) Q:'I D
  1. ... S OVRIDE=$P($G(ORCHECK(IFN,CDL,I)),U,7) ;TDP
  1. ... S CDL2=0 F S CDL2=$O(ORCHECK(IFN,CDL2)) Q:'CDL2 D
  1. .... S J=I F S J=$O(ORCHECK(IFN,CDL2,J)) Q:'J I $TR($P($G(ORCHECK(IFN,CDL,I)),U,3),";",",")=$TR($P($G(ORCHECK(IFN,CDL2,J)),U,3),";",",") D
  1. ..... S OVRIDE2=$P($G(ORCHECK(IFN,CDL2,J)),U,7) ;TDP
  1. ..... I CDL2>=CDL D
  1. ...... I OVRIDE2'="",OVRIDE="" S $P(ORCHECK(IFN,CDL,I),U,7)=OVRIDE2 ;TDP
  1. ...... K ORCHECK(IFN,CDL2,J) S ORCHECK=$G(ORCHECK)-1
  1. ..... I CDL2<CDL D
  1. ...... I OVRIDE2="",OVRIDE'="" S $P(ORCHECK(IFN,CDL2,J),U,7)=OVRIDE ;TDP
  1. ...... S $P(ORCHECK(IFN,CDL,I),U,7)="X"
  1. ... I $P(ORCHECK(IFN,CDL,I),U,7)="X" K ORCHECK(IFN,CDL,I) S ORCHECK=$G(ORCHECK)-1
  1. Q
  1. ;
  1. START(DA) ; -- Returns start date/time
  1. N I,X,Y,%DT S Y=""
  1. I $G(DA) S X=$O(^OR(100,DA,4.5,"ID","START",0)),X=$G(^OR(100,DA,4.5,+X,1))
  1. E D ; look in ORDIALOG instead
  1. . S I=0 F S I=$O(ORDIALOG(I)) Q:I'>0 Q:$P(ORDIALOG(I),U,2)="START"
  1. . S X=$S(I:$G(ORDIALOG(I,1)),1:"")
  1. D AM^ORCSAVE2:X="AM",NEXT^ORCSAVE2:X="NEXT"
  1. D ADMIN^ORCSAVE2("NEXT"):X="NEXTA",ADMIN^ORCSAVE2("CLOSEST"):X="CLOSEST"
  1. I $L(X) S %DT="TX" D ^%DT S:Y'>0 Y=""
  1. Q Y
  1. ;
  1. DRUG(OI,PTR,IFN) ; -- Returns 6 ^-piece identifier for Dispense Drug
  1. N ORDD,ORNDF,Y
  1. I ORDG=+$O(^ORD(100.98,"B","IV RX",0))!(ORDG=+$O(^ORD(100.98,"B","CI RX",0))) S ORDD=$$IV G D1
  1. I $G(IFN) S ORDD=$O(^OR(100,IFN,4.5,"ID","DRUG",0)),ORDD=+$G(^OR(100,IFN,4.5,+ORDD,1))
  1. E S ORDD=+$G(ORDIALOG($$PTR^ORCD("OR GTX DISPENSE DRUG"),1))
  1. D1 Q:'ORDD "" S ORNDF=$$ENDCM^PSJORUTL(ORDD)
  1. S Y=$P(ORNDF,U,3)_"^^99NDF^"_ORDD_U_$$NAME50^ORPEAPI(ORDD)_"^99PSD"
  1. Q Y
  1. ;
  1. IV() ; -- Get Dispense Drug for IV orderable
  1. N PSOI,TYPE,VOL,ORY
  1. S PSOI=+$P($G(^ORD(101.43,+OI,0)),U,2),VOL=""
  1. S TYPE=$S(PTR=$$PTR^ORCD("OR GTX ADDITIVE"):"A",1:"B")
  1. S:TYPE="B" VOL=$S($G(IFN):$$VALUE^ORCSAVE2(IFN,"VOLUME"),1:+$G(ORDIALOG($$PTR^ORCD("OR GTX VOLUME"),1)))
  1. D ENDDIV^PSJORUTL(PSOI,TYPE,VOL,.ORY)
  1. Q +$G(ORY)
  1. ;
  1. LIST(IFN) ; -- Displays list of ORCHECK(IFN) checks
  1. N ORI,ORJ,ORZ,ORMAX,ORTX,ON,OFF
  1. S ORZ=0 F S ORZ=$O(ORCHECK(IFN,ORZ)) Q:ORZ'>0 D
  1. . S:ORZ=1 ON=IOINHI,OFF=IOINORM S:ORZ'=1 (ON,OFF)="" ; use bold if High
  1. . S ORI=0 F S ORI=$O(ORCHECK(IFN,ORZ,ORI)) Q:ORI'>0 D
  1. . . S X=$P(ORCHECK(IFN,ORZ,ORI),U,3) I $L(X)<75 W !,ON_">>> "_X_OFF Q
  1. . . S ORMAX=74 K ORTX D TXT^ORCHTAB Q:'$G(ORTX) ; wrap
  1. . . F ORJ=1:1:ORTX W !,ON_$S(ORJ=1:">>> ",1:" ")_ORTX(ORJ)_OFF
  1. W !
  1. Q
  1. ;
  1. CANCEL() ; -- Returns 1 or 0: Cancel order(s)?
  1. N X,Y,DIR,NUM
  1. S NUM=+$G(ORCHECK("IFN")),DIR(0)="YA"
  1. S DIR("A")="Do you want to cancel "_$S(NUM>1:"any of the new orders? ",1:"the new order? ")
  1. S DIR("?",1)="Enter YES to cancel "_$S(NUM>1:"an",1:"the")_" order. If you wish to override these order checks"
  1. S DIR("?",2)="and release "_$S(NUM>1:"these orders",1:"this order")_", enter NO; you will be prompted for a justification",DIR("?")="if there are any highlighted critical order checks."
  1. D ^DIR
  1. Q +Y
  1. ;
  1. REASON() ; -- Reason for overriding order checks
  1. ; I '$D(^XUSEC("ORES",DUZ)),'$D(^XUSEC("ORELSE",DUZ)) Q ??
  1. N X,Y,DIR,DTOUT,DUOUT,DIRUT,DIROUT
  1. S DIR(0)="FA^2:80^K:X?1."" "" X",DIR("A")="REASON FOR OVERRIDE: "
  1. S DIR("?")="Enter a justification for overriding these order checks, up to 80 characters"
  1. D ^DIR I $D(DTOUT)!$D(DUOUT) S Y="^"
  1. Q Y
  1. ;
  1. SESSION ; -- SESSION event [called from ORCSIGN]
  1. ; Expects ORVP, ORES()
  1. K ^TMP($J,"ORK XTRA TXT")
  1. Q:$$GET^XPAR("DIV^SYS^PKG","ORK SYSTEM ENABLE/DISABLE")'="E"
  1. N ORX,ORY,ORIFN,I,X,Y,ORGLOB,ORCHKNM
  1. S ORGLOB=$H
  1. K ^TMP($J,ORGLOB)
  1. S ORIFN=0 F S ORIFN=$O(ORES(ORIFN)) Q:ORIFN'>0 I +$P(ORIFN,";",2)'>1 D
  1. . I "^14^13^11^10^"'[(U_$P($G(^OR(100,+ORIFN,3)),U,3)_U) Q ;unreleased
  1. . D BLD(+ORIFN) K ^TMP($J,"OCDATA") Q:'$$OCAPI^ORCHECK(+ORIFN,"OCDATA")
  1. . S ORCHECK("IFN")=+$G(ORCHECK("IFN"))+1
  1. . S I=0 F S I=$O(^TMP($J,"OCDATA",I)) Q:'I D
  1. . . I $G(^TMP($J,"OCDATA",I,"OC NUMBER"))=32,$$ALGASS(+ORIFN)=1 Q
  1. . . I $G(^TMP($J,"OCDATA",I,"OC NUMBER"))=3,$G(^TMP($J,"OCDATA",I,"OR REASON"))="",$G(^TMP($J,"OCDATA",I,"OC COMMENT"))="" Q ;TDP
  1. . . I $G(^TMP($J,"OCDATA",I,"OC TEXT",1,0))["Drug-Drug order checks (Duplicate Therapy, Duplicate Drug, Drug Interaction) were not able to be performed." Q
  1. . . S ORCHECK=+$G(ORCHECK)+1,ORCHECK(+ORIFN,$S($G(^TMP($J,"OCDATA",I,"OC LEVEL")):^TMP($J,"OCDATA",I,"OC LEVEL"),1:99),ORCHECK)=$G(^TMP($J,"OCDATA",I,"OC NUMBER"))_U_$G(^TMP($J,"OCDATA",I,"OC LEVEL"))_U_$G(^TMP($J,"OCDATA",I,"OC TEXT",1,0))_U_1
  1. . . ;TDP - Adding "OR REASON" and "OC COMMENT" checks
  1. . . S ORCHKNM=$NA(ORCHECK(+ORIFN,$S($G(^TMP($J,"OCDATA",I,"OC LEVEL")):^TMP($J,"OCDATA",I,"OC LEVEL"),1:99),ORCHECK))
  1. . . I $G(^TMP($J,"OCDATA",I,"OC COMMENT"))'="" D
  1. . . . S $P(@ORCHKNM,U,6)=$G(^TMP($J,"OCDATA",I,"OC COMMENT"))
  1. . . I $G(^TMP($J,"OCDATA",I,"OR REASON"))'="" D
  1. . . . S $P(@ORCHKNM,U,7)=$G(^TMP($J,"OCDATA",I,"OR REASON"))
  1. . . I $O(^TMP($J,"OCDATA",I,"OC TEXT",1)) D
  1. . . . S ORCHECK(+ORIFN,$S($G(^TMP($J,"OCDATA",I,"OC LEVEL")):^TMP($J,"OCDATA",I,"OC LEVEL"),1:99),ORCHECK)=$G(^TMP($J,"OCDATA",I,"OC NUMBER"))_U_$G(^TMP($J,"OCDATA",I,"OC LEVEL"))_U_"||"_ORGLOB_"&"_$G(^TMP($J,"OCDATA",I,"OC TEXT",1,0))_U_1
  1. . . . N ORI S ORI=0 F S ORI=$O(^TMP($J,"OCDATA",I,"OC TEXT",ORI)) Q:'ORI S ^TMP($J,"ORK XTRA TXT",ORGLOB,^TMP($J,"OCDATA",I,"OC TEXT",1,0),ORI)=^TMP($J,"OCDATA",I,"OC TEXT",ORI,0)
  1. . . . I ($G(^TMP($J,"OCDATA",I,"OC NUMBER"))=35)!($G(^TMP($J,"OCDATA",I,"OC NUMBER"))=36) D
  1. . . . . N ORCROC1,ORCROC2,ORPIECE1,ORPIECE2
  1. . . . . S ORCROC1=$P($G(^ORD(100.05,^TMP($J,"OCDATA",I,"OC INSTANCE"),12)),U)
  1. . . . . S ORCROC2=$P($G(^ORD(100.05,^TMP($J,"OCDATA",I,"OC INSTANCE"),12)),U,2)
  1. . . . . S ORPIECE1=$G(^TMP($J,"OCDATA",I,"OC NUMBER"))
  1. . . . . S ORPIECE2=$G(^TMP($J,"OCDATA",I,"OC LEVEL"))_U_"||"_ORGLOB_"&"_$G(^TMP($J,"OCDATA",I,"OC TEXT",1,0))_"&"_ORCROC1_"&"_ORCROC2_U_1
  1. . . . . S ORCHECK(+ORIFN,$S($G(^TMP($J,"OCDATA",I,"OC LEVEL")):^TMP($J,"OCDATA",I,"OC LEVEL"),1:99),ORCHECK)=ORPIECE1_U_ORPIECE2
  1. . . I $D(^ORD(100.05,^TMP($J,"OCDATA",I,"OC INSTANCE"),16)) D
  1. . . . N ORMONOI S ORMONOI=$O(^TMP($J,"ORMONOGRAPH",""),-1)+1
  1. . . . M ^TMP($J,"ORMONOGRAPH",ORMONOI,"DATA")=^ORD(100.05,^TMP($J,"OCDATA",I,"OC INSTANCE"),16)
  1. . . . S ^TMP($J,"ORMONOGRAPH",ORMONOI,"INT")=^ORD(100.05,^TMP($J,"OCDATA",I,"OC INSTANCE"),17)
  1. . . . S ^TMP($J,"ORMONOGRAPH",ORMONOI,"OC")=$G(^TMP($J,"OCDATA",I,"OC TEXT",1,0))
  1. . K ^TMP($J,"OCDATA")
  1. I $D(ORX) D EN^ORKCHK(.ORY,+ORVP,.ORX,"SESSION"),RETURN:$D(ORY),FDBDOWN(1),REMDUPS
  1. Q
  1. ;
  1. FDBDOWN(ORX) ; -- Checks to see if the FDB was down and if so set appropriate OC
  1. ; expects ORCHECK array of order checks
  1. ; if ORX is 1 then this is getting called from SESSION order checks
  1. Q:'$D(ORCHECK)
  1. ;look for the "not able to be performed" OCs for each type (DSG and ENH), set flag for each to 1 if found and remove them from ORCHECK
  1. N I S I="" F S I=$O(ORCHECK(I)) Q:'$L(I) D
  1. .N ORNEXT,ORDSG,ORENH,ORTHERE
  1. .S ORDSG=0,ORENH=0,ORTHERE=0,ORNEXT=1
  1. .N J S J=0 F S J=$O(ORCHECK(I,J)) Q:'J D
  1. ..N K S K=0 F S K=$O(ORCHECK(I,J,K)) Q:'K D
  1. ...I (K+1)>ORNEXT S ORNEXT=K+1
  1. ...I $G(ORCHECK(I,J,K))[$$DSDWNMSG^ORDSGCHK K ORCHECK(I,J,K) S ORDSG=1
  1. ...I $G(ORCHECK(I,J,K))["Drug-Drug order checks (Duplicate Therapy, Duplicate Drug, Drug Interaction) were not able to be performed." K ORCHECK(I,J,K) S ORENH=1
  1. ...I $G(ORCHECK(I,J,K))["These checks could not be completed for this patient:" S ORTHERE=1
  1. .;if DSG or ENH flag is set then add to ORY
  1. .I ORDSG!(ORENH) D
  1. ..;look to see if message already exists
  1. ..I ORTHERE Q
  1. ..N ORKGLOB S ORKGLOB=$H_","_I
  1. ..N ORMAIN S ORMAIN="These checks could not be completed for this patient:"
  1. ..S ORCHECK(I,2,ORNEXT)="25^2^||"_ORKGLOB_"&"_ORMAIN
  1. ..I $G(ORX) S ^TMP($J,"ORK XTRA TXT",ORKGLOB,ORMAIN,0)=ORMAIN
  1. ..N ORCNT S ORCNT=1
  1. ..I ORENH S ORCNT=ORCNT+1,^TMP($J,"ORK XTRA TXT",ORKGLOB,ORMAIN,ORCNT)=" Drug Interactions"
  1. ..I ORENH S ORCNT=ORCNT+1,^TMP($J,"ORK XTRA TXT",ORKGLOB,ORMAIN,ORCNT)=" Duplicate Therapy"
  1. ..I '$G(ORX),ORDSG S ORCNT=ORCNT+1,^TMP($J,"ORK XTRA TXT",ORKGLOB,ORMAIN,ORCNT)=" Dosing"
  1. Q
  1. ;
  1. RETURN ; -- Return checks in ORCHECK(ORIFN,CDL,#)
  1. N I,IFN,CDL S I=0 F S I=$O(ORY(I)) Q:I'>0 D
  1. . S IFN=+$P(ORY(I),U) S:'IFN IFN="NEW"
  1. . S CDL=+$P(ORY(I),U,3) S:'CDL CDL=99
  1. . S:'$D(ORCHECK(IFN)) ORCHECK("IFN")=+$G(ORCHECK("IFN"))+1 ; count
  1. . S ORCHECK=+$G(ORCHECK)+1,ORCHECK(IFN,CDL,ORCHECK)=$P(ORY(I),U,2,7)
  1. Q
  1. ;
  1. ALGASS(ORIFN) ;see if patient from order has an allergy assessment
  1. N ORDFN S ORDFN=+$P(^OR(100,ORIFN,0),U,2)
  1. K ORARRAY D EN1^GMRAOR1(ORDFN,"ORARRAY")
  1. I ORARRAY'="" Q 1
  1. Q 0
  1. OCAPI(IFN,ORPLACE) ;IA #4859
  1. ;LOOK AT ROUTINE OROCAPI1 FOR MORE DETAILED APIS
  1. ;API to get the order checking info for a specific order (IFN)
  1. ;info is stored in ^TMP($J,ORPLACE)
  1. ; ^TMP($J,ORPLACE,D0,"OC LEVEL")="order check level"
  1. ; ,"OC NUMBER")="file 100.8 ien"
  1. ; ,"OC TEXT")="order check text"
  1. ; ,"OR REASON")="over ride reason text"
  1. ; ,"OC COMMENT")="remote allergy comment"
  1. ; ,"OR PROVIDER")="provider DUZ who entered over ride reason"
  1. ; ,"OR DT")="date/time over ride reason was entered"
  1. ; NOTE on OC LEVEL: 1 is HIGH, 2 is MODERATE, 3 is LOW
  1. N RET,ORN,CNT,I,ORFLAG
  1. S ORN=+IFN,CNT=0,ORFLAG=0
  1. ;if the order is not released then show ACCEPTANCE_CPRS ocs
  1. I "^14^13^11^10^"[(U_$P($G(^OR(100,ORN,3)),U,3)_U) D GETOC5^OROCAPI1(ORN,"ACCEPTANCE_CPRS",.RET) S ORFLAG=1
  1. ;if it has been signed then show SIGNATURE_CPRS ocs
  1. I 'ORFLAG D GETOC5^OROCAPI1(ORN,"SIGNATURE_CPRS",.RET)
  1. I $D(RET) S I=0 F S I=$O(RET(ORN,"DATA",I)) Q:'I S CNT=CNT+1 D
  1. .S ^TMP($J,ORPLACE,CNT,"OC NUMBER")=$P($P($G(RET(ORN,"DATA",I,1)),U),";",2)
  1. .S ^TMP($J,ORPLACE,CNT,"OC LEVEL")=$P($G(RET(ORN,"DATA",I,1)),U,2)
  1. .M ^TMP($J,ORPLACE,CNT,"OC TEXT")=RET(ORN,"DATA",I,"OC")
  1. .S ^TMP($J,ORPLACE,CNT,"OR REASON")=$G(RET(ORN,"DATA",I,"OR",1,0))
  1. .S ^TMP($J,ORPLACE,CNT,"OC COMMENT")=$G(RET(ORN,"DATA",I,"CM")) ;TDP
  1. .S ^TMP($J,ORPLACE,CNT,"OR PROVIDER")=$S($L(^TMP($J,ORPLACE,CNT,"OR REASON")):$P($G(RET(ORN,"DATA",I,0)),U,4),1:"")
  1. .S ^TMP($J,ORPLACE,CNT,"OR DT")=$S($L(^TMP($J,ORPLACE,CNT,"OR REASON")):$P($G(RET(ORN,"DATA",I,0)),U,5),1:"")
  1. .S ^TMP($J,ORPLACE,CNT,"OR STATUS")=$P($G(RET(ORN,"DATA",I,0)),U,2)
  1. .S ^TMP($J,ORPLACE,CNT,"OC INSTANCE")=I
  1. Q CNT
  1. ;
  1. ISMONO(ORY) ;returns 1 if there is monograph data for the orderchecks being presented to the user
  1. S ORY=0
  1. Q:'$$PATCH^XPDUTL("OR*3.0*272")
  1. I $D(^TMP($J,"ORMONOGRAPH")) S ORY=1
  1. Q
  1. GETMONOL(ORY) ;returns a list of monographs available for the orderchecks being presented to the user
  1. Q:'$D(^TMP($J,"ORMONOGRAPH"))
  1. N I S I=0
  1. F S I=$O(^TMP($J,"ORMONOGRAPH",I)) Q:'I D
  1. .S ORY($G(^TMP($J,"ORMONOGRAPH",I,"INT")))=I_U_$G(^TMP($J,"ORMONOGRAPH",I,"INT"))
  1. Q
  1. GETMONO(ORY,ORMONO) ;return a monograph
  1. Q:'$D(^TMP($J,"ORMONOGRAPH",ORMONO))
  1. K ^TMP($J,"ORMONORPC")
  1. M ^TMP($J,"ORMONORPC")=^TMP($J,"ORMONOGRAPH",ORMONO,"DATA")
  1. K ^TMP($J,"ORMONORPC",0)
  1. S ORY=$NA(^TMP($J,"ORMONORPC")),@ORY=""
  1. Q
  1. DELMONO(ORY) ;delete monograph data
  1. K ^TMP($J,"ORMONOGRAPH"),^TMP($J,"ORMONORPC")
  1. Q
  1. GETXTRA(ORY,ORGL,ORRULE) ;get extra text for an order check
  1. ;^TMP($J,"ORK XTRA TXT") stores the text of order checks that are longer than a single line (reminder order checks)
  1. Q:'$D(^TMP($J,"ORK XTRA TXT",ORGL,ORRULE))
  1. M ORY=^TMP($J,"ORK XTRA TXT",ORGL,ORRULE)
  1. Q