View Javadoc
1   /**
2    * The contents of this file are subject to the Mozilla Public License Version 1.1
3    * (the "License"); you may not use this file except in compliance with the License.
4    * You may obtain a copy of the License at http://www.mozilla.org/MPL/
5    * Software distributed under the License is distributed on an "AS IS" basis,
6    * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the
7    * specific language governing rights and limitations under the License.
8    *
9    * The Original Code is "MessageValidation.java".  Description:
10   * "Example Code"
11   *
12   * The Initial Developer of the Original Code is University Health Network. Copyright (C)
13   * 2001.  All Rights Reserved.
14   *
15   * Contributor(s): James Agnew
16   *
17   * Alternatively, the contents of this file may be used under the terms of the
18   * GNU General Public License (the  �GPL�), in which case the provisions of the GPL are
19   * applicable instead of those above.  If you wish to allow use of your version of this
20   * file only under the terms of the GPL and not to allow others to use your version
21   * of this file under the MPL, indicate your decision by deleting  the provisions above
22   * and replace  them with the notice and other provisions required by the GPL License.
23   * If you do not delete the provisions above, a recipient may use your version of
24   * this file under either the MPL or the GPL.
25   *
26   */
27  package ca.uhn.hl7v2.examples;
28  
29  import java.util.HashMap;
30  import java.util.Map;
31  
32  import ca.uhn.hl7v2.DefaultHapiContext;
33  import ca.uhn.hl7v2.HL7Exception;
34  import ca.uhn.hl7v2.HapiContext;
35  import ca.uhn.hl7v2.Version;
36  import ca.uhn.hl7v2.parser.PipeParser;
37  import ca.uhn.hl7v2.validation.builder.ValidationRuleBuilder;
38  import ca.uhn.hl7v2.validation.builder.support.DefaultValidationBuilder;
39  
40  /**
41   * Message Validation using the provided ValidationContext implementations
42   *
43   */
44  public class CustomMessageValidationWithValidatingVisitor {
45  
46  	public static void main(String[] args) {
47  
48  		/*
49  		 * In this example, we are looking at a more advanced aspect of message
50  		 * validation using HAPI. We will use a MessageVisitor instead of a Terser
51  		 * to validate our message during parsing.
52  		 * 
53  		 * The following message will be used in the example:
54  		 * 
55  		 * MSH|^~\&|MedSeries|CAISI_1-2|PLS|3910|200903230934||ADT^A31^ADT_A05|75535037-1237815294895|P^T|2.4
56  		 * EVN|A31|200903230934
57  		 * PID|1||29^^CAISI_1-2^PI~""||Test300^Leticia^^^^^L||19770202|M||||||||||||||||||||||
58  		 */
59  		String message = "MSH|^~\\&|MedSeries|CAISI_1-2|PLS|3910|200903230934||ADT^A31^ADT_A05|75535037-1237815294895|P^T|2.4\r\n"
60  				+ "EVN|A31|200903230934\r\n"
61  				+ "PID|1||29^^CAISI_1-2^PI~\"\"||Test300^Leticia^^^^^L||19770202|M||||||||||||||||||||||";
62  
63  
64  		HapiContext context = new DefaultHapiContext();
65  
66  		/*
67  		 * Define the mandatory fields and visitor factory
68  		 */
69  		final Map<String, Integer[]> map = new HashMap<>();
70          map.put("MSH", new Integer[] {2, 3, 4, 5, 6, 7, 9, 10, 12});
71          map.put("PID", new Integer[] {2, 3, 5, 6, 7});
72          final MandatoryFieldsdatoryFields">MandatoryFields mandatoryFields = new MandatoryFields(map);
73  
74          /*
75           * Extend the default validation context by a message rule that uses the
76           * MandatoryFields visitor to check if the mandatory fields are actually
77           * present.
78           */
79          ValidationRuleBuilder builder = new DefaultValidationBuilder() {
80  
81              @Override
82              protected void configure() {
83                  super.configure();
84                  forVersion(Version.V24)
85                          .message("ADT", "*")
86                          .inspect(mandatoryFields);
87              }
88  
89          };
90  		context.setValidationRuleBuilder(builder);
91          context.getParserConfiguration().setValidating(true);
92  
93  		// Let's parse and validate the message:
94  		PipeParser parser = context.getPipeParser();
95  		try {
96              parser.parse(message);
97              System.out.println("Something went wrong!");
98  		} catch (HL7Exception e) {
99              System.out.println("As expected we found a problem:");
100             System.out.println(e.getMessage());
101 		}
102 				
103 	}
104 
105 }