Topic Text   Topic Comments (6)   Topic Properties   Topic Information engmahmoudismail@yah...
Topic title: TestMint Friday March 16, 2012 21:39:25

Download topic text | View in monospace font | Tab width set to 8 (change to 4)

Files in topic:  
[Jump to] DeIdentifyUtil.java   {+527,-0}

[Add General Comment] to topic.

File DeIdentifyUtil.java (Revision 1.0) [Add File Comment] [Top]
 
1 /**
2 * Copyrights: MIAMI project 2012.
3 * Author Mahmoud Ismail (maismail@cs.jhu.edu)
4 */
5 package deidentification;
6
7 import studymodel.Study;
8
9 import org.dcm4che2.data.DicomElement;
10 import org.dcm4che2.data.DicomObject;
11 import org.dcm4che2.data.SequenceDicomElement;
12 import org.dcm4che2.data.SimpleDicomElement;
13 import org.dcm4che2.data.Tag;
14 import org.dcm4che2.data.VR;
15 import org.dcm4che2.util.UIDUtils;
16
17 import java.util.ArrayList;
18 import java.util.HashMap;
19 import java.util.Iterator;
20 import java.util.Map;
21
22 /**
23 * Class provides utilities used for de-Identification.
24 * @author maismail
25 *
26 */
27 public class DeIdentifyUtil {
28 /*
29 * D - replace with nonzero length
30 * Z - replace with zero length or nonzero length
31 * X - remove
32 * K - keep
33 * C - clean
34 * U - replace nonzero UID
35 */
36 public enum ActionCode{
37 D, Z, X, K, C, U, ZD, XZ, XD, XZD, XZU, NONE;
38 }
39
40 public static final Map<Integer, AttributeProfileActions> map =
41 new HashMap<Integer, AttributeProfileActions>(248);
42 // Source: Dicom standard, PS(3.15), Table E.1.1, page65.
43 static {
44 map.put(0x00080050, new AttributeProfileActions(ActionCode.Z,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
45 map.put(0x00184000, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
46 map.put(0x00400555, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE));
47 map.put(0x00080022, new AttributeProfileActions(ActionCode.XZ,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
48 map.put(0x0008002A, new AttributeProfileActions(ActionCode.XD,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
49 map.put(0x00181400, new AttributeProfileActions(ActionCode.XD,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
50 map.put(0x00189424, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
51 map.put(0x00080032, new AttributeProfileActions(ActionCode.XZ,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
52 map.put(0x00404035, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
53 map.put(0x001021B0, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
54 map.put(0x00380010, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
55 map.put(0x00380020, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
56
57 map.put(0x00081084, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
58 map.put(0x00081080, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
59 map.put(0x00380021, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
60 map.put(0x00001000, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
61 map.put(0x00102110, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
62 map.put(0x40000010, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
63 map.put(0x0040A078, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
64 map.put(0x00101081, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
65 map.put(0x00181007, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
66 map.put(0x00400280, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
67 map.put(0x00209161, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
68 map.put(0x00403001, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
69
70 map.put(0x00700084, new AttributeProfileActions(ActionCode.Z,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
71 map.put(0x00700086, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
72 map.put(0x00080023, new AttributeProfileActions(ActionCode.ZD,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
73 map.put(0x0040A730, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE));
74 map.put(0x00080033, new AttributeProfileActions(ActionCode.ZD,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
75 map.put(0x0008010D, new AttributeProfileActions(ActionCode.D,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
76 map.put(0x00180010, new AttributeProfileActions(ActionCode.ZD,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
77 map.put(0x0018A003, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
78 map.put(0x00102150, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
79 map.put(0x00089123, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
80 map.put(0x00380300, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
81 //map.put(0x50XXXXXX, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.c));
82 map.put(0x00080025, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
83 map.put(0x00080035, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
84
85 map.put(0x0040A07C, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
86 map.put(0xFFFCFFFC, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
87 map.put(0x00082111, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
88 map.put(0x0018700A, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
89 map.put(0x00181000, new AttributeProfileActions(ActionCode.XZD,ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
90 map.put(0x00181002, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
91 map.put(0x04000100, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
92 map.put(0xFFFAFFFA, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
93 map.put(0x00209164, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
94 map.put(0x00380040, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
95 map.put(0x4008011A, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
96 map.put(0x40080119, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
97
98 // start here
99 map.put(0x300A0013, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
100 map.put(0x00102160, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
101 map.put(0x00080058, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
102 map.put(0x0070031A, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
103 map.put(0x00402017, new AttributeProfileActions(ActionCode.Z,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
104 map.put(0x00209158, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
105 map.put(0x00200052, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
106 map.put(0x00181008, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
107 map.put(0x00181005, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
108 map.put(0x00700001, new AttributeProfileActions(ActionCode.D,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C));
109 map.put(0x00404037, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
110 map.put(0x00404036, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
111
112 map.put(0x00880200, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
113 map.put(0x00084000, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
114 map.put(0x00204000, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
115 map.put(0x00284000, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
116 map.put(0x00402400, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
117 map.put(0x40080300, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
118 map.put(0x00080014, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
119 map.put(0x00080081, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
120 map.put(0x00080082, new AttributeProfileActions(ActionCode.XZD,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
121 map.put(0x00080080, new AttributeProfileActions(ActionCode.XZD,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
122 map.put(0x00081040, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
123 map.put(0x00101050, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
124
125 map.put(0x00401011, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
126 map.put(0x40080111, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
127 map.put(0x4008010C, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
128 map.put(0x40080115, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
129 map.put(0x40080202, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
130 map.put(0x40080102, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
131 map.put(0x4008010B, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
132 map.put(0x4008010A, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
133 map.put(0x00083010, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
134 map.put(0x00380011, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
135 map.put(0x00100021, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
136
137 map.put(0x00380061, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
138 map.put(0x00281214, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
139 map.put(0x001021D0, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
140 map.put(0x04000404, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
141 map.put(0x00020003, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
142 map.put(0x00102000, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
143 map.put(0x00101090, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
144 map.put(0x00101080, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
145 map.put(0x04000550, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
146 map.put(0x00203406, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
147 map.put(0x00203401, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
148 map.put(0x00203404, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
149
150 map.put(0x00081060, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
151 map.put(0x00401010, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
152 map.put(0x00102180, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
153 map.put(0x00081072, new AttributeProfileActions(ActionCode.XD,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
154 map.put(0x00081070, new AttributeProfileActions(ActionCode.XZD,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
155 map.put(0x04000561, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
156 map.put(0x00402010, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
157 map.put(0x00402008, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
158 map.put(0x00402009, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
159 map.put(0x00101000, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
160 map.put(0x00101002, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
161 map.put(0x00101001, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
162
163 //map.put(0x60xx4000, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C));
164 //map.put(0x60xx3000, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C));
165 map.put(0x00080024, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
166 map.put(0x00080034, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
167 map.put(0x00281199, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
168 map.put(0x0040A07A, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
169 map.put(0x00101040, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
170 map.put(0x00104000, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
171 map.put(0x00100020, new AttributeProfileActions(ActionCode.Z,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
172 map.put(0x00102203, new AttributeProfileActions(ActionCode.XZ,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
173 map.put(0x00380500, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
174 map.put(0x00401004, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
175 map.put(0x00101010, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
176 map.put(0x00100030, new AttributeProfileActions(ActionCode.Z,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
177 map.put(0x00101005, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
178 map.put(0x00100032, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
179
180 map.put(0x00380400, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
181 map.put(0x00100050, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
182 map.put(0x00101060, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
183 map.put(0x00100010, new AttributeProfileActions(ActionCode.Z,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
184 map.put(0x00100101, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
185 map.put(0x00100102, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
186 map.put(0x001021F0, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
187 map.put(0x00100040, new AttributeProfileActions(ActionCode.Z,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
188 map.put(0x00101020, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
189 map.put(0x00102154, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
190 map.put(0x00101030, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
191 map.put(0x00400243, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
192
193 map.put(0x00400254, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
194 map.put(0x00400253, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
195 map.put(0x00400244, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
196 map.put(0x00400245, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
197 map.put(0x00400241, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
198 map.put(0x00404030, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
199 map.put(0x00400242, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
200 map.put(0x00400248, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
201 map.put(0x00081052, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
202
203 map.put(0x00081050, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
204 map.put(0x00401102, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
205 map.put(0x00401101, new AttributeProfileActions(ActionCode.D,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
206 map.put(0x0040A123, new AttributeProfileActions(ActionCode.D,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
207 map.put(0x00401103, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
208 map.put(0x40080114, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
209 map.put(0x00081062, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
210 map.put(0x00081048, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
211 map.put(0x00081049, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
212 map.put(0x00402016, new AttributeProfileActions(ActionCode.Z,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
213
214 map.put(0x00181004, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
215 map.put(0x00400012, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
216 map.put(0x001021C0, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
217 // Any private attribute.
218 //map.put(0xggggeeee, new AttributeProfileActions(ActionCode.XD,ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
219 map.put(0x00181030, new AttributeProfileActions(ActionCode.XD,ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
220 map.put(0x00402001, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
221 map.put(0x00321030, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
222 map.put(0x04000402, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
223 map.put(0x30060024, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
224 map.put(0x00404023, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
225 map.put(0x00081140, new AttributeProfileActions(ActionCode.XZU,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
226
227 map.put(0x00381234, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
228 map.put(0x00081120, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.X, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
229 map.put(0x00081111, new AttributeProfileActions(ActionCode.XZD,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
230 map.put(0x04000403, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
231 map.put(0x00081155, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
232 map.put(0x00041511, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
233 map.put(0x00081110, new AttributeProfileActions(ActionCode.XZ,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
234 map.put(0x00080092, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
235 map.put(0x00080096, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
236
237 map.put(0x00080090, new AttributeProfileActions(ActionCode.Z,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
238 map.put(0x00080094, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
239 map.put(0x00102152, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
240 map.put(0x300600C2, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
241 map.put(0x00400275, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
242 map.put(0x00321070, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
243 map.put(0x00401400, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
244 map.put(0x00321060, new AttributeProfileActions(ActionCode.XZ,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
245 map.put(0x00401001, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
246 map.put(0x00401005, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
247
248 map.put(0x00001001, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
249 map.put(0x00321032, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
250 map.put(0x00321033, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
251 map.put(0x00102299, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
252 map.put(0x00102297, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
253 map.put(0x40084000, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
254 map.put(0x40080118, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
255 map.put(0x40080042, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
256 map.put(0x300E0008, new AttributeProfileActions(ActionCode.XZ,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
257 map.put(0x00404034, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
258 map.put(0x0038001E, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
259
260 map.put(0x0040000B, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
261 map.put(0x00400006, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
262 map.put(0x00400004, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
263 map.put(0x00400005, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
264 map.put(0x00400007, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
265 map.put(0x00400011, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
266 map.put(0x00400002, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
267 map.put(0x00400003, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
268
269 map.put(0x00400001, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
270 map.put(0x00404027, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
271 map.put(0x00400010, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
272 map.put(0x00404025, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
273 map.put(0x00321020, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
274 map.put(0x00321021, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
275 map.put(0x00080021, new AttributeProfileActions(ActionCode.XD,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
276 map.put(0x0008103E, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
277 map.put(0x0020000E, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
278 map.put(0x00080031, new AttributeProfileActions(ActionCode.XD,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
279 map.put(0x00380062, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
280 map.put(0x00380060, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
281 map.put(0x001021A0, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
282 map.put(0x00080018, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
283
284 map.put(0x00082112, new AttributeProfileActions(ActionCode.XZU,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
285 map.put(0x00380050, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
286 map.put(0x00081010, new AttributeProfileActions(ActionCode.XZU,ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
287 map.put(0x00880140, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
288 map.put(0x00324000, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
289 map.put(0x00080020, new AttributeProfileActions(ActionCode.Z,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
290 map.put(0x00081030, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
291 map.put(0x00200010, new AttributeProfileActions(ActionCode.Z,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
292 map.put(0x00320012, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
293 map.put(0x0020000D, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
294 map.put(0x00080030, new AttributeProfileActions(ActionCode.Z,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
295 map.put(0x00200200, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
296 map.put(0x0040DB0D, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
297 map.put(0x0040DB0C, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
298 map.put(0x40004000, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
299
300 map.put(0x20300020, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
301 map.put(0x00080201, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.K, ActionCode.C, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
302 map.put(0x00880910, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
303 map.put(0x00880912, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
304 map.put(0x00880906, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
305 map.put(0x00880904, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
306 map.put(0x00081195, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.K, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
307 map.put(0x0040A124, new AttributeProfileActions(ActionCode.U,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
308 map.put(0x0040A088, new AttributeProfileActions(ActionCode.Z,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
309 map.put(0x0040A075, new AttributeProfileActions(ActionCode.D,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
310 map.put(0x0040A073, new AttributeProfileActions(ActionCode.D,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
311 map.put(0x0040A027, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE));
312 map.put(0x00384000, new AttributeProfileActions(ActionCode.X,ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.C, ActionCode.NONE, ActionCode.NONE));
313
314 }
315
316 /**
317 * Gets the actions associated with certain tag as defined by the de-identification standard.
318 * @param tag
319 * @return
320 */
321 public static AttributeProfileActions getAttributeActions(final int tag) {
322 // If the tag belongs to the range of tags reserved for curve data or overlay data
323 if (isCurveOverlayData (tag)) {
324 return new AttributeProfileActions(ActionCode.X, ActionCode.NONE, ActionCode.NONE,
325 ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE, ActionCode.NONE,
326 ActionCode.NONE, ActionCode.C);
327 }
328 return map.get(tag);
329 }
330
331 /**
332 * Applies the K action (Keep) as defined by the Dicom de-identification standard
333 * The action keeps the simple attributes without changes and recursively applies the
334 * profile rules to each element in each Item of the Sequence attributes.
335 * @param dcmElem, the dicom element to be de-identified.
336 * @return the dicom element after replacing the contents with a zero length value
337 */
338 public static void apply_K_Action (final DicomElement dcmElem,
339 final AttributeProfileActions actions, final StudyProfileOptions options,
340 final DicomObject parentObject) {
341 // The first call for this function should have an input dicomelement with a VR value
342 // equals SQ and parent dicom object = null
343 // Other recursive calls, have to have a parent dicom object does not equal to null.
344 if (dcmElem.vr() == VR.SQ) {
345 for (int i = 0; i < dcmElem.countItems(); i++) {
346 DicomObject childObj = dcmElem.getDicomObject(i);
347 /* Add Attributes */
348 for (Iterator<DicomElement> iter = childObj.iterator(0x00020000, 0xffffffff);
349 iter.hasNext();) {
350 DicomElement childElem = iter.next();
351 AttributeProfileActions newActions = DeIdentifyUtil.getAttributeActions(childElem.tag());
352 if (newActions != null) {
353 apply_K_Action(childElem, newActions, options, childObj );
354 }
355 }
356 // may be the recursive calls delete the dicom elements within the childobj
357 if (childObj.isEmpty()) {
358 dcmElem.removeDicomObject(childObj);
359 }
360 }
361 } else {
362 ActionCode action = DeIdentifyUtil.GetAction(actions, options);
363 switch (action) {
364 case X:
365 case XZ:
366 case XD:
367 case XZU:
368 case XZD:
369 // removes it from the list of children of the parent Dicom element
370 parentObject.remove(dcmElem.tag());
371 break;
372
373 case U:
374 DicomElement updatedElem = DeIdentifyUtil.changeUID(dcmElem, UIDUtils.createUID());
375 parentObject.remove(dcmElem.tag());
376 parentObject.add(updatedElem);
377 break;
378
379 case Z:
380 case ZD:
381 DicomElement zeroLengthElement = apply_Z_Action(dcmElem);
382 parentObject.remove(dcmElem.tag());
383 parentObject.add(zeroLengthElement);
384 break;
385
386 case K:
387 // do nothing
388 break;
389
390 case D:
391 case C:
392 default:
393 break;
394 }
395 }
396 }
397
398 /**
399 * Applies the Z action (replace with a zero length value) as defined by
400 * the Dicom de-identification standard,
401 * @param dcmElem, the dicom element to be de-identified.
402 * @return the dicom element after replacing the contents with a zero length value
403 */
404 public static DicomElement apply_Z_Action(final DicomElement dcmElem) {
405 // Replaces the DicomElement value with a zero value
406 if (dcmElem.vr() != VR.SQ) {
407 return new SimpleDicomElement(dcmElem.tag(), dcmElem.vr(), dcmElem.bigEndian(), null, null);
408 } else {
409 DicomElement sDicomElement = new SequenceDicomElement(dcmElem.tag(), VR.SQ,
410 dcmElem.bigEndian(), new ArrayList<Object>(), null);
411 for (int i = 0; i < dcmElem.countItems(); i++) {
412 DicomObject childObj = dcmElem.getDicomObject(i);
413 /* Add Attributes */
414 for (Iterator<DicomElement> iter = childObj.iterator(0x00020000, 0xffffffff);
415 iter.hasNext();) {
416 childObj.add(apply_Z_Action(iter.next()));
417 }
418 sDicomElement.addDicomObject(childObj);
419 }
420 return sDicomElement;
421 }
422 }
423
424 /**
425 * Creates a new dicom element with the same tag and vr as the input dicom element
426 * but with a value equals to newUID.
427 * @param dcmElem, input dicom element to be copied.
428 * @param newUID, the new dicom element value.
429 * @return DicomElement.
430 */
431 public static DicomElement changeUID (final DicomElement dcmElem, String newUID) {
432 // All tags of UID dicom elements have a VR equals to non SQ "sequence" value
433 return new SimpleDicomElement(
434 dcmElem.tag(), dcmElem.vr(), dcmElem.bigEndian(), newUID.getBytes(), null);
435 }
436
437 /**
438 * Determines which action should be applied given chosen profile options
439 * @param profileActions, profile actions associated with a certain dicom element to be de-identified.
440 * The actions are defined by the DICOM de-identification standard.
441 * @param profileOptions, profile options associated with the study
442 * @return the appropiate action to be applied.
443 */
444 public static ActionCode GetAction( AttributeProfileActions profileActions,
445 StudyProfileOptions profileOptions) {
446 if (profileOptions.isRetainDeviceIdentOption &&
447 profileActions.retainDeviceIdentAction == ActionCode.K ||
448 profileOptions.isRetainLongFullDatesOption &&
449 profileActions.retainLongFullDatesAction == ActionCode.K ||
450 profileOptions.isRetainLongModifiedDatesOption &&
451 profileActions.retainLongModifiedDatesAction == ActionCode.K ||
452 profileOptions.isRetainPatientCharsOption &&
453 profileActions.retainPatientCharsAction == ActionCode.K ||
454 profileOptions.isRetainUIDsOption &&
455 profileActions.retainUIDsAction == ActionCode.K ||
456 profileOptions.isRetainSafePrivateOption &&
457 profileActions.retainSafePrivateAction == ActionCode.K) {
458 return ActionCode.K;
459 } else {
460 return profileActions.basicAction;
461 }
462 }
463
464
465 /**
466 * Detemines weather a tag is a private tag or not. The function checks the group number.
467 * If it is odd, the tag is private.
468 * @param tag, input tag to be checked
469 * @return boolean, result of the check
470 */
471 public static boolean isPrivateTag(final int tag) {
472 /*Converts the tag to Hexadecimal*/
473 String hexTag = Integer.toHexString(tag);
474 /*Adds zero paddings such that the number is expressed using 8 digits*/
475 String zeros = "";
476 for (int numberZeroPaddings = 8 - hexTag.length();
477 numberZeroPaddings >0; numberZeroPaddings--) {
478 zeros += '0';
479 }
480 hexTag = zeros + hexTag;
481 String groupNumberStr = hexTag.substring(0,3);
482 // Checks if the group number is odd or not.
483 return (Integer.parseInt(groupNumberStr) %2 == 0) ? false : true;
484 }
485
486 /**
487 * Determines weather a tag belongs to the range of tags associated with curve or overlay data or not.
488 * @param tag, input tag to be checked
489 * @return boolean, result of the check
490 */
491 private static boolean isCurveOverlayData(final int tag) {
492 /*Convert to Hexadecimal*/
493 String hexTag = Integer.toHexString(tag);
494 /*Adds zero paddings such that the number is expressed using 8 digits*/
495 String zeros = "";
496 for (int numberZeroPaddings = 8 - hexTag.length();
497 numberZeroPaddings >0; numberZeroPaddings--) {
498 zeros += '0';
499 }
500 hexTag = zeros + hexTag;
501 int groupNumberStr = Integer.valueOf(hexTag.substring(0,3), 16);
502 int elementNumber = Integer.valueOf(hexTag.substring(4,7), 16);
503 // Check for curve data range of values
504 if (groupNumberStr >= 0x5000 && groupNumberStr < 0x6000) {
505 return true;
506 }
507 // Check for overlay range of values
508 if (groupNumberStr >= 0x6000 && groupNumberStr < 0x7000) {
509 if (elementNumber == 0x4000 || elementNumber == 0x3000) {
510 return true;
511 }
512 }
513 return false;
514 }
515
516 /**
517 * Adds the necessary attributes to label a study as a de-identified a study.
518 * @param study, input study to be labeled as a de-identified study
519 * @param pOptions, the options used for de-identfying the study.
520 */
521 public static void addDeIdentifyInfo(final Study study, final StudyProfileOptions pOptions) {
522 study.removeAttribute(Tag.PatientIdentityRemoved);
523 study.putAttribute(
524 new SimpleDicomElement(Tag.PatientIdentityRemoved, VR.CS, false, "YES".getBytes(), null));
525 }
526
527 }
 
  
Legend:
Removed 
Changed
 Added

[Add General Comment] to topic.