| 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 | 
|---|