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

BUSAOPT.m

Go to the documentation of this file.
  1. BUSAOPT ;GDIT/HS/ALA-Security Audit Menu ; 06 Mar 2013 1:52 PM
  1. ;;1.0;IHS USER SECURITY AUDIT;;Nov 05, 2013;Build 65
  1. ;
  1. EN ;EP - Entry point
  1. NEW BUS,CT,TYP,VALUE,DATA,DIR,X,Y,SWIT,COMM,IEN,CURR,PREV,DIRUT,DUOUT,DTOUT
  1. S BUS(1)="Current Security Audit Settings:",CT=1
  1. ;
  1. F TYP="M","B","C","W" D
  1. . S VALUE=$$STATUS(TYP),DATA(TYP)=VALUE
  1. . S CT=CT+1,BUS(CT,"F")="!?5",BUS(CT)=$P(VALUE,U,2)
  1. . S CT=CT+1,BUS(CT,"F")="?20",BUS(CT)="Status:"
  1. . S CT=CT+1,BUS(CT,"F")="?35",BUS(CT)=$P(VALUE,U,3)
  1. . S CT=CT+1,BUS(CT,"F")="!?20",BUS(CT)="Date Logged:"
  1. . S CT=CT+1,BUS(CT,"F")="?35",BUS(CT)=$P(VALUE,U,4)
  1. . S CT=CT+1,BUS(CT,"F")="!?20",BUS(CT)="User Logged:"
  1. . S CT=CT+1,BUS(CT,"F")="?35",BUS(CT)=$P(VALUE,U,5)
  1. . I $P(VALUE,U,6)'="" D
  1. .. S CT=CT+1,BUS(CT,"F")="!?11",BUS(CT)="Disabled Comment:"
  1. .. S CT=CT+1,BUS(CT,"F")="?25",BUS(CT)=$P(VALUE,U,6)
  1. D EN^DDIOL(.BUS)
  1. K BUS
  1. ;
  1. K DIR
  1. S DIR(0)="S^M:Master;B:BMXNet;C:CIA Broker;W:XWB Broker",DIR("A")="Select Switch"
  1. D ^DIR I $G(DIRUT)!($G(DUOUT))!($G(DTOUT)) Q
  1. S SWIT=Y
  1. ;
  1. K DIR
  1. S DIR(0)="S^1:On;0:Disabled",DIR("A")="Change Status"
  1. S IEN=$P(DATA(SWIT),U,7),DIR("B")=$$GET1^DIQ(9002319.04,IEN_",",.02,"E"),PREV=$$GET1^DIQ(9002319.04,IEN_",",.02,"I")
  1. D ^DIR I $G(DIRUT)!($G(DUOUT))!($G(DTOUT)) Q
  1. S CURR=Y
  1. I CURR'=PREV D
  1. . I CURR=0 D
  1. .. K DIR
  1. .. S DIR(0)="F^3:120",DIR("A")="Disable Comment"
  1. .. D ^DIR I $G(DIRUT)!($G(DUOUT)) Q
  1. .. S COMM=Y
  1. . D NREC(SWIT,CURR,$G(COMM))
  1. Q
  1. ;
  1. STATUS(BTYP) ;EP
  1. NEW DTM,IEN,RESULT
  1. S DTM=$O(^BUSA(9002319.04,"C",BTYP,""),-1)
  1. S IEN=""
  1. I DTM'="" S IEN=$O(^BUSA(9002319.04,"C",BTYP,DTM,""))
  1. S RESULT=$$GET1^DIQ(9002319.04,IEN_",",.02,"I")_U_$$GET1^DIQ(9002319.04,IEN_",",.01,"E")_U_$$GET1^DIQ(9002319.04,IEN_",",.02,"E")_U_$$GET1^DIQ(9002319.04,IEN_",",.03,"E")_U
  1. S RESULT=RESULT_$$GET1^DIQ(9002319.04,IEN_",",.04,"E")_U_$$GET1^DIQ(9002319.04,IEN_",",.05,"E")_U_IEN
  1. Q RESULT
  1. ;
  1. NREC(SWIT,CURR,COMM) ;EP - New record
  1. ;
  1. ;Mark the link as ON/OFF
  1. NEW DIC,X,DLAYGO,DA,BUSAUP,DESC,STS,ESWIT
  1. S DIC="^BUSA(9002319.04,",DIC(0)="L",DLAYGO=9002319.04,X=SWIT
  1. K DO,DD D FILE^DICN
  1. S DA=+Y
  1. S BUSAUP(9002319.04,DA_",",.02)=CURR
  1. S BUSAUP(9002319.04,DA_",",.05)=$G(COMM)
  1. D FILE^DIE("","BUSAUP","ERROR")
  1. ;
  1. ;Now log the event in the audit log
  1. S ESWIT=$S(SWIT="M":"Master",SWIT="B":"BMXNet",SWIT="C":"CIA Broker",SWIT="W":"XWB Broker",1:"")
  1. S DESC=ESWIT_" Switch "_$S(CURR=1:"turned on",1:"disabled")
  1. S STS=$$BYPSLOG^BUSAAPI("A","S","","BUSA SECURITY EDIT Option",DESC,"")
  1. Q
  1. ;
  1. USER ;EP - Set up users for BUSA Reporting Tool access
  1. ;
  1. I $G(DUZ)="" W !,"DUZ MUST BE DEFINED BEFORE CALLING THIS OPTION" Q
  1. ;
  1. NEW DIR,DIROUT,DTOUT,DUOUT,DZ,GL,I,IDZ,UGL,UID,USERCL,STATUS,%,EXEC
  1. ;
  1. PROMPT ;Display current users
  1. S EXEC="S GL=$NA(^BUSA.UsersI(""StatusUserIdx"",""A""))" X EXEC
  1. S EXEC="S UGL=$NA(^BUSA.UsersI(""UserIdx""))" X EXEC
  1. S DZ="" F I=1:1 S DZ=$O(@GL@(DZ)) Q:DZ="" D
  1. . I I=1 W !!,"Current approved BUSA Reporting Users",!
  1. . W !,$$GET1^DIQ(200,$TR(DZ," ")_",",.01,"E")
  1. ;
  1. W !!,"Enter the user to add/delete BUSA Reporting Access for",!
  1. ;
  1. S DIR(0)="POr^200:EM"
  1. S DIR("A")="User"
  1. D ^DIR
  1. I $D(DIROUT)!($D(DTOUT))!($D(DUOUT))!(Y=-1) Q
  1. ;
  1. S IDZ=" "_+Y
  1. ;
  1. ;Add user
  1. I '$D(@UGL@(IDZ)) D G PROMPT
  1. . NEW USERCL,%,STS
  1. . S EXEC="S USERCL=##CLASS(BUSA.Users).%New()" X EXEC
  1. . S EXEC="S USERCL.User=+Y" X EXEC
  1. . S EXEC="S USERCL.LastModifiedBy=DUZ" X EXEC
  1. . D NOW^%DTC
  1. . S EXEC="S USERCL.LastModifiedDt=%" X EXEC
  1. . S EXEC="S USERCL.Status=""A""" X EXEC
  1. . S EXEC="S STS=USERCL.%Save()" X EXEC
  1. . I STS=1 W !!,"User set up for BUSA Reporting Access",! H 2
  1. ;
  1. ;Process existing user
  1. ;
  1. S UID=$O(@UGL@(IDZ,"")) Q:UID=""
  1. ;
  1. ;Get user's status
  1. S EXEC="S USERCL=##class(BUSA.Users).%OpenId(UID,1)" X EXEC
  1. S EXEC="S STATUS=USERCL.Status" X EXEC
  1. ;
  1. ;If Active, make Inactive
  1. I STATUS="A" D G PROMPT
  1. . NEW DIR,DIROUT,DTOUT,DUOUT,Y,X,STS,%
  1. . S DIR(0)="Y"
  1. . S DIR("A")="User is currently an Active BUSA Auditing User. Make them Inactive"
  1. . D ^DIR
  1. . I $D(DIROUT)!($D(DTOUT))!($D(DUOUT))!(Y=-1) Q
  1. . I +Y<1 Q
  1. . S EXEC="S USERCL.LastModifiedBy=DUZ" X EXEC
  1. . D NOW^%DTC
  1. . S EXEC="S USERCL.LastModifiedDt=%" X EXEC
  1. . S EXEC="S USERCL.Status=""I""" X EXEC
  1. . S EXEC="S STS=USERCL.%Save()" X EXEC
  1. . W !!,"User's BUSA Auditing status has been set to Inactive" H 2
  1. ;
  1. I STATUS="I" D G PROMPT
  1. . NEW DIR,DIROUT,DTOUT,DUOUT,Y,X,STS,%
  1. . S DIR(0)="Y"
  1. . S DIR("A")="User is currently an Inactive BUSA Auditing User. Make them Active again"
  1. . D ^DIR
  1. . I $D(DIROUT)!($D(DTOUT))!($D(DUOUT))!(Y=-1) Q
  1. . I +Y<1 Q
  1. . S EXEC="S USERCL.LastModifiedBy=DUZ" X EXEC
  1. . D NOW^%DTC
  1. . S EXEC="S USERCL.LastModifiedDt=%" X EXEC
  1. . S EXEC="S USERCL.Status=""A""" X EXEC
  1. . S EXEC="S STS=USERCL.%Save()" X EXEC
  1. . W !!,"User's BUSA Auditing status has been set to Active" H 2
  1. Q