Released USR*1*2 SEQ #2 Extracted from mail message **KIDS**:USR*1.0*2^ **INSTALL NAME** USR*1.0*2 "BLD",785,0) USR*1.0*2^AUTHORIZATION/SUBSCRIPTION^0^2980224^y "BLD",785,1,0) ^^3^3^2980123^^^^ "BLD",785,1,1,0) ASU patch 2, USR*1.0*2. This patch prevents "terminated" users from "BLD",785,1,2,0) being selected for class membership. See the National Patch module for "BLD",785,1,3,0) a complete description. "BLD",785,4,0) ^9.64PA^8930.3^1 "BLD",785,4,8930.3,0) 8930.3 "BLD",785,4,8930.3,222) y^y^f^^^^n "BLD",785,4,"B",8930.3,8930.3) "BLD",785,"ABPKG") n "BLD",785,"INI") PRE^USRP2INI "BLD",785,"INIT") POST^USRP2INI "BLD",785,"KRN",0) ^9.67PA^8994^18 "BLD",785,"KRN",.4,0) .4 "BLD",785,"KRN",.4,"NM",0) ^9.68A^^0 "BLD",785,"KRN",.401,0) .401 "BLD",785,"KRN",.401,"NM",0) ^9.68A^^ "BLD",785,"KRN",.402,0) .402 "BLD",785,"KRN",.403,0) .403 "BLD",785,"KRN",.5,0) .5 "BLD",785,"KRN",.84,0) .84 "BLD",785,"KRN",3.6,0) 3.6 "BLD",785,"KRN",3.8,0) 3.8 "BLD",785,"KRN",9.2,0) 9.2 "BLD",785,"KRN",9.8,0) 9.8 "BLD",785,"KRN",9.8,"NM",0) ^9.68A^6^6 "BLD",785,"KRN",9.8,"NM",1,0) USRMEMBR^^0^B22926409 "BLD",785,"KRN",9.8,"NM",2,0) USRLM^^0^B33467334 "BLD",785,"KRN",9.8,"NM",3,0) USRULST^^0^B6920081 "BLD",785,"KRN",9.8,"NM",4,0) USRP2INI^^0^B756763 "BLD",785,"KRN",9.8,"NM",5,0) USRUMMBR^^0^B12918365 "BLD",785,"KRN",9.8,"NM",6,0) USRMLST^^0^B8357599 "BLD",785,"KRN",9.8,"NM","B","USRLM",2) "BLD",785,"KRN",9.8,"NM","B","USRMEMBR",1) "BLD",785,"KRN",9.8,"NM","B","USRMLST",6) "BLD",785,"KRN",9.8,"NM","B","USRP2INI",4) "BLD",785,"KRN",9.8,"NM","B","USRULST",3) "BLD",785,"KRN",9.8,"NM","B","USRUMMBR",5) "BLD",785,"KRN",19,0) 19 "BLD",785,"KRN",19,"NM",0) ^9.68A^2^2 "BLD",785,"KRN",19,"NM",1,0) USR USER TERMINATE^^0 "BLD",785,"KRN",19,"NM",2,0) XU USER TERMINATE^^2 "BLD",785,"KRN",19,"NM","B","USR USER TERMINATE",1) "BLD",785,"KRN",19,"NM","B","XU USER TERMINATE",2) "BLD",785,"KRN",19.1,0) 19.1 "BLD",785,"KRN",19.1,"NM",0) ^9.68A^^ "BLD",785,"KRN",101,0) 101 "BLD",785,"KRN",409.61,0) 409.61 "BLD",785,"KRN",409.61,"NM",0) ^9.68A^1^1 "BLD",785,"KRN",409.61,"NM",1,0) USR LIST MEMBERSHIP BY CLASS^^0 "BLD",785,"KRN",409.61,"NM","B","USR LIST MEMBERSHIP BY CLASS",1) "BLD",785,"KRN",771,0) 771 "BLD",785,"KRN",869.2,0) 869.2 "BLD",785,"KRN",870,0) 870 "BLD",785,"KRN",8994,0) 8994 "BLD",785,"KRN","B",.4,.4) "BLD",785,"KRN","B",.401,.401) "BLD",785,"KRN","B",.402,.402) "BLD",785,"KRN","B",.403,.403) "BLD",785,"KRN","B",.5,.5) "BLD",785,"KRN","B",.84,.84) "BLD",785,"KRN","B",3.6,3.6) "BLD",785,"KRN","B",3.8,3.8) "BLD",785,"KRN","B",9.2,9.2) "BLD",785,"KRN","B",9.8,9.8) "BLD",785,"KRN","B",19,19) "BLD",785,"KRN","B",19.1,19.1) "BLD",785,"KRN","B",101,101) "BLD",785,"KRN","B",409.61,409.61) "BLD",785,"KRN","B",771,771) "BLD",785,"KRN","B",869.2,869.2) "BLD",785,"KRN","B",870,870) "BLD",785,"KRN","B",8994,8994) "BLD",785,"QUES",0) ^9.62^^ "BLD",785,"REQB",0) ^9.611^2^2 "BLD",785,"REQB",1,0) USR*1.0*1^1 "BLD",785,"REQB",2,0) XU*8.0*73^2 "BLD",785,"REQB","B","USR*1.0*1",1) "BLD",785,"REQB","B","XU*8.0*73",2) "FIA",8930.3) USR CLASS MEMBERSHIP "FIA",8930.3,0) ^USR(8930.3, "FIA",8930.3,0,0) 8930.3P "FIA",8930.3,0,1) y^y^f^^^^n "FIA",8930.3,0,10) "FIA",8930.3,0,11) "FIA",8930.3,0,"RLRO") "FIA",8930.3,0,"VR") 1.0^USR "FIA",8930.3,8930.3) 0 "INI") PRE^USRP2INI "INIT") POST^USRP2INI "KRN",19,18055,-1) 2^2 "KRN",19,18055,0) XU USER TERMINATE^User terminate event^^X^2^^^^^^^^^^^^ "KRN",19,18055,10,0) ^19.01IP^1^1 "KRN",19,18055,10,1,0) 20716 "KRN",19,18055,10,1,"^") USR USER TERMINATE "KRN",19,18055,"U") USER TERMINATE EVENT "KRN",19,20716,-1) 0^1 "KRN",19,20716,0) USR USER TERMINATE^USR USER TERMINATE^^A^^^^^^^^^^1 "KRN",19,20716,1,0) ^^3^3^2980115^^ "KRN",19,20716,1,1,0) This option is for attaching to the XU USER TERMINATE option so that "KRN",19,20716,1,2,0) when a user is terminated all class memberships will be automatically "KRN",19,20716,1,3,0) expired. "KRN",19,20716,20) D TERM^USRLM "KRN",19,20716,"U") USR USER TERMINATE "KRN",409.61,528,-1) 0^1 "KRN",409.61,528,0) USR LIST MEMBERSHIP BY CLASS^1^^142^4^18^1^1^Member^USR CLASS MEMBERSHIP MENU^User Class Members "KRN",409.61,528,1) ^USR HIDDEN ACTIONS "KRN",409.61,528,"ARRAY") ^TMP("USRMMBR",$J) "KRN",409.61,528,"COL",0) ^409.621^5^5 "KRN",409.61,528,"COL",1,0) NUMBER^1^5 "KRN",409.61,528,"COL",2,0) MEMBER^6^30^Member^^1 "KRN",409.61,528,"COL",3,0) EFFECTIVE^61^9^Effective "KRN",409.61,528,"COL",4,0) EXPIRES^72^8^Expires "KRN",409.61,528,"COL",5,0) CLASS^82^60^Specific Class "KRN",409.61,528,"COL","AIDENT",1,2) "KRN",409.61,528,"COL","B","CLASS",5) "KRN",409.61,528,"COL","B","EFFECTIVE",3) "KRN",409.61,528,"COL","B","EXPIRES",4) "KRN",409.61,528,"COL","B","MEMBER",2) "KRN",409.61,528,"COL","B","NUMBER",1) "KRN",409.61,528,"FNL") D CLEAN^USRMLST "KRN",409.61,528,"HDR") D HDR^USRMLST "KRN",409.61,528,"HLP") D PROTOCOL^TIUHELP "KRN",409.61,528,"INIT") D MAKELIST^USRMLST "ORD",17,409.61) 409.61;17;1;;;;;;;LMDEL^XPDIA1 "ORD",17,409.61,0) LIST TEMPLATE "ORD",18,19) 19;18;;;OPT^XPDTA;OPTF1^XPDIA;OPTE1^XPDIA;OPTF2^XPDIA;;OPTDEL^XPDIA "ORD",18,19,0) OPTION "PKG",451,-1) 1^1 "PKG",451,0) AUTHORIZATION/SUBSCRIPTION^USR^User Authorization "PKG",451,22,0) ^9.49I^1^1 "PKG",451,22,1,0) 1.0^2970620^2971106^27 "PKG",451,22,1,"PAH",1,0) 2^2980224^117 "PKG",451,22,1,"PAH",1,1,0) ^^3^3^2980224 "PKG",451,22,1,"PAH",1,1,1,0) ASU patch 2, USR*1.0*2. This patch prevents "terminated" users from "PKG",451,22,1,"PAH",1,1,2,0) being selected for class membership. See the National Patch module for "PKG",451,22,1,"PAH",1,1,3,0) a complete description. "QUES","XPF1",0) Y "QUES","XPF1","??") ^D REP^XPDH "QUES","XPF1","A") Shall I write over your |FLAG| File "QUES","XPF1","B") YES "QUES","XPF1","M") D XPF1^XPDIQ "QUES","XPF2",0) Y "QUES","XPF2","??") ^D DTA^XPDH "QUES","XPF2","A") Want my data |FLAG| yours "QUES","XPF2","B") YES "QUES","XPF2","M") D XPF2^XPDIQ "QUES","XPM1",0) PO^VA(200,:EM "QUES","XPM1","??") ^D MG^XPDH "QUES","XPM1","A") Enter the Coordinator for Mail Group '|FLAG|' "QUES","XPM1","B") "QUES","XPM1","M") D XPM1^XPDIQ "QUES","XPZ1",0) Y "QUES","XPZ1","??") ^D OPT^XPDH "QUES","XPZ1","A") Want to DISABLE Scheduled Options, Menu Options, and Protocols "QUES","XPZ1","B") YES "QUES","XPZ1","M") D XPZ1^XPDIQ "QUES","XPZ2",0) Y "QUES","XPZ2","??") ^D RTN^XPDH "QUES","XPZ2","A") Want to MOVE routines to other CPUs "QUES","XPZ2","B") NO "QUES","XPZ2","M") D XPZ2^XPDIQ "RTN") 6 "RTN","USRLM") 0^2^B33467334 "RTN","USRLM",1,0) USRLM ; SLC/JER - User Class Membership functions and proc's ;1/20/98 "RTN","USRLM",2,0) ;;1.0;AUTHORIZATION/SUBSCRIPTION;**2**;Jun 20, 1997 "RTN","USRLM",3,0) ISA(USER,CLASS,ERR) ; Boolean - Is USER a Member of CLASS? "RTN","USRLM",4,0) N USRY,USRI "RTN","USRLM",5,0) I $S(CLASS="USER":1,CLASS=+$O(^USR(8930,"B","USER",0)):1,1:0) S USRY=1 G ISAX "RTN","USRLM",6,0) I '+USER S USER=+$O(^VA(200,"B",USER,0)) "RTN","USRLM",7,0) I +USER'>0 S ERR="INVALID USER",USRY=0 G ISAX "RTN","USRLM",8,0) I '+CLASS S CLASS=+$O(^USR(8930,"B",CLASS,0)) "RTN","USRLM",9,0) I +CLASS'>0 S ERR="INVALID USER CLASS",USRY=0 G ISAX "RTN","USRLM",10,0) ; If USER is a member of CLASS return true "RTN","USRLM",11,0) S USRY=$S(+$D(^USR(8930.3,"AUC",USER,CLASS)):1,1:0) "RTN","USRLM",12,0) I +$G(USRY)>0 D G ISAX "RTN","USRLM",13,0) . N USRMDA S USRMDA=+$O(^USR(8930.3,"AUC",USER,CLASS,0)) "RTN","USRLM",14,0) . Q:+USRMDA'>0 "RTN","USRLM",15,0) . S USRY=+$$CURRENT(USRMDA) "RTN","USRLM",16,0) ; G:+USRY ISAX "RTN","USRLM",17,0) ; Otherwise, check to see if user is a member of any subclass of CLASS "RTN","USRLM",18,0) S USRI=0 F S USRI=$O(^USR(8930,+CLASS,1,USRI)) Q:+USRI'>0!+$G(USRY) D "RTN","USRLM",19,0) . N USRSUB S USRSUB=+$G(^USR(8930,+CLASS,1,USRI,0)) Q:+USRSUB'>0 "RTN","USRLM",20,0) . S USRY=$$ISA(USER,USRSUB) ; Recurse to find members of subclass "RTN","USRLM",21,0) ISAX Q +$G(USRY) "RTN","USRLM",22,0) CURRENT(MEMBER) ; Boolean - Is Membership current? "RTN","USRLM",23,0) N USRIN,USROUT,USRY "RTN","USRLM",24,0) S USRIN=+$P($G(^USR(8930.3,+MEMBER,0)),U,3) "RTN","USRLM",25,0) S USROUT=+$P($G(^USR(8930.3,+MEMBER,0)),U,4) "RTN","USRLM",26,0) I USRIN'>DT,$S(USROUT>0&(USROUT'0) D "RTN","USRLM",38,0) . I TERMDATE<$$NOW^XLFDT S TERM=1 "RTN","USRLM",39,0) Q TERM "RTN","USRLM",40,0) ; "RTN","USRLM",41,0) ;====================================================================== "RTN","USRLM",42,0) TERM ;Actions to be taken when a user is terminated. Invoked by "RTN","USRLM",43,0) ;XU USER TERMINATE. XUIFN is the user being terminated. "RTN","USRLM",44,0) N IND,NOW,OLDTERM "RTN","USRLM",45,0) S NOW=$$NOW^XLFDT "RTN","USRLM",46,0) S IND="" "RTN","USRLM",47,0) F S IND=$O(^USR(8930.3,"B",XUIFN,IND)) Q:IND="" D "RTN","USRLM",48,0) . S OLDTERM=+$P($G(^USR(8930.3,IND,0)),U,4) "RTN","USRLM",49,0) . I (OLDTERM>0)&(OLDTERM0 D "RTN","USRLM",61,0) . S USRDA=$O(^USR(8930.3,"ACU",CLASS,USER,0)) Q:+USRDA'>0 "RTN","USRLM",62,0) . S EFFCTV=$P($G(^USR(8930.3,+USRDA,0)),U,3) "RTN","USRLM",63,0) . S EXPIRES=$P($G(^USR(8930.3,+USRDA,0)),U,4) "RTN","USRLM",64,0) . S USRNM=$P($G(^VA(200,+USER,0)),U) "RTN","USRLM",65,0) . S USRCLNM=$$CLNAME(+CLASS) "RTN","USRLM",66,0) . S @MEMBER@(USRNM)=USER_U_USRDA_U_USRCLNM_U_EFFCTV_U_EXPIRES "RTN","USRLM",67,0) . S USRCNT=+$G(USRCNT)+1 "RTN","USRLM",68,0) I '$D(@MEMBER@(0)) S @MEMBER@(0)=CLASS_U_$P($G(^USR(8930,+CLASS,0)),U)_U "RTN","USRLM",69,0) S $P(@MEMBER@(0),U,3)=USRCNT "RTN","USRLM",70,0) S USRI=0 F S USRI=$O(^USR(8930,+CLASS,1,USRI)) Q:+USRI'>0 D "RTN","USRLM",71,0) . N USRSUB S USRSUB=+$G(^USR(8930,+CLASS,1,USRI,0)) Q:+USRSUB'>0 "RTN","USRLM",72,0) . D WHOIS(MEMBER,USRSUB) ; Recurse to find members of subclass "RTN","USRLM",73,0) Q "RTN","USRLM",74,0) WHOIS2(MEMBER,CLASS) ; Given a Class, return list of CURRENT members "RTN","USRLM",75,0) ; CLASS is pointer to file 8930 "RTN","USRLM",76,0) ; MEMBER is name of array (local or global) in which members are "RTN","USRLM",77,0) ; returned in alphabetical order by name - indexed by number "RTN","USRLM",78,0) ; i.e. @MEMBER@(1 ...n) "RTN","USRLM",79,0) ; @member@(0) = ien of8930^usr class name^count of members "RTN","USRLM",80,0) ; @member@(1..n)= "RTN","USRLM",81,0) ; 1 2 3 4 5 6 7 8 "RTN","USRLM",82,0) ; p200^p8930.3^classname^effectdate^inactdate^username^title^mailcode "RTN","USRLM",83,0) ; Note: For pieces 2,4 & 5 - Only one of potentially many is returned "RTN","USRLM",84,0) ; "RTN","USRLM",85,0) N USER,USRNM,USRCLNM,USRCNT,USRDA,EFFCTV,EXPIRES,USRI "RTN","USRLM",86,0) D WHOISTMP(.CLASS) "RTN","USRLM",87,0) S USRNM="",USRNDX=0 "RTN","USRLM",88,0) F S USRNM=$O(^TMP($J,"USRWHO2","B",USRNM)) Q:USRNM']"" D "RTN","USRLM",89,0) . S USER=0 F S USER=$O(^TMP($J,"USRWHO2","B",USRNM,USER)) Q:'USER D "RTN","USRLM",90,0) . . S USRNDX=USRNDX+1 "RTN","USRLM",91,0) . . S @MEMBER@(USRNDX)=^TMP($J,"USRWHO2",USER) "RTN","USRLM",92,0) S @MEMBER@(0)=^TMP($J,"USRWHO2",0) "RTN","USRLM",93,0) S $P(@MEMBER@(0),U,3)=USRNDX "RTN","USRLM",94,0) K ^TMP($J,"USRWHO2") "RTN","USRLM",95,0) Q "RTN","USRLM",96,0) WHOISTMP(CLASS) ; Given a Class, return list of CURRENT members into ^TMP "RTN","USRLM",97,0) ; CLASS is pointer to file 8930 "RTN","USRLM",98,0) ; MEMBER is name of array (local or global) in which members are "RTN","USRLM",99,0) ; returned in order by user/x-ref by name "RTN","USRLM",100,0) ; main = ^tmp($j,"USRWHO2",user) "RTN","USRLM",101,0) ; x-ref= ^tmp($j,"USRWHO2","b",usrnm,user) "RTN","USRLM",102,0) ; -- used by whois2 call "RTN","USRLM",103,0) N USER,USRNM,USRCLNM,USRCNT,USRDA,EFFCTV,EXPIRES,USRI,USRMC,USRTIT,USRX "RTN","USRLM",104,0) S USER=0,USRCNT=+$P($G(@MEMBER@(0)),U,3) "RTN","USRLM",105,0) F S USER=$O(^USR(8930.3,"ACU",CLASS,USER)) Q:+USER'>0 D "RTN","USRLM",106,0) . S USRDA=$O(^USR(8930.3,"ACU",CLASS,USER,0)) Q:+USRDA'>0 "RTN","USRLM",107,0) . S EFFCTV=$P($G(^USR(8930.3,+USRDA,0)),U,3) "RTN","USRLM",108,0) . S EXPIRES=$P($G(^USR(8930.3,+USRDA,0)),U,4) "RTN","USRLM",109,0) . S USRNM=$P($G(^VA(200,+USER,0)),U) "RTN","USRLM",110,0) . S USRX=$P($G(^VA(200,+USER,0)),U,9) "RTN","USRLM",111,0) . S USRTIT=$$EXTERNAL^DILFD(200,8,"",USRX) "RTN","USRLM",112,0) . S USRMC=$P($G(^VA(200,+USER,5)),U,2) "RTN","USRLM",113,0) . S USRCLNM=$$CLNAME(+CLASS) "RTN","USRLM",114,0) . S ^TMP($J,"USRWHO2",USER)=USER_U_USRDA_U_USRCLNM_U_EFFCTV_U_EXPIRES_U_USRNM_U_USRTIT_U_USRMC "RTN","USRLM",115,0) . S ^TMP($J,"USRWHO2","B",USRNM,USER)="" "RTN","USRLM",116,0) . S USRCNT=+$G(USRCNT)+1 "RTN","USRLM",117,0) I '$D(^TMP($J,"USRWHO2",0))#2 S ^TMP($J,"USRWHO2",0)=CLASS_U_$P($G(^USR(8930,+CLASS,0)),U)_U "RTN","USRLM",118,0) S $P(^TMP($J,"USRWHO2",0),U,3)=USRCNT "RTN","USRLM",119,0) S USRI=0 F S USRI=$O(^USR(8930,+CLASS,1,USRI)) Q:+USRI'>0 D "RTN","USRLM",120,0) . N USRSUB S USRSUB=+$G(^USR(8930,+CLASS,1,USRI,0)) Q:+USRSUB'>0 "RTN","USRLM",121,0) . D WHOISTMP(USRSUB) ; Recurse to find members of subclass "RTN","USRLM",122,0) Q "RTN","USRLM",123,0) WHATIS(USER,CLASS) ; Given a User, return list of CURRENT classes "RTN","USRLM",124,0) ; USER is pointer to file 200 "RTN","USRLM",125,0) ; CLASS is name of array (local or global) in which the list of "RTN","USRLM",126,0) ; classes to which the USER belongs will be returned in "RTN","USRLM",127,0) ; alphabetic order by class name "RTN","USRLM",128,0) N GROUP,CLASSNM,CLASSCNT,USRDA,EFFCTV,EXPIRES S (CLASSCNT,GROUP)=0 "RTN","USRLM",129,0) F S GROUP=$O(^USR(8930.3,"AUC",USER,GROUP)) Q:+GROUP'>0 D "RTN","USRLM",130,0) . S USRDA=$O(^USR(8930.3,"AUC",USER,GROUP,0)) Q:+USRDA'>0 "RTN","USRLM",131,0) . S EFFCTV=$P($G(^USR(8930.3,+USRDA,0)),U,3) "RTN","USRLM",132,0) . S EXPIRES=$P($G(^USR(8930.3,+USRDA,0)),U,4) "RTN","USRLM",133,0) . S CLASSNM=$$CLNAME(+GROUP) "RTN","USRLM",134,0) . S @CLASS@(CLASSNM)=GROUP_U_USRDA_U_CLASSNM_U_EFFCTV_U_EXPIRES "RTN","USRLM",135,0) . S CLASSCNT=+$G(CLASSCNT)+1 "RTN","USRLM",136,0) S @CLASS@(0)=USER_U_$$SIGNAME^TIULS(+USER)_U_CLASSCNT "RTN","USRLM",137,0) Q "RTN","USRLM",138,0) CLNAME(CLASS) ; Given a class, return the Display Name "RTN","USRLM",139,0) N USRREC,USRY "RTN","USRLM",140,0) S USRREC=$G(^USR(8930,+CLASS,0)) "RTN","USRLM",141,0) Q $S($P(USRREC,U,4)]"":$P(USRREC,U,4),1:$$MIXED^TIULS($P(USRREC,U))) "RTN","USRLM",142,0) PUT(USER,CLASS) ; Make user a member of a given class "RTN","USRLM",143,0) N DIC,DLAYGO,DA,DR,DIE,X,Y "RTN","USRLM",144,0) S (DIC,DLAYGO)=8930.3,DIC(0)="LXF",X=""""_"`"_USER_"""" D ^DIC Q:+Y'>0 "RTN","USRLM",145,0) S DIE=DIC,DA=+Y,DR=".02///"_CLASS_";.03///"_DT "RTN","USRLM",146,0) D ^DIE "RTN","USRLM",147,0) Q "RTN","USRLM",148,0) SUBCLASS(DA,CLASS) ; Evaluate whether a given USER CLASS is a DESCENDENT "RTN","USRLM",149,0) ; of another class "RTN","USRLM",150,0) ; Receives DA = record # of possible subclass in 8930, and "RTN","USRLM",151,0) ; CLASS = record # of possible descendent class in 8930 "RTN","USRLM",152,0) N USRI,USRY S (USRI,USRY)=0 "RTN","USRLM",153,0) I +$G(DA)'>0 S DA=+$O(^USR(8930,"B",DA,0)) "RTN","USRLM",154,0) I +$G(CLASS)'>0 S CLASS=+$O(^USR(8930,"B",CLASS,0)) "RTN","USRLM",155,0) F S USRI=$O(^USR(8930,"AD",DA,USRI)) Q:+USRI'>0!(USRY=1) D "RTN","USRLM",156,0) . I USRI=CLASS S USRY=1 Q "RTN","USRLM",157,0) . S USRY=$$SUBCLASS(USRI,CLASS) "RTN","USRLM",158,0) Q USRY "RTN","USRLM",159,0) CANDEL(USRCLDA) ; Evaluate whether user can delete a class "RTN","USRLM",160,0) N USRMLST,USRY S USRY=0 "RTN","USRLM",161,0) D WHOIS("USRMLST",USRCLDA) "RTN","USRLM",162,0) I +$P(USRMLST(0),U,3)>0 S USRY=1 W " There are members of the class ",$$CLNAME(USRCLDA) "RTN","USRLM",163,0) Q USRY "RTN","USRMEMBR") 0^1^B22926409 "RTN","USRMEMBR",1,0) USRMEMBR ; SLC/JER - User Class Management actions ;1/21/98 "RTN","USRMEMBR",2,0) ;;1.0;AUTHORIZATION/SUBSCRIPTION;**2**;Jun 20, 1997 "RTN","USRMEMBR",3,0) EDIT ; Edit user's class membership "RTN","USRMEMBR",4,0) N USRDA,USRDATA,USREXPND,USRI,USRSTAT,DIROUT,USRCHNG,USRLST "RTN","USRMEMBR",5,0) I '$D(VALMY) D EN^VALM2(XQORNOD(0)) "RTN","USRMEMBR",6,0) S (USRCHNG,USRI)=0 "RTN","USRMEMBR",7,0) F S USRI=$O(VALMY(USRI)) Q:+USRI'>0 D Q:$D(DIROUT) "RTN","USRMEMBR",8,0) . S USRDATA=$G(^TMP("USRMMBRIDX",$J,USRI)) "RTN","USRMEMBR",9,0) . W !!,"Editing #",+USRDATA,! "RTN","USRMEMBR",10,0) . S USRDA=+$P(USRDATA,U,2) D EDIT1 "RTN","USRMEMBR",11,0) . I +$G(USRCHNG) S USRLST=$S($L($G(USRLST)):$G(USRLST)_", ",1:"")_USRI "RTN","USRMEMBR",12,0) . I $D(USRDATA) D UPDATE^USRM(USRDATA) "RTN","USRMEMBR",13,0) W !,"Refreshing the list." "RTN","USRMEMBR",14,0) S VALMSG="** "_$S($L($G(USRLST)):"Item"_$S($L($G(USRLST),",")>1:"s ",1:" ")_$G(USRLST),1:"Nothing")_" Edited **" "RTN","USRMEMBR",15,0) K VALMY S VALMBCK="R" "RTN","USRMEMBR",16,0) Q "RTN","USRMEMBR",17,0) EDIT1 ; Single record edit "RTN","USRMEMBR",18,0) ; Receives USRDA "RTN","USRMEMBR",19,0) N DA,DIE,DR "RTN","USRMEMBR",20,0) I '+$G(USRDA) W !,"No Classes selected." H 2 S USRCHNG=0 Q "RTN","USRMEMBR",21,0) S DIE="^USR(8930.3,",DA=USRDA,DR="[USR MEMBERSHIP EDIT]" "RTN","USRMEMBR",22,0) D FULL^VALM1,^DIE S USRCHNG=1 "RTN","USRMEMBR",23,0) Q "RTN","USRMEMBR",24,0) ADD ; Add a member to the class "RTN","USRMEMBR",25,0) N DA,DR,DIC,DLAYGO,X,Y,USRCLASS,USRUSER,USRQUIT,USRCNT D FULL^VALM1 "RTN","USRMEMBR",26,0) S USRCNT=0 "RTN","USRMEMBR",27,0) F D Q:+$G(USRQUIT) "RTN","USRMEMBR",28,0) . W ! "RTN","USRMEMBR",29,0) . S DIC=200,DIC(0)="AEMQ" "RTN","USRMEMBR",30,0) . S DIC("A")="Select "_$S(USRCNT'>0:"",1:"Another ")_"MEMBER: " "RTN","USRMEMBR",31,0) . S DIC("S")="I ('$$ISTERM^USRLM(+Y)&'$$ISA^USRLM(+Y,USRDA))" ;USR*1.0*2 PKR "RTN","USRMEMBR",32,0) . D ^DIC I +Y'>0 S USRQUIT=1 Q "RTN","USRMEMBR",33,0) . S (DIC,DLAYGO)=8930.3,DIC(0)="LM",X=""""_$P(Y,U,2)_"""" "RTN","USRMEMBR",34,0) . S DIC("W")="D DICW^USRMEMBR" "RTN","USRMEMBR",35,0) . D ^DIC I +Y'>0 S USRQUIT=1 Q "RTN","USRMEMBR",36,0) . S USRCREAT=+$P(Y,U,3),USRCNT=USRCNT+1 "RTN","USRMEMBR",37,0) . S DA=+Y,DIE=DIC,DIE("NO^")="BACK",DR="[USR CLASS EDIT]" D ^DIE "RTN","USRMEMBR",38,0) . I $D(Y) D Q "RTN","USRMEMBR",39,0) . . S DIK=DIC D ^DIK K DIK "RTN","USRMEMBR",40,0) . . S:+USRCNT'>1 VALMSG="** Nothing Added **" "RTN","USRMEMBR",41,0) . . S VALMBCK="R",USRQUIT=1 "RTN","USRMEMBR",42,0) . I 'USRCREAT D Q "RTN","USRMEMBR",43,0) . . S:+USRCNT'>1 VALMSG="** Nothing Added **" "RTN","USRMEMBR",44,0) . . S VALMBCK="R",USRQUIT=1 "RTN","USRMEMBR",45,0) W !,"Rebuilding membership list." "RTN","USRMEMBR",46,0) S USRCLASS=+$G(^TMP("USRM",$J,0)) "RTN","USRMEMBR",47,0) D BUILD^USRMLST(USRCLASS) "RTN","USRMEMBR",48,0) I USRCNT'>1,+$G(DA) D "RTN","USRMEMBR",49,0) . S USRUSER=$$SIGNAME^TIULS(+$G(^USR(8930.3,+DA,0))) "RTN","USRMEMBR",50,0) . S VALMSG="** "_USRUSER_" Added **" "RTN","USRMEMBR",51,0) S VALMCNT=+$G(@VALMAR@(0)) "RTN","USRMEMBR",52,0) S VALMBCK="R" "RTN","USRMEMBR",53,0) Q "RTN","USRMEMBR",54,0) DICW ; Write code for member look-up "RTN","USRMEMBR",55,0) N USRSIGNM,USRCLASS,USREFF,USREXP,USRMEM "RTN","USRMEMBR",56,0) S USRMEM=$G(^USR(8930.3,+Y,0)) "RTN","USRMEMBR",57,0) S USRSIGNM=$$SIGNAME^TIULS(+USRMEM) "RTN","USRMEMBR",58,0) S USRCLASS=$E($$CLNAME^USRLM(+$P(USRMEM,U,2)),1,24) "RTN","USRMEMBR",59,0) S USREFF=$$DATE^TIULS($P(USRMEM,U,3),"MM/DD/YY") "RTN","USRMEMBR",60,0) S USREXP=$$DATE^TIULS($P(USRMEM,U,4),"MM/DD/YY") "RTN","USRMEMBR",61,0) W USRSIGNM," ",USRCLASS,?60,USREFF," - ",USREXP "RTN","USRMEMBR",62,0) Q "RTN","USRMEMBR",63,0) DELETE ; Delete a member to the class "RTN","USRMEMBR",64,0) N DIE,X,Y,USRCLASS D FULL^VALM1 "RTN","USRMEMBR",65,0) N USRCLASS,USRDA,USRCHNG,USRDATA,USRI,USRLST,DIROUT "RTN","USRMEMBR",66,0) I '$D(VALMY) D EN^VALM2(XQORNOD(0)) "RTN","USRMEMBR",67,0) S USRI=0 "RTN","USRMEMBR",68,0) F S USRI=$O(VALMY(USRI)) Q:+USRI'>0 D Q:$D(DIROUT) "RTN","USRMEMBR",69,0) . S USRDATA=$G(^TMP("USRMMBRIDX",$J,USRI)) "RTN","USRMEMBR",70,0) . S USRDA=+$P(USRDATA,U,2) D DELETE1(USRDA) "RTN","USRMEMBR",71,0) . S:+$G(USRCHNG) USRLST=$S(+$G(USRLST):USRLST_", ",1:"")_+USRDATA "RTN","USRMEMBR",72,0) . I $D(USRDATA) D UPDATE^USRM(USRDATA) "RTN","USRMEMBR",73,0) W !,"Rebuilding the list." "RTN","USRMEMBR",74,0) S USRCLASS=+$G(^TMP("USRM",$J,0)) "RTN","USRMEMBR",75,0) D BUILD^USRMLST(USRCLASS) "RTN","USRMEMBR",76,0) S VALMCNT=+$G(@VALMAR@(0)) "RTN","USRMEMBR",77,0) K VALMY S VALMBCK="R" "RTN","USRMEMBR",78,0) S VALMSG="** "_$S($L($G(USRLST)):"Item"_$S($L($G(USRLST),",")>1:"s ",1:" ")_$G(USRLST),1:"Nothing")_" removed **" "RTN","USRMEMBR",79,0) Q "RTN","USRMEMBR",80,0) DELETE1(DA) ; Delete one member from a class "RTN","USRMEMBR",81,0) N DIE,DR,USER,CLASS,USRMEM S USRMEM=$G(^USR(8930.3,+DA,0)) "RTN","USRMEMBR",82,0) I USRMEM']"" W !,"Record #",DA," NOT FOUND!" Q "RTN","USRMEMBR",83,0) S USER=$P($G(^VA(200,+USRMEM,0)),U) "RTN","USRMEMBR",84,0) S CLASS=$P($G(^USR(8930,+$P(USRMEM,U,2),0)),U) "RTN","USRMEMBR",85,0) W !,"Removing ",USER," from ",CLASS "RTN","USRMEMBR",86,0) I '$$READ^TIUU("Y","Are you SURE","NO") S USRCHNG=0 W !,USER," NOT Removed from ",CLASS,"." Q "RTN","USRMEMBR",87,0) S USRCHNG=1 "RTN","USRMEMBR",88,0) S DIK="^USR(8930.3," D ^DIK K DIK W "." "RTN","USRMEMBR",89,0) Q "RTN","USRMEMBR",90,0) SCHEDULE ; Schedule changes in class membership "RTN","USRMEMBR",91,0) N DIC,DLAYGO,X,Y,USRDUZ,USRUSER,USRMIN,USRMAX,USREFF,USREXP,USRCLASS "RTN","USRMEMBR",92,0) N USRCLNM "RTN","USRMEMBR",93,0) D FULL^VALM1 "RTN","USRMEMBR",94,0) I '$D(VALMY) D EN^VALM2(XQORNOD(0)) "RTN","USRMEMBR",95,0) S DIC=8930,DIC(0)="AEMQZ",DIC("A")="Select CLASS: " "RTN","USRMEMBR",96,0) S DIC("B")=$P($G(^TMP("USRMMBR",$J,0)),U,2) "RTN","USRMEMBR",97,0) D ^DIC Q:+Y'>0 "RTN","USRMEMBR",98,0) S USRCLASS=+Y,USRCLNM=$$CLNAME^USRLM(USRCLASS) "RTN","USRMEMBR",99,0) S USRMIN=DT,USRMAX=$$FMADD^XLFDT(DT,365) "RTN","USRMEMBR",100,0) S USREFF=$$READ^TIUU("D^"_USRMIN_":"_USRMAX_":EXFT"," Specify EFFECTIVE DATE/TIME","TODAY") "RTN","USRMEMBR",101,0) S USREXP=$$READ^TIUU("D^"_USRMIN_":"_USRMAX_":EXFT","Specify EXPIRATION DATE/TIME","T+365") "RTN","USRMEMBR",102,0) S USRI=0 "RTN","USRMEMBR",103,0) F S USRI=$O(VALMY(USRI)) Q:+USRI'>0 D "RTN","USRMEMBR",104,0) . N USRDATA,USRDUZ,USRMEM,USRUSER,DIC,DIE,DA,DR,X,Y "RTN","USRMEMBR",105,0) . S USRDATA=$G(^TMP("USRMMBRIDX",$J,USRI)) "RTN","USRMEMBR",106,0) . S USRMEM=$G(^USR(8930.3,+$P(USRDATA,U,2),0)),USRDUZ=+USRMEM "RTN","USRMEMBR",107,0) . S DIC=200,DIC(0)="NX",X="`"_USRDUZ "RTN","USRMEMBR",108,0) . D ^DIC Q:+Y'>0 "RTN","USRMEMBR",109,0) . S (DIC,DLAYGO)=8930.3,DIC(0)="LM",X=""""_$P(Y,U,2)_"""" "RTN","USRMEMBR",110,0) . D ^DIC Q:+Y'>0 "RTN","USRMEMBR",111,0) . S USRCREAT=+$P(Y,U,3) "RTN","USRMEMBR",112,0) . S DA=+Y,DIE=DIC "RTN","USRMEMBR",113,0) . S DR=".02////"_USRCLASS_";.03////"_USREFF_";.04////"_USREXP "RTN","USRMEMBR",114,0) . D ^DIE "RTN","USRMEMBR",115,0) W !,"Rebuilding membership list." "RTN","USRMEMBR",116,0) ;D BUILD^USRMLST(USRCLASS) "RTN","USRMEMBR",117,0) ;S USRUSER=$$SIGNAME^TIULS(+$G(^USR(8930.3,+DA,0))) "RTN","USRMEMBR",118,0) ;S VALMSG="** "_USRUSER_" Added **" "RTN","USRMEMBR",119,0) ;S VALMCNT=+$G(@VALMAR@(0)) "RTN","USRMEMBR",120,0) S VALMBCK="R" "RTN","USRMEMBR",121,0) Q "RTN","USRMLST") 0^6^B8357599 "RTN","USRMLST",1,0) USRMLST ; SLC/JER - List User Class Members ;1/20/1998 "RTN","USRMLST",2,0) ;;1.0;AUTHORIZATION/SUBSCRIPTION;**2**;Jun 20, 1997 "RTN","USRMLST",3,0) MAIN ; Control Branching "RTN","USRMLST",4,0) N DIC,X,Y,USRDUZ "RTN","USRMLST",5,0) S DIC=8930,DIC(0)="AEMQ",DIC("A")="Select CLASS: " "RTN","USRMLST",6,0) D ^DIC Q:+Y'>0 "RTN","USRMLST",7,0) S USRDA=+Y "RTN","USRMLST",8,0) D EN^VALM("USR LIST MEMBERSHIP BY CLASS") "RTN","USRMLST",9,0) Q "RTN","USRMLST",10,0) MAKELIST ; Build review screen list "RTN","USRMLST",11,0) K VALMY "RTN","USRMLST",12,0) W !,"Searching for the User Classes." "RTN","USRMLST",13,0) D BUILD(USRDA) "RTN","USRMLST",14,0) Q "RTN","USRMLST",15,0) BUILD(USRDA) ; Build List "RTN","USRMLST",16,0) N USRCNT,USRNAME,USRPICK "RTN","USRMLST",17,0) S (USRCNT,VALMCNT)=0 "RTN","USRMLST",18,0) S USRPICK=+$O(^ORD(101,"B","TIU ACTION SELECT LIST ELEMENT",0)) "RTN","USRMLST",19,0) K ^TMP("USRMMBR",$J),^TMP("USRMMBRIDX",$J),^TMP("USRM",$J) "RTN","USRMLST",20,0) D WHOIS^USRLM("^TMP(""USRM"",$J)",USRDA) "RTN","USRMLST",21,0) S USRNAME=0 "RTN","USRMLST",22,0) F S USRNAME=$O(^TMP("USRM",$J,USRNAME)) Q:USRNAME="" D "RTN","USRMLST",23,0) . N USRDA,USRDUZ,USRSIGNM,USREFF,USREXP,USRMEM,USRREC,USRCLNM "RTN","USRMLST",24,0) . S USRMEM=$G(^TMP("USRM",$J,USRNAME)) "RTN","USRMLST",25,0) . S USRDUZ=+USRMEM,USRSIGNM=$$SIGNAME^TIULS(+USRDUZ) "RTN","USRMLST",26,0) .;==== START USR*1.0*2 PKR ============================================= "RTN","USRMLST",27,0) .;If this user has been terminated change the name to reflect this. "RTN","USRMLST",28,0) . I $$ISTERM^USRLM(+USRDUZ) S USRSIGNM="(T) "_USRSIGNM "RTN","USRMLST",29,0) .;=== END USR*1.0*2 ==================================================== "RTN","USRMLST",30,0) . S USRDA=+$P(USRMEM,U,2),USRCLNM=$P(USRMEM,U,3) "RTN","USRMLST",31,0) . S USREFF=$$DATE^TIULS(+$P(USRMEM,U,4),"MM/DD/YY") "RTN","USRMLST",32,0) . S USREXP=$$DATE^TIULS(+$P(USRMEM,U,5),"MM/DD/YY") "RTN","USRMLST",33,0) . S USRCNT=+$G(USRCNT)+1 "RTN","USRMLST",34,0) . S USRREC=$$SETFLD^VALM1(USRCNT,"","NUMBER") "RTN","USRMLST",35,0) . S USRREC=$$SETFLD^VALM1(USRSIGNM,USRREC,"MEMBER") "RTN","USRMLST",36,0) . S USRREC=$$SETFLD^VALM1(USREFF,USRREC,"EFFECTIVE") "RTN","USRMLST",37,0) . S USRREC=$$SETFLD^VALM1(USREXP,USRREC,"EXPIRES") "RTN","USRMLST",38,0) . S USRREC=$$SETFLD^VALM1(USRCLNM,USRREC,"CLASS") "RTN","USRMLST",39,0) . S VALMCNT=+$G(VALMCNT)+1 "RTN","USRMLST",40,0) . S ^TMP("USRMMBR",$J,VALMCNT,0)=USRREC "RTN","USRMLST",41,0) . S ^TMP("USRMMBR",$J,"IDX",VALMCNT,USRCNT)="" "RTN","USRMLST",42,0) . S ^TMP("USRMMBRIDX",$J,USRCNT)=VALMCNT_U_USRDA W:VALMCNT#10'>0 "." "RTN","USRMLST",43,0) S ^TMP("USRMMBR",$J,0)=+$G(USRCNT)_U_$P(^TMP("USRM",$J,0),U,2) "RTN","USRMLST",44,0) S ^TMP("USRMMBR",$J,"#")=USRPICK_U_"1:"_USRCNT "RTN","USRMLST",45,0) I $D(VALMHDR)>9 D HDR "RTN","USRMLST",46,0) I +$G(USRCNT)'>0 D "RTN","USRMLST",47,0) . S ^TMP("USRMMBR",$J,1,0)="",VALMCNT=2 "RTN","USRMLST",48,0) . S ^TMP("USRMMBR",$J,2,0)="No "_$P(^TMP("USRM",$J,0),U,2)_"s found" "RTN","USRMLST",49,0) Q "RTN","USRMLST",50,0) HDR ; Initialize header for review screen "RTN","USRMLST",51,0) N BY,USRX,USRCNT,TITLE,USRCLASS "RTN","USRMLST",52,0) S USRX=$G(^TMP("USRMMBR",$J,0)),USRCLASS=$P(USRX,U,2) "RTN","USRMLST",53,0) S TITLE=USRCLASS_"s" "RTN","USRMLST",54,0) S USRCNT=$J(+USRX,4)_" Member"_$S(+USRX=1:"",1:"s") "RTN","USRMLST",55,0) S VALMHDR(1)=$$CENTER^TIULS(TITLE) "RTN","USRMLST",56,0) S VALMHDR(1)=$$SETSTR^VALM1(USRCNT,VALMHDR(1),(IOM-$L(USRCNT)),$L(USRCNT)) "RTN","USRMLST",57,0) Q "RTN","USRMLST",58,0) CLEAN ; "Joel...Clean up your mess!" "RTN","USRMLST",59,0) K ^TMP("USRMMBR",$J),^TMP("USRMMBRIDX",$J),^TMP("USRM",$J) "RTN","USRMLST",60,0) Q "RTN","USRP2INI") 0^4^B756763 "RTN","USRP2INI",1,0) USRP2INI ; SLC/PKR - Inits for patch USR*1.0*2 ;1/23/1998 "RTN","USRP2INI",2,0) ;;1.0;AUTHORIZATION/SUBSCRIPTION;**2**;Jun 20, 1997 "RTN","USRP2INI",3,0) ;====================================================================== "RTN","USRP2INI",4,0) CFTERM ;Check for terminated users and set expiration dates. "RTN","USRP2INI",5,0) N USRDUZ,XUIFN "RTN","USRP2INI",6,0) S USRDUZ="" "RTN","USRP2INI",7,0) F S USRDUZ=$O(^USR(8930.3,"B",USRDUZ)) Q:USRDUZ="" D "RTN","USRP2INI",8,0) . I $$ISTERM^USRLM(USRDUZ) D "RTN","USRP2INI",9,0) .. S XUIFN=USRDUZ "RTN","USRP2INI",10,0) .. D TERM^USRLM "RTN","USRP2INI",11,0) Q "RTN","USRP2INI",12,0) ; "RTN","USRP2INI",13,0) ;====================================================================== "RTN","USRP2INI",14,0) DDDUSCM ;Delete the data dictionary for file 8930.3 "RTN","USRP2INI",15,0) N DIU "RTN","USRP2INI",16,0) S DIU="^USR(8930.3," "RTN","USRP2INI",17,0) S DIU(0)="" "RTN","USRP2INI",18,0) D EN^DIU2 "RTN","USRP2INI",19,0) Q "RTN","USRP2INI",20,0) ; "RTN","USRP2INI",21,0) ;====================================================================== "RTN","USRP2INI",22,0) POST ;Patch USR*1.0*2 post-inits. "RTN","USRP2INI",23,0) D XREF "RTN","USRP2INI",24,0) D CFTERM "RTN","USRP2INI",25,0) Q "RTN","USRP2INI",26,0) ; "RTN","USRP2INI",27,0) ;====================================================================== "RTN","USRP2INI",28,0) PRE ;Patch USR*1.0*2 pre-inits. "RTN","USRP2INI",29,0) D DDDUSCM "RTN","USRP2INI",30,0) Q "RTN","USRP2INI",31,0) ; "RTN","USRP2INI",32,0) ;====================================================================== "RTN","USRP2INI",33,0) XREF ;Rebuild the cross-references for file 8930.3. "RTN","USRP2INI",34,0) N DIK "RTN","USRP2INI",35,0) ;First delete all the old cross-references. "RTN","USRP2INI",36,0) K ^USR(8930.3,"ACU") "RTN","USRP2INI",37,0) K ^USR(8930.3,"AUC") "RTN","USRP2INI",38,0) K ^USR(8930.3,"AUHX") "RTN","USRP2INI",39,0) K ^USR(8930.3,"B") "RTN","USRP2INI",40,0) ;Now rebuild them. "RTN","USRP2INI",41,0) S DIK="^USR(8930.3," "RTN","USRP2INI",42,0) D IXALL^DIK "RTN","USRP2INI",43,0) Q "RTN","USRULST") 0^3^B6920081 "RTN","USRULST",1,0) USRULST ; SLC/JER - List Class Membership by user ;1/20/98 "RTN","USRULST",2,0) ;;1.0;AUTHORIZATION/SUBSCRIPTION;**2**;Jun 20, 1997 "RTN","USRULST",3,0) MAIN ; Control Branching "RTN","USRULST",4,0) N DIC,X,Y,USRDUZ "RTN","USRULST",5,0) S DIC=200,DIC(0)="AEMQ",DIC("A")="Select USER: " "RTN","USRULST",6,0) D ^DIC Q:+Y'>0 "RTN","USRULST",7,0) S USRDUZ=+Y "RTN","USRULST",8,0) D EN^VALM("USR LIST MEMBERSHIP BY USER") "RTN","USRULST",9,0) Q "RTN","USRULST",10,0) MAKELIST ; Build review screen list "RTN","USRULST",11,0) W !,"Searching for the User Classes." "RTN","USRULST",12,0) D BUILD(USRDUZ) "RTN","USRULST",13,0) Q "RTN","USRULST",14,0) BUILD(USRDUZ) ; Build List "RTN","USRULST",15,0) N USRCNT,USRNAME,USRPICK "RTN","USRULST",16,0) S (USRCNT,VALMCNT)=0 "RTN","USRULST",17,0) S USRPICK=+$O(^ORD(101,"B","TIU ACTION SELECT LIST ELEMENT",0)) "RTN","USRULST",18,0) K ^TMP("USRUSER",$J),^TMP("USRUSERIDX",$J),^TMP("USRU",$J) "RTN","USRULST",19,0) D WHATIS^USRLM(USRDUZ,"^TMP(""USRU"",$J)") "RTN","USRULST",20,0) S USRNAME=0 "RTN","USRULST",21,0) F S USRNAME=$O(^TMP("USRU",$J,USRNAME)) Q:USRNAME="" D "RTN","USRULST",22,0) . N USRDA,USREFF,USREXP,USRMEM,USRREC,USRCLNM "RTN","USRULST",23,0) . S USRMEM=$G(^TMP("USRU",$J,USRNAME)) "RTN","USRULST",24,0) . S USRDA=+$P(USRMEM,U,2),USRSIGNM=$$SIGNAME^TIULS(+USRDUZ) "RTN","USRULST",25,0) . S USRCLNM=$P(USRMEM,U,3) "RTN","USRULST",26,0) . S USREFF=$$DATE^TIULS(+$P(USRMEM,U,4),"MM/DD/YY") "RTN","USRULST",27,0) . S USREXP=$$DATE^TIULS(+$P(USRMEM,U,5),"MM/DD/YY") "RTN","USRULST",28,0) . S USRCNT=+$G(USRCNT)+1 "RTN","USRULST",29,0) . S USRREC=$$SETFLD^VALM1(USRCNT,"","NUMBER") "RTN","USRULST",30,0) . S USRREC=$$SETFLD^VALM1(USRCLNM,USRREC,"CLASS") "RTN","USRULST",31,0) . S USRREC=$$SETFLD^VALM1(USREFF,USRREC,"EFFECTIVE") "RTN","USRULST",32,0) . S USRREC=$$SETFLD^VALM1(USREXP,USRREC,"EXPIRES") "RTN","USRULST",33,0) . S VALMCNT=+$G(VALMCNT)+1 "RTN","USRULST",34,0) . S ^TMP("USRUSER",$J,VALMCNT,0)=USRREC "RTN","USRULST",35,0) . S ^TMP("USRUSER",$J,"IDX",VALMCNT,USRCNT)="" "RTN","USRULST",36,0) . S ^TMP("USRUSERIDX",$J,USRCNT)=VALMCNT_U_USRDA W:VALMCNT#10'>0 "." "RTN","USRULST",37,0) S ^TMP("USRUSER",$J,0)=+$G(USRCNT)_U_$P(^TMP("USRU",$J,0),U,2) "RTN","USRULST",38,0) S ^TMP("USRUSER",$J,"#")=USRPICK_"^0:"_+$G(USRCNT) "RTN","USRULST",39,0) I $D(VALMHDR)>9 D HDR "RTN","USRULST",40,0) I +$G(USRCNT)'>0 D "RTN","USRULST",41,0) . S ^TMP("USRUSER",$J,1,0)="",VALMCNT=2 "RTN","USRULST",42,0) . S ^TMP("USRUSER",$J,2,0)="No Class Memberships found for "_$P(^TMP("USRU",$J,0),U,2) "RTN","USRULST",43,0) Q "RTN","USRULST",44,0) HDR ; Initialize header for review screen "RTN","USRULST",45,0) N BY,USRX,USRCNT,TITLE,USRNAME "RTN","USRULST",46,0) S USRX=$G(^TMP("USRUSER",$J,0)),USRNAME=$P(USRX,U,2) "RTN","USRULST",47,0) S TITLE=USRNAME "RTN","USRULST",48,0) ;==== START USR*1.0*2 PKR ============================================= "RTN","USRULST",49,0) ;If this user has been terminated change the title to reflect this. "RTN","USRULST",50,0) I $$ISTERM^USRLM(USRDUZ) S TITLE=TITLE_" (terminated)" "RTN","USRULST",51,0) ;=== END USR*1.0*2 ==================================================== "RTN","USRULST",52,0) S USRCNT=$J(+USRX,4)_" Class"_$S(+USRX=1:"",1:"es") "RTN","USRULST",53,0) S VALMHDR(1)=$$CENTER^TIULS(TITLE) "RTN","USRULST",54,0) S VALMHDR(1)=$$SETSTR^VALM1(USRCNT,VALMHDR(1),(IOM-$L(USRCNT)),$L(USRCNT)) "RTN","USRULST",55,0) Q "RTN","USRULST",56,0) CLEAN ; "Joel...Clean up your mess!" "RTN","USRULST",57,0) K ^TMP("USRUSER",$J),^TMP("USRUSERIDX",$J),^TMP("USRU",$J) "RTN","USRULST",58,0) Q "RTN","USRUMMBR") 0^5^B12918365 "RTN","USRUMMBR",1,0) USRUMMBR ; SLC/JER - User Class Membership by User actions ;1/21/98 "RTN","USRUMMBR",2,0) ;;1.0;AUTHORIZATION/SUBSCRIPTION;**2**;Jun 20, 1997 "RTN","USRUMMBR",3,0) EDIT ; Edit user's class membership "RTN","USRUMMBR",4,0) N USRDA,USRDATA,USREXPND,USRI,USRSTAT,DIROUT,USRCHNG,USRLST "RTN","USRUMMBR",5,0) I '$D(VALMY) D EN^VALM2(XQORNOD(0)) "RTN","USRUMMBR",6,0) S (USRCHNG,USRI)=0 "RTN","USRUMMBR",7,0) F S USRI=$O(VALMY(USRI)) Q:+USRI'>0 D Q:$D(DIROUT) "RTN","USRUMMBR",8,0) . S USRDATA=$G(^TMP("USRUSERIDX",$J,USRI)) "RTN","USRUMMBR",9,0) . W !!,"Editing #",+USRDATA,! "RTN","USRUMMBR",10,0) . S USRDA=+$P(USRDATA,U,2) D EDIT1 "RTN","USRUMMBR",11,0) . I +$G(USRCHNG) S USRLST=$S($L($G(USRLST)):$G(USRLST)_", ",1:"")_USRI "RTN","USRUMMBR",12,0) . I $D(USRDATA) D UPDATE^USRUM(USRDATA) "RTN","USRUMMBR",13,0) W !,"Refreshing the list." "RTN","USRUMMBR",14,0) S VALMSG="** "_$S($L($G(USRLST)):"Item"_$S($L($G(USRLST),",")>1:"s ",1:" ")_$G(USRLST),1:"Nothing")_" Edited **" "RTN","USRUMMBR",15,0) K VALMY S VALMBCK="R" "RTN","USRUMMBR",16,0) Q "RTN","USRUMMBR",17,0) EDIT1 ; Single record edit "RTN","USRUMMBR",18,0) ; Receives USRDA "RTN","USRUMMBR",19,0) N DA,DIE,DR "RTN","USRUMMBR",20,0) I '+$G(USRDA) W !,"No Member selected." H 2 S USRCHNG=0 Q "RTN","USRUMMBR",21,0) S DIE="^USR(8930.3,",DA=USRDA,DR="[USR MEMBERSHIP EDIT]" "RTN","USRUMMBR",22,0) D FULL^VALM1,^DIE S USRCHNG=1 "RTN","USRUMMBR",23,0) Q "RTN","USRUMMBR",24,0) ADD ; Add a membership to selected classes for current user "RTN","USRUMMBR",25,0) N DIC,DLAYGO,X,Y,USRCLASS,USRUSER,USRCNT,USRQUIT D FULL^VALM1 "RTN","USRUMMBR",26,0) S USRCNT=0 "RTN","USRUMMBR",27,0) F D Q:+$G(USRQUIT) "RTN","USRUMMBR",28,0) . W ! "RTN","USRUMMBR",29,0) . S DIC=8930,DIC(0)="AEMQ" "RTN","USRUMMBR",30,0) . S DIC("A")="Select "_$S(USRCNT'>0:"",1:"Another ")_"USER CLASS: " "RTN","USRUMMBR",31,0) . D ^DIC I +Y'>0 S USRQUIT=1 Q "RTN","USRUMMBR",32,0) . S USRCLASS=+Y "RTN","USRUMMBR",33,0) . S DIC=200,DIC(0)="NMX",X="`"_USRDUZ "RTN","USRUMMBR",34,0) . S DIC("S")="I ('$$ISTERM^USRLM(+Y)&'$$ISA^USRLM(USRDUZ,USRCLASS))" ;USR*1.0*2 PKR "RTN","USRUMMBR",35,0) . D ^DIC I +Y'>0 S USRQUIT=1 Q "RTN","USRUMMBR",36,0) . S (DIC,DLAYGO)=8930.3,DIC(0)="LM",X=""""_$P(Y,U,2)_"""" "RTN","USRUMMBR",37,0) . D ^DIC I +Y'>0 S USRQUIT=1 Q "RTN","USRUMMBR",38,0) . S USRCREAT=+$P(Y,U,3),USRCNT=USRCNT+1 "RTN","USRUMMBR",39,0) . S DA=+Y,DIE=DIC,DIE("NO^")="BACK",DR="[USR MEMBERSHIP EDIT]" D ^DIE "RTN","USRUMMBR",40,0) . I $D(Y) D "RTN","USRUMMBR",41,0) . . S DIK=DIC D ^DIK K DIK "RTN","USRUMMBR",42,0) . . S:USRCNT'>1 VALMSG="** Nothing Added **" "RTN","USRUMMBR",43,0) . . S VALMBCK="R",USRQUIT=1 "RTN","USRUMMBR",44,0) . S USRDUZ=+$G(^TMP("USRU",$J,0)) "RTN","USRUMMBR",45,0) . I 'USRCREAT D Q "RTN","USRUMMBR",46,0) . . S:+USRCNT'>1 VALMSG="** Nothing Added **" "RTN","USRUMMBR",47,0) . . S VAMLBCK="R",USRQUIT=1 "RTN","USRUMMBR",48,0) W !,"Rebuilding membership list." "RTN","USRUMMBR",49,0) D BUILD^USRULST(USRDUZ) "RTN","USRUMMBR",50,0) I USRCNT'>1,+$G(DA) D "RTN","USRUMMBR",51,0) . S USRUSER=$$SIGNAME^TIULS(+$G(USRDUZ)) "RTN","USRUMMBR",52,0) . S USRCLASS=$$CLNAME^USRLM(+$P($G(^USR(8930.3,+DA,0)),U,2)) "RTN","USRUMMBR",53,0) . S VALMSG="** "_USRUSER_" Added to "_USRCLASS_" **" "RTN","USRUMMBR",54,0) S VALMCNT=+$G(@VALMAR@(0)) "RTN","USRUMMBR",55,0) S VALMBCK="R" "RTN","USRUMMBR",56,0) Q "RTN","USRUMMBR",57,0) DELETE ; Delete a member to the class "RTN","USRUMMBR",58,0) N DIE,X,Y,USRCLASS D FULL^VALM1 "RTN","USRUMMBR",59,0) N USRCLASS,USRDA,USRCHNG,USRDATA,USRI,USRLST,DIROUT "RTN","USRUMMBR",60,0) I '$D(VALMY) D EN^VALM2(XQORNOD(0)) "RTN","USRUMMBR",61,0) S USRI=0 "RTN","USRUMMBR",62,0) F S USRI=$O(VALMY(USRI)) Q:+USRI'>0 D Q:$D(DIROUT) "RTN","USRUMMBR",63,0) . S USRDATA=$G(^TMP("USRUSERIDX",$J,USRI)) "RTN","USRUMMBR",64,0) . S USRDA=+$P(USRDATA,U,2) D DELETE1(USRDA) "RTN","USRUMMBR",65,0) . S:+USRCHNG USRLST=$S(+$G(USRLST):USRLST_", ",1:"")_+USRDATA "RTN","USRUMMBR",66,0) . I $D(USRDATA) D UPDATE^USRUM(USRDATA) "RTN","USRUMMBR",67,0) W !,"Rebuilding the list." "RTN","USRUMMBR",68,0) S USRCLASS=+$G(^TMP("USRU",$J,0)) "RTN","USRUMMBR",69,0) D BUILD^USRULST(USRDUZ) "RTN","USRUMMBR",70,0) S VALMCNT=+$G(@VALMAR@(0)) "RTN","USRUMMBR",71,0) K VALMY S VALMBCK="R" "RTN","USRUMMBR",72,0) S VALMSG="** "_$S($L($G(USRLST)):"Item"_$S($L($G(USRLST),",")>1:"s ",1:" ")_$G(USRLST),1:"Nothing")_" removed **" "RTN","USRUMMBR",73,0) Q "RTN","USRUMMBR",74,0) DELETE1(DA) ; Delete one member from a class "RTN","USRUMMBR",75,0) N DIE,DR,USER,CLASS,USRMEM S USRMEM=$G(^USR(8930.3,+DA,0)) "RTN","USRUMMBR",76,0) I USRMEM']"" W !,"Record #",DA," NOT FOUND!" Q "RTN","USRUMMBR",77,0) S USER=$P($G(^VA(200,+USRMEM,0)),U) "RTN","USRUMMBR",78,0) S CLASS=$P($G(^USR(8930,+$P(USRMEM,U,2),0)),U) "RTN","USRUMMBR",79,0) W !,"Removing ",USER," from ",CLASS "RTN","USRUMMBR",80,0) I '$$READ^TIUU("Y","Are you SURE","NO") S USRCHNG=0 W !,USER," NOT Removed from ",CLASS,"." H 2 Q "RTN","USRUMMBR",81,0) S USRCHNG=1 "RTN","USRUMMBR",82,0) S DIK="^USR(8930.3," D ^DIK W "." "RTN","USRUMMBR",83,0) Q "VER") 8.0^21.0 "^DD",8930.3,8930.3,0) FIELD^^.04^4 "^DD",8930.3,8930.3,0,"DDA") N "^DD",8930.3,8930.3,0,"DT") 2950515 "^DD",8930.3,8930.3,0,"IX","ACU",8930.3,.01) "^DD",8930.3,8930.3,0,"IX","ACU1",8930.3,.02) "^DD",8930.3,8930.3,0,"IX","AUC",8930.3,.01) "^DD",8930.3,8930.3,0,"IX","AUC1",8930.3,.02) "^DD",8930.3,8930.3,0,"IX","AUHX",8930.3,.01) "^DD",8930.3,8930.3,0,"IX","AUHX1",8930.3,.02) "^DD",8930.3,8930.3,0,"IX","AUHX2",8930.3,.03) "^DD",8930.3,8930.3,0,"IX","B",8930.3,.01) "^DD",8930.3,8930.3,0,"NM","USR CLASS MEMBERSHIP") "^DD",8930.3,8930.3,0,"VRPK") USR "^DD",8930.3,8930.3,.01,0) MEMBER^RP200'^VA(200,^0;1^Q "^DD",8930.3,8930.3,.01,.1) NEW PERSON NAME "^DD",8930.3,8930.3,.01,1,0) ^.1 "^DD",8930.3,8930.3,.01,1,1,0) 8930.3^B "^DD",8930.3,8930.3,.01,1,1,1) S ^USR(8930.3,"B",$E(X,1,30),DA)="" "^DD",8930.3,8930.3,.01,1,1,2) K ^USR(8930.3,"B",$E(X,1,30),DA) "^DD",8930.3,8930.3,.01,1,2,0) 8930.3^AUC^MUMPS "^DD",8930.3,8930.3,.01,1,2,1) I +$P(^USR(8930.3,+DA,0),U,2),$$CURRENT^USRLM($P(^USR(8930.3,+DA,0),U,1)) S ^USR(8930.3,"AUC",+X,+$P(^USR(8930.3,+DA,0),U,2),+DA)="" "^DD",8930.3,8930.3,.01,1,2,2) I +$P(^USR(8930.3,+DA,0),U,2) K ^USR(8930.3,"AUC",+X,+$P(^USR(8930.3,+DA,0),U,2),+DA) "^DD",8930.3,8930.3,.01,1,2,"%D",0) ^^2^2^2980122^^^^ "^DD",8930.3,8930.3,.01,1,2,"%D",1,0) This Multi-field, MUMPS type cross-reference on Person and User Class will "^DD",8930.3,8930.3,.01,1,2,"%D",2,0) help to identify the classes to which a given person belongs. "^DD",8930.3,8930.3,.01,1,2,"DT") 2980122 "^DD",8930.3,8930.3,.01,1,3,0) 8930.3^ACU^MUMPS "^DD",8930.3,8930.3,.01,1,3,1) I +$P(^USR(8930.3,+DA,0),U,2),$$CURRENT^USRLM($P(^USR(8930.3,+DA,0),U,1)) S ^USR(8930.3,"ACU",+$P(^USR(8930.3,+DA,0),U,2),+X,+DA)="" "^DD",8930.3,8930.3,.01,1,3,2) I +$P(^USR(8930.3,+DA,0),U,2) K ^USR(8930.3,"ACU",+$P(^USR(8930.3,+DA,0),U,2),+X,+DA) "^DD",8930.3,8930.3,.01,1,3,"%D",0) ^^2^2^2980122^^^^ "^DD",8930.3,8930.3,.01,1,3,"%D",1,0) This multi-field, MUMPS-type cross-reference by User Class and person will "^DD",8930.3,8930.3,.01,1,3,"%D",2,0) help to identify the members of a particular class. "^DD",8930.3,8930.3,.01,1,3,"DT") 2980122 "^DD",8930.3,8930.3,.01,1,4,0) 8930.3^AUHX^MUMPS "^DD",8930.3,8930.3,.01,1,4,1) I +$P($G(^USR(8930.3,+DA,0)),U,2) S ^USR(8930.3,"AUHX",+X,+$P(^USR(8930.3,+DA,0),U,2),+$P(^USR(8930.3,+DA,0),U,3),+DA)="" "^DD",8930.3,8930.3,.01,1,4,2) I +$P($G(^USR(8930.3,+DA,0)),U,2) K ^USR(8930.3,"AUHX",+X,+$P(^USR(8930.3,+DA,0),U,2),+$P(^USR(8930.3,+DA,0),U,3),+DA) "^DD",8930.3,8930.3,.01,1,4,"%D",0) ^^3^3^2950523^ "^DD",8930.3,8930.3,.01,1,4,"%D",1,0) This Multi-field, MUMPS type cross-reference on Person, User Class, and "^DD",8930.3,8930.3,.01,1,4,"%D",2,0) EFFECTIVE DATE will help to list the history of a given user's membership "^DD",8930.3,8930.3,.01,1,4,"%D",3,0) in various classes. "^DD",8930.3,8930.3,.01,1,4,"DT") 2950523 "^DD",8930.3,8930.3,.01,3) Select a User Class member. "^DD",8930.3,8930.3,.01,21,0) ^^2^2^2950515^ "^DD",8930.3,8930.3,.01,21,1,0) This is the name of the person to whom membership in a given User Class is "^DD",8930.3,8930.3,.01,21,2,0) being ascribed. "^DD",8930.3,8930.3,.01,"DT") 2980122 "^DD",8930.3,8930.3,.02,0) USER CLASS^P8930'^USR(8930,^0;2^Q "^DD",8930.3,8930.3,.02,1,0) ^.1 "^DD",8930.3,8930.3,.02,1,1,0) 8930.3^AUC1^MUMPS "^DD",8930.3,8930.3,.02,1,1,1) I +$G(^USR(8930.3,+DA,0)),$$CURRENT^USRLM($P(^USR(8930.3,+DA,0),U,1)) S ^USR(8930.3,"AUC",+$G(^USR(8930.3,+DA,0)),+X,+DA)="" "^DD",8930.3,8930.3,.02,1,1,2) I +$G(^USR(8930.3,+DA,0)) K ^USR(8930.3,"AUC",+$G(^USR(8930.3,+DA,0)),+X,+DA) "^DD",8930.3,8930.3,.02,1,1,"%D",0) ^^2^2^2980122^^^^ "^DD",8930.3,8930.3,.02,1,1,"%D",1,0) This Multi-field, MUMPS type cross-reference on Person and User Class help "^DD",8930.3,8930.3,.02,1,1,"%D",2,0) to identify the classes to which a given person belongs. "^DD",8930.3,8930.3,.02,1,1,"DT") 2980122 "^DD",8930.3,8930.3,.02,1,2,0) 8930.3^ACU1^MUMPS "^DD",8930.3,8930.3,.02,1,2,1) I +$G(^USR(8930.3,+DA,0)),$$CURRENT^USRLM($P(^USR(8930.3,+DA,0),U,1)) S ^USR(8930.3,"ACU",+X,+$G(^USR(8930.3,+DA,0)),+DA)="" "^DD",8930.3,8930.3,.02,1,2,2) I +$G(^USR(8930.3,+DA,0)) K ^USR(8930.3,"ACU",+X,+$G(^USR(8930.3,+DA,0)),+DA) "^DD",8930.3,8930.3,.02,1,2,"%D",0) ^^2^2^2980122^^^^ "^DD",8930.3,8930.3,.02,1,2,"%D",1,0) This multi-field, MUMPS-type cross-reference by User Class and person will help "^DD",8930.3,8930.3,.02,1,2,"%D",2,0) to identify the members of a particular User Class. "^DD",8930.3,8930.3,.02,1,2,"DT") 2980122 "^DD",8930.3,8930.3,.02,1,3,0) 8930.3^AUHX1^MUMPS "^DD",8930.3,8930.3,.02,1,3,1) I +$P($G(^USR(8930.3,+DA,0)),U) S ^USR(8930.3,"AUHX",+$P($G(^USR(8930.3,+DA,0)),U),+X,+$P(^USR(8930.3,+DA,0),U,3),+DA)="" "^DD",8930.3,8930.3,.02,1,3,2) I +$P($G(^USR(8930.3,+DA,0)),U) K ^USR(8930.3,"AUHX",+$P($G(^USR(8930.3,+DA,0)),U),+X,+$P(^USR(8930.3,+DA,0),U,3),+DA) "^DD",8930.3,8930.3,.02,1,3,"%D",0) ^^3^3^2950523^ "^DD",8930.3,8930.3,.02,1,3,"%D",1,0) This Multi-field, MUMPS type cross-reference on Person, User Class, and "^DD",8930.3,8930.3,.02,1,3,"%D",2,0) EFFECTIVE DATE will help to list the history of a given user's membership "^DD",8930.3,8930.3,.02,1,3,"%D",3,0) in various classes. "^DD",8930.3,8930.3,.02,1,3,"DT") 2950523 "^DD",8930.3,8930.3,.02,3) Enter the User Class to which the User is being given membership. "^DD",8930.3,8930.3,.02,21,0) ^^2^2^2950515^ "^DD",8930.3,8930.3,.02,21,1,0) This is the User Class to which the User in question is being grated "^DD",8930.3,8930.3,.02,21,2,0) membership. "^DD",8930.3,8930.3,.02,"DT") 2980122 "^DD",8930.3,8930.3,.03,0) EFFECTIVE DATE^D^^0;3^S %DT="EX" D ^%DT S X=Y K:Y<1 X "^DD",8930.3,8930.3,.03,1,0) ^.1^^-1 "^DD",8930.3,8930.3,.03,1,3,0) 8930.3^AUHX2^MUMPS "^DD",8930.3,8930.3,.03,1,3,1) I +$P($G(^USR(8930.3,+DA,0)),U),+$P($G(^(0)),U,2) S ^USR(8930.3,"AUHX",+$P($G(^USR(8930.3,+DA,0)),U),+$P($G(^USR(8930.3,+DA,0)),U,2),+X,+DA)="" "^DD",8930.3,8930.3,.03,1,3,2) I +$P($G(^USR(8930.3,+DA,0)),U),+$P($G(^(0)),U,2) K ^USR(8930.3,"AUHX",+$P($G(^USR(8930.3,+DA,0)),U),+$P($G(^USR(8930.3,+DA,0)),U,2),+X,+DA) "^DD",8930.3,8930.3,.03,1,3,"%D",0) ^^3^3^2950523^ "^DD",8930.3,8930.3,.03,1,3,"%D",1,0) This Multi-field, MUMPS type cross-reference on Person, User Class, and "^DD",8930.3,8930.3,.03,1,3,"%D",2,0) EFFECTIVE DATE will help to list the history of a given user's membership "^DD",8930.3,8930.3,.03,1,3,"%D",3,0) in various classes. "^DD",8930.3,8930.3,.03,1,3,"DT") 2950523 "^DD",8930.3,8930.3,.03,3) Enter the Date on which User Class membership is effective. "^DD",8930.3,8930.3,.03,21,0) ^^7^7^2950515^ "^DD",8930.3,8930.3,.03,21,1,0) This is the date on which the user became, or will become a member of the "^DD",8930.3,8930.3,.03,21,2,0) User Class in question. This can be used to determine current, past, or "^DD",8930.3,8930.3,.03,21,3,0) future membership status within a given User Class, as well as for "^DD",8930.3,8930.3,.03,21,4,0) scheduling transitions between Classes (e.g., members of the class "PGY1 "^DD",8930.3,8930.3,.03,21,5,0) Residents" will finish their rotation on June 1st, and you'd like to "^DD",8930.3,8930.3,.03,21,6,0) schedule their trasition into the class PGY2 Residents as of that date). "^DD",8930.3,8930.3,.03,21,7,0) "^DD",8930.3,8930.3,.03,"DT") 2980122 "^DD",8930.3,8930.3,.04,0) EXPIRATION DATE^D^^0;4^S %DT="EX" D ^%DT S X=Y K:Y<1 X "^DD",8930.3,8930.3,.04,1,0) ^.1^^0 "^DD",8930.3,8930.3,.04,3) Enter the date on which the User's membership in the Class will expire. "^DD",8930.3,8930.3,.04,21,0) ^^7^7^2950515^ "^DD",8930.3,8930.3,.04,21,1,0) This is the optional date on which the User's membership in a given class "^DD",8930.3,8930.3,.04,21,2,0) will expire (i.e., be automatically discontinued). This can be used to "^DD",8930.3,8930.3,.04,21,3,0) determine historical or future membership within a particular class, and "^DD",8930.3,8930.3,.04,21,4,0) to schedule transitions between classes (e.g., the current members of the "^DD",8930.3,8930.3,.04,21,5,0) PGY1 Residents Class will become PGY2 Residents on June 1st, at which time "^DD",8930.3,8930.3,.04,21,6,0) their membership in the class PGY1 Residents will expire, and their "^DD",8930.3,8930.3,.04,21,7,0) membership in the class PGY2 Residents will become effective). "^DD",8930.3,8930.3,.04,"DT") 2980122 "^DIC",8930.3,8930.3,0) USR CLASS MEMBERSHIP^8930.3 "^DIC",8930.3,8930.3,0,"GL") ^USR(8930.3, "^DIC",8930.3,8930.3,"%D",0) ^^11^11^2980122^^^ "^DIC",8930.3,8930.3,"%D",1,0) This file links a person from the New Person file to a class in the User "^DIC",8930.3,8930.3,"%D",2,0) Class file. Since user class membership includes members of all "^DIC",8930.3,8930.3,"%D",3,0) subclasses, users should be made members of the most discrete class in a "^DIC",8930.3,8930.3,"%D",4,0) hierarchy of classes. For example, if Jones is a dentist, Jones should be "^DIC",8930.3,8930.3,"%D",5,0) entered into the Dentist class. Since Dentist is a subclass of the "^DIC",8930.3,8930.3,"%D",6,0) Provider class, Jones is then automatically a Provider. "^DIC",8930.3,8930.3,"%D",7,0) "^DIC",8930.3,8930.3,"%D",8,0) Persons wearing several different hats can have more than one entry in the "^DIC",8930.3,8930.3,"%D",9,0) file. For example, Smith might be a dietician also working toward a "^DIC",8930.3,8930.3,"%D",10,0) nursing degree. Smith could be entered twice, once as a Dietician and "^DIC",8930.3,8930.3,"%D",11,0) once as a Student Nurse. "^DIC",8930.3,"B","USR CLASS MEMBERSHIP",8930.3) **END** **END**