1 | ORLP1 ; SLC/DCM,CLA - Patient Lists, Store ; [1/3/01 1:37pm]
|
---|
2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**11,63,90,98**;Dec 17, 1997
|
---|
3 | ;
|
---|
4 | STOR ;called by ORLP0 - Store lists
|
---|
5 | N %,DA,DIC,DIK,DIR,DLAYGO,DR,ORLIST,ORLN,I,J,X,Y
|
---|
6 | W !!,"Store list for future reference"
|
---|
7 | S %=1 D YN^DICN Q:%=-1
|
---|
8 | I %=0 W !,"You may store the newly compiled list. Answer YES or NO." G STOR
|
---|
9 | Q:%=2
|
---|
10 | ;
|
---|
11 | GETNAME ; Call DIR to get user entry for new list name:
|
---|
12 | N ORTNAM
|
---|
13 | S ORTNAM=""
|
---|
14 | N ORNEWL ; Flag used to indicate a new list (v. existing list).
|
---|
15 | S ORNEWL=1 ; Begin w/assumption of a new list name.
|
---|
16 | F D Q:$D(X)
|
---|
17 | .S DIR(0)="FAO^3:30",DIR("A")="Enter a name for this list: "
|
---|
18 | .D ^DIR
|
---|
19 | .I '$D(X)!($D(DIRUT)) K DIRUT W " List not permanently stored." Q
|
---|
20 | .S (ORLN,ORTNAM)=X
|
---|
21 | .S X=$G(X),DIC="^OR(100.21,"
|
---|
22 | .D ^DIC
|
---|
23 | I '$D(X)!(X="") Q
|
---|
24 | I +Y>0 S ORLIST=+Y,ORLN=$P(Y,U,2) K DIC S Y=ORLIST S ORNEWL=0 ; List name already exists.
|
---|
25 | ;
|
---|
26 | OVRWR ;
|
---|
27 | N ORABORT ; Flag for aborting process.
|
---|
28 | S ORABORT=0
|
---|
29 | ;
|
---|
30 | ; Check for problems with name entry:
|
---|
31 | I 'ORNEWL D
|
---|
32 | .I $$NAMCH(+ORLIST) S ORABORT=1
|
---|
33 | I ORABORT G GETNAME
|
---|
34 | ;
|
---|
35 | ; Ask - overwrite if an existing team by that name already?:
|
---|
36 | I 'ORNEWL D
|
---|
37 | .I $O(^OR(100.21,+Y,10,0)) D Q:%'=1 ; Any patients on list yet?
|
---|
38 | ..F D Q:%
|
---|
39 | ...W !,ORLN_" already has patients. Do you want to overwrite it"
|
---|
40 | ...S %=2 D YN^DICN
|
---|
41 | ...I %=2!(%=-1) W !,"List ",ORLN," unchanged.",! S ORABORT=1 Q
|
---|
42 | ...I '% W !,"Answer YES or NO, if you answer YES the list "_ORLN_" will be cleared,",!,"and this temporary list will overwrite it.",! Q
|
---|
43 | .I ORABORT Q
|
---|
44 | .L +^OR(100.21,+ORLIST)
|
---|
45 | .I '$D(^OR(100.21,ORLIST,10,0))#2 S ^(0)="^100.2101AV^"
|
---|
46 | .I '$D(^OR(100.21,ORLIST,1,0))#2 S ^(0)="^100.212PA^"
|
---|
47 | .S I=0 F S I=$O(^OR(100.21,ORLIST,10,I)) Q:'I S DA=+I,DA(1)=+ORLIST,DIK="^OR(100.21,"_ORLIST_",10," D ^DIK
|
---|
48 | .L -^OR(100.21,+ORLIST)
|
---|
49 | I ORABORT G GETNAME
|
---|
50 | ;
|
---|
51 | ; If a new list name, write new team into OE/RR LIST file:
|
---|
52 | I ORNEWL D
|
---|
53 | .S DIC="^OR(100.21,",DLAYGO=100.21,DIC(0)="LEFQZ"
|
---|
54 | .D ^DIC
|
---|
55 | .I (Y<0!'$D(X)) S ORABORT=1 Q ; User aborted or there was a problem.
|
---|
56 | .S ORLIST=+Y
|
---|
57 | I ORABORT K DIC Q
|
---|
58 | ;
|
---|
59 | ; Assure other required entries if necessary:
|
---|
60 | I ORNEWL D
|
---|
61 | .I $P($G(^OR(100.21,+ORLIST,1,0)),U,2)'="P" D
|
---|
62 | ..S DIE="^OR(100.21,",DA=ORLIST,DR="1///^S X=""P"""
|
---|
63 | ..D ^DIE
|
---|
64 | ..K DIE,DA
|
---|
65 | .I '$D(^OR(100.21,+ORLIST,1,DUZ)) S DA(1)=ORLIST,DIC="^OR(100.21,"_DA(1)_",1,",DIC(0)="LX",X="`"_DUZ D ^DIC K DIC
|
---|
66 | ;
|
---|
67 | ; Add selected patients to list (if any):
|
---|
68 | L +^OR(100.21,+ORLIST)
|
---|
69 | S ORI=0
|
---|
70 | F S ORI=$O(^XUTL("OR",$J,"ORLP",ORI)) Q:ORI<1 I $D(^(ORI,0)) S X=^(0),X="PT.`"_+$P(X,"^",3),DA(1)=ORLIST,DIC="^OR(100.21,"_ORLIST_",10,",DIC(0)="LX" D ^DIC
|
---|
71 | K DIC,ORI
|
---|
72 | L -^OR(100.21,ORLIST)
|
---|
73 | W !!,"List has been stored."
|
---|
74 | Q
|
---|
75 | ;
|
---|
76 | MERG ;called by option ORLP MERG - merge patient lists
|
---|
77 | D CLEAR^ORLP ;clear XUTL for merge
|
---|
78 | D ASK^ORLP0(.X)
|
---|
79 | I (X<0)!(X>1) Q
|
---|
80 | S:'$D(ORCNT) ORCNT=0
|
---|
81 | W @IOF,!,"Merging patients from two or more Personal and/or Team patient lists.",!
|
---|
82 | S DIC="^OR(100.21,",DIC(0)="AEQM",DIC("S")="I ""PT""[$E($P(^(0),U,2))"
|
---|
83 | F ORK=1:1 S ORCT=0,DIC("A")="Select LIST "_ORK_": " D P1^ORLP0 Q:ORY<1 I ORCNT>0 W !!,ORCT_" Patients added, "_ORCNT_" total"
|
---|
84 | Q:$D(DTOUT)!($D(DUOUT))
|
---|
85 | I 'ORCNT W !!,"List empty.",! D END^ORLP0 Q
|
---|
86 | D PR2^ORLA1(OROPREF)
|
---|
87 | W !!,"LIST PATIENTS MERGED"
|
---|
88 | D LIST^ORLP0
|
---|
89 | D STOR,END^ORLP0
|
---|
90 | D BUILD^ORLA1 ;load XUTL with user's primary list
|
---|
91 | K DIC,ORCEND,ORCLIN,ORCNT,ORCOLW,ORCSTRT,ORCT,ORDEF,ORK,ORPRIM,ORPROV,ORSPEC,ORTITLE,ORUPNM,ORUSSN,ORWARD,Y
|
---|
92 | Q
|
---|
93 | ;
|
---|
94 | DEL ;called by option ORLP DELETE - delete a list
|
---|
95 | I '$D(ORLST) S DIC="^OR(100.21,",DIC(0)="AEQM",DIC("S")="I $P(^(0),U,2)'=""P""",DIC("A")="Select Team PATIENT LIST to delete: "
|
---|
96 | I $D(ORLST) S DIC="^OR(100.21,",DIC(0)="AEQM",DIC("S")="I $P(^(0),U,2)=""P""&($D(^OR(100.21,""C"",DUZ,+Y)))",DIC("A")="Select Personal PATIENT LIST to delete: "
|
---|
97 | D ^DIC
|
---|
98 | K DIC
|
---|
99 | I Y<1 Q
|
---|
100 | S DLIST=Y
|
---|
101 | ;
|
---|
102 | D2 ;
|
---|
103 | S %=""
|
---|
104 | I $$GET^XPAR("USR.`"_DUZ,"ORLP DEFAULT TEAM",1,"I")=+DLIST W !!,"This is your primary patient list, are you sure you want to remove it" S %=2 D YN^DICN
|
---|
105 | I %=0 W !,"Answer YES if you really want to remove this list." G D2
|
---|
106 | I %'="" Q:%'=1
|
---|
107 | W !!,"WARNING - Deleting a patient list will disable access by providers who use the",!,"list as their preferred patient list."
|
---|
108 | ;
|
---|
109 | D1 ;
|
---|
110 | W !,"Are you ready to delete list ",$P(DLIST,"^",2)
|
---|
111 | S %=2 D YN^DICN
|
---|
112 | I %=0 W !,"Enter YES to delete the list, NO to quit." G D1
|
---|
113 | Q:%'=1
|
---|
114 | W !,"Processing........"
|
---|
115 | L +^OR(100.21,+DLIST)
|
---|
116 | S DA=+DLIST,DIK="^OR(100.21,"
|
---|
117 | D ^DIK
|
---|
118 | K DA,DIC,DIK
|
---|
119 | ;
|
---|
120 | ; Next 2 lines added by PKS, 2/8/2000:
|
---|
121 | W !,"Searching for/removing Consults pointers to deleted team..."
|
---|
122 | D CLNLIST^GMRCTU(+DLIST,0) ; Dump pointers to team in file 123.5.
|
---|
123 | ;
|
---|
124 | W !,"List deletion completed.",!
|
---|
125 | L -^OR(100.21,+DLIST)
|
---|
126 | K DLIST,ORLPDUZ,Y,XX,^TMP("ORLP",$J,"TLIST") ;KILL temporary list
|
---|
127 | G DEL
|
---|
128 | Q
|
---|
129 | ;
|
---|
130 | CLEAR(X) ;called by option ORLP CLEAR - clear active list
|
---|
131 | I '$D(^XUTL("OR",$J,"ORLP")) W !!,"No list currently defined" S X=1 Q
|
---|
132 | F D Q:X
|
---|
133 | . W !!,"Are you sure you want to clear the current pt selection list"
|
---|
134 | . S %=2 D YN^DICN
|
---|
135 | . I %=-1 S X=% Q
|
---|
136 | . I %=0 W !!,"YES will clear the current pt selection list and leave you with a blank slate to work from." S X=0 Q
|
---|
137 | . I %=1 K ^XUTL("OR",$J,"ORLP"),^("ORV"),^("ORU"),^("ORW") S:$D(ORCNT) ORCNT=0 W !!,"List cleared" S X=% Q
|
---|
138 | . W !!,"Nothing done."
|
---|
139 | . S X=2
|
---|
140 | Q
|
---|
141 | ;
|
---|
142 | NAMCH(ORTEAM) ; Check for name duplication, proper team type.
|
---|
143 | ;
|
---|
144 | ; Variables used:
|
---|
145 | ;
|
---|
146 | ; ORTEAM = IEN of team in Team List file (^OR100.21).
|
---|
147 | ;
|
---|
148 | ; Check for name duplication and not a "Personal" type team:
|
---|
149 | I $P($G(^OR(100.21,ORTEAM,0)),U,2)'="P" D Q 1
|
---|
150 | .W !,ORTNAM," name already used - can't overwrite.",!
|
---|
151 | .K X,Y,ORLIST,ORLN
|
---|
152 | ;
|
---|
153 | ; Check for "Personal" type but not current user's team:
|
---|
154 | ; ("CREATOR" field was added later, so not used here.)
|
---|
155 | ; Is this user's DUZ in "USER" multiple?
|
---|
156 | I '$D(^OR(100.21,"C",DUZ,ORTEAM)) D Q 1
|
---|
157 | .W !,ORTNAM," name exists, you are not a user - can't overwrite.",!
|
---|
158 | .K X,Y,ORLIST,ORLN
|
---|
159 | ;
|
---|
160 | Q 0
|
---|
161 | ;
|
---|
162 | OWNER ; Get input from CAC for list user/owner.
|
---|
163 | ;
|
---|
164 | ; Variables used herein:
|
---|
165 | ;
|
---|
166 | ; DIR,X,Y = FM call variables.
|
---|
167 | ; ORYY = NEW'd in calling routine (ORLP).
|
---|
168 | ; OROWNER = NEW'd in calling routine (ORLP).
|
---|
169 | ;
|
---|
170 | N DIR,X,Y
|
---|
171 | ;
|
---|
172 | ; Assign variables and get input from CAC for user/owner of list:
|
---|
173 | S OROWNER="" ; Default.
|
---|
174 | S DIR(0)="PAO^200,:AEMNQ"
|
---|
175 | S DIR("A")=" Enter owner of this Personal type list: "
|
---|
176 | S DIR("S")="I $D(X),$D(^VA(200,""AK.PROVIDER"",$P(^(0),U))),$$ACTIVE^XUSER(+Y)"
|
---|
177 | S DIR("?")="Only owner you specify can edit list after creation."
|
---|
178 | D ^DIR
|
---|
179 | S OROWNER=Y
|
---|
180 | K DIR,X,Y ; Clean up.
|
---|
181 | I OROWNER<1 S OROWNER="" Q ; No acceptable entry.
|
---|
182 | S OROWNER=+OROWNER ; Selected user's DUZ.
|
---|
183 | S $P(^OR(100.21,+ORYY,0),U,5)=OROWNER ; Assign CREATOR field.
|
---|
184 | ;
|
---|
185 | Q
|
---|
186 | ;
|
---|