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

SDEC18.m

Go to the documentation of this file.
  1. SDEC18 ;ALB/SAT - VISTA SCHEDULING RPCS ;JAN 15, 2016
  1. ;;5.3;Scheduling;**627**;Aug 13, 1993;Build 249
  1. ;
  1. Q
  1. ;
  1. DELRU(SDECY,SDECIEN) ;Delete Resource User from SDEC RESOURCE USER file
  1. ;DELRU(SDECY,SDECIEN) external parameter tag is in SDEC
  1. ;SDECIEN - Resource User ID - Pointer to SDEC RESOURCE USER file
  1. ;Deletes entry SDECIEN from RESOURCE USERS file
  1. ;Return recordset containing error message or "" if no error
  1. ;Called by SDEC DELETE RESOURCEUSER
  1. ;
  1. N SDECI,DIK,DA
  1. S SDECI=0
  1. S SDECY="^TMP(""SDEC"","_$J_")"
  1. K @SDECY
  1. S ^TMP("SDEC",$J,0)="I00020RESOURCEUSERID^I00020ERRORID"_$C(30)
  1. I '+SDECIEN D ERR(SDECI,SDECIEN,70) Q
  1. I '$D(^SDEC(409.833,SDECIEN,0)) D ERR(SDECI,SDECIEN,70) Q
  1. ;Delete entry SDECIEN
  1. S DIK="^SDEC(409.833,"
  1. S DA=SDECIEN
  1. D ^DIK
  1. ;
  1. S SDECI=SDECI+1
  1. S ^TMP("SDEC",$J,SDECI)=SDECIEN_"^"_"-1"_$C(30)_$C(31)
  1. Q
  1. ;
  1. ADDRESU(SDECY,SDECVAL) ;ADD/EDIT RESOURCE USER
  1. ;ADDRESU(SDECY,SDECVAL) external parameter tag is in SDEC
  1. ;Add/Edit SDEC RESOURCEUSER entry
  1. ;SDECVAL 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. ;
  1. N SDECIENS,SDECFDA,SDECIEN,SDECMSG,SDEC,SDECOVB,SDECMOD,SDECI,SDECUID,SDECRID
  1. N SDECRES,SDECRSU,SDECF,SDECAPPT,SDECMOB
  1. S SDECY="^TMP(""SDEC"","_$J_")"
  1. K @SDECY
  1. S SDECI=0
  1. S ^TMP("SDEC",$J,SDECI)="I00020RESOURCEID^I00020ERRORID"_$C(30)
  1. S SDECIEN=$P(SDECVAL,"|")
  1. I +SDECIEN D
  1. . S SDEC="EDIT"
  1. . S SDECIENS=SDECIEN_","
  1. E D
  1. . S SDEC="ADD"
  1. . S SDECIENS="+1,"
  1. ;
  1. I '+$P(SDECVAL,"|",4) D ERR(SDECI,SDECIEN,70) Q
  1. I '+$P(SDECVAL,"|",5) D ERR(SDECI,SDECIEN,70) Q
  1. ;
  1. S SDECRID=$P(SDECVAL,"|",4) ;ResourceID
  1. S SDECUID=$P(SDECVAL,"|",5) ;UserID
  1. S SDECRSU=0 ;ResourceUserID
  1. S SDECF=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 SDEC="ADD" F S SDECRSU=$O(^SDEC(409.833,"AC",SDECUID,SDECRSU)) Q:'+SDECRSU D Q:SDECF
  1. . S SDECRES=$G(^SDEC(409.833,SDECRSU,0))
  1. . S SDECRES=$P(SDECRES,U) ;ResourceID
  1. . S:SDECRES=SDECRID SDECF=1
  1. I SDECF S SDEC="EDIT",SDECIEN=SDECRSU,SDECIENS=SDECIEN_","
  1. ;
  1. S SDECOVB=$P(SDECVAL,"|",2)
  1. S SDECOVB=$S(SDECOVB="YES":1,1:0)
  1. S SDECMOD=$P(SDECVAL,"|",3)
  1. S SDECMOD=$S(SDECMOD="YES":1,1:0)
  1. S SDECAPPT=$P(SDECVAL,"|",6)
  1. S SDECAPPT=$S(SDECAPPT="YES":1,1:0)
  1. S SDECMOB=$P(SDECVAL,"|",7)
  1. S SDECMOB=$S(SDECMOB="YES":1,1:0) ;Master Overbook Authority
  1. ;
  1. S SDECFDA(409.833,SDECIENS,.01)=$P(SDECVAL,"|",4) ;RESOURCE ID
  1. S SDECFDA(409.833,SDECIENS,.02)=$P(SDECVAL,"|",5) ;USERID
  1. S SDECFDA(409.833,SDECIENS,.03)=SDECOVB ;OVERBOOK
  1. S SDECFDA(409.833,SDECIENS,.04)=SDECMOD ;MODIFY SCHEDULE
  1. S SDECFDA(409.833,SDECIENS,.05)=SDECAPPT ;ADD, EDIT, DELETE APPOINMENTS
  1. S SDECFDA(409.833,SDECIENS,.06)=SDECMOB ;Master Overbook Authority
  1. I SDEC="ADD" D
  1. . K SDECIEN
  1. . D UPDATE^DIE("","SDECFDA","SDECIEN","SDECMSG")
  1. . S SDECIEN=+$G(SDECIEN(1))
  1. E D
  1. . D FILE^DIE("","SDECFDA","SDECMSG")
  1. ;S ^TMP("SDEC",$J,1)=$G(SDECIEN)_"^-1"_$C(31)
  1. S ^TMP("SDEC",$J,1)=$C(31)
  1. Q
  1. ;
  1. ERR(SDECI,SDECID,SDECERR) ;Error processing
  1. S SDECI=SDECI+1
  1. S ^TMP("SDEC",$J,SDECI)=SDECID_"^"_SDECERR_$C(30,31)
  1. Q
  1. ;
  1. MADERR(SDECMSG) ;
  1. W !,SDECMSG
  1. Q
  1. ;
  1. MADSCR(SDECDUZ,SDECZMGR,SDECZMENU) ;EP - File 200 screening code for MADDRU
  1. ;Called from DIR to screen for scheduling users
  1. I $D(^VA(200,SDECDUZ,51,"B",SDECZMENU)) Q 1
  1. I $D(^VA(200,SDECDUZ,51,"B",SDECZMGR)) 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 SDEC,SDECZMENU,SDECZMGR,DIR
  1. ;
  1. ;INIT
  1. K ^TMP($J)
  1. S SDECZMENU=$O(^DIC(19.1,"B","SDECZMENU",0)) I '+SDECZMENU D MADERR("Error: SDECZMENU KEY NOT FOUND.") Q
  1. S SDECZMGR=$O(^DIC(19.1,"B","SDECZMGR",0)) I '+SDECZMGR D MADERR("Error: SDECZMGR KEY NOT FOUND.") Q
  1. ;
  1. D MADUSR
  1. I '$D(^TMP($J,"SDEC MADDRU","USER")) D MADERR("Cancelled: No Users selected.") Q
  1. D MADRES
  1. I '$D(^TMP($J,"SDEC MADDRU","RESOURCE")) D MADERR("Cancelled: No Resources selected.") Q
  1. I '$$MADACC(.SDEC) ;D MADERR("Selected users will have no access to the selected clinics.")
  1. I '$$MADCONF(.SDEC) W ! D MADERR("--Cancelled") Q
  1. D MADASS(.SDEC)
  1. W ! D MADERR("--Done")
  1. ;
  1. Q
  1. ;
  1. MADUSR ;Prompt for users from file 200 who have SDECUSER key
  1. ;Store results in ^TMP($J,"SDEC MADDRU","USER",DUZ) array
  1. N DIRUT,Y,DIR
  1. S DIR(0)="PO^200:EMZ",DIR("S")="I $$MADSCR^SDEC18(Y,SDECZMGR,SDECZMENU)"
  1. S Y=0
  1. K ^TMP($J,"SDEC MADDRU","USER")
  1. W !!,"-------Select Users-------"
  1. F D ^DIR Q:$G(DIRUT) Q:'Y D
  1. . S ^TMP($J,"SDEC MADDRU","USER",+Y)=""
  1. Q
  1. ;
  1. MADRES ;Prompt for Resources
  1. ;Store results in ^TMP($J,"SDEC MADDRU","RESOURCE",ResourceID) array
  1. N DIRUT,Y,DIR
  1. S DIR(0)="PO^409.831:EMZ"
  1. S Y=0
  1. K ^TMP($J,"SDEC MADDRU","RESOURCE")
  1. W !!,"-------Select Resources-------"
  1. F D ^DIR Q:$G(DIRUT) Q:'Y D
  1. . S ^TMP($J,"SDEC MADDRU","RESOURCE",+Y)=""
  1. Q
  1. ;
  1. MADACC(SDEC) ;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 SDEC(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 SDEC("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 SDEC("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 SDEC("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 SDEC("READ")=0
  1. ;
  1. Q 0
  1. ;
  1. MADCONF(SDEC) ;Confirm selections
  1. N DIR,DIRUT,Y
  1. S DIR(0)="Y"
  1. W !!,"-------Confirm Selections-------"
  1. I SDEC("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,SDEC("MODIFY")
  1. . W !,"Overbook Appointments: ",?50,SDEC("OVERBOOK")
  1. . W !,"Add, Edit and Delete Appointments: ",?50,SDEC("WRITE")
  1. . W !,"View Clinic Appointments: ",?50,SDEC("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(SDEC) ;
  1. ;Assign access level to selected users and resources
  1. ;Loop through selected users
  1. ;. Loop through selected resources
  1. ; . . If an entry in ^SDECRSU for this user/resource combination exists, then
  1. ; . . . S sResourceUserID = to it
  1. ; . . Else
  1. ; . . . S sResourceUserID = 0
  1. ; . . Call MADFILE
  1. N SDECU,SDECR,SDECRUID,SDECVAL
  1. S SDECU=0
  1. F S SDECU=$O(^TMP($J,"SDEC MADDRU","USER",SDECU)) Q:'+SDECU D
  1. . S SDECR=0 F S SDECR=$O(^TMP($J,"SDEC MADDRU","RESOURCE",SDECR)) Q:'+SDECR D
  1. . . S SDECRUID=$$MADEXST(SDECU,SDECR)
  1. . . S SDECVAL=SDECRUID_"|"_SDEC("OVERBOOK")_"|"_SDEC("MODIFY")_"|"_SDECR_"|"_SDECU_"|"_SDEC("WRITE")
  1. . . I +SDECRUID,SDEC("READ")=0 D MADDEL(SDECRUID)
  1. . . Q:SDEC("READ")=0
  1. . . D MADFILE(SDECVAL)
  1. . . Q
  1. . Q
  1. Q
  1. ;
  1. MADDEL(SDECRUID) ;
  1. ;Delete entry SDECRUID from SDEC RESOURCE USER file
  1. N DIK,DA
  1. Q:'+SDECRUID
  1. Q:'$D(^SDEC(409.833,SDECRUID))
  1. S DIK="^SDEC(409.833,"
  1. S DA=SDECRUID
  1. D ^DIK
  1. Q
  1. ;
  1. MADFILE(SDECVAL) ;
  1. ;
  1. ;Add/Edit SDEC RESOURCEUSER entry
  1. ;SDECVAL is sResourceUserID|sOverbook|sModifySchedule|ResourceID|UserID|sModifyAppointments
  1. ;If sResourceUserID=0 Then this is a new ResourceUser entry
  1. ;
  1. N SDECIENS,SDECFDA,SDECIEN,SDECMSG,SDEC,SDECOVB,SDECMOD,SDECI,SDECUID,SDECRID
  1. N SDECRES,SDECRSU,SDECF,SDECAPPT
  1. S SDECIEN=$P(SDECVAL,"|")
  1. I +SDECIEN D
  1. . S SDEC="EDIT"
  1. . S SDECIENS=SDECIEN_","
  1. E D
  1. . S SDEC="ADD"
  1. . S SDECIENS="+1,"
  1. ;
  1. I '+$P(SDECVAL,"|",4) D MADERR("Error in MADFILE^SDEC18: No Resource ID") Q
  1. I '+$P(SDECVAL,"|",5) D MADERR("Error in MADFILE^SDEC18: No User ID") Q
  1. ;
  1. S SDECRID=$P(SDECVAL,"|",4) ;ResourceID
  1. S SDECUID=$P(SDECVAL,"|",5) ;UserID
  1. S SDECRSU=0 ;ResourceUserID
  1. S SDECF=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 SDEC="ADD" F S SDECRSU=$O(^SDEC(409.833,"AC",SDECUID,SDECRSU)) Q:'+SDECRSU D Q:SDECF
  1. . S SDECRES=$G(^SDEC(409.833,SDECRSU,0))
  1. . S SDECRES=$P(SDECRES,U) ;ResourceID
  1. . S:SDECRES=SDECRID SDECF=1
  1. I SDECF S SDEC="EDIT",SDECIEN=SDECRSU,SDECIENS=SDECIEN_","
  1. ;
  1. S SDECOVB=$P(SDECVAL,"|",2)
  1. S SDECMOD=$P(SDECVAL,"|",3)
  1. S SDECAPPT=$P(SDECVAL,"|",6)
  1. ;
  1. S SDECFDA(409.833,SDECIENS,.01)=$P(SDECVAL,"|",4) ;RESOURCE ID
  1. S SDECFDA(409.833,SDECIENS,.02)=$P(SDECVAL,"|",5) ;USERID
  1. S SDECFDA(409.833,SDECIENS,.03)=SDECOVB ;OVERBOOK
  1. S SDECFDA(409.833,SDECIENS,.04)=SDECMOD ;MODIFY SCHEDULE
  1. S SDECFDA(409.833,SDECIENS,.05)=SDECAPPT ;ADD, EDIT, DELETE APPOINMENTS
  1. K SDECMSG
  1. I SDEC="ADD" D
  1. . K SDECIEN
  1. . D UPDATE^DIE("","SDECFDA","SDECIEN","SDECMSG")
  1. . S SDECIEN=+$G(SDECIEN(1))
  1. E D
  1. . D FILE^DIE("","SDECFDA","SDECMSG")
  1. Q
  1. ;
  1. MADEXST(SDECU,SDECR) ;
  1. ;Returns SDEC RESOURCE USER ID
  1. ;if there is a SDEC RESOURCE USER entry for
  1. ;user SDECU and resource SDECR
  1. ;Otherwise, returns 0
  1. ;
  1. N SDECID,SDECFOUND,SDECNOD
  1. I '$D(^SDEC(409.833,"AC",SDECU)) Q 0
  1. S SDECID=0,SDECFOUND=0
  1. F S SDECID=$O(^SDEC(409.833,"AC",SDECU,SDECID)) Q:'+SDECID D Q:SDECFOUND
  1. . S SDECNOD=$G(^SDEC(409.833,SDECID,0))
  1. . I +SDECNOD=SDECR S SDECFOUND=SDECID
  1. . Q
  1. Q SDECFOUND
  1. ADDRUXR(SDECR,SDECU) ;Called from X-ref to add a resource user
  1. N IEN,SCIEN,SDECFDA,SDECIENS,SDECIEN,SDECMSG
  1. S SCIEN=0 F S SCIEN=$O(^SDEC(409.831,"ALOC",SDECR,SCIEN)) Q:SCIEN'>0 S TYPE=$$GET1^DIQ(409.831,SCIEN_",",.012,"I") Q:TYPE["SC("
  1. I +SCIEN D
  1. .S IEN=$O(^SDEC(409.833,"AD",SCIEN,SDECU,""))
  1. .;If IEN,person is already in file for this clinic can quit.
  1. .I '+IEN D
  1. ..S SDECIENS="+1,"
  1. ..S SDECFDA(409.833,SDECIENS,.01)=SCIEN ;RESOURCE ID
  1. ..S SDECFDA(409.833,SDECIENS,.02)=SDECU ;USERID
  1. ..K SDECIEN
  1. ..D UPDATE^DIE("","SDECFDA","SDECIEN","SDECMSG")
  1. ..S SDECIEN=+$G(SDECIEN(1))
  1. Q
  1. DELRUXR(SDECR,SDECU) ;Called from X-ref to delete a resource user
  1. N IEN,SCIEN,SDECFDA,SDECIENS,SDECIEN,SDECMSG,TYPE
  1. N DA,DIK
  1. S SCIEN=0 F S SCIEN=$O(^SDEC(409.831,"ALOC",SDECR,SCIEN)) Q:SCIEN'>0 S TYPE=$$GET1^DIQ(409.831,SCIEN_",",.012,"I") Q:TYPE["SC("
  1. I +SCIEN D
  1. .S IEN=$O(^SDEC(409.833,"AD",SCIEN,SDECU,""))
  1. .;Only need to delete if person is in file for this clinic
  1. .I +IEN D
  1. ..;Delete entry SDECIEN
  1. ..S DIK="^SDEC(409.833,"
  1. ..S DA=IEN
  1. ..D ^DIK
  1. Q