[613] | 1 | RAUTL6 ;HISC/GJC-Utility Routine ;2/19/98 10:52
|
---|
| 2 | ;;5.0;Radiology/Nuclear Medicine;;Mar 16, 1998
|
---|
| 3 | VARACC(DUZ) ; This subroutine will determine the Imaging Location,
|
---|
| 4 | ; Imaging Type, and the Divisional access for a specific individual.
|
---|
| 5 | ; Divisional Access as well as Imaging Type Access is derived from
|
---|
| 6 | ; the Imaging Locs assigned to each Rad/Nuc Med user. If the user
|
---|
| 7 | ; holds the RA ALLOC key, that user has access to all Imaging Locs.
|
---|
| 8 | ; This in turn implies that the user has all Divisional and Imaging
|
---|
| 9 | ; Type access related to each specific Imaging Location.
|
---|
| 10 | ;
|
---|
| 11 | Q:'+$G(DUZ) N RADIV,RAIMG,RAINDX,RAKEY,RALOC,RAMGRKEY
|
---|
| 12 | S RAMGRKEY=0
|
---|
| 13 | ;
|
---|
| 14 | ; *** RA ALLOC Key Holder ***
|
---|
| 15 | ; If a RA ALLOC holder, set up Imaging Loc access from file 200.
|
---|
| 16 | ; Format: RACCESS(DUZ,"LOC",IEN of 79.1)=.01 of 79.1, IEN of file 44^.01 of 44
|
---|
| 17 | ;
|
---|
| 18 | I $D(^XUSEC("RA ALLOC",DUZ)) S RAMGRKEY=1 D
|
---|
| 19 | . S RAINDX=0
|
---|
| 20 | . F S RAINDX=$O(^RA(79.1,RAINDX)) Q:RAINDX'>0 D
|
---|
| 21 | .. S RALOC(0)=$G(^RA(79.1,RAINDX,0)),RALOC(1)=+$P(RALOC(0),U)
|
---|
| 22 | .. Q:RALOC(1)'>0 S RALOC(44)=$P($G(^SC(RALOC(1),0)),U)
|
---|
| 23 | .. S RACCESS(DUZ,"LOC",RAINDX)=RALOC(1)_"^"_RALOC(44)
|
---|
| 24 | .. Q
|
---|
| 25 | . K RALOC
|
---|
| 26 | . Q
|
---|
| 27 | ;
|
---|
| 28 | ; *** Imaging Location Access ***
|
---|
| 29 | ; If not a RA ALLOC holder, set up Imaging Loc access from file 200.
|
---|
| 30 | ; Format: RACCESS(DUZ,"LOC",IEN of 79.1)=.01 of 79.1, IEN of file 44^.01 of 44
|
---|
| 31 | ;
|
---|
| 32 | I 'RAMGRKEY,($D(^VA(200,DUZ,"RAL",0))),(+$O(^VA(200,DUZ,"RAL",0))) D
|
---|
| 33 | . S RAINDX=0
|
---|
| 34 | . F S RAINDX=$O(^VA(200,DUZ,"RAL",RAINDX)) Q:RAINDX'>0 D
|
---|
| 35 | .. S RALOC(0)=$G(^VA(200,DUZ,"RAL",RAINDX,0)),RALOC(1)=+$P(RALOC(0),U)
|
---|
| 36 | .. Q:RALOC(1)'>0 S RALOC(44)=+$P($G(^RA(79.1,RALOC(1),0)),U)
|
---|
| 37 | .. S RACCESS(DUZ,"LOC",RALOC(1))=RALOC(44)_"^"_$P($G(^SC(RALOC(44),0)),U)
|
---|
| 38 | .. Q
|
---|
| 39 | . Q
|
---|
| 40 | ;
|
---|
| 41 | ; *** Division Access ***
|
---|
| 42 | ; Format: RACCESS(DUZ,"DIV",IEN of 79,IEN of 79.1)="DIV";1 of file 79.1, pntr to file 4^.01 of 4
|
---|
| 43 | ; NOTE: The first piece of the "DIV" node is a pntr to 79 (Rad Div)
|
---|
| 44 | ; This value is DINUMED with file 4.
|
---|
| 45 | ;
|
---|
| 46 | ; Division is found in the Imaging Location file, ^RA(79.1
|
---|
| 47 | ; it is the first piece of the "DIV" node. RAINDX is the IEN
|
---|
| 48 | ; of ^RA(79.1
|
---|
| 49 | I $D(RACCESS(DUZ,"LOC")) D
|
---|
| 50 | . S RAINDX=0
|
---|
| 51 | . F S RAINDX=$O(RACCESS(DUZ,"LOC",RAINDX)) Q:RAINDX'>0 D
|
---|
| 52 | .. S RADIV(0)=$G(^RA(79.1,RAINDX,"DIV")),RADIV(1)=+$P(RADIV(0),U)
|
---|
| 53 | .. Q:RADIV(1)'>0 S RADIV(2)=+$P($G(^RA(79,RADIV(1),0)),U)
|
---|
| 54 | .. S RACCESS(DUZ,"DIV",RADIV(1),RAINDX)=RADIV(2)_"^"_$P($G(^DIC(4,RADIV(2),0)),U)
|
---|
| 55 | .. Q
|
---|
| 56 | . Q
|
---|
| 57 | ;
|
---|
| 58 | ; *** Imaging Type Access ***
|
---|
| 59 | ; Format: RACCESS(DUZ,"IMG",IEN of 79.2,IEN of 79.1)=^.01 of 79.2
|
---|
| 60 | ; NOTE: The sixth piece of the "zero" node is a pntr to 79.2 (Img Type)
|
---|
| 61 | ;
|
---|
| 62 | ; Imaging Type is found in the Imaging Location file (#79.1)
|
---|
| 63 | ; it is the sixth piece of the "zero" node. RAINDX is the IEN
|
---|
| 64 | ; of ^RA(79.1
|
---|
| 65 | I $D(RACCESS(DUZ,"LOC")) D
|
---|
| 66 | . S RAINDX=0
|
---|
| 67 | . F S RAINDX=$O(RACCESS(DUZ,"LOC",RAINDX)) Q:RAINDX'>0 D
|
---|
| 68 | .. S RAIMG(0)=$G(^RA(79.1,RAINDX,0)),RAIMG(1)=+$P(RAIMG(0),U,6)
|
---|
| 69 | .. Q:RAIMG(1)'>0 S RAIMG(2)=$P($G(^RA(79.2,RAIMG(1),0)),U)
|
---|
| 70 | .. S RACCESS(DUZ,"IMG",RAIMG(1),RAINDX)="^"_RAIMG(2)
|
---|
| 71 | .. Q
|
---|
| 72 | . Q
|
---|
| 73 | Q
|
---|
| 74 | DSPDIV ; Display 'Divisional Access' data
|
---|
| 75 | N X0,X1,Y0,Y1,Y2,Y3 S X0=0,Y3=1
|
---|
| 76 | I '$D(RACCESS(RADUZ,"DIV")) D Q
|
---|
| 77 | . W !?5,"Access to Radiology/Nuclear Medicine Divisional data is not "
|
---|
| 78 | . W "authorized.",$C(7)
|
---|
| 79 | S Y1="<<< Divisions Included >>>"
|
---|
| 80 | W !?5,Y1
|
---|
| 81 | F S X0=$O(RACCESS(RADUZ,"DIV",X0)) Q:X0'>0 D
|
---|
| 82 | . S X1=$O(RACCESS(RADUZ,"DIV",X0,0)) Q:X1'>0
|
---|
| 83 | . S Y0=$G(RACCESS(RADUZ,"DIV",X0,X1)) Q:Y0']""
|
---|
| 84 | . S Y2=$P(Y0,U,2) D PRINT
|
---|
| 85 | . Q
|
---|
| 86 | W !
|
---|
| 87 | Q
|
---|
| 88 | DSPIMG ; Display 'Imaging Type' data
|
---|
| 89 | N X0,X1,Y0,Y1,Y2,Y3 S X0=0,Y3=1
|
---|
| 90 | I '$D(RACCESS(RADUZ,"IMG")) D Q
|
---|
| 91 | . W !?5,"Access to Imaging Type data is not authorized."
|
---|
| 92 | . W $C(7)
|
---|
| 93 | S Y1="<<< Imaging Types Included >>>"
|
---|
| 94 | W !?5,Y1
|
---|
| 95 | F S X0=$O(RACCESS(RADUZ,"IMG",X0)) Q:X0'>0 D
|
---|
| 96 | . S X1=0
|
---|
| 97 | . F S X1=$O(RACCESS(RADUZ,"IMG",X0,X1)) Q:X1'>0 D
|
---|
| 98 | .. S Y0=$G(RACCESS(RADUZ,"IMG",X0,X1)) Q:Y0']""
|
---|
| 99 | .. S Y2=$P(Y0,U,2) D PRINT
|
---|
| 100 | .. Q
|
---|
| 101 | . Q
|
---|
| 102 | W !
|
---|
| 103 | Q
|
---|
| 104 | DSPLOC ; Display 'Imaging Location' data
|
---|
| 105 | N X0,Y0,Y1,Y2,Y3 S X0=0,Y3=1
|
---|
| 106 | I '$D(RACCESS(RADUZ,"LOC")) D Q
|
---|
| 107 | . W !?5,"Access to Imaging Location data is not authorized.",$C(7)
|
---|
| 108 | S Y1="<<< Locations Included >>>"
|
---|
| 109 | W !?5,Y1
|
---|
| 110 | F S X0=$O(RACCESS(RADUZ,"LOC",X0)) Q:X0'>0 D
|
---|
| 111 | . S Y0=$G(RACCESS(RADUZ,"LOC",X0)) Q:Y0']""
|
---|
| 112 | . S Y2=$P(Y0,U,2) D PRINT
|
---|
| 113 | . Q
|
---|
| 114 | W !
|
---|
| 115 | Q
|
---|
| 116 | PRINT ; Print out data
|
---|
| 117 | S Y3='Y3
|
---|
| 118 | I 'Y3 W !?5,Y2
|
---|
| 119 | E W ?45,Y2
|
---|
| 120 | Q
|
---|
| 121 | DIVSION(RADATE,RALIFN) ; Determine the division associated with the Requesting
|
---|
| 122 | ; Location on a Rad/Nuc Med Order. Use the PIMS utilities in VASITE.
|
---|
| 123 | ; Returns an institution file ptr value or -1 if the division
|
---|
| 124 | ; could not be determined.
|
---|
| 125 | ; Input - RADATE=a valid FileMan date (internal format)
|
---|
| 126 | ; defaults to DT if passed in null
|
---|
| 127 | ; RALIFN=Req. Location from Rad/Nuc Med Order.
|
---|
| 128 | ; Output - RA1DIV=valid pointer the the Institution File, else -1
|
---|
| 129 | N RA1DIV S:$G(RADATE)="" RADATE=DT
|
---|
| 130 | ; note: field 3.5 in file 44 is named DIVISION & is a pntr to file 40.8
|
---|
| 131 | S RA1DIV=+$$SITE^VASITE(RADATE,+$$GET1^DIQ(44,RALIFN,3.5,"I"))
|
---|
| 132 | ; if $$SITE^VASITE fails, return the medical center division of the
|
---|
| 133 | ; primary medical center division (this is a ptr to file 40.8)
|
---|
| 134 | S:RA1DIV=-1 RA1DIV=+$$SITE^VASITE(RADATE,+$$PRIM^VASITE(RADATE))
|
---|
| 135 | Q RA1DIV
|
---|