| 1 | RAUTL7 ;HISC/CAH,FPT,GJC-Utility for RACCESS array ;5/8/97  14:55
 | 
|---|
| 2 |  ;;5.0;Radiology/Nuclear Medicine;;Mar 16, 1998
 | 
|---|
| 3 | DIVIACC ; Sets up division and imaging access based on location.
 | 
|---|
| 4 |  ; Requires RACCESS array.  Creates 'DIV-IMG' elements of
 | 
|---|
| 5 |  ; array:  RACCESS(DUZ,"DIV-IMG",Division name,Imaging type name)=""
 | 
|---|
| 6 |  I '$D(RACCESS(DUZ,"LOC")) D  Q
 | 
|---|
| 7 |  . W !?5,"Please contact your ADPAC regarding access to"
 | 
|---|
| 8 |  . W !?5,"Imaging Locations.",$C(7)
 | 
|---|
| 9 |  . Q
 | 
|---|
| 10 |  N X,Y S X=0
 | 
|---|
| 11 |  F  S X=$O(RACCESS(DUZ,"LOC",X)) Q:'X  D
 | 
|---|
| 12 |  . S X(0)=$G(^RA(79.1,X,0)),X("DIV")=+$G(^RA(79.1,X,"DIV"))
 | 
|---|
| 13 |  . S X("DIV")=+$G(^RA(79,X("DIV"),0)),X("IMG")=+$P(X(0),"^",6)
 | 
|---|
| 14 |  . S Y("DIV")=$P($G(^DIC(4,X("DIV"),0)),"^")
 | 
|---|
| 15 |  . S Y("IMG")=$P($G(^RA(79.2,X("IMG"),0)),"^")
 | 
|---|
| 16 |  . I Y("DIV")]"",(Y("IMG")]"") D
 | 
|---|
| 17 |  .. S RACCESS(DUZ,"DIV-IMG",Y("DIV"),Y("IMG"))=""
 | 
|---|
| 18 |  .. Q
 | 
|---|
| 19 |  . Q
 | 
|---|
| 20 |  Q
 | 
|---|
| 21 | SETUPDI() ; Set up Division/Imaging Type access
 | 
|---|
| 22 |  ; Requires RACCESS(DUZ,"IMG").  Passes back to calling routine
 | 
|---|
| 23 |  ; a 1 if failure because user has no imaging type access based on
 | 
|---|
| 24 |  ; location access (probably no location access in File 200) .
 | 
|---|
| 25 |  ; Passes back 0 if success.  Does a call to
 | 
|---|
| 26 |  ; above routine to set up "DIV-IMG" elements of RACCESS array.
 | 
|---|
| 27 |  ; If "DIV-IMG" elements do not exist, displays error message
 | 
|---|
| 28 |  ; to user.
 | 
|---|
| 29 |  N Y S Y=0
 | 
|---|
| 30 |  I '$D(RACCESS(DUZ,"IMG")) S Y=1 D  Q Y
 | 
|---|
| 31 |  . W !?5,"You do not have access to any Imaging Locations."
 | 
|---|
| 32 |  . W !?5,"Contact your ADPAC.",$C(7)
 | 
|---|
| 33 |  . Q
 | 
|---|
| 34 |  D DIVIACC^RAUTL7 ; Set up Div-Img access array
 | 
|---|
| 35 |  I '$D(RACCESS(DUZ,"DIV-IMG")) S Y=1 D  Q Y
 | 
|---|
| 36 |  . W !?5,"You have no Imaging Location Access Privileges."
 | 
|---|
| 37 |  . W !?5,"Contact your ADPAC.",$C(7)
 | 
|---|
| 38 |  . H 3 Q
 | 
|---|
| 39 |  Q Y
 | 
|---|
| 40 | SELDIV ; Select Division, if exists
 | 
|---|
| 41 |  ; Requires RACCESS "DIV" elements.  Prompts user to select division(s).
 | 
|---|
| 42 |  ; Creates ^TMP($J,"RA D-TYPE",Division name,Division IEN)="" which
 | 
|---|
| 43 |  ; contains all divisions selected.
 | 
|---|
| 44 |  N RAONE S RAONE=$$DIV1()
 | 
|---|
| 45 |  I $P(RAONE,"^")]"" S RAQUIT=0 D  Q
 | 
|---|
| 46 |  . S ^TMP($J,"RA D-TYPE",$P(RAONE,"^"),$P(RAONE,"^",2))=""
 | 
|---|
| 47 |  . Q
 | 
|---|
| 48 |  S RADIC="^RA(79,",RADIC(0)="QEAMZ"
 | 
|---|
| 49 |  S RADIC("A")="Select Rad/Nuc Med Division: ",RADIC("B")="All"
 | 
|---|
| 50 |  S RADIC("S")="I $D(RACCESS(DUZ,""DIV"",+Y))",RAUTIL="RA D-TYPE"
 | 
|---|
| 51 |  D EN1^RASELCT(.RADIC,RAUTIL) K %W,%Y1,DIC,RADIC,RAUTIL,X,Y
 | 
|---|
| 52 |  Q
 | 
|---|
| 53 | SELIMG ; Select Imaging Type, if exists
 | 
|---|
| 54 |  ; Prompts user to select Imaging Type(s).
 | 
|---|
| 55 |  ; Creates ^TMP($J,"RA I-TYPE",Imaging Type name,Imaging Type IEN)=""
 | 
|---|
| 56 |  N RA,RAIMGNUM,RAONE S RA="",RAONE=$$IMG1()
 | 
|---|
| 57 |  ; .... chk if only 1 img type is available
 | 
|---|
| 58 |  I $P(RAONE,"^")]"",('$D(^TMP($J,"RA D-TYPE"))) S RAQUIT=0 D  Q
 | 
|---|
| 59 |  . S ^TMP($J,"RA I-TYPE",$P(RAONE,"^"),$P(RAONE,"^",2))=""
 | 
|---|
| 60 |  . Q
 | 
|---|
| 61 |  ; .... chk if only 1 img type within selectable division is available
 | 
|---|
| 62 |  ; raimgnum = number of selectable img types
 | 
|---|
| 63 |  I $D(^TMP($J,"RA D-TYPE")) D
 | 
|---|
| 64 |  . D SETUP^RAUTL7A S RAIMGNUM=$$IMGNUM^RAUTL7A()
 | 
|---|
| 65 |  . Q
 | 
|---|
| 66 |  I $D(^TMP($J,"RA D-TYPE")),(RAIMGNUM=1) D  S RAQUIT=0 Q
 | 
|---|
| 67 |  . N RA0,RA1
 | 
|---|
| 68 |  . S RA1=+$O(^TMP($J,"DIV-IMG",0)),RA0=$P($G(^RA(79.2,RA1,0)),"^")
 | 
|---|
| 69 |  . S ^TMP($J,"RA I-TYPE",RA0,RA1)=""
 | 
|---|
| 70 |  . Q
 | 
|---|
| 71 |  S RADIC="^RA(79.2,",RADIC(0)="QEAMZ",RAUTIL="RA I-TYPE"
 | 
|---|
| 72 |  S RADIC("A")="Select Imaging Type: ",RADIC("B")="All"
 | 
|---|
| 73 |  I $D(^TMP($J,"RA D-TYPE")) D
 | 
|---|
| 74 |  . S RADIC("S")="I $D(^TMP($J,""DIV-IMG"",+Y)),($D(RACCESS(DUZ,""IMG"",+Y)))"
 | 
|---|
| 75 |  . Q
 | 
|---|
| 76 |  ; why do we need to check the alternative ?  DIVLOC+3 prevents this
 | 
|---|
| 77 |  ; alternative from occurring.
 | 
|---|
| 78 |  E  S RADIC("S")="I $D(RACCESS(DUZ,""IMG"",+Y))"
 | 
|---|
| 79 |  W !! D EN1^RASELCT(.RADIC,RAUTIL) K %W,%Y1,DIC,RADIC,RAUTIL,X,Y
 | 
|---|
| 80 |  Q
 | 
|---|
| 81 | SELLOC ; Select Imaging Location
 | 
|---|
| 82 |  ; Prompts user to select Imaging Location(s)
 | 
|---|
| 83 |  ; Creates ^TMP($J,"RA LOC-TYPE",img-loc name,img-loc ien)
 | 
|---|
| 84 |  N RALOCNUM,RAONE S RAONE=$$LOC1()
 | 
|---|
| 85 |  ; .... chk if only 1 img type is available
 | 
|---|
| 86 |  I $P(RAONE,"^")]"",('$D(^TMP($J,"RA D-TYPE"))) S RAQUIT=0 D  Q
 | 
|---|
| 87 |  . S ^TMP($J,"RA LOC-TYPE",$P($G(^SC(+$P(RAONE,"^"),0)),U),$P(RAONE,"^",2))=""
 | 
|---|
| 88 |  . Q
 | 
|---|
| 89 |  ; .... chk if only 1 img type within selectable division is available
 | 
|---|
| 90 |  I $D(^TMP($J,"RA D-TYPE")) D
 | 
|---|
| 91 |  . D SETUPL^RAUTL7A S RALOCNUM=$$LOCNUM^RAUTL7A()
 | 
|---|
| 92 |  . Q
 | 
|---|
| 93 |  I $D(^TMP($J,"RA D-TYPE")),(RALOCNUM=1) D  S RAQUIT=0 Q
 | 
|---|
| 94 |  . N RA0,RA1
 | 
|---|
| 95 |  . S RA1=+$O(^TMP($J,"DIV-ITYP-ILOC",0)),RA0=$P($G(^RA(79.1,RA1,0)),"^")
 | 
|---|
| 96 |  . S RA0=$P($G(^SC(+RA0,0)),U)
 | 
|---|
| 97 |  . S ^TMP($J,"RA LOC-TYPE",RA0,RA1)=""
 | 
|---|
| 98 |  . Q
 | 
|---|
| 99 |  S RADIC="^RA(79.1,",RADIC(0)="QEAMZ",RAUTIL="RA LOC-TYPE"
 | 
|---|
| 100 |  S RADIC("A")="Select Imaging Location: ",RADIC("B")="All"
 | 
|---|
| 101 |  I $D(^TMP($J,"RA D-TYPE")) D
 | 
|---|
| 102 |  . S RADIC("S")="I $D(^TMP($J,""DIV-ITYP-ILOC"",+Y))"
 | 
|---|
| 103 |  . Q
 | 
|---|
| 104 |  ; the alternative is included here to match that in SELIMG
 | 
|---|
| 105 |  E  S RADIC("S")="I $D(RACCESS(DUZ,""LOC"",+Y))"
 | 
|---|
| 106 |  W !! D EN1^RASELCT(.RADIC,RAUTIL) K %W,%Y1,DIC,RADIC,RAUTIL,X,Y
 | 
|---|
| 107 |  Q
 | 
|---|
| 108 | DIV1() ; Check if the user has access to more than one division
 | 
|---|
| 109 |  ; Returns Division name AND Division IEN if one only.
 | 
|---|
| 110 |  ; Returns Null if more than one division.
 | 
|---|
| 111 |  N X,Y S X=+$O(RACCESS(DUZ,"DIV",0)) Q:'X ""
 | 
|---|
| 112 |  S Y=+$O(RACCESS(DUZ,"DIV",X)) Q:'Y $P($G(^DIC(4,X,0)),"^")_"^"_X
 | 
|---|
| 113 |  Q ""
 | 
|---|
| 114 | IMG1() ; Check if the user has access to more than one i-type
 | 
|---|
| 115 |  ; Returns Imaging type name AND Imaging Type IEN if one only.
 | 
|---|
| 116 |  ; Returns Null if more than one imaging type.
 | 
|---|
| 117 |  N X,Y S X=+$O(RACCESS(DUZ,"IMG",0)) Q:'X ""
 | 
|---|
| 118 |  S Y=+$O(RACCESS(DUZ,"IMG",X)) Q:'Y $P($G(^RA(79.2,X,0)),"^")_"^"_X
 | 
|---|
| 119 |  Q ""
 | 
|---|
| 120 | LOC1() ; Check if the user has access to more than one location
 | 
|---|
| 121 |  ; Returns Rad/Nuc Med Location if one only.
 | 
|---|
| 122 |  ; Returns Null if more than one Rad/Nuc Med Location, or no access
 | 
|---|
| 123 |  N X,Y S X=+$O(RACCESS(DUZ,"LOC",0)) Q:'X ""
 | 
|---|
| 124 |  S Y=+$O(RACCESS(DUZ,"LOC",X)) Q:'Y $P($G(^RA(79.1,X,0)),"^")_"^"_X
 | 
|---|
| 125 |  Q ""
 | 
|---|
| 126 | DIVLOC() ; Entry point to setup  division/img-typ/img-loc  access
 | 
|---|
| 127 |  N X S X=$$SETUPDI^RAUTL7() Q:X 1
 | 
|---|
| 128 |  D SELDIV^RAUTL7 ; Select Rad division(s)
 | 
|---|
| 129 |  I '$D(^TMP($J,"RA D-TYPE"))!(RAQUIT) D  Q 1
 | 
|---|
| 130 |  . K RACCESS(DUZ,"DIV-IMG"),^TMP($J,"DIV-IMG")
 | 
|---|
| 131 |  . Q
 | 
|---|
| 132 |  N RASUB S RASUB="" D SELIMG^RAUTL7 ; Select I-Type
 | 
|---|
| 133 |  I '$D(^TMP($J,"RA I-TYPE"))!(RAQUIT) D  Q 1
 | 
|---|
| 134 |  . K RACCESS(DUZ,"DIV-IMG"),^TMP($J,"DIV-IMG")
 | 
|---|
| 135 |  . Q
 | 
|---|
| 136 |  K ^TMP($J,"DIV-IMG")
 | 
|---|
| 137 |  Q 0
 | 
|---|