1 | ORCMEDT5 ;SLC/MKB-Misc menu utilities ;03:29 PM 12 Feb 1999
|
---|
2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**8,46**;Dec 17, 1997
|
---|
3 | SEARCH ; -- Search/replace menu items
|
---|
4 | N ORDLG
|
---|
5 | F S ORDLG=$$DIC Q:ORDLG'>0 D SR1(ORDLG) W !!
|
---|
6 | Q
|
---|
7 | ;
|
---|
8 | SR1(ORX) ; -- list parents, get replacement
|
---|
9 | N DA,DR,DIE,DIK,I,J,ORDAD,ORY,ORNMBR,NUM,ORI,ORDAD,ORNM
|
---|
10 | I '$O(^ORD(101.41,"AD",+ORX,0)) W !,$P(ORX,U,2)_" has no ancestors." Q
|
---|
11 | W @IOF,"Ancestors of "_$P(ORX,U,2),!?4,"Name",?69,"Type",!,$$REPEAT^XLFSTR("-",79)
|
---|
12 | S (I,ORDAD)=0 F S I=$O(^ORD(101.41,"AD",+ORX,I)) Q:I'>0 D
|
---|
13 | . S J=0 F S J=$O(^ORD(101.41,"AD",+ORX,I,J)) Q:J'>0 D
|
---|
14 | . . S ORDAD=ORDAD+1,ORDAD(ORDAD)=I_U_J
|
---|
15 | . . W !,ORDAD,?4,$P(^ORD(101.41,I,0),U),?69,$$TYPE($P(^(0),U,4))
|
---|
16 | W !,$$REPEAT^XLFSTR("-",79)
|
---|
17 | S ORY=$$REPLWITH(ORX) Q:ORY="^"
|
---|
18 | D SELECT(ORY,ORDAD,.ORNMBR) Q:ORNMBR="^"
|
---|
19 | Q:'$$OK W !!,$S(ORY="@":"Removing",1:"Replacing "_$P(ORX,U,2)_" with "_$P(ORY,U,2))_" in:"
|
---|
20 | F ORI=1:1:$L(ORNMBR,",") S NUM=$P(ORNMBR,",",ORI) I NUM D
|
---|
21 | . S DA(1)=+ORDAD(NUM),DA=$P(ORDAD(NUM),U,2),DIE="^ORD(101.41,"_DA(1)_",10,"
|
---|
22 | . S ORDAD=DA(1),ORNM=$P(^ORD(101.41,ORDAD,0),U) W !?3,ORNM_" ..."
|
---|
23 | . I '$$VALID(ORY,ORDAD,.ORERR) D Q
|
---|
24 | . . W "not "_$S(ORY="@":"removed.",1:"changed."),!?3,">> "_$G(ORERR)
|
---|
25 | . . S I=0 F S I=$O(ORERR(I)) Q:I'>0 W !?25,"=>"_ORERR(I)
|
---|
26 | . I ORY="@" S DIK=DIE D ^DIK W "done." Q
|
---|
27 | . S DR="2////"_+ORY D ^DIE W $S($P(^ORD(101.41,DA(1),10,DA,0),U,2)=+ORY:"done.",1:"error - not replaced.")
|
---|
28 | Q
|
---|
29 | ;
|
---|
30 | TYPE(X) ; -- Returns name of dialog type
|
---|
31 | N Y S Y=$S(X="P":"prompt",X="D":"dialog",X="Q":"quick order",X="O":"order set",X="M":"menu",X="A":"action",1:"")
|
---|
32 | Q Y
|
---|
33 | ;
|
---|
34 | DIC() ; -- ^DIC on Order Dialog file
|
---|
35 | N X,Y,DIC
|
---|
36 | S DIC=101.41,DIC(0)="AEQM",DIC("A")="Search for: "
|
---|
37 | S DIC("?")="Enter the name of the dialog component you wish to search for."
|
---|
38 | D ^DIC
|
---|
39 | Q Y
|
---|
40 | ;
|
---|
41 | SELECT(ORY,MAX,Y) ; -- Select which Dlgs to replace items
|
---|
42 | N X,DIR
|
---|
43 | S DIR(0)="LA^1:"_MAX,DIR("A")=$S(ORY="@":"Remove in: ",1:"Replace in: "),DIR("B")=$S(MAX>1:"1-"_MAX,1:"1")
|
---|
44 | ; S DIR("?")
|
---|
45 | D ^DIR S:$D(DTOUT)!(X["^") Y="^"
|
---|
46 | Q
|
---|
47 | ;
|
---|
48 | OK() ; -- Are you ready?
|
---|
49 | N X,Y,DIR
|
---|
50 | S DIR(0)="YA",DIR("A")="Are you ready? ",DIR("B")="NO"
|
---|
51 | W ! D ^DIR
|
---|
52 | Q +Y
|
---|
53 | ;
|
---|
54 | REPLWITH(ORIT) ; -- Remove item, or select replacement
|
---|
55 | N X,Y,DIR,DIC
|
---|
56 | S DIR(0)="FAO^1:63",DIR("A")="Replace "_$P(ORIT,U,2)_" with: "
|
---|
57 | S DIR("?")="Enter the name of the item you wish to replace this one with, or @ to remove this item; to quit without changing anything, press <return>."
|
---|
58 | R1 D ^DIR I X="@" Q "@"
|
---|
59 | I $D(DTOUT)!("^"[X) Q "^"
|
---|
60 | S DIC=101.41,DIC(0)="EQM" D ^DIC I Y'>0 G R1
|
---|
61 | Q Y
|
---|
62 | ;
|
---|
63 | VALID(ITM,DAD,ERR) ; -- Ck if ITM may be placed on DAD
|
---|
64 | N DTYPE,ITYPE,Y S Y=0
|
---|
65 | S DTYPE=$P(^ORD(101.41,DAD,0),U,4) I DTYPE="D",$$NMSP^ORCD($P(^(0),U,7))'="OR" S ERR="Only generic ordering dialogs are editable." G VQ
|
---|
66 | I ITM="@" S Y=1 G VQ ; ok to delete
|
---|
67 | S ITYPE=$P(^ORD(101.41,+ITM,0),U,4)
|
---|
68 | I ITYPE="P",DTYPE'="D" S ERR="A prompt may not be added to a "_$$TYPE(DTYPE)_"." G VQ
|
---|
69 | I ITYPE="A","DOM"'[DTYPE S ERR="An action may not be added to a "_$$TYPE(DTYPE)_"." G VQ
|
---|
70 | I "DQOM"[ITYPE,"OM"'[DTYPE S ERR="A "_$$TYPE(ITYPE)_" may not be added to a "_$$TYPE(DTYPE)_"." G VQ
|
---|
71 | D RECURSV(+ITM,DAD,.ERR) I $D(ERR) S Y=0 G VQ
|
---|
72 | S Y=1 ; ok
|
---|
73 | VQ Q Y
|
---|
74 | ;
|
---|
75 | RECURSV(ITEM,MENU,MSG) ; -- Return 1 or 0, if recursive reference to ITEM
|
---|
76 | N STACK,CNT S STACK=0,CNT=0
|
---|
77 | K MSG D CHKPAR(MENU)
|
---|
78 | Q
|
---|
79 | CHKPAR(MENU) ; follow tree to check parents
|
---|
80 | N PMENU,I
|
---|
81 | S STACK=STACK+1,STACK(STACK)=MENU,STACK("B",MENU)=STACK,PMENU=0
|
---|
82 | F S PMENU=$O(^ORD(101.41,"AD",MENU,PMENU)) Q:'PMENU D Q:$D(MSG)
|
---|
83 | . I PMENU=ITEM D Q
|
---|
84 | . . S MSG="Recursive Reference: "_$P(^ORD(101.41,ITEM,0),U)
|
---|
85 | . . F I=STACK:-1:1 S CNT=CNT+1,MSG(CNT)=$P(^ORD(101.41,STACK(I),0),U)
|
---|
86 | . I $D(STACK("B",PMENU)) Q
|
---|
87 | . D CHKPAR(PMENU)
|
---|
88 | K STACK(STACK),STACK("B",MENU) S STACK=STACK-1
|
---|
89 | Q
|
---|
90 | ;
|
---|
91 | INUSE(MENU) ; -- Returns 1 or 0, if MENU is in use by parameter
|
---|
92 | N PARAM,ENT,Y
|
---|
93 | S PARAM=$O(^XTV(8989.51,"B","OR ADD ORDERS MENU",0)),Y=0
|
---|
94 | S ENT="" F S ENT=$O(^XTV(8989.5,"AC",PARAM,ENT)) Q:ENT="" I $G(^(ENT,1))=MENU S Y=1 Q
|
---|
95 | Q Y
|
---|
96 | ;
|
---|
97 | ASSIGN ; -- Assign menu to user(s)
|
---|
98 | D FULL^VALM1
|
---|
99 | D EDITPAR^XPAREDIT("OR ADD ORDERS MENU")
|
---|
100 | S VALMBCK="R"
|
---|
101 | Q
|
---|
102 | ;
|
---|
103 | INQ ; -- Inquire to Order Dialog file
|
---|
104 | N X,Y,DIC,DA,DR,DIQ
|
---|
105 | S DIC="^ORD(101.41,",DIC(0)="AEQM"
|
---|
106 | F D ^DIC Q:Y'>0 S DA=+Y W ! D EN^DIQ W !
|
---|
107 | Q
|
---|
108 | ;
|
---|
109 | OUTPUT(ORY) ; -- Output Xform for Value field of Response multiple
|
---|
110 | N ORDIALOG,ORP,ORZ S ORZ=ORY
|
---|
111 | S ORP=$P($G(^ORD(101.41,D0,6,D1,0)),U,2)
|
---|
112 | I ORP S ORDIALOG(ORP,0)=$P($G(^ORD(101.41,ORP,1)),U,1,2),ORDIALOG(ORP,1)=ORY,ORZ=$$EXT^ORCD(ORP,1)
|
---|
113 | Q ORZ
|
---|
114 | ;
|
---|
115 | AOPAR ; -- List of add order menus assigned to users
|
---|
116 | N BY,DHD,DIC,FLDS,FR,TO
|
---|
117 | S DIC=8989.5
|
---|
118 | S FR="OR ADD ORDERS MENU,?",TO="OR ADD ORDERS MENU,?"
|
---|
119 | S BY="@.02,@1;S2;""Add order menu: """
|
---|
120 | S DHD="CPRS Add order menu list"
|
---|
121 | S FLDS="VALUE;N;""Menu"",ENTITY;""User/Location/etc."";C40"
|
---|
122 | D EN1^DIP
|
---|
123 | Q
|
---|
124 | ;
|
---|
125 | DISABLE ; -- Disable order dialogs
|
---|
126 | N X,Y,DIC,DIR,ORDIS,ORI K ^TMP("ORDISABLE",$J)
|
---|
127 | S DIC=101.41,DIC(0)="AEQM",DIC("A")="Select ORDER DIALOG: ",DIC("?")="Enter the name of an order dialog you wish to disable."
|
---|
128 | S DIC("W")="I $L($P(^(0),U,3)) W !?3,"">> disabled: ""_$P(^(0),U,3)"
|
---|
129 | F D ^DIC Q:Y'>0 S ^TMP("ORDISABLE",$J,+Y)="" S DIC("A")="ANOTHER ONE: "
|
---|
130 | Q:'$O(^TMP("ORDISABLE",$J,0)) ;none selected
|
---|
131 | W !!,"Enter a message to disable the dialog(s), or @ to enable again."
|
---|
132 | S DIR(0)="FAO^1:40",DIR("A")="MESSAGE: "
|
---|
133 | S DIR("?")="Enter up to 40 characters explaining why use of this dialog has been disabled that will display if the dialog is selected, or @ to enable the dialog again."
|
---|
134 | D ^DIR G:$D(DTOUT)!$D(DUOUT)!(X="") DQ S ORDIS=X
|
---|
135 | I '$$OK W !,"Nothing "_$S(ORDIS="@":"en",1:"dis")_"abled." H 1 G DQ
|
---|
136 | S ORI=0 F S ORI=$O(^TMP("ORDISABLE",$J,ORI)) Q:ORI'>0 S $P(^ORD(101.41,ORI,0),U,3)=$S(ORDIS="@":"",1:ORDIS) W "."
|
---|
137 | W !,"done." H 1
|
---|
138 | DQ K ^TMP("ORDISABLE",$J)
|
---|
139 | Q
|
---|