001package ca.uhn.hl7v2.conf.spec.message;
002
003import ca.uhn.hl7v2.conf.ProfileException;
004import ca.uhn.hl7v2.conf.spec.MetaData;
005
006
007/**
008 * <p>A "static message profile" (see HL7 2.5 section 2.12).  Message profiles are 
009 * a precise method of documenting message constraints, using a standard XML syntax 
010 * defined by HL7 (introduced in version 2.5).  XML message profiles define
011 * constraints on message content and structure in a well-defined manner, so that 
012 * the conformance of a certain message to a certain profile can be tested automatically.  
013 * There are several types of profiles: 
014 * <ul><li>HL7 Profiles - the standard messages (relatively loosely constrained)</li>
015 * <li>Implementable Profiles - profiles with additional constraints such that all optionality 
016 *      has been removed (e.g. optional fields marked as "required" or "not supported").   
017 * <li>Constrainable Profiles - any profile with optionality that can be further constrained.</li></ul>
018 * Thus profiles can constrain other profiles.  A typical case would be for a country to create a 
019 * constrainable profile based on an HL7 profile, for a vendor to create a different constrainable 
020 * profile based on the same HL7 profile, and for a hospital to create an implementable profile for 
021 * a particular implementation that constrains both.  </p>
022 * <p>The MessageProfile class is a parsed object representation of the XML profile.</p>
023 * @author Bryan Tripp
024 */
025public class StaticDef extends AbstractSegmentContainer {
026    
027    private MetaData metaData; 
028    private String msgType;
029    private String eventType;
030    private String msgStructID;
031    private String orderControl;
032    private String eventDesc;
033    private String identifier;
034    private String role;
035    
036    /** Utility field used by bound properties. */
037    private java.beans.PropertyChangeSupport propertyChangeSupport =  new java.beans.PropertyChangeSupport(this);
038    
039    /** Utility field used by constrained properties. */
040    private java.beans.VetoableChangeSupport vetoableChangeSupport =  new java.beans.VetoableChangeSupport(this);
041    
042    /** Creates a new instance of MessageProfile */
043    public StaticDef() {
044    }
045    
046    /** Adds a PropertyChangeListener to the listener list.
047     * @param l The listener to add.
048     */
049    public void addPropertyChangeListener(java.beans.PropertyChangeListener l) {
050        propertyChangeSupport.addPropertyChangeListener(l);
051    }    
052    
053    /** Removes a PropertyChangeListener from the listener list.
054     * @param l The listener to remove.
055     */
056    public void removePropertyChangeListener(java.beans.PropertyChangeListener l) {
057        propertyChangeSupport.removePropertyChangeListener(l);
058    }
059    
060    /** Adds a VetoableChangeListener to the listener list.
061     * @param l The listener to add.
062     */
063    public void addVetoableChangeListener(java.beans.VetoableChangeListener l) {
064        vetoableChangeSupport.addVetoableChangeListener(l);
065    }
066    
067    /** Removes a VetoableChangeListener from the listener list.
068     * @param l The listener to remove.
069     */
070    public void removeVetoableChangeListener(java.beans.VetoableChangeListener l) {
071        vetoableChangeSupport.removeVetoableChangeListener(l);
072    }
073    
074    /** Getter for property metaData.
075     * @return Value of property metaData.
076     */
077    public MetaData getMetaData() {
078        return this.metaData;
079    }
080    
081    /** Setter for property metaData.
082     * @param msgType New value of property metaData.
083     *
084     * @throws ProfileException
085     */
086    public void setMetaData(MetaData metaData) throws ProfileException {
087        MetaData oldMetaData = this.metaData;
088        try {
089            vetoableChangeSupport.fireVetoableChange("metaData", oldMetaData, metaData);
090        } catch (Exception e) {
091            throw new ProfileException(null, e);
092        }
093        this.metaData = metaData;
094        propertyChangeSupport.firePropertyChange("metaData", oldMetaData, metaData);
095    }
096    
097    /** Getter for property msgType.
098     * @return Value of property msgType.
099     */
100    public String getMsgType() {
101        return this.msgType;
102    }
103    
104    /** Setter for property msgType.
105     * @param msgType New value of property msgType.
106     *
107     * @throws ProfileException
108     */
109    public void setMsgType(String msgType) throws ProfileException {
110        String oldMsgType = this.msgType;
111        try {
112            vetoableChangeSupport.fireVetoableChange("msgType", oldMsgType, msgType);
113        } catch (Exception e) {
114            throw new ProfileException(null, e);
115        }
116        this.msgType = msgType;
117        propertyChangeSupport.firePropertyChange("msgType", oldMsgType, msgType);
118    }
119    
120    /** Getter for property eventType.
121     * @return Value of property eventType.
122     */
123    public String getEventType() {
124        return this.eventType;
125    }
126    
127    /** Setter for property eventType.
128     * @param eventType New value of property eventType.
129     *
130     * @throws ProfileException
131     */
132    public void setEventType(String eventType) throws ProfileException {
133        String oldEventType = this.eventType;
134        try {
135            vetoableChangeSupport.fireVetoableChange("eventType", oldEventType, eventType);
136        } catch (Exception e) {
137            throw new ProfileException(null, e);
138        }
139        this.eventType = eventType;
140        propertyChangeSupport.firePropertyChange("eventType", oldEventType, eventType);
141    }
142    
143    /** Getter for property msgStructID.
144     * @return Value of property msgStructID.
145     */
146    public String getMsgStructID() {
147        return this.msgStructID;
148    }
149    
150    /** Setter for property msgStructID.
151     * @param msgStructID New value of property msgStructID.
152     *
153     * @throws ProfileException
154     */
155    public void setMsgStructID(String msgStructID) throws ProfileException {
156        String oldMsgStructID = this.msgStructID;
157        try {
158            vetoableChangeSupport.fireVetoableChange("msgStructID", oldMsgStructID, msgStructID);
159        } catch (Exception e) {
160            throw new ProfileException(null, e);
161        }
162        this.msgStructID = msgStructID;
163        propertyChangeSupport.firePropertyChange("msgStructID", oldMsgStructID, msgStructID);
164    }
165    
166    /** Getter for property orderControl.
167     * @return Value of property orderControl.
168     */
169    public String getOrderControl() {
170        return this.orderControl;
171    }
172    
173    /** Setter for property orderControl.
174     * @param orderControl New value of property orderControl.
175     *
176     * @throws ProfileException
177     */
178    public void setOrderControl(String orderControl) throws ProfileException {
179        String oldOrderControl = this.orderControl;
180        try {
181            vetoableChangeSupport.fireVetoableChange("orderControl", oldOrderControl, orderControl);
182        } catch (Exception e) {
183            throw new ProfileException(null, e);
184        }
185        this.orderControl = orderControl;
186        propertyChangeSupport.firePropertyChange("orderControl", oldOrderControl, orderControl);
187    }
188    
189    /** Getter for property eventDesc.
190     * @return Value of property eventDesc.
191     */
192    public String getEventDesc() {
193        return this.eventDesc;
194    }
195    
196    /** Setter for property eventDesc.
197     * @param eventDesc New value of property eventDesc.
198     *
199     * @throws ProfileException
200     */
201    public void setEventDesc(String eventDesc) throws ProfileException {
202        String oldEventDesc = this.eventDesc;
203        try {
204            vetoableChangeSupport.fireVetoableChange("eventDesc", oldEventDesc, eventDesc);
205        } catch (Exception e) {
206            throw new ProfileException(null, e);
207        }
208        this.eventDesc = eventDesc;
209        propertyChangeSupport.firePropertyChange("eventDesc", oldEventDesc, eventDesc);
210    }
211    
212    /** Getter for property identifier.
213     * @return Value of property identifier.
214     */
215    public String getIdentifier() {
216        return this.identifier;
217    }
218    
219    /** Setter for property identifier.
220     * @param eventDesc New value of property identifier.
221     *
222     * @throws ProfileException
223     */
224    public void setIdentifier(String identifier) throws ProfileException {
225        String oldIdentifier = this.identifier;
226        try {
227            vetoableChangeSupport.fireVetoableChange("identifier", oldIdentifier, identifier);
228        } catch (Exception e) {
229            throw new ProfileException(null, e);
230        }
231        this.identifier = identifier;
232        propertyChangeSupport.firePropertyChange("identifier", oldIdentifier, identifier);
233    }
234    
235    /** Getter for property role.
236     * @return Value of property role.
237     */
238    public String getRole() {
239        return this.role;
240    }
241    
242    /** Setter for property role.
243     * @param eventDesc New value of property role.
244     *
245     * @throws ProfileException
246     */
247    public void setRole(String role) throws ProfileException {
248        String oldRole = this.role;
249        try {
250            vetoableChangeSupport.fireVetoableChange("role", oldRole, role);
251        } catch (Exception e) {
252            throw new ProfileException(null, e);
253        }
254        this.role = role;
255        propertyChangeSupport.firePropertyChange("role", oldRole, role);
256    }
257    
258}