001/*
002 * This class is an auto-generated source file for a HAPI
003 * HL7 v2.x standard structure class.
004 *
005 * For more information, visit: http://hl7api.sourceforge.net/
006 * 
007 * The contents of this file are subject to the Mozilla Public License Version 1.1 
008 * (the "License"); you may not use this file except in compliance with the License. 
009 * You may obtain a copy of the License at http://www.mozilla.org/MPL/ 
010 * Software distributed under the License is distributed on an "AS IS" basis, 
011 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the 
012 * specific language governing rights and limitations under the License. 
013 * 
014 * The Original Code is "[file_name]".  Description: 
015 * "[one_line_description]" 
016 * 
017 * The Initial Developer of the Original Code is University Health Network. Copyright (C) 
018 * 2012.  All Rights Reserved. 
019 * 
020 * Contributor(s): ______________________________________. 
021 * 
022 * Alternatively, the contents of this file may be used under the terms of the 
023 * GNU General Public License (the  "GPL"), in which case the provisions of the GPL are 
024 * applicable instead of those above.  If you wish to allow use of your version of this 
025 * file only under the terms of the GPL and not to allow others to use your version 
026 * of this file under the MPL, indicate your decision by deleting  the provisions above 
027 * and replace  them with the notice and other provisions required by the GPL License.  
028 * If you do not delete the provisions above, a recipient may use your version of 
029 * this file under either the MPL or the GPL. 
030 * 
031 */
032
033
034package ca.uhn.hl7v2.model.v27.group;
035
036import ca.uhn.hl7v2.model.v27.segment.*;
037
038import ca.uhn.hl7v2.HL7Exception;
039import ca.uhn.hl7v2.parser.ModelClassFactory;
040import ca.uhn.hl7v2.model.*;
041
042/**
043 * <p>Represents a EHC_E01_PRODUCT_SERVICE_GROUP group structure (a Group object).
044 * A Group is an ordered collection of message segments that can repeat together or be optionally in/excluded together.
045 * This Group contains the following elements:  
046 * </p>
047 * <ul>
048                         * <li>1: PSG (Product/Service Group) <b>  choice</b></li>
049                         * <li>2: LOC (Location Identification) <b>optional repeating choice</b></li>
050                         * <li>3: ROL (Role) <b>optional repeating choice</b></li>
051                         * <li>4: EHC_E01_PATIENT_INFO (a Group object) <b>optional repeating </b></li>
052                         * <li>5: EHC_E01_PRODUCT_SERVICE_LINE_ITEM (a Group object) <b> repeating </b></li>
053                         * <li>6: EHC_E01_PROCEDURE (a Group object) <b>optional repeating </b></li>
054                         * <li>7: EHC_E01_INVOICE_PROCESSING (a Group object) <b>optional repeating </b></li>
055 * </ul>
056 * <p>
057 * Note that this structure has "choice" elements. This means that one of the 
058 * structures above marked as "choice" must be present, but no more than one.
059 * </p> 
060 */
061//@SuppressWarnings("unused")
062public class EHC_E01_PRODUCT_SERVICE_GROUP extends AbstractGroup {
063
064    /** 
065     * Creates a new EHC_E01_PRODUCT_SERVICE_GROUP group
066     */
067    public EHC_E01_PRODUCT_SERVICE_GROUP(Group parent, ModelClassFactory factory) {
068       super(parent, factory);
069       init(factory);
070    }
071
072    private void init(ModelClassFactory factory) {
073       try {
074                                  this.add(PSG.class, true, false, true);
075                                  this.add(LOC.class, false, true, true);
076                                  this.add(ROL.class, false, true, true);
077                                  this.add(EHC_E01_PATIENT_INFO.class, false, true, false);
078                                  this.add(EHC_E01_PRODUCT_SERVICE_LINE_ITEM.class, true, true, false);
079                                  this.add(EHC_E01_PROCEDURE.class, false, true, false);
080                                  this.add(EHC_E01_INVOICE_PROCESSING.class, false, true, false);
081       } catch(HL7Exception e) {
082          log.error("Unexpected error creating EHC_E01_PRODUCT_SERVICE_GROUP - this is probably a bug in the source code generator.", e);
083       }
084    }
085
086    /** 
087     * Returns "2.7"
088     */
089    public String getVersion() {
090       return "2.7";
091    }
092
093
094
095    /**
096     * Returns
097     * PSG (Product/Service Group) - creates it if necessary
098     */
099    public PSG getPSG() { 
100       PSG retVal = getTyped("PSG", PSG.class);
101       return retVal;
102    }
103
104
105
106
107    /**
108     * Returns
109     * the first repetition of 
110     * LOC (Location Identification) - creates it if necessary
111     */
112    public LOC getLOC() { 
113       LOC retVal = getTyped("LOC", LOC.class);
114       return retVal;
115    }
116
117
118    /**
119     * Returns a specific repetition of
120     * LOC (Location Identification) - creates it if necessary
121     *
122     * @param rep The repetition index (0-indexed, i.e. the first repetition is at index 0)
123     * @throws HL7Exception if the repetition requested is more than one 
124     *     greater than the number of existing repetitions.
125     */
126    public LOC getLOC(int rep) { 
127       LOC retVal = getTyped("LOC", rep, LOC.class);
128       return retVal;
129    }
130
131    /** 
132     * Returns the number of existing repetitions of LOC 
133     */ 
134    public int getLOCReps() {  
135        return getReps("LOC");
136    } 
137
138    /** 
139     * <p>
140     * Returns a non-modifiable List containing all current existing repetitions of LOC.
141     * <p>
142     * <p>
143     * Note that unlike {@link #getLOC()}, this method will not create any reps
144     * if none are already present, so an empty list may be returned.
145     * </p>
146     */ 
147    public java.util.List<LOC> getLOCAll() throws HL7Exception {
148        return getAllAsList("LOC", LOC.class);
149    } 
150
151    /**
152     * Inserts a specific repetition of LOC (Location Identification)
153     * @see AbstractGroup#insertRepetition(Structure, int) 
154     */
155    public void insertLOC(LOC structure, int rep) throws HL7Exception { 
156       super.insertRepetition("LOC", structure, rep);
157    }
158
159
160    /**
161     * Inserts a specific repetition of LOC (Location Identification)
162     * @see AbstractGroup#insertRepetition(Structure, int) 
163     */
164    public LOC insertLOC(int rep) throws HL7Exception { 
165       return (LOC)super.insertRepetition("LOC", rep);
166    }
167
168
169    /**
170     * Removes a specific repetition of LOC (Location Identification)
171     * @see AbstractGroup#removeRepetition(String, int) 
172     */
173    public LOC removeLOC(int rep) throws HL7Exception { 
174       return (LOC)super.removeRepetition("LOC", rep);
175    }
176
177
178
179    /**
180     * Returns
181     * the first repetition of 
182     * ROL (Role) - creates it if necessary
183     */
184    public ROL getROL() { 
185       ROL retVal = getTyped("ROL", ROL.class);
186       return retVal;
187    }
188
189
190    /**
191     * Returns a specific repetition of
192     * ROL (Role) - creates it if necessary
193     *
194     * @param rep The repetition index (0-indexed, i.e. the first repetition is at index 0)
195     * @throws HL7Exception if the repetition requested is more than one 
196     *     greater than the number of existing repetitions.
197     */
198    public ROL getROL(int rep) { 
199       ROL retVal = getTyped("ROL", rep, ROL.class);
200       return retVal;
201    }
202
203    /** 
204     * Returns the number of existing repetitions of ROL 
205     */ 
206    public int getROLReps() {  
207        return getReps("ROL");
208    } 
209
210    /** 
211     * <p>
212     * Returns a non-modifiable List containing all current existing repetitions of ROL.
213     * <p>
214     * <p>
215     * Note that unlike {@link #getROL()}, this method will not create any reps
216     * if none are already present, so an empty list may be returned.
217     * </p>
218     */ 
219    public java.util.List<ROL> getROLAll() throws HL7Exception {
220        return getAllAsList("ROL", ROL.class);
221    } 
222
223    /**
224     * Inserts a specific repetition of ROL (Role)
225     * @see AbstractGroup#insertRepetition(Structure, int) 
226     */
227    public void insertROL(ROL structure, int rep) throws HL7Exception { 
228       super.insertRepetition("ROL", structure, rep);
229    }
230
231
232    /**
233     * Inserts a specific repetition of ROL (Role)
234     * @see AbstractGroup#insertRepetition(Structure, int) 
235     */
236    public ROL insertROL(int rep) throws HL7Exception { 
237       return (ROL)super.insertRepetition("ROL", rep);
238    }
239
240
241    /**
242     * Removes a specific repetition of ROL (Role)
243     * @see AbstractGroup#removeRepetition(String, int) 
244     */
245    public ROL removeROL(int rep) throws HL7Exception { 
246       return (ROL)super.removeRepetition("ROL", rep);
247    }
248
249
250
251    /**
252     * Returns
253     * the first repetition of 
254     * PATIENT_INFO (a Group object) - creates it if necessary
255     */
256    public EHC_E01_PATIENT_INFO getPATIENT_INFO() { 
257       EHC_E01_PATIENT_INFO retVal = getTyped("PATIENT_INFO", EHC_E01_PATIENT_INFO.class);
258       return retVal;
259    }
260
261
262    /**
263     * Returns a specific repetition of
264     * PATIENT_INFO (a Group object) - creates it if necessary
265     *
266     * @param rep The repetition index (0-indexed, i.e. the first repetition is at index 0)
267     * @throws HL7Exception if the repetition requested is more than one 
268     *     greater than the number of existing repetitions.
269     */
270    public EHC_E01_PATIENT_INFO getPATIENT_INFO(int rep) { 
271       EHC_E01_PATIENT_INFO retVal = getTyped("PATIENT_INFO", rep, EHC_E01_PATIENT_INFO.class);
272       return retVal;
273    }
274
275    /** 
276     * Returns the number of existing repetitions of PATIENT_INFO 
277     */ 
278    public int getPATIENT_INFOReps() {  
279        return getReps("PATIENT_INFO");
280    } 
281
282    /** 
283     * <p>
284     * Returns a non-modifiable List containing all current existing repetitions of PATIENT_INFO.
285     * <p>
286     * <p>
287     * Note that unlike {@link #getPATIENT_INFO()}, this method will not create any reps
288     * if none are already present, so an empty list may be returned.
289     * </p>
290     */ 
291    public java.util.List<EHC_E01_PATIENT_INFO> getPATIENT_INFOAll() throws HL7Exception {
292        return getAllAsList("PATIENT_INFO", EHC_E01_PATIENT_INFO.class);
293    } 
294
295    /**
296     * Inserts a specific repetition of PATIENT_INFO (a Group object)
297     * @see AbstractGroup#insertRepetition(Structure, int) 
298     */
299    public void insertPATIENT_INFO(EHC_E01_PATIENT_INFO structure, int rep) throws HL7Exception { 
300       super.insertRepetition("PATIENT_INFO", structure, rep);
301    }
302
303
304    /**
305     * Inserts a specific repetition of PATIENT_INFO (a Group object)
306     * @see AbstractGroup#insertRepetition(Structure, int) 
307     */
308    public EHC_E01_PATIENT_INFO insertPATIENT_INFO(int rep) throws HL7Exception { 
309       return (EHC_E01_PATIENT_INFO)super.insertRepetition("PATIENT_INFO", rep);
310    }
311
312
313    /**
314     * Removes a specific repetition of PATIENT_INFO (a Group object)
315     * @see AbstractGroup#removeRepetition(String, int) 
316     */
317    public EHC_E01_PATIENT_INFO removePATIENT_INFO(int rep) throws HL7Exception { 
318       return (EHC_E01_PATIENT_INFO)super.removeRepetition("PATIENT_INFO", rep);
319    }
320
321
322
323    /**
324     * Returns
325     * the first repetition of 
326     * PRODUCT_SERVICE_LINE_ITEM (a Group object) - creates it if necessary
327     */
328    public EHC_E01_PRODUCT_SERVICE_LINE_ITEM getPRODUCT_SERVICE_LINE_ITEM() { 
329       EHC_E01_PRODUCT_SERVICE_LINE_ITEM retVal = getTyped("PRODUCT_SERVICE_LINE_ITEM", EHC_E01_PRODUCT_SERVICE_LINE_ITEM.class);
330       return retVal;
331    }
332
333
334    /**
335     * Returns a specific repetition of
336     * PRODUCT_SERVICE_LINE_ITEM (a Group object) - creates it if necessary
337     *
338     * @param rep The repetition index (0-indexed, i.e. the first repetition is at index 0)
339     * @throws HL7Exception if the repetition requested is more than one 
340     *     greater than the number of existing repetitions.
341     */
342    public EHC_E01_PRODUCT_SERVICE_LINE_ITEM getPRODUCT_SERVICE_LINE_ITEM(int rep) { 
343       EHC_E01_PRODUCT_SERVICE_LINE_ITEM retVal = getTyped("PRODUCT_SERVICE_LINE_ITEM", rep, EHC_E01_PRODUCT_SERVICE_LINE_ITEM.class);
344       return retVal;
345    }
346
347    /** 
348     * Returns the number of existing repetitions of PRODUCT_SERVICE_LINE_ITEM 
349     */ 
350    public int getPRODUCT_SERVICE_LINE_ITEMReps() {  
351        return getReps("PRODUCT_SERVICE_LINE_ITEM");
352    } 
353
354    /** 
355     * <p>
356     * Returns a non-modifiable List containing all current existing repetitions of PRODUCT_SERVICE_LINE_ITEM.
357     * <p>
358     * <p>
359     * Note that unlike {@link #getPRODUCT_SERVICE_LINE_ITEM()}, this method will not create any reps
360     * if none are already present, so an empty list may be returned.
361     * </p>
362     */ 
363    public java.util.List<EHC_E01_PRODUCT_SERVICE_LINE_ITEM> getPRODUCT_SERVICE_LINE_ITEMAll() throws HL7Exception {
364        return getAllAsList("PRODUCT_SERVICE_LINE_ITEM", EHC_E01_PRODUCT_SERVICE_LINE_ITEM.class);
365    } 
366
367    /**
368     * Inserts a specific repetition of PRODUCT_SERVICE_LINE_ITEM (a Group object)
369     * @see AbstractGroup#insertRepetition(Structure, int) 
370     */
371    public void insertPRODUCT_SERVICE_LINE_ITEM(EHC_E01_PRODUCT_SERVICE_LINE_ITEM structure, int rep) throws HL7Exception { 
372       super.insertRepetition("PRODUCT_SERVICE_LINE_ITEM", structure, rep);
373    }
374
375
376    /**
377     * Inserts a specific repetition of PRODUCT_SERVICE_LINE_ITEM (a Group object)
378     * @see AbstractGroup#insertRepetition(Structure, int) 
379     */
380    public EHC_E01_PRODUCT_SERVICE_LINE_ITEM insertPRODUCT_SERVICE_LINE_ITEM(int rep) throws HL7Exception { 
381       return (EHC_E01_PRODUCT_SERVICE_LINE_ITEM)super.insertRepetition("PRODUCT_SERVICE_LINE_ITEM", rep);
382    }
383
384
385    /**
386     * Removes a specific repetition of PRODUCT_SERVICE_LINE_ITEM (a Group object)
387     * @see AbstractGroup#removeRepetition(String, int) 
388     */
389    public EHC_E01_PRODUCT_SERVICE_LINE_ITEM removePRODUCT_SERVICE_LINE_ITEM(int rep) throws HL7Exception { 
390       return (EHC_E01_PRODUCT_SERVICE_LINE_ITEM)super.removeRepetition("PRODUCT_SERVICE_LINE_ITEM", rep);
391    }
392
393
394
395    /**
396     * Returns
397     * the first repetition of 
398     * PROCEDURE (a Group object) - creates it if necessary
399     */
400    public EHC_E01_PROCEDURE getPROCEDURE() { 
401       EHC_E01_PROCEDURE retVal = getTyped("PROCEDURE", EHC_E01_PROCEDURE.class);
402       return retVal;
403    }
404
405
406    /**
407     * Returns a specific repetition of
408     * PROCEDURE (a Group object) - creates it if necessary
409     *
410     * @param rep The repetition index (0-indexed, i.e. the first repetition is at index 0)
411     * @throws HL7Exception if the repetition requested is more than one 
412     *     greater than the number of existing repetitions.
413     */
414    public EHC_E01_PROCEDURE getPROCEDURE(int rep) { 
415       EHC_E01_PROCEDURE retVal = getTyped("PROCEDURE", rep, EHC_E01_PROCEDURE.class);
416       return retVal;
417    }
418
419    /** 
420     * Returns the number of existing repetitions of PROCEDURE 
421     */ 
422    public int getPROCEDUREReps() {  
423        return getReps("PROCEDURE");
424    } 
425
426    /** 
427     * <p>
428     * Returns a non-modifiable List containing all current existing repetitions of PROCEDURE.
429     * <p>
430     * <p>
431     * Note that unlike {@link #getPROCEDURE()}, this method will not create any reps
432     * if none are already present, so an empty list may be returned.
433     * </p>
434     */ 
435    public java.util.List<EHC_E01_PROCEDURE> getPROCEDUREAll() throws HL7Exception {
436        return getAllAsList("PROCEDURE", EHC_E01_PROCEDURE.class);
437    } 
438
439    /**
440     * Inserts a specific repetition of PROCEDURE (a Group object)
441     * @see AbstractGroup#insertRepetition(Structure, int) 
442     */
443    public void insertPROCEDURE(EHC_E01_PROCEDURE structure, int rep) throws HL7Exception { 
444       super.insertRepetition("PROCEDURE", structure, rep);
445    }
446
447
448    /**
449     * Inserts a specific repetition of PROCEDURE (a Group object)
450     * @see AbstractGroup#insertRepetition(Structure, int) 
451     */
452    public EHC_E01_PROCEDURE insertPROCEDURE(int rep) throws HL7Exception { 
453       return (EHC_E01_PROCEDURE)super.insertRepetition("PROCEDURE", rep);
454    }
455
456
457    /**
458     * Removes a specific repetition of PROCEDURE (a Group object)
459     * @see AbstractGroup#removeRepetition(String, int) 
460     */
461    public EHC_E01_PROCEDURE removePROCEDURE(int rep) throws HL7Exception { 
462       return (EHC_E01_PROCEDURE)super.removeRepetition("PROCEDURE", rep);
463    }
464
465
466
467    /**
468     * Returns
469     * the first repetition of 
470     * INVOICE_PROCESSING (a Group object) - creates it if necessary
471     */
472    public EHC_E01_INVOICE_PROCESSING getINVOICE_PROCESSING() { 
473       EHC_E01_INVOICE_PROCESSING retVal = getTyped("INVOICE_PROCESSING", EHC_E01_INVOICE_PROCESSING.class);
474       return retVal;
475    }
476
477
478    /**
479     * Returns a specific repetition of
480     * INVOICE_PROCESSING (a Group object) - creates it if necessary
481     *
482     * @param rep The repetition index (0-indexed, i.e. the first repetition is at index 0)
483     * @throws HL7Exception if the repetition requested is more than one 
484     *     greater than the number of existing repetitions.
485     */
486    public EHC_E01_INVOICE_PROCESSING getINVOICE_PROCESSING(int rep) { 
487       EHC_E01_INVOICE_PROCESSING retVal = getTyped("INVOICE_PROCESSING", rep, EHC_E01_INVOICE_PROCESSING.class);
488       return retVal;
489    }
490
491    /** 
492     * Returns the number of existing repetitions of INVOICE_PROCESSING 
493     */ 
494    public int getINVOICE_PROCESSINGReps() {  
495        return getReps("INVOICE_PROCESSING");
496    } 
497
498    /** 
499     * <p>
500     * Returns a non-modifiable List containing all current existing repetitions of INVOICE_PROCESSING.
501     * <p>
502     * <p>
503     * Note that unlike {@link #getINVOICE_PROCESSING()}, this method will not create any reps
504     * if none are already present, so an empty list may be returned.
505     * </p>
506     */ 
507    public java.util.List<EHC_E01_INVOICE_PROCESSING> getINVOICE_PROCESSINGAll() throws HL7Exception {
508        return getAllAsList("INVOICE_PROCESSING", EHC_E01_INVOICE_PROCESSING.class);
509    } 
510
511    /**
512     * Inserts a specific repetition of INVOICE_PROCESSING (a Group object)
513     * @see AbstractGroup#insertRepetition(Structure, int) 
514     */
515    public void insertINVOICE_PROCESSING(EHC_E01_INVOICE_PROCESSING structure, int rep) throws HL7Exception { 
516       super.insertRepetition("INVOICE_PROCESSING", structure, rep);
517    }
518
519
520    /**
521     * Inserts a specific repetition of INVOICE_PROCESSING (a Group object)
522     * @see AbstractGroup#insertRepetition(Structure, int) 
523     */
524    public EHC_E01_INVOICE_PROCESSING insertINVOICE_PROCESSING(int rep) throws HL7Exception { 
525       return (EHC_E01_INVOICE_PROCESSING)super.insertRepetition("INVOICE_PROCESSING", rep);
526    }
527
528
529    /**
530     * Removes a specific repetition of INVOICE_PROCESSING (a Group object)
531     * @see AbstractGroup#removeRepetition(String, int) 
532     */
533    public EHC_E01_INVOICE_PROCESSING removeINVOICE_PROCESSING(int rep) throws HL7Exception { 
534       return (EHC_E01_INVOICE_PROCESSING)super.removeRepetition("INVOICE_PROCESSING", rep);
535    }
536
537
538
539}
540