| 1 | MAGGSFLT ;WOIFO/GEK - Image list Filters utilities ; [ 06/20/2001 08:57 ]
 | 
|---|
| 2 |  ;;3.0;IMAGING;**7,8**;Sep 15, 2004
 | 
|---|
| 3 |  ;; +---------------------------------------------------------------+
 | 
|---|
| 4 |  ;; | Property of the US Government.                                |
 | 
|---|
| 5 |  ;; | No permission to copy or redistribute this software is given. |
 | 
|---|
| 6 |  ;; | Use of unreleased versions of this software requires the user |
 | 
|---|
| 7 |  ;; | to execute a written test agreement with the VistA Imaging    |
 | 
|---|
| 8 |  ;; | Development Office of the Department of Veterans Affairs,     |
 | 
|---|
| 9 |  ;; | telephone (301) 734-0100.                                     |
 | 
|---|
| 10 |  ;; |                                                               |
 | 
|---|
| 11 |  ;; | The Food and Drug Administration classifies this software as  |
 | 
|---|
| 12 |  ;; | a medical device.  As such, it may not be changed in any way. |
 | 
|---|
| 13 |  ;; | Modifications to this software may result in an adulterated   |
 | 
|---|
| 14 |  ;; | medical device under 21CFR820, the use of which is considered |
 | 
|---|
| 15 |  ;; | to be a violation of US Federal Statutes.                     |
 | 
|---|
| 16 |  ;; +---------------------------------------------------------------+
 | 
|---|
| 17 |  ;;
 | 
|---|
| 18 |  Q
 | 
|---|
| 19 | DEL(MAGRY,FLTIEN) ;RPC [MAG4 FILTER DELETE] DELETE A FILTER
 | 
|---|
| 20 |  N DIK,DA
 | 
|---|
| 21 |  S DIK="^MAG(2005.87,"
 | 
|---|
| 22 |  S DA=FLTIEN
 | 
|---|
| 23 |  D ^DIK
 | 
|---|
| 24 |  D CLEAN^DILF
 | 
|---|
| 25 |  S MAGRY="1^Deleted"
 | 
|---|
| 26 |  Q
 | 
|---|
| 27 | GETLIST(MAGRY,USER,GETALL) ;RPC [MAG4 FILTER GET LIST] Return a list of filters for a USER
 | 
|---|
| 28 |  ; user = DUZ
 | 
|---|
| 29 |  ; if user = "" send list of public filters
 | 
|---|
| 30 |  ; if user > 0 and GETALL = 1 then send User Private and Public filters.
 | 
|---|
| 31 |  N I,MAGADMIN,MAGCLIN
 | 
|---|
| 32 |  S USER=$G(USER)
 | 
|---|
| 33 |  S MAGRY(0)="0^Retrieving Filter list..."
 | 
|---|
| 34 |  ; we'll get public if getall or no user
 | 
|---|
| 35 |  D CLSKEYS(.MAGADMIN,.MAGCLIN)
 | 
|---|
| 36 |  I $G(GETALL)!('USER) D
 | 
|---|
| 37 |  . S I=""
 | 
|---|
| 38 |  . F  S I=$O(^MAG(2005.87,"D",1,I)) Q:I=""  D
 | 
|---|
| 39 |  . . I '$$HASKEY(I) Q  ; HERE HAVE TO USE DUZ, TO FILTER THE FILTERS BASED ON MAGDISP CLIN AND MAGDISP ADMIN
 | 
|---|
| 40 |  . . S MAGRY($O(MAGRY(""),-1)+1)=I_"^"_$P(^MAG(2005.87,I,0),"^",1)_"^"_$P(^MAG(2005.87,I,1),"^")
 | 
|---|
| 41 |  . . Q
 | 
|---|
| 42 |  I USER D
 | 
|---|
| 43 |  . S I=""
 | 
|---|
| 44 |  . F  S I=$O(^MAG(2005.87,"C",USER,I)) Q:I=""  D
 | 
|---|
| 45 |  . . I '$$HASKEY(I) Q
 | 
|---|
| 46 |  . . S MAGRY($O(MAGRY(""),-1)+1)=I_"^"_$P(^MAG(2005.87,I,0),"^",1)_"^"_$P(^MAG(2005.87,I,1),"^")
 | 
|---|
| 47 |  . . Q
 | 
|---|
| 48 |  S MAGRY(0)=$S($G(MAGRY(1)):$O(MAGRY(""),-1),1:"0^ERROR Retrieving Filter list.")
 | 
|---|
| 49 |  I MAGRY(0) D
 | 
|---|
| 50 |  . ; we have a list of filters, send the default as Piece 1 in 0 node.
 | 
|---|
| 51 |  . S $P(MAGRY(0),"^",1)=$$DFTFLT(USER)
 | 
|---|
| 52 |  Q
 | 
|---|
| 53 | HASKEY(IEN) ; True or False, Does user have Correct Key(s)(ADMIN and/or CLIN) to view this filter.
 | 
|---|
| 54 |  N CLS
 | 
|---|
| 55 |  S CLS=$P(^MAG(2005.87,IEN,0),"^",3)
 | 
|---|
| 56 |  I (CLS="") S CLS="CLIN,ADMIN" ; CLS="", now treat it as both.  (Might rethink, treat it as any ? )
 | 
|---|
| 57 |  I (CLS["ADMIN"),(CLS["CLIN") Q (MAGCLIN&MAGADMIN)
 | 
|---|
| 58 |  I (CLS["CLIN") Q MAGCLIN
 | 
|---|
| 59 |  I (CLS["ADMIN") Q MAGADMIN
 | 
|---|
| 60 |  Q 0
 | 
|---|
| 61 | CLSKEYS(ADM,CLIN) ;
 | 
|---|
| 62 |  S (ADM,CLIN)=0
 | 
|---|
| 63 |  N I,MAGKEY
 | 
|---|
| 64 |  D USERKEYS^MAGGTU3(.MAGKEY)
 | 
|---|
| 65 |  S I="" F  S I=$O(MAGKEY(I)) Q:I=""  D
 | 
|---|
| 66 |  . I MAGKEY(I)="MAGDISP CLIN" S CLIN=1
 | 
|---|
| 67 |  . I MAGKEY(I)="MAGDISP ADMIN" S ADM=1
 | 
|---|
| 68 |  . Q
 | 
|---|
| 69 |  Q
 | 
|---|
| 70 | GET(MAGRY,FLTIEN,FLTNAME,USER) ;RPC [MAG4 FILTER DETAILS] Return a filter
 | 
|---|
| 71 |  ; Return the full FLTIEN Node, the Delphi App will Parse it.
 | 
|---|
| 72 |  K MAGV,FLTC
 | 
|---|
| 73 |  I '$G(FLTIEN) S FLTIEN=$$RSLVIEN($G(FLTNAME),$G(USER))
 | 
|---|
| 74 |  I 'FLTIEN S MAGRY(0)="0^Can not resolve Filter name in VistA." Q
 | 
|---|
| 75 |  I '$D(^MAG(2005.87,FLTIEN)) S MAGRY="0^Filter ID #"_FLTIEN_" Doesn't exist." Q
 | 
|---|
| 76 |  S FLTC=FLTIEN_","
 | 
|---|
| 77 |  S MAGRY(0)="1^Filter "_$P(^MAG(2005.87,FLTIEN,0),"^",1)_" # "_FLTIEN
 | 
|---|
| 78 |  ; S MAGRY(1)=FLTIEN_"^"_^MAG(2005.87,FLTIEN,0)
 | 
|---|
| 79 |  F I=1:1:9 D GETS^DIQ(2005.87,FLTC,".01:9","E","MAGV")
 | 
|---|
| 80 |  S MAGRY(1)=FLTIEN
 | 
|---|
| 81 |  S X=MAGV(2005.87,FLTC,6,"E") I X]"" S %DT="" D ^%DT S MAGV(2005.87,FLTC,6,"E")=$$FMTE^XLFDT(Y,"2Z")
 | 
|---|
| 82 |  S X=MAGV(2005.87,FLTC,7,"E") I X]"" S %DT="" D ^%DT S MAGV(2005.87,FLTC,7,"E")=$$FMTE^XLFDT(Y,"2Z")
 | 
|---|
| 83 |  S I="" F  S I=$O(MAGV(2005.87,FLTC,I)) Q:I=""  S MAGRY(1)=MAGRY(1)_"^"_MAGV(2005.87,FLTC,I,"E")
 | 
|---|
| 84 |  Q
 | 
|---|
| 85 | RSLVIEN(NAME,USER) ; Return an IEN from the NAME and USER
 | 
|---|
| 86 |  N I,IEN S I=""
 | 
|---|
| 87 |  I NAME="" Q 0
 | 
|---|
| 88 |  S IEN=0
 | 
|---|
| 89 |  F  S I=$O(^MAG(2005.87,"B",NAME,I)) Q:'I  D
 | 
|---|
| 90 |  . I $P(^MAG(2005.87,I,1),"^")=USER S IEN=I
 | 
|---|
| 91 |  Q IEN
 | 
|---|
| 92 | DFTFLT(USER) ; Create a Default Filter for user. Or Return Existing.
 | 
|---|
| 93 |  ;  Plus this call, makes sure the Default Filter is valid.
 | 
|---|
| 94 |  ; USER is the IEN in the New Person file
 | 
|---|
| 95 |  ;   default to DUZ if ""
 | 
|---|
| 96 |  N FLTIEN,XIEN
 | 
|---|
| 97 |  S USER=$S($G(USER):USER,1:$G(DUZ))
 | 
|---|
| 98 |  S XIEN=$O(^MAG(2006.18,"AC",USER,"")) Q:XIEN="" 0
 | 
|---|
| 99 |  S FLTIEN=$P($G(^MAG(2006.18,XIEN,"LISTWIN1")),"^",3)
 | 
|---|
| 100 |  I FLTIEN D  Q FLTIEN
 | 
|---|
| 101 |  . I $D(^MAG(2005.87,FLTIEN)) Q  ; Valid filter Quit.
 | 
|---|
| 102 |  . ; Users dflt filter invalid. Set dflt as first private or first public
 | 
|---|
| 103 |  . ;   We dont' create the Admin All, or Clin All a second time.
 | 
|---|
| 104 |  . S FLTIEN=$O(^MAG(2005.87,"C",USER,"")) ; get first private
 | 
|---|
| 105 |  . I 'FLTIEN S FLTIEN=$O(^MAG(2005.87,"D",1,"")) ; return first public
 | 
|---|
| 106 |  . S $P(^MAG(2006.18,XIEN,"LISTWIN1"),"^",3)=FLTIEN
 | 
|---|
| 107 |  . Q
 | 
|---|
| 108 |  ; 
 | 
|---|
| 109 |  ;  Here we'll create Private filters for a user or send first existing 
 | 
|---|
| 110 |  ;  private filter as the default.
 | 
|---|
| 111 |  N MAGADMIN,MAGCLIN,MAGY,MAGX
 | 
|---|
| 112 |  S FLTIEN=$O(^MAG(2005.87,"C",USER,"")) ; get first private
 | 
|---|
| 113 |  I FLTIEN S $P(^MAG(2006.18,XIEN,"LISTWIN1"),"^",3)=FLTIEN Q FLTIEN
 | 
|---|
| 114 |  D CLSKEYS(.MAGADMIN,.MAGCLIN)
 | 
|---|
| 115 |  I MAGADMIN D
 | 
|---|
| 116 |  . ; Create a Filter for All Admin add to IMAGE LIST FILTERS File for this user.
 | 
|---|
| 117 |  . S MAGX(1)="USER^"_USER
 | 
|---|
| 118 |  . S MAGX(2)=".01^Admin All"
 | 
|---|
| 119 |  . S MAGX(3)="2^ADMIN"
 | 
|---|
| 120 |  . D SET^MAGGSFL1(.MAGY,.MAGX)
 | 
|---|
| 121 |  . S FLTIEN=$S(+MAGY:+MAGY,1:"")
 | 
|---|
| 122 |  . Q
 | 
|---|
| 123 |  K MAGY,MAGX
 | 
|---|
| 124 |  I MAGCLIN D
 | 
|---|
| 125 |  . ;Create a Filter for All Clin add to IMAGE LIST FILTERS File for this user.
 | 
|---|
| 126 |  . S MAGX(1)="USER^"_USER
 | 
|---|
| 127 |  . S MAGX(2)=".01^Clinical All"
 | 
|---|
| 128 |  . S MAGX(3)="2^CLIN"
 | 
|---|
| 129 |  . D SET^MAGGSFL1(.MAGY,.MAGX)
 | 
|---|
| 130 |  . S FLTIEN=$S(+MAGY:+MAGY,1:"")
 | 
|---|
| 131 |  . Q
 | 
|---|
| 132 |  Q:'FLTIEN 0
 | 
|---|
| 133 |  S $P(^MAG(2006.18,XIEN,"LISTWIN1"),"^",3)=FLTIEN
 | 
|---|
| 134 |  Q FLTIEN
 | 
|---|