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

ORY28006.m

Go to the documentation of this file.
  1. ORY28006 ;SLC/RJS,CLA - OCX PACKAGE RULE TRANSPORT ROUTINE (Delete after Install of OR*3*280) ;MAR 3,2010 at 07:20
  1. ;;3.0;ORDER ENTRY/RESULTS REPORTING;**280**;Dec 17,1997;Build 85
  1. ;; ;;ORDER CHECK EXPERT version 1.01 released OCT 29,1998
  1. ;
  1. S ;
  1. ;
  1. D DOT^ORY280ES
  1. ;
  1. ;
  1. K REMOTE,LOCAL,OPCODE,REF
  1. F LINE=1:1:500 S TEXT=$P($T(DATA+LINE),";",2,999) Q:TEXT I $L(TEXT) D Q:QUIT
  1. .S ^TMP("OCXRULE",$J,$O(^TMP("OCXRULE",$J,"A"),-1)+1)=TEXT
  1. ;
  1. G ^ORY28007
  1. ;
  1. Q
  1. ;
  1. DATA ;
  1. ;
  1. ;;D^ ; S OCXELE=0 F S OCXELE=$O(^OCXS(860.2,OCXRUL,"C","C",OCXELE)) Q:'OCXELE D
  1. ;;R^"860.8:",100,44
  1. ;;D^ ; .;
  1. ;;R^"860.8:",100,45
  1. ;;D^ ; .N OCXGR1
  1. ;;R^"860.8:",100,46
  1. ;;D^ ; .S OCXGR1=OCXGR_","_OCXREL_",1"
  1. ;;R^"860.8:",100,47
  1. ;;D^ ; .K OCXDATA
  1. ;;R^"860.8:",100,48
  1. ;;D^ ; .S OCXDATA(OCXELE,0)=OCXELE
  1. ;;R^"860.8:",100,49
  1. ;;D^ ; .S OCXDATA(OCXELE,"TIME")=OCXTIME
  1. ;;R^"860.8:",100,50
  1. ;;D^ ; .S OCXDATA(OCXELE,"LOG")=$G(OCXOLOG)
  1. ;;R^"860.8:",100,51
  1. ;;D^ ; .S OCXDATA("B",OCXELE,OCXELE)=""
  1. ;;R^"860.8:",100,52
  1. ;;D^ ; .K ^OCXD(860.7,OCXDFN,1,OCXRUL,1,OCXREL,1,OCXELE)
  1. ;;R^"860.8:",100,53
  1. ;;D^T+; .D SETAP(OCXGR1_")","860.7122P","Element",$P($G(^OCXS(860.3,OCXELE,0)),U,1),.OCXDATA,OCXELE)
  1. ;;R^"860.8:",100,54
  1. ;;D^T-; .D SETAP(OCXGR1_")","860.7122P",.OCXDATA,OCXELE)
  1. ;;R^"860.8:",100,55
  1. ;;D^ ; .;
  1. ;;R^"860.8:",100,56
  1. ;;D^ ; .S OCXDFI=0 F S OCXDFI=$O(^TMP("OCXCHK",$J,OCXDFN,OCXELE,OCXDFI)) Q:'OCXDFI D
  1. ;;R^"860.8:",100,57
  1. ;;D^ ; ..N OCXGR2
  1. ;;R^"860.8:",100,58
  1. ;;D^ ; ..S OCXGR2=OCXGR1_","_OCXELE_",1"
  1. ;;R^"860.8:",100,59
  1. ;;D^ ; ..K OCXDATA
  1. ;;R^"860.8:",100,60
  1. ;;D^ ; ..S OCXDATA(OCXDFI,0)=OCXDFI
  1. ;;R^"860.8:",100,61
  1. ;;D^ ; ..S OCXDATA(OCXDFI,"VAL")=^TMP("OCXCHK",$J,OCXDFN,OCXELE,OCXDFI)
  1. ;;R^"860.8:",100,62
  1. ;;D^ ; ..S OCXDATA("B",OCXDFI,OCXDFI)=""
  1. ;;R^"860.8:",100,63
  1. ;;D^T+; ..D SETAP(OCXGR2_")","860.71223P","Data Field",$P($G(^OCXS(860.4,OCXDFI,0)),U,1),.OCXDATA,OCXDFI)
  1. ;;R^"860.8:",100,64
  1. ;;D^T-; ..D SETAP(OCXGR2_")","860.71223P",.OCXDATA,OCXDFI)
  1. ;;R^"860.8:",100,65
  1. ;;D^ ; ;
  1. ;;R^"860.8:",100,66
  1. ;;D^ ; Q 1
  1. ;;R^"860.8:",100,67
  1. ;;D^ ; ;
  1. ;;R^"860.8:",100,68
  1. ;;D^T+;SETAP(ROOT,DD,ITEM,ITEMNAME,DATA,DA) ; Set Rule Event data
  1. ;;R^"860.8:",100,69
  1. ;;D^T-;SETAP(ROOT,DD,DATA,DA) ; Set Rule Event data
  1. ;;R^"860.8:",100,70
  1. ;;D^ ; M @ROOT=DATA
  1. ;;R^"860.8:",100,71
  1. ;;D^ ; I +$G(DD) S @ROOT@(0)="^"_($G(DD))_"^"_($P($G(@ROOT@(0)),U,3)+1)_"^"_$G(DA)
  1. ;;R^"860.8:",100,72
  1. ;;D^ ; I '$G(DD) S $P(@ROOT@(0),U,3,4)=($P($G(@ROOT@(0)),U,3)+1)_"^"_$G(DA)
  1. ;;R^"860.8:",100,73
  1. ;;D^T+; W:$G(OCXTRACE) !,"File Active Data ",$G(ITEM),": ",$G(ITEMNAME)
  1. ;;R^"860.8:",100,74
  1. ;;D^ ; ;
  1. ;;R^"860.8:",100,75
  1. ;;D^ ; Q
  1. ;;R^"860.8:",100,76
  1. ;;D^ ; ;
  1. ;;R^"860.8:",100,77
  1. ;;D^ ; ;
  1. ;;EOR^
  1. ;;KEY^860.8:^OPIOID MEDICATIONS
  1. ;;R^"860.8:",.01,"E"
  1. ;;D^OPIOID MEDICATIONS
  1. ;;R^"860.8:",.02,"E"
  1. ;;D^OPIOID
  1. ;;R^"860.8:",1,1
  1. ;;D^If the patient is currently receiving "active" medications in the opioid
  1. ;;R^"860.8:",1,2
  1. ;;D^VA drug classes CN101 or CN102, this function returns a "1" and list of
  1. ;;R^"860.8:",1,3
  1. ;;D^the opioid medications in the following format:
  1. ;;R^"860.8:",1,4
  1. ;;D^
  1. ;;R^"860.8:",1,5
  1. ;;D^ 1^drug order text 1, drug order text 2, drug order text 3, ...
  1. ;;R^"860.8:",1,6
  1. ;;D^
  1. ;;R^"860.8:",1,7
  1. ;;D^[Note: The drug order text is truncated to the first 25 characters.]
  1. ;;R^"860.8:",1,8
  1. ;;D^
  1. ;;R^"860.8:",1,9
  1. ;;D^If the patient is not currently receiving opioid medications, a zero (0)
  1. ;;R^"860.8:",1,10
  1. ;;D^is returned.
  1. ;;R^"860.8:",100,1
  1. ;;D^ ;OPIOID(ORPT) ;determine if pat is receiving opioid med
  1. ;;R^"860.8:",100,2
  1. ;;D^ ; ; rtn 1^opioid drug 1, opioid drug 2, opioid drug3, ...
  1. ;;R^"860.8:",100,3
  1. ;;D^ ; N ORDG,ORTN,ORNUM,ORDI,ORDCLAS,ORDERS,ORTEXT,DUP,DUPI,DUPJ,DUPLEN
  1. ;;R^"860.8:",100,4
  1. ;;D^ ; S ORDG=0,ORTN=0,DUPI=0,DUPLEN=20
  1. ;;R^"860.8:",100,5
  1. ;;D^ ; K ^TMP("ORR",$J)
  1. ;;R^"860.8:",100,6
  1. ;;D^ ; S ORDG=$O(^ORD(100.98,"B","RX",ORDG))
  1. ;;R^"860.8:",100,7
  1. ;;D^ ; D EN^ORQ1(ORPT_";DPT(",ORDG,2,"","","",0,0)
  1. ;;R^"860.8:",100,8
  1. ;;D^ ; N J,HOR,SEQ,X S J=1,HOR=0,SEQ=0
  1. ;;R^"860.8:",100,9
  1. ;;D^ ; S HOR=$O(^TMP("ORR",$J,HOR)) Q:+HOR<1 ORTN
  1. ;;R^"860.8:",100,10
  1. ;;D^ ; F S SEQ=$O(^TMP("ORR",$J,HOR,SEQ)) Q:+SEQ<1 D
  1. ;;R^"860.8:",100,11
  1. ;;D^ ; .S X=^TMP("ORR",$J,HOR,SEQ)
  1. ;;R^"860.8:",100,12
  1. ;;D^ ; .S ORNUM=+$P(X,";")
  1. ;;R^"860.8:",100,13
  1. ;;D^ ; .Q:ORNUM=+$G(ORIFN) ;quit if dup med order # = current order #
  1. ;;R^"860.8:",100,14
  1. ;;D^ ; .S ORDI=$$VALUE^ORCSAVE2(ORNUM,"DRUG")
  1. ;;R^"860.8:",100,15
  1. ;;D^ ; .I +$G(ORDI)>0 D
  1. ;;R^"860.8:",100,16
  1. ;;D^ ; ..S ORDCLAS=$P(^PSDRUG(ORDI,0),U,2) ;va drug class
  1. ;;R^"860.8:",100,17
  1. ;;D^ ; ..I ($G(ORDCLAS)="CN101")!($G(ORDCLAS)="CN102") D ;opioid classes
  1. ;;R^"860.8:",100,18
  1. ;;D^ ; ...S ORTEXT=$$FULLTEXT^ORQOR1(ORNUM)
  1. ;;R^"860.8:",100,19
  1. ;;D^ ; ...S ORTEXT=$P(ORTEXT,U)_" ["_$P(ORTEXT,U,2)_"]"
  1. ;;R^"860.8:",100,20
  1. ;;D^ ; ...S DUPI=DUPI+1,DUP(DUPI)=" ["_DUPI_"] "_ORTEXT
  1. ;;R^"860.8:",100,21
  1. ;;D^ ; ...S ORTN=1
  1. ;;R^"860.8:",100,22
  1. ;;D^ ; I DUPI>0 D
  1. ;;R^"860.8:",100,23
  1. ;;D^ ; .;S DUPLEN=$P(215/DUPI,".")
  1. ;;R^"860.8:",100,24
  1. ;;D^ ; .S DUPLEN=500
  1. ;;R^"860.8:",100,25
  1. ;;D^ ; .F DUPJ=1:1:DUPI D
  1. ;;R^"860.8:",100,26
  1. ;;D^ ; ..I DUPJ=1 S ORDERS=$E(DUP(DUPJ),1,DUPLEN)
  1. ;;R^"860.8:",100,27
  1. ;;D^ ; ..E S ORDERS=ORDERS_", "_$E(DUP(DUPJ),1,DUPLEN)
  1. ;;R^"860.8:",100,28
  1. ;;D^ ; K ^TMP("ORR",$J)
  1. ;;R^"860.8:",100,29
  1. ;;D^ ; Q ORTN_U_$G(ORDERS)
  1. ;;R^"860.8:",100,30
  1. ;;D^ ; ;
  1. ;;EOR^
  1. ;;KEY^860.8:^RETURN POINTED TO VALUE
  1. ;;R^"860.8:",.01,"E"
  1. ;;D^RETURN POINTED TO VALUE
  1. ;;R^"860.8:",.02,"E"
  1. ;;D^POINTER
  1. ;;R^"860.8:",1,1
  1. ;;D^ ;POINTER(OCXFILE,D0) ; This Local Extrinsic Function gets the value of the name field
  1. ;;R^"860.8:",1,2
  1. ;;D^ ; ; of record D0 in file OCXFILE
  1. ;;R^"860.8:",100,1
  1. ;;D^ ;POINTER(OCXFILE,D0) ; This Local Extrinsic Function gets the value of the name field
  1. ;;R^"860.8:",100,2
  1. ;;D^ ; ; of record D0 in file OCXFILE
  1. ;;R^"860.8:",100,3
  1. ;;D^T+; I $G(OCXTRACE) W !,"%%%%",?20," FILE: ",$G(OCXFILE)," D0: ",$G(D0)
  1. ;;R^"860.8:",100,4
  1. ;;D^ ; Q:'$G(D0) "" Q:'$L($G(OCXFILE)) ""
  1. ;;R^"860.8:",100,5
  1. ;;D^ ; N GLREF
  1. ;;R^"860.8:",100,6
  1. ;;D^ ; I '(OCXFILE=(+OCXFILE)) S GLREF=U_OCXFILE
  1. ;;R^"860.8:",100,7
  1. ;;D^ ; E S GLREF=$$FILE^OCXBDTD(+OCXFILE,"GLOBAL NAME") Q:'$L(GLREF) ""
  1. ;;R^"860.8:",100,8
  1. ;;D^T+; I $G(OCXTRACE) W !,"%%%%",?20," GLREF: ",GLREF," RESOLVES TO: ",$P($G(@(GLREF_(+D0)_",0)")),U,1)
  1. ;;R^"860.8:",100,9
  1. ;;D^ ; Q $P($G(@(GLREF_(+D0)_",0)")),U,1)
  1. ;;R^"860.8:",100,10
  1. ;;D^ ; ;
  1. ;;EOR^
  1. ;;KEY^860.8:^STRING CONTAINS ONE OF A LIST OF VALUES
  1. ;;R^"860.8:",.01,"E"
  1. ;;D^STRING CONTAINS ONE OF A LIST OF VALUES
  1. ;;R^"860.8:",.02,"E"
  1. ;;D^CLIST
  1. ;;R^"860.8:",100,1
  1. ;;D^ ;CLIST(DATA,LIST) ; DOES THE DATA FIELD CONTAIN AN ELEMENT IN THE LIST
  1. ;;R^"860.8:",100,2
  1. ;;D^ ; ;
  1. ;;R^"860.8:",100,3
  1. ;;D^T+; W:$G(OCXTRACE) !!,"$$CLIST(",DATA,",""",LIST,""")"
  1. ;;R^"860.8:",100,4
  1. ;;D^ ; N PC F PC=1:1:$L(LIST,","),0 I PC,$L($P(LIST,",",PC)),(DATA[$P(LIST,",",PC)) Q
  1. ;;R^"860.8:",100,5
  1. ;;D^ ; Q ''PC
  1. ;;EOR^
  1. ;;EOF^OCXS(860.8)^1
  1. ;;SOF^860.6 ORDER CHECK DATA CONTEXT
  1. ;;KEY^860.6:^CPRS ORDER PRESCAN
  1. ;;R^"860.6:",.01,"E"
  1. ;;D^CPRS ORDER PRESCAN
  1. ;;R^"860.6:",.02,"E"
  1. ;;D^OEPS
  1. ;;R^"860.6:",1,"E"
  1. ;;D^DATA DRIVEN
  1. ;;EOR^
  1. ;;KEY^860.6:^CPRS ORDER PROTOCOL
  1. ;;R^"860.6:",.01,"E"
  1. ;1;
  1. ;