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

BSDX18.m

Go to the documentation of this file.
  1. BSDX18 ; IHS/OIT/HMW/MSC/SAT - WINDOWS SCHEDULING RPCS ;
  1. ;;3.0;IHS WINDOWS SCHEDULING;;DEC 09, 2010
  1. ;
  1. ;
  1. DELRUD(BSDXY,BSDXIEN) ;EP
  1. ;Entry point for debugging
  1. ;
  1. ;D DEBUG^%Serenji("DELRU^BSDX18(.BSDXY,BSDXIEN)")
  1. Q
  1. ;
  1. DELRU(BSDXY,BSDXIEN) ;EP
  1. ;Deletes entry BSDXIEN from RESOURCE USERS file
  1. ;Return recordset containing error message or "" if no error
  1. ;Called by BSDX DELETE RESOURCEUSER
  1. ;Test Line:
  1. ;D DELRU^BSDX18(.RES,99)
  1. ;
  1. N BSDXI,DIK,DA
  1. S BSDXI=0
  1. S BSDXY="^BSDXTMP("_$J_")"
  1. S ^BSDXTMP($J,0)="I00020RESOURCEUSERID^I00020ERRORID"_$C(30)
  1. I '+BSDXIEN D ERR(BSDXI,BSDXIEN,70) Q
  1. I '$D(^BSDXRSU(BSDXIEN,0)) D ERR(BSDXI,BSDXIEN,70) Q
  1. ;Delete entry BSDXIEN
  1. S DIK="^BSDXRSU("
  1. S DA=BSDXIEN
  1. D ^DIK
  1. ;
  1. S BSDXI=BSDXI+1
  1. S ^BSDXTMP($J,BSDXI)=BSDXIEN_"^"_"-1"_$C(30)_$C(31)
  1. Q
  1. ;
  1. ADDRUD(BSDXY,BSDXVAL) ;EP
  1. ;Entry point for debugging
  1. ;
  1. ;D DEBUG^%Serenji("ADDRU^BSDX18(.BSDXY,BSDXVAL)")
  1. Q
  1. ;
  1. ADDRU(BSDXY,BSDXVAL) ;EP
  1. ;
  1. ;Called by BSDX ADD/EDIT RESOURCEUSER
  1. ;Add/Edit BSDX RESOURCEUSER entry
  1. ;BSDXVAL is sResourceUserID|sOverbook|sModifySchedule|ResourceID|UserID|sModifyAppointments|MASTEROVERBOOK
  1. ;If IEN=0 Then this is a new ResourceUser entry
  1. ; MASTEROVERBOOK = determines if this user has Master Overbook Authority 0="NO"; 1="YES"
  1. ;Test Line:
  1. ;D ADDRU^BSDX18(.RES,"sResourceUserID|sOverbook|sModifySchedule|sResourceID|sUserID|sModifyAppointments")
  1. ;
  1. N BSDXIENS,BSDXFDA,BSDXIEN,BSDXMSG,BSDX,BSDXOVB,BSDXMOD,BSDXI,BSDXUID,BSDXRID
  1. N BSDXRES,BSDXRSU,BSDXF,BSDXAPPT
  1. S BSDXY="^BSDXTMP("_$J_")"
  1. S BSDXI=0
  1. S ^BSDXTMP($J,BSDXI)="I00020RESOURCEID^I00020ERRORID"_$C(30)
  1. S BSDXIEN=$P(BSDXVAL,"|")
  1. I +BSDXIEN D
  1. . S BSDX="EDIT"
  1. . S BSDXIENS=BSDXIEN_","
  1. E D
  1. . S BSDX="ADD"
  1. . S BSDXIENS="+1,"
  1. ;
  1. I '+$P(BSDXVAL,"|",4) D ERR(BSDXI,BSDXIEN,70) Q
  1. I '+$P(BSDXVAL,"|",5) D ERR(BSDXI,BSDXIEN,70) Q
  1. ;
  1. S BSDXRID=$P(BSDXVAL,"|",4) ;ResourceID
  1. S BSDXUID=$P(BSDXVAL,"|",5) ;UserID
  1. S BSDXRSU=0 ;ResourceUserID
  1. S BSDXF=0 ;flag
  1. ;If this is an add, check if the user is already assigned to the resource.
  1. ;If so, then change to an edit
  1. I BSDX="ADD" F S BSDXRSU=$O(^BSDXRSU("AC",BSDXUID,BSDXRSU)) Q:'+BSDXRSU D Q:BSDXF
  1. . S BSDXRES=$G(^BSDXRSU(BSDXRSU,0))
  1. . S BSDXRES=$P(BSDXRES,U) ;ResourceID
  1. . S:BSDXRES=BSDXRID BSDXF=1
  1. I BSDXF S BSDX="EDIT",BSDXIEN=BSDXRSU,BSDXIENS=BSDXIEN_","
  1. ;
  1. S BSDXOVB=$P(BSDXVAL,"|",2)
  1. S BSDXOVB=$S(BSDXOVB="YES":1,1:0)
  1. S BSDXMOD=$P(BSDXVAL,"|",3)
  1. S BSDXMOD=$S(BSDXMOD="YES":1,1:0)
  1. S BSDXAPPT=$P(BSDXVAL,"|",6)
  1. S BSDXAPPT=$S(BSDXAPPT="YES":1,1:0)
  1. S BSDXMOB=$P(BSDXVAL,"|",7)
  1. S BSDXMOB=$S(BSDXMOB="YES":1,1:0) ;Master Overbook Authority
  1. ;
  1. S BSDXFDA(9002018.15,BSDXIENS,.01)=$P(BSDXVAL,"|",4) ;RESOURCE ID
  1. S BSDXFDA(9002018.15,BSDXIENS,.02)=$P(BSDXVAL,"|",5) ;USERID
  1. S BSDXFDA(9002018.15,BSDXIENS,.03)=BSDXOVB ;OVERBOOK
  1. S BSDXFDA(9002018.15,BSDXIENS,.04)=BSDXMOD ;MODIFY SCHEDULE
  1. S BSDXFDA(9002018.15,BSDXIENS,.05)=BSDXAPPT ;ADD, EDIT, DELETE APPOINMENTS
  1. S BSDXFDA(9002018.15,BSDXIENS,.06)=BSDXMOB ;Master Overbook Authority
  1. K BSDXMSG
  1. I BSDX="ADD" D
  1. . K BSDXIEN
  1. . D UPDATE^DIE("","BSDXFDA","BSDXIEN","BSDXMSG")
  1. . S BSDXIEN=+$G(BSDXIEN(1))
  1. E D
  1. . D FILE^DIE("","BSDXFDA","BSDXMSG")
  1. ;S ^BSDXTMP($J,1)=$G(BSDXIEN)_"^-1"_$C(31)
  1. S ^BSDXTMP($J,1)=$C(31)
  1. Q
  1. ;
  1. ERR(BSDXI,BSDXID,BSDXERR) ;Error processing
  1. S BSDXERR=BSDXERR+134234112 ;vbObjectError
  1. S BSDXI=BSDXI+1
  1. S ^BSDXTMP($J,BSDXI)=BSDXID_"^"_BSDXERR_$C(30)
  1. S BSDXI=BSDXI+1
  1. S ^BSDXTMP($J,BSDXI)=$C(31)
  1. Q
  1. ;
  1. MADERR(BSDXMSG) ;
  1. W !,BSDXMSG
  1. Q
  1. ;
  1. MADSCR(BSDXDUZ,BSDXZMGR,BSDXZMENU,BSDXZPROG) ;EP - File 200 screening code for MADDRU
  1. ;Called from DIR to screen for scheduling users
  1. I $D(^VA(200,BSDXDUZ,51,"B",BSDXZMENU)) Q 1
  1. I $D(^VA(200,BSDXDUZ,51,"B",BSDXZMGR)) Q 1
  1. I $D(^VA(200,BSDXDUZ,51,"B",BSDXZPROG)) Q 1
  1. Q 0
  1. ;
  1. MADDRU ;EP -Command line utility to bulk-add users and set access rights IHS/HMW 20060420 **1**
  1. ;Main entry point
  1. ;
  1. N BSDX,BSDXZMENU,BSDXZMGR,BSDXZPROG,DIR
  1. ;
  1. ;INIT
  1. K ^TMP($J)
  1. S BSDXZMENU=$O(^DIC(19.1,"B","BSDXZMENU",0)) I '+BSDXZMENU D MADERR("Error: BSDXZMENU KEY NOT FOUND.") Q
  1. S BSDXZMGR=$O(^DIC(19.1,"B","BSDXZMGR",0)) I '+BSDXZMGR D MADERR("Error: BSDXZMGR KEY NOT FOUND.") Q
  1. S BSDXZPROG=$O(^DIC(19.1,"B","XUPROGMODE",0)) I '+BSDXZPROG D MADERR("Error: XUPROGMODE KEY NOT FOUND.") Q
  1. ;
  1. D MADUSR
  1. I '$D(^TMP($J,"BSDX MADDRU","USER")) D MADERR("Cancelled: No Users selected.") Q
  1. D MADRES
  1. I '$D(^TMP($J,"BSDX MADDRU","RESOURCE")) D MADERR("Cancelled: No Resources selected.") Q
  1. I '$$MADACC(.BSDX) ;D MADERR("Selected users will have no access to the selected clinics.")
  1. I '$$MADCONF(.BSDX) W ! D MADERR("--Cancelled") Q
  1. D MADASS(.BSDX)
  1. W ! D MADERR("--Done")
  1. ;
  1. Q
  1. ;
  1. MADUSR ;Prompt for users from file 200 who have BSDXUSER key
  1. ;Store results in ^TMP($J,"BSDX MADDRU","USER",DUZ) array
  1. N DIRUT,Y,DIR
  1. S DIR(0)="PO^200:EMZ",DIR("S")="I $$MADSCR^BSDX18(Y,BSDXZMGR,BSDXZMENU,BSDXZPROG)"
  1. S Y=0
  1. K ^TMP($J,"BSDX MADDRU","USER")
  1. W !!,"-------Select Users-------"
  1. F D ^DIR Q:$G(DIRUT) Q:'Y D
  1. . S ^TMP($J,"BSDX MADDRU","USER",+Y)=""
  1. Q
  1. ;
  1. MADRES ;Prompt for Resources
  1. ;Store results in ^TMP($J,"BSDX MADDRU","RESOURCE",ResourceID) array
  1. N DIRUT,Y,DIR
  1. S DIR(0)="PO^9002018.1:EMZ"
  1. S Y=0
  1. K ^TMP($J,"BSDX MADDRU","RESOURCE")
  1. W !!,"-------Select Resources-------"
  1. F D ^DIR Q:$G(DIRUT) Q:'Y D
  1. . S ^TMP($J,"BSDX MADDRU","RESOURCE",+Y)=""
  1. Q
  1. ;
  1. MADACC(BSDX) ;Prompt for access level.
  1. ;Start with Overbook and go to read-only access.
  1. ;Store results in variables for:
  1. ;sOverbook, sModifySchedule, sModifyAppointments
  1. ;
  1. N DIRUT,Y,DIR,J
  1. W !!,"-------Select Access Level-------"
  1. S Y=0
  1. F J="MODIFY","OVERBOOK","WRITE","READ" S BSDX(J)=1
  1. S DIR(0)="Y"
  1. ;
  1. S DIR("A")="Allow users to Modify Clinic Availability"
  1. D ^DIR
  1. Q:$G(DIRUT) 0
  1. Q:Y 1
  1. S BSDX("MODIFY")=0
  1. ;
  1. S DIR("A")="Allow users to Overbook the selected clinics"
  1. D ^DIR
  1. Q:$G(DIRUT) 0
  1. Q:Y 1
  1. S BSDX("OVERBOOK")=0
  1. ;
  1. S DIR("A")="Allow users to Add, Edit and Delete appointments in the selected resources"
  1. D ^DIR
  1. Q:$G(DIRUT)
  1. Q:Y 1
  1. S BSDX("WRITE")=0
  1. ;
  1. S DIR("A")="Allow users to View appointments in the selected resources"
  1. D ^DIR
  1. Q:$G(DIRUT)
  1. Q:Y 1
  1. S BSDX("READ")=0
  1. ;
  1. Q 0
  1. ;
  1. MADCONF(BSDX) ;Confirm selections
  1. N DIR,DIRUT,Y
  1. S DIR(0)="Y"
  1. W !!,"-------Confirm Selections-------"
  1. I BSDX("READ")=0 D
  1. . S DIR("A")="Are you sure you want to remove all access to these clinics for these users"
  1. E D
  1. . W !,"Selected users will be assigned the following access:"
  1. . W !,"Modify clinic availability: ",?50,BSDX("MODIFY")
  1. . W !,"Overbook Appointments: ",?50,BSDX("OVERBOOK")
  1. . W !,"Add, Edit and Delete Appointments: ",?50,BSDX("WRITE")
  1. . W !,"View Clinic Appointments: ",?50,BSDX("READ")
  1. . S DIR("A")="Are you sure you want to assign these access rights to the selected users"
  1. D ^DIR
  1. Q:$G(DIRUT) 0
  1. Q:$G(Y) 1
  1. Q 0
  1. ;
  1. MADASS(BSDX) ;
  1. ;Assign access level to selected users and resources
  1. ;Loop through selected users
  1. ;. Loop through selected resources
  1. ; . . If an entry in ^BSDXRSU for this user/resource combination exists, then
  1. ; . . . S sResourceUserID = to it
  1. ; . . Else
  1. ; . . . S sResourceUserID = 0
  1. ; . . Call MADFILE
  1. N BSDXU,BSDXR,BSDXRUID,BSDXVAL
  1. S BSDXU=0
  1. F S BSDXU=$O(^TMP($J,"BSDX MADDRU","USER",BSDXU)) Q:'+BSDXU D
  1. . S BSDXR=0 F S BSDXR=$O(^TMP($J,"BSDX MADDRU","RESOURCE",BSDXR)) Q:'+BSDXR D
  1. . . S BSDXRUID=$$MADEXST(BSDXU,BSDXR)
  1. . . S BSDXVAL=BSDXRUID_"|"_BSDX("OVERBOOK")_"|"_BSDX("MODIFY")_"|"_BSDXR_"|"_BSDXU_"|"_BSDX("WRITE")
  1. . . I +BSDXRUID,BSDX("READ")=0 D MADDEL(BSDXRUID)
  1. . . Q:BSDX("READ")=0
  1. . . D MADFILE(BSDXVAL)
  1. . . Q
  1. . Q
  1. Q
  1. ;
  1. MADDEL(BSDXRUID) ;
  1. ;Delete entry BSDXRUID from BSDX RESOURCE USER file
  1. N DIK,DA
  1. Q:'+BSDXRUID
  1. Q:'$D(^BSDXRSU(BSDXRUID))
  1. S DIK="^BSDXRSU("
  1. S DA=BSDXRUID
  1. D ^DIK
  1. Q
  1. ;
  1. MADFILE(BSDXVAL) ;
  1. ;
  1. ;Add/Edit BSDX RESOURCEUSER entry
  1. ;BSDXVAL is sResourceUserID|sOverbook|sModifySchedule|ResourceID|UserID|sModifyAppointments
  1. ;If sResourceUserID=0 Then this is a new ResourceUser entry
  1. ;
  1. N BSDXIENS,BSDXFDA,BSDXIEN,BSDXMSG,BSDX,BSDXOVB,BSDXMOD,BSDXI,BSDXUID,BSDXRID
  1. N BSDXRES,BSDXRSU,BSDXF,BSDXAPPT
  1. S BSDXIEN=$P(BSDXVAL,"|")
  1. I +BSDXIEN D
  1. . S BSDX="EDIT"
  1. . S BSDXIENS=BSDXIEN_","
  1. E D
  1. . S BSDX="ADD"
  1. . S BSDXIENS="+1,"
  1. ;
  1. I '+$P(BSDXVAL,"|",4) D MADERR("Error in MADFILE^BSDX18: No Resource ID") Q
  1. I '+$P(BSDXVAL,"|",5) D MADERR("Error in MADFILE^BSDX18: No User ID") Q
  1. ;
  1. S BSDXRID=$P(BSDXVAL,"|",4) ;ResourceID
  1. S BSDXUID=$P(BSDXVAL,"|",5) ;UserID
  1. S BSDXRSU=0 ;ResourceUserID
  1. S BSDXF=0 ;flag
  1. ;If this is an add, check if the user is already assigned to the resource.
  1. ;If so, then change to an edit
  1. I BSDX="ADD" F S BSDXRSU=$O(^BSDXRSU("AC",BSDXUID,BSDXRSU)) Q:'+BSDXRSU D Q:BSDXF
  1. . S BSDXRES=$G(^BSDXRSU(BSDXRSU,0))
  1. . S BSDXRES=$P(BSDXRES,U) ;ResourceID
  1. . S:BSDXRES=BSDXRID BSDXF=1
  1. I BSDXF S BSDX="EDIT",BSDXIEN=BSDXRSU,BSDXIENS=BSDXIEN_","
  1. ;
  1. S BSDXOVB=$P(BSDXVAL,"|",2)
  1. S BSDXMOD=$P(BSDXVAL,"|",3)
  1. S BSDXAPPT=$P(BSDXVAL,"|",6)
  1. ;
  1. S BSDXFDA(9002018.15,BSDXIENS,.01)=$P(BSDXVAL,"|",4) ;RESOURCE ID
  1. S BSDXFDA(9002018.15,BSDXIENS,.02)=$P(BSDXVAL,"|",5) ;USERID
  1. S BSDXFDA(9002018.15,BSDXIENS,.03)=BSDXOVB ;OVERBOOK
  1. S BSDXFDA(9002018.15,BSDXIENS,.04)=BSDXMOD ;MODIFY SCHEDULE
  1. S BSDXFDA(9002018.15,BSDXIENS,.05)=BSDXAPPT ;ADD, EDIT, DELETE APPOINMENTS
  1. K BSDXMSG
  1. I BSDX="ADD" D
  1. . K BSDXIEN
  1. . D UPDATE^DIE("","BSDXFDA","BSDXIEN","BSDXMSG")
  1. . S BSDXIEN=+$G(BSDXIEN(1))
  1. E D
  1. . D FILE^DIE("","BSDXFDA","BSDXMSG")
  1. Q
  1. ;
  1. MADEXST(BSDXU,BSDXR) ;
  1. ;Returns BSDX RESOURCE USER ID
  1. ;if there is a BSDX RESOURCE USER entry for
  1. ;user BSDXU and resource BSDXR
  1. ;Otherwise, returns 0
  1. ;
  1. N BSDXID,BSDXFOUND,BSDXNOD
  1. I '$D(^BSDXRSU("AC",BSDXU)) Q 0
  1. S BSDXID=0,BSDXFOUND=0
  1. F S BSDXID=$O(^BSDXRSU("AC",BSDXU,BSDXID)) Q:'+BSDXID D Q:BSDXFOUND
  1. . S BSDXNOD=$G(^BSDXRSU(BSDXID,0))
  1. . I +BSDXNOD=BSDXR S BSDXFOUND=BSDXID
  1. . Q
  1. Q BSDXFOUND