1 | PXRMLREX ;SLC/PJH - Delete rule components ;07/03/2002
|
---|
2 | ;;2.0;CLINICAL REMINDERS;;Feb 04, 2005
|
---|
3 | ;
|
---|
4 | ;=====================================================================
|
---|
5 | ;
|
---|
6 | ;Yes/No Prompts
|
---|
7 | ;--------------
|
---|
8 | ASK(YESNO,TEXT,HELP) ;
|
---|
9 | W !
|
---|
10 | N DIR,X,Y
|
---|
11 | K DIROUT,DIRUT,DTOUT,DUOUT
|
---|
12 | S DIR(0)="YA0"
|
---|
13 | M DIR("A")=TEXT
|
---|
14 | S DIR("B")="Y"
|
---|
15 | S DIR("?")="Enter Y or N. For detailed help type ??"
|
---|
16 | S DIR("??")=U_"D HLP^PXRMLREX(HELP)"
|
---|
17 | D ^DIR K DIR
|
---|
18 | I $D(DIROUT) S DTOUT=1
|
---|
19 | I $D(DTOUT)!($D(DUOUT)) Q
|
---|
20 | S YESNO=$E(Y(0))
|
---|
21 | Q
|
---|
22 | ;
|
---|
23 | ;Give option to delete all descendents
|
---|
24 | ;-------------------------------------
|
---|
25 | DELETE(COMP) ;
|
---|
26 | N ANS,HLP,LRIEN,LRNAM,LRTYP,IC,TEXT
|
---|
27 | ;Parent name and type
|
---|
28 | S LRNAM=$P(COMP(0),U)
|
---|
29 | ;Prompt information
|
---|
30 | S TEXT(1)="List Rule Set "_LRNAM_" had unused components."
|
---|
31 | S TEXT="Delete all these component rules:"
|
---|
32 | ;List component names
|
---|
33 | S IC=2,LRIEN=0,TEXT(2)="",HLP=1
|
---|
34 | F S LRIEN=$O(COMP(LRIEN)) Q:'LRIEN D Q:IC>15
|
---|
35 | .S IC=IC+1 I IC>15 S TEXT(IC)="<<more>>" Q
|
---|
36 | .N LRTYP
|
---|
37 | .S LRTYP=$P(COMP(LRIEN),U,2)
|
---|
38 | .S LRTYP=$S(LRTYP=1:"list rule",LRTYP=2:"reminder rule",1:"output rule")
|
---|
39 | .S TEXT(IC)=$P(COMP(LRIEN),U)_$J("",5)_LRTYP
|
---|
40 | S TEXT(IC+1)=""
|
---|
41 | ;Ask Delete Y/N?
|
---|
42 | D ASK(.ANS,.TEXT,HLP) Q:$G(ANS)'="Y"
|
---|
43 | ;Use DIK to remove all unused components
|
---|
44 | N DA,DIK
|
---|
45 | S LRIEN=0
|
---|
46 | ;Scan list of unused components
|
---|
47 | F S LRIEN=$O(COMP(LRIEN)) Q:'LRIEN D
|
---|
48 | .;Delete component dialog
|
---|
49 | .S DA=LRIEN,DIK="^PXRM(810.4," D ^DIK
|
---|
50 | Q
|
---|
51 | ;
|
---|
52 | ;Build list of components
|
---|
53 | ;------------------------
|
---|
54 | COMP(IEN,COMP) ;
|
---|
55 | ;Build list of components
|
---|
56 | D COMPR(IEN,.COMP) Q:'$D(COMP)
|
---|
57 | ;Get reminder dialog, group or element name and type
|
---|
58 | N DATA
|
---|
59 | S DATA=$G(^PXRM(810.4,IEN,0))
|
---|
60 | ;Save for future use
|
---|
61 | S COMP(0)=$P(DATA,U)_U_$P(DATA,U,4)
|
---|
62 | Q
|
---|
63 | ;
|
---|
64 | ;Recursive call
|
---|
65 | ;--------------
|
---|
66 | COMPR(IEN,COMP) ;
|
---|
67 | N DATA,LRIEN,LRNAME,LRTYP,PARENT,SUB
|
---|
68 | S LRIEN=0,PARENT="LOCAL"
|
---|
69 | ;Check if parent is national
|
---|
70 | I $P($G(^PXRM(810.4,IEN,100)),U)="N" S PARENT="NATIONAL"
|
---|
71 | ;
|
---|
72 | F S LRIEN=$O(^PXRM(810.4,IEN,30,"D",LRIEN)) Q:'LRIEN D
|
---|
73 | .;Ignore national components
|
---|
74 | .I $P($G(^PXRM(810.4,LRIEN,100)),U)="N",PARENT'="NATIONAL" Q
|
---|
75 | .;Ignore if in use
|
---|
76 | .I $$USED(LRIEN,IEN) Q
|
---|
77 | .;Save component dialog type and name
|
---|
78 | .S DATA=$G(^PXRM(810.4,LRIEN,0)),LRNAME=$P(DATA,U),LRTYP=$P(DATA,U,3)
|
---|
79 | .S COMP(LRIEN)=LRNAME_U_LRTYP
|
---|
80 | .;For groups and element check sub-components
|
---|
81 | .I (LRTYP="G")!(LRTYP="E") D COMPR(LRIEN,.COMP)
|
---|
82 | Q
|
---|
83 | ;
|
---|
84 | ;Check if in use
|
---|
85 | ;---------------
|
---|
86 | USED(LRIEN,IEN) ;
|
---|
87 | N SUB,DINUSE
|
---|
88 | S SUB=0,DINUSE=0
|
---|
89 | F S SUB=$O(^PXRM(810.4,"AD",LRIEN,SUB)) Q:'SUB D Q:DINUSE
|
---|
90 | .;In use by other than parent
|
---|
91 | .I SUB'=IEN S DINUSE=1
|
---|
92 | Q DINUSE
|
---|
93 | ;
|
---|
94 | ;General help text routine.
|
---|
95 | ;--------------------------
|
---|
96 | HLP(CALL) ;
|
---|
97 | N HTEXT
|
---|
98 | N DIWF,DIWL,DIWR,IC
|
---|
99 | S DIWF="C75",DIWL=0,DIWR=75
|
---|
100 | ;
|
---|
101 | I CALL=1 D
|
---|
102 | .S HTEXT(1)="Enter 'Yes' to DELETE all sub-components listed above"
|
---|
103 | .S HTEXT(2)="or enter 'No' to quit."
|
---|
104 | ;
|
---|
105 | D HELP^PXRMEUT(.HTEXT)
|
---|
106 | Q
|
---|