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

ORCMEDT6.m

Go to the documentation of this file.
  1. ORCMEDT6 ;SLC/MKB-QO editor utilities ;12/18/02 13:33
  1. ;;3.0;ORDER ENTRY/RESULTS REPORTING;**164,297,548**;Dec 17, 1997;Build 3
  1. ;
  1. QO ; -- Enter/edit QO restriction on orderable items
  1. N X,Y,DA,DR,DIE,ORIT,OLDVAL,OREBLD
  1. F S ORIT=$$OI("S.RX^S.LAB","Select an ORDERABLE ITEM (meds or labs only): ") Q:ORIT'>0 D W !!
  1. . W !!,"Select the type of usage for which you wish to restrict ordering of this item."
  1. . F S ORDG=$$SET(+ORIT) Q:"^"[ORDG D
  1. .. S DA(1)=+ORIT,DA=+$O(^ORD(101.43,+ORIT,9,"B",ORDG,0))
  1. .. S OLDVAL=$G(^ORD(101.43,+ORIT,9,DA,0))
  1. .. S DR=2,DIE="^ORD(101.43,"_DA(1)_",9," D ^DIE W !
  1. .. I ORDG="O RX"!(ORDG="UD RX"),OLDVAL'=$G(^ORD(101.43,+ORIT,9,DA,0)) S OREBLD(ORDG)=1
  1. F ORDG="O RX","UD RX" I $G(OREBLD(ORDG)) D FVBLDQ^ORWUL(ORDG)
  1. Q
  1. ;
  1. SET(OI) ; -- Returns Set Membership for OI
  1. N X,Y,I,DOMAIN,NAME,HELP,DONE
  1. S X="",I=0 F S X=$O(^ORD(101.43,+OI,9,"B",X)) Q:X="" S NAME=$$NAME(X) I NAME'="PHARMACY" S I=I+1,DOMAIN(I)=X_U_NAME,DOMAIN("B",NAME)=I
  1. S DOMAIN(0)=I,HELP="Select the type of usage for which you wish to restrict ordering of this item."
  1. S DONE=0,Y="" F D Q:DONE
  1. . W !,"Usage: "
  1. . R X:DTIME S:'$T X="^" I X["^" S Y="^",DONE=1 Q
  1. . I X="" S Y="^",DONE=1 Q
  1. . I X["?" W !!,HELP D LIST Q
  1. . D I 'Y W $C(7),!,HELP Q
  1. . . N XP,XY,CNT,MATCH,DIR,I
  1. . . S X=$$UP^XLFSTR(X),Y=+$G(DOMAIN("B",X)) Q:Y ; done
  1. . . S CNT=0,XP=X F S XP=$O(DOMAIN("B",XP)) Q:XP="" Q:$E(XP,1,$L(X))'=X S CNT=CNT+1,XY=+DOMAIN("B",XP),MATCH(CNT)=XY_U_$P(DOMAIN(XY),U,2)
  1. . . Q:'CNT
  1. . . I CNT=1 S Y=+MATCH(1),XP=$P(MATCH(1),U,2) W $E(XP,$L(X)+1,$L(XP)) Q
  1. . . S DIR(0)="NAO^1:"_CNT,DIR("A")="Select 1-"_CNT_": "
  1. . . F I=1:1:CNT S DIR("A",I)=$J(I,3)_" "_$P(MATCH(I),U,2)
  1. . . S DIR("?")="Select the desired value, by number"
  1. . . D ^DIR I $D(DIRUT) S Y="" Q
  1. . . S Y=+MATCH(Y) W " "_$P(DOMAIN(Y),U,2)
  1. . S Y=$P(DOMAIN(Y),U),DONE=1
  1. Q Y
  1. ;
  1. LIST ; -- List order statuses in DOMAIN
  1. N I,Z,CNT,DONE
  1. S CNT=0 W !,"Choose from:"
  1. F I=1:1:DOMAIN(0) D Q:$G(DONE)
  1. . S CNT=CNT+1 W ! I CNT>(IOSL-3) D Q:$G(DONE)
  1. .. W ?3,"'^' TO STOP: " R Z:DTIME S:'$T!(Z["^") DONE=1 S CNT=1
  1. . W $C(13)," "_$P(DOMAIN(I),U,2)
  1. Q
  1. ;
  1. NAME(X) ; -- Returns full name of set X
  1. N Y,I S Y=$S(X="IVA RX":"IV ADDITIVES",X="IVB RX":"IV SOLUTIONS",X="IVM RX":"IV MEDICATIONS",1:"")
  1. I Y="" S I=+$O(^ORD(100.98,"B",X,0)),Y=$S(I:$P($G(^ORD(100.98,I,0)),U),1:X)
  1. Q Y
  1. ;
  1. OI(IDX,CAPTION) ; -- Returns selected OI from file #101.43 using IDX xrefs
  1. N X,Y,D,DIC,DTOUT,DUOUT,DIRUT,DIROUT,ORDIC
  1. S DIC="^ORD(101.43,",DIC(0)="AEQS" S:$L($G(CAPTION)) DIC("A")=CAPTION
  1. S DIC("W")="W:$S('$D(%):0,'$D(DIY):0,%=DIY:0,1:1) $G(DIY)"
  1. ;OR*3*548 Indicate inactive OIs
  1. S DIC("W")=DIC("W")_" D INACT^ORCMEDT6"
  1. S D=IDX,ORDIC="IX^DIC" S:$L(D,U)>1 ORDIC="MIX^DIC1",DIC(0)=DIC(0)_"M"
  1. D @ORDIC
  1. Q Y
  1. ;
  1. INACT ;is OI inactive
  1. ;TO DO: is OI called by other routines, protocols, etc.
  1. ; other than the Enter/edit QO restriction option?
  1. N ORINACT
  1. S ORINACT=""
  1. I $G(Y) S ORINACT=$P($G(^ORD(101.43,Y,.1)),"^") ;OR*3*548 Add $G
  1. ;OR 548 Do not display future inactive dates
  1. I ORINACT]"",ORINACT'>DT W "*** INACTIVE AS OF ",$$FMTE^XLFDT(ORINACT)," ***"
  1. Q
  1. ;
  1. OIB(CAPTION) ; -- Returns selected OI from file #101.43 using B xref
  1. N X,Y,DIC,DTOUT,DUOUT,DIRUT,DIROUT
  1. S DIC="^ORD(101.43,",DIC(0)="AEQ"
  1. S:$L($G(CAPTION)) DIC("A")=CAPTION
  1. ;OR*3*548 Indicate inactive OIs
  1. S DIC("W")="W:$S('$D(%):0,'$D(DIY):0,%=DIY:0,1:1) $G(DIY)"
  1. S DIC("W")=DIC("W")_" D INACT^ORCMEDT6"
  1. D ^DIC
  1. Q Y
  1. ;
  1. N I,ORP,ORIT
  1. S I=0 F S I=$O(^ORD(101.41,I)) Q:I<1 I $P($G(^(I,0)),U,4)="P",$P($G(^(1)),U)="P",+$P($G(^(1)),U,2)=101.43 S ORP(I)="" ;OI prompts
  1. F S ORIT=$$OIB("Search for: ") Q:ORIT<1 D SR1 W !!
  1. Q
  1. ;
  1. SR1 ; -- list QO's & Dlgs where ORIT is used, get replacement
  1. N I,X,ORDAD,ORDG,ORY,ORNMBR,NUM,DA,ORNM,TYPE,SET
  1. D FIND(ORIT,.ORDAD) I ORDAD<1 W !,$P(ORIT,U,2)_" is not used by any quick orders or dialogs." Q
  1. W @IOF,"Quick Orders and Dialogs containing "_$P(ORIT,U,2),!,$$REPEAT^XLFSTR("-",79)
  1. S I=0 F S I=$O(ORDAD(I)) Q:I'>0 D
  1. . S X=+ORDAD(I) W !,I,?4,$P(^ORD(101.41,X,0),U)
  1. W !,$$REPEAT^XLFSTR("-",79)
  1. S ORDG=+$P($G(^ORD(101.43,+ORIT,0)),U,5),ORDG=$P($G(^ORD(100.98,ORDG,0)),U,3)
  1. S ORY=$$OI("S."_ORDG,"Replace with: ") Q:ORY<1
  1. D SELECT(ORDAD,.ORNMBR) Q:ORNMBR="^"
  1. Q:'$$OK W !!,"Replacing "_$P(ORIT,U,2)_" with "_$P(ORY,U,2)_" in:"
  1. F I=1:1:$L(ORNMBR,",") S NUM=$P(ORNMBR,",",I) I NUM D
  1. . S DA(1)=+ORDAD(NUM),DA=$P(ORDAD(NUM),U,2),SET=$P(ORDAD(NUM),U,3)
  1. . S ORNM=$P(^ORD(101.41,DA(1),0),U),TYPE=$P($G(^(0)),U,4)
  1. . I '$O(^ORD(101.43,+ORY,9,"B",SET,0)) W !?3,ORNM_" canceled: item invalid for this dialog." Q
  1. . I TYPE="Q" S ^ORD(101.41,DA(1),6,DA,1)=+ORY
  1. . I TYPE="D" S ^ORD(101.41,DA(1),10,DA,7)="S Y="_+ORY
  1. . W !?3,ORNM_" ...done."
  1. Q
  1. ;
  1. FIND(X,QO) ; -- Find QO's, Dlg's that use ord item X
  1. N IFN,P,TYPE,NODE,DEF,DA,DLG,PRMT,SET S IFN=0,QO=0
  1. F S IFN=+$O(^ORD(101.41,IFN)) Q:IFN<1 S TYPE=$P($G(^(IFN,0)),U,4) D
  1. . S NODE=$S(TYPE="Q":6,TYPE="D":10,1:0) Q:'NODE
  1. . S P=0 F S P=$O(ORP(P)) Q:P<1 S DA=$O(^ORD(101.41,IFN,NODE,"D",P,0)) I DA D
  1. .. I TYPE="Q" Q:+$G(^ORD(101.41,IFN,6,DA,1))'=+X S DLG=$$DEFDLG^ORCD(IFN),PRMT=+$O(^ORD(101.41,DLG,10,"D",P,0))
  1. .. I TYPE="D" S DEF=$G(^ORD(101.41,IFN,10,DA,7)) Q:DEF'?1"S Y=".E S DEF=$P(DEF,"=",2) S:$E(DEF)="""" DEF=$P(DEF,"""",2) Q:+DEF'=+X S DLG=IFN,PRMT=DA
  1. .. S SET=$P($G(^ORD(101.41,DLG,10,PRMT,0)),U,10),SET=$P($P(SET,";"),".",2)
  1. .. S QO=QO+1,QO(QO)=IFN_U_DA_U_SET
  1. Q
  1. ;
  1. SELECT(MAX,Y) ; -- Select which QOs to replace Ord Item
  1. N X,DIR
  1. S DIR(0)="LA^1:"_MAX,DIR("A")="Replace in: ",DIR("B")=$S(MAX>1:"1-"_MAX,1:"1")
  1. ; S DIR("?")
  1. D ^DIR S:$D(DTOUT)!(X["^") Y="^"
  1. Q
  1. ;
  1. OK() ; -- Are you ready?
  1. N X,Y,DIR
  1. S DIR(0)="YA",DIR("A")="Are you ready? ",DIR("B")="NO"
  1. W ! D ^DIR
  1. Q +Y