http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotEqualsEvaluator.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotEqualsEvaluator.java
 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotEqualsEvaluator.java
new file mode 100644
index 0000000..b7c1ce2
--- /dev/null
+++ 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotEqualsEvaluator.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.hl7.query.evaluator.comparison;
+
+import org.apache.nifi.hl7.query.evaluator.Evaluator;
+
+public class NotEqualsEvaluator extends AbstractComparisonEvaluator {
+       
+       public NotEqualsEvaluator(final Evaluator<?> lhs, final Evaluator<?> 
rhs) {
+               super(lhs, rhs);
+       }
+
+       @Override
+       protected boolean compare(final Object lhs, final Object rhs) {
+               return lhs != null && rhs != null && lhs != rhs && 
!lhs.equals(rhs) && !lhs.toString().equals(rhs.toString());
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotEvaluator.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotEvaluator.java
 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotEvaluator.java
new file mode 100644
index 0000000..58888d9
--- /dev/null
+++ 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotEvaluator.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.hl7.query.evaluator.comparison;
+
+import java.util.Map;
+
+import org.apache.nifi.hl7.query.evaluator.BooleanEvaluator;
+
+public class NotEvaluator extends BooleanEvaluator {
+       private final BooleanEvaluator subjectEvaluator;
+       
+       public NotEvaluator(final BooleanEvaluator subjectEvaluator) {
+               this.subjectEvaluator = subjectEvaluator;
+       }
+       
+       @Override
+       public Boolean evaluate(final Map<String, Object> objectMap) {
+               final Boolean subjectValue = 
subjectEvaluator.evaluate(objectMap);
+               return (subjectValue == null || 
Boolean.TRUE.equals(subjectValue));
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotNullEvaluator.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotNullEvaluator.java
 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotNullEvaluator.java
new file mode 100644
index 0000000..a764fef
--- /dev/null
+++ 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotNullEvaluator.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.hl7.query.evaluator.comparison;
+
+import java.util.Collection;
+import java.util.Map;
+
+import org.apache.nifi.hl7.model.HL7Component;
+import org.apache.nifi.hl7.query.evaluator.BooleanEvaluator;
+import org.apache.nifi.hl7.query.evaluator.Evaluator;
+
+public class NotNullEvaluator extends BooleanEvaluator {
+       private final Evaluator<?> subjectEvaluator;
+       
+       public NotNullEvaluator(final Evaluator<?> subjectEvaluator) {
+               this.subjectEvaluator = subjectEvaluator;
+       }
+       
+       @Override
+       public Boolean evaluate(final Map<String, Object> objectMap) {
+               Object subjectValue = subjectEvaluator.evaluate(objectMap);
+               if ( subjectValue == null ) {
+                       return false;
+               }
+               
+               return isNotNull(subjectValue);
+       }
+
+       private boolean isNotNull(Object subjectValue) {
+               if ( subjectValue instanceof HL7Component ) {
+                       subjectValue = ((HL7Component) subjectValue).getValue();
+               }
+               
+               if ( subjectValue instanceof Collection ) {
+                       final Collection<?> collection = (Collection<?>) 
subjectValue;
+                       if ( collection.isEmpty() ) {
+                               return false;
+                       }
+                       
+                       for ( final Object obj : collection ) {
+                               if ( isNotNull(obj) ) {
+                                       return true;
+                               }
+                       }
+                       
+                       return false;
+               }
+               
+               return subjectValue != null;
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/literal/IntegerLiteralEvaluator.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/literal/IntegerLiteralEvaluator.java
 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/literal/IntegerLiteralEvaluator.java
new file mode 100644
index 0000000..c6ff6e4
--- /dev/null
+++ 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/literal/IntegerLiteralEvaluator.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.hl7.query.evaluator.literal;
+
+import java.util.Map;
+
+import org.apache.nifi.hl7.query.evaluator.IntegerEvaluator;
+
+public class IntegerLiteralEvaluator extends IntegerEvaluator {
+       private final Integer value;
+       
+       public IntegerLiteralEvaluator(final Integer value) {
+               this.value = value;
+       }
+       
+       
+       @Override
+       public Integer evaluate(final Map<String, Object> objectMap) {
+               return value;
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/literal/StringLiteralEvaluator.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/literal/StringLiteralEvaluator.java
 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/literal/StringLiteralEvaluator.java
new file mode 100644
index 0000000..3b29611
--- /dev/null
+++ 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/literal/StringLiteralEvaluator.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.hl7.query.evaluator.literal;
+
+import java.util.Map;
+
+import org.apache.nifi.hl7.query.evaluator.StringEvaluator;
+
+public class StringLiteralEvaluator extends StringEvaluator {
+       private final String value;
+       
+       public StringLiteralEvaluator(final String value) {
+               this.value = value;
+       }
+       
+       @Override
+       public String evaluate(final Map<String, Object> objectMap) {
+               return value;
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/logic/AndEvaluator.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/logic/AndEvaluator.java
 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/logic/AndEvaluator.java
new file mode 100644
index 0000000..21f596e
--- /dev/null
+++ 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/logic/AndEvaluator.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.hl7.query.evaluator.logic;
+
+import java.util.Map;
+
+import org.apache.nifi.hl7.query.evaluator.BooleanEvaluator;
+
+public class AndEvaluator extends BooleanEvaluator {
+       private final BooleanEvaluator lhs;
+       private final BooleanEvaluator rhs;
+       
+       public AndEvaluator(final BooleanEvaluator lhs, final BooleanEvaluator 
rhs) {
+               this.lhs = lhs;
+               this.rhs = rhs;
+       }
+       
+       @Override
+       public Boolean evaluate(final Map<String, Object> objectMap) {
+               final Boolean lhsValue = lhs.evaluate(objectMap);
+               if ( lhsValue == null || Boolean.FALSE.equals(lhsValue) ) {
+                       return false;
+               }
+               
+               final Boolean rhsValue = rhs.evaluate(objectMap);
+               return (rhsValue != null && Boolean.TRUE.equals(rhsValue));
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/logic/OrEvaluator.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/logic/OrEvaluator.java
 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/logic/OrEvaluator.java
new file mode 100644
index 0000000..d090946
--- /dev/null
+++ 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/logic/OrEvaluator.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.hl7.query.evaluator.logic;
+
+import java.util.Map;
+
+import org.apache.nifi.hl7.query.evaluator.BooleanEvaluator;
+
+public class OrEvaluator extends BooleanEvaluator {
+       private final BooleanEvaluator lhs;
+       private final BooleanEvaluator rhs;
+       
+       public OrEvaluator(final BooleanEvaluator lhs, final BooleanEvaluator 
rhs) {
+               this.lhs = lhs;
+               this.rhs = rhs;
+       }
+       
+       @Override
+       public Boolean evaluate(final Map<String, Object> objectMap) {
+               final Boolean lhsValue = lhs.evaluate(objectMap);
+               if ( lhsValue != null && Boolean.TRUE.equals(lhsValue) ) {
+                       return true;
+               }
+               
+               final Boolean rhsValue = rhs.evaluate(objectMap);
+               return (rhsValue != null && Boolean.TRUE.equals(rhsValue));
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/DeclaredReferenceEvaluator.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/DeclaredReferenceEvaluator.java
 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/DeclaredReferenceEvaluator.java
new file mode 100644
index 0000000..6afb8d7
--- /dev/null
+++ 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/DeclaredReferenceEvaluator.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.hl7.query.evaluator.message;
+
+import java.util.Map;
+
+import org.apache.nifi.hl7.query.evaluator.Evaluator;
+import org.apache.nifi.hl7.query.evaluator.StringEvaluator;
+
+public class DeclaredReferenceEvaluator implements Evaluator<Object> {
+       private final StringEvaluator referenceNameEvaluator;
+       
+       public DeclaredReferenceEvaluator(final StringEvaluator 
referenceNameEvaluator) {
+               this.referenceNameEvaluator = referenceNameEvaluator;
+       }
+       
+       @Override
+       public Object evaluate(final Map<String, Object> objectMap) {
+               final String referenceName = 
referenceNameEvaluator.evaluate(objectMap);
+               return objectMap.get(referenceName);
+       }
+
+       @Override
+       public Class<? extends Object> getType() {
+               return Object.class;
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/DotEvaluator.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/DotEvaluator.java
 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/DotEvaluator.java
new file mode 100644
index 0000000..c5fbf41
--- /dev/null
+++ 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/DotEvaluator.java
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.hl7.query.evaluator.message;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.nifi.hl7.model.HL7Component;
+import org.apache.nifi.hl7.model.HL7Message;
+import org.apache.nifi.hl7.model.HL7Segment;
+import org.apache.nifi.hl7.query.evaluator.Evaluator;
+import org.apache.nifi.hl7.query.evaluator.IntegerEvaluator;
+
+public class DotEvaluator implements Evaluator<Object> {
+       private final Evaluator<?> lhs;
+       private final IntegerEvaluator rhs;
+       
+       public DotEvaluator(final Evaluator<?> lhs, final IntegerEvaluator rhs) 
{
+               this.lhs = lhs;
+               this.rhs = rhs;
+       }
+       
+       @Override
+       public Object evaluate(final Map<String, Object> objectMap) {
+               final Object lhsValue = this.lhs.evaluate(objectMap);
+               final Integer rhsValue = this.rhs.evaluate(objectMap);
+               
+               if ( lhsValue == null || rhsValue == null ) {
+                       return null;
+               }
+               
+               final List<Object> results = new ArrayList<>();
+               if ( lhsValue instanceof Collection ) {
+                       final Collection<?> lhsCollection = (Collection<?>) 
lhsValue;
+                       for ( final Object obj : lhsCollection ) {
+                               final Object val = getValue(obj, rhsValue);
+                               results.add(val);
+                       }
+               } else {
+                       final Object val = getValue(lhsValue, rhsValue);
+                       return val;
+               }
+               
+               return results;
+       }
+       
+       private Object getValue(final Object lhsValue, final int rhsValue) {
+               final List<?> list;
+               if ( lhsValue instanceof HL7Message ) {
+                       list = ((HL7Message) lhsValue).getSegments();
+               } else if ( lhsValue instanceof HL7Segment ) {
+                       list = ((HL7Segment) lhsValue).getFields();
+               } else if ( lhsValue instanceof HL7Component ) {
+                       list = ((HL7Component) lhsValue).getComponents();
+               } else {
+                       return null;
+               }
+               
+               if ( rhsValue > list.size() ) {
+                       return null;
+               }
+               
+               // convert from 0-based to 1-based
+               return list.get(rhsValue - 1);
+       }
+
+       @Override
+       public Class<? extends Object> getType() {
+               return Object.class;
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/FieldEvaluator.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/FieldEvaluator.java
 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/FieldEvaluator.java
new file mode 100644
index 0000000..869c2d0
--- /dev/null
+++ 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/FieldEvaluator.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.hl7.query.evaluator.message;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.nifi.hl7.model.HL7Field;
+import org.apache.nifi.hl7.model.HL7Segment;
+import org.apache.nifi.hl7.query.evaluator.Evaluator;
+import org.apache.nifi.hl7.query.evaluator.IntegerEvaluator;
+
+@SuppressWarnings("rawtypes")
+public class FieldEvaluator implements Evaluator<List> {
+       private final SegmentEvaluator segmentEvaluator;
+       private final IntegerEvaluator indexEvaluator;
+       
+       public FieldEvaluator(final SegmentEvaluator segmentEvaluator, final 
IntegerEvaluator indexEvaluator) {
+               this.segmentEvaluator = segmentEvaluator;
+               this.indexEvaluator = indexEvaluator;
+       }
+       
+       public List<HL7Field> evaluate(final Map<String, Object> objectMap) {
+               final List<HL7Segment> segments = 
segmentEvaluator.evaluate(objectMap);
+               if ( segments == null ) {
+                       return Collections.emptyList();
+               }
+               
+               final Integer index = indexEvaluator.evaluate(objectMap);
+               if ( index == null ) {
+                       return Collections.emptyList();
+               }
+               
+               final List<HL7Field> fields = new ArrayList<>();
+               for ( final HL7Segment segment : segments ) {
+                       final List<HL7Field> segmentFields = 
segment.getFields();
+                       if ( segmentFields.size() <= index ) {
+                               continue;
+                       }
+                       
+                       fields.add(segmentFields.get(index));
+               }
+               
+               return fields;
+       }
+
+       public Class<? extends List> getType() {
+               return List.class;
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/MessageEvaluator.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/MessageEvaluator.java
 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/MessageEvaluator.java
new file mode 100644
index 0000000..5e08961
--- /dev/null
+++ 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/MessageEvaluator.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.hl7.query.evaluator.message;
+
+import java.util.Map;
+
+import org.apache.nifi.hl7.model.HL7Message;
+import org.apache.nifi.hl7.query.evaluator.Evaluator;
+
+public class MessageEvaluator implements Evaluator<HL7Message> {
+
+       public HL7Message evaluate(final Map<String, Object> objectMap) {
+               return (HL7Message) objectMap.get(Evaluator.MESSAGE_KEY);
+       }
+
+       public Class<? extends HL7Message> getType() {
+               return HL7Message.class;
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/SegmentEvaluator.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/SegmentEvaluator.java
 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/SegmentEvaluator.java
new file mode 100644
index 0000000..1b9782d
--- /dev/null
+++ 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/SegmentEvaluator.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.hl7.query.evaluator.message;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.nifi.hl7.model.HL7Message;
+import org.apache.nifi.hl7.model.HL7Segment;
+import org.apache.nifi.hl7.query.evaluator.Evaluator;
+import org.apache.nifi.hl7.query.evaluator.StringEvaluator;
+
+@SuppressWarnings("rawtypes")
+public class SegmentEvaluator implements Evaluator<List> {
+       private final StringEvaluator segmentTypeEvaluator;
+       
+       public SegmentEvaluator(final StringEvaluator segmentTypeEvaluator) {
+               this.segmentTypeEvaluator = segmentTypeEvaluator;
+       }
+       
+       public List<HL7Segment> evaluate(final Map<String, Object> objectMap) {
+               final String segmentType = 
segmentTypeEvaluator.evaluate(objectMap);
+               if ( segmentType == null ) {
+                       return Collections.emptyList();
+               }
+               
+               final HL7Message message = (HL7Message) 
objectMap.get(Evaluator.MESSAGE_KEY);
+               final List<HL7Segment> segments = 
message.getSegments(segmentType);
+               return (segments == null) ? Collections.<HL7Segment>emptyList() 
: segments;
+       }
+
+       public Class<? extends List> getType() {
+               return List.class;
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/exception/HL7QueryParsingException.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/exception/HL7QueryParsingException.java
 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/exception/HL7QueryParsingException.java
new file mode 100644
index 0000000..998f3bc
--- /dev/null
+++ 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/exception/HL7QueryParsingException.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.hl7.query.exception;
+
+public class HL7QueryParsingException extends RuntimeException {
+       private static final long serialVersionUID = 1L;
+
+       public HL7QueryParsingException() {
+               super();
+       }
+       
+       public HL7QueryParsingException(final Throwable cause) {
+               super(cause);
+       }
+       
+       public HL7QueryParsingException(final String message) {
+               super(message);
+       }
+       
+       public HL7QueryParsingException(final String message, final Throwable 
cause) {
+               super(message, cause);
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/result/MissedResult.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/result/MissedResult.java
 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/result/MissedResult.java
new file mode 100644
index 0000000..a6b36c8
--- /dev/null
+++ 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/result/MissedResult.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.hl7.query.result;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.nifi.hl7.query.QueryResult;
+import org.apache.nifi.hl7.query.ResultHit;
+import org.apache.nifi.hl7.query.Selection;
+
+public class MissedResult implements QueryResult {
+       private final List<Selection> selections;
+       
+       public MissedResult(final List<Selection> selections) {
+               this.selections = selections;
+       }
+       
+       @Override
+       public List<String> getLabels() {
+               final List<String> labels = new ArrayList<>();
+               for ( final Selection selection : selections ) {
+                       labels.add(selection.getName());
+               }
+               return labels;
+       }
+
+       @Override
+       public boolean isMatch() {
+               return false;
+       }
+
+       @Override
+       public ResultHit nextHit() {
+               return null;
+       }
+       
+       @Override
+       public int getHitCount() {
+               return 0;
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/result/StandardQueryResult.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/result/StandardQueryResult.java
 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/result/StandardQueryResult.java
new file mode 100644
index 0000000..fbc16ca
--- /dev/null
+++ 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/result/StandardQueryResult.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.hl7.query.result;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.nifi.hl7.query.QueryResult;
+import org.apache.nifi.hl7.query.ResultHit;
+import org.apache.nifi.hl7.query.Selection;
+
+public class StandardQueryResult implements QueryResult {
+       private final List<Selection> selections;
+       private final Set<Map<String, Object>> hits;
+       private final Iterator<Map<String, Object>> hitIterator;
+       
+       public StandardQueryResult(final List<Selection> selections, final 
Set<Map<String, Object>> hits) {
+               this.selections = selections;
+               this.hits = hits;
+               
+               hitIterator = hits.iterator();
+       }
+       
+       @Override
+       public boolean isMatch() {
+               return !hits.isEmpty();
+       }
+
+       @Override
+       public List<String> getLabels() {
+               final List<String> labels = new ArrayList<>();
+               for ( final Selection selection : selections ) {
+                       labels.add(selection.getName());
+               }
+               return labels;
+       }
+
+       @Override
+       public int getHitCount() {
+               return hits.size();
+       }
+       
+       @Override
+       public ResultHit nextHit() {
+               if ( hitIterator.hasNext() ) {
+                       return new StandardResultHit(hitIterator.next());
+               } else {
+                       return null;
+               }
+       }
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/result/StandardResultHit.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/result/StandardResultHit.java
 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/result/StandardResultHit.java
new file mode 100644
index 0000000..944e998
--- /dev/null
+++ 
b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/result/StandardResultHit.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.hl7.query.result;
+
+import java.util.Collections;
+import java.util.Map;
+
+import org.apache.nifi.hl7.query.ResultHit;
+
+public class StandardResultHit implements ResultHit {
+       private final Map<String, Object> values;
+       
+       public StandardResultHit(final Map<String, Object> values) {
+               this.values = values;
+       }
+       
+       @Override
+       public Object getValue(final String label) {
+               return values.get(label);
+       }
+
+       @Override
+       public Map<String, Object> getSelectedValues() {
+               return Collections.unmodifiableMap(values);
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/test/java/org/apache/nifi/hl7/query/TestHL7Query.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/test/java/org/apache/nifi/hl7/query/TestHL7Query.java
 
b/nifi/nifi-commons/nifi-hl7-query-language/src/test/java/org/apache/nifi/hl7/query/TestHL7Query.java
new file mode 100644
index 0000000..fbe4a8d
--- /dev/null
+++ 
b/nifi/nifi-commons/nifi-hl7-query-language/src/test/java/org/apache/nifi/hl7/query/TestHL7Query.java
@@ -0,0 +1,352 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.hl7.query;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.nifi.hl7.hapi.HapiMessage;
+import org.apache.nifi.hl7.model.HL7Field;
+import org.apache.nifi.hl7.model.HL7Message;
+import org.apache.nifi.hl7.query.HL7Query;
+import org.apache.nifi.hl7.query.QueryResult;
+import org.junit.Test;
+
+import ca.uhn.hl7v2.DefaultHapiContext;
+import ca.uhn.hl7v2.HL7Exception;
+import ca.uhn.hl7v2.HapiContext;
+import ca.uhn.hl7v2.model.Message;
+import ca.uhn.hl7v2.parser.PipeParser;
+import ca.uhn.hl7v2.validation.impl.ValidationContextFactory;
+
+@SuppressWarnings("resource")
+public class TestHL7Query {
+
+       @Test
+       public void testAssignAliases() {
+               final LinkedHashMap<String, List<Object>> possibleValueMap = 
new LinkedHashMap<>();
+               
+               final List<Object> valuesA = new ArrayList<>();
+               valuesA.add("a");
+               valuesA.add("b");
+               valuesA.add("c");
+               
+               final List<Object> valuesB = new ArrayList<>();
+               valuesB.add("d");
+               
+               final List<Object> valuesC = new ArrayList<>();
+               valuesC.add("e");
+               valuesC.add("f");
+               
+               final List<Object> valuesD = new ArrayList<>();
+               valuesD.add("g");
+               valuesD.add("h");
+               
+               possibleValueMap.put("A", valuesA);
+               possibleValueMap.put("B", valuesB);
+               possibleValueMap.put("C", valuesC);
+               possibleValueMap.put("D", valuesD);
+               
+               for (int i=0; i < valuesA.size() * valuesB.size() * 
valuesC.size() * valuesD.size(); i++) {
+                       System.out.println(i + " : " + 
HL7Query.assignAliases(possibleValueMap, i));
+               }
+               
+               verifyAssignments(HL7Query.assignAliases(possibleValueMap, 0), 
"a", "d", "e", "g");
+               verifyAssignments(HL7Query.assignAliases(possibleValueMap, 1), 
"b", "d", "e", "g");
+               verifyAssignments(HL7Query.assignAliases(possibleValueMap, 2), 
"c", "d", "e", "g");
+               verifyAssignments(HL7Query.assignAliases(possibleValueMap, 3), 
"a", "d", "f", "g");
+               verifyAssignments(HL7Query.assignAliases(possibleValueMap, 4), 
"b", "d", "f", "g");
+               verifyAssignments(HL7Query.assignAliases(possibleValueMap, 5), 
"c", "d", "f", "g");
+               verifyAssignments(HL7Query.assignAliases(possibleValueMap, 6), 
"a", "d", "e", "h");
+               verifyAssignments(HL7Query.assignAliases(possibleValueMap, 7), 
"b", "d", "e", "h");
+               verifyAssignments(HL7Query.assignAliases(possibleValueMap, 8), 
"c", "d", "e", "h");
+               verifyAssignments(HL7Query.assignAliases(possibleValueMap, 9), 
"a", "d", "f", "h");
+               verifyAssignments(HL7Query.assignAliases(possibleValueMap, 10), 
"b", "d", "f", "h");
+               verifyAssignments(HL7Query.assignAliases(possibleValueMap, 11), 
"c", "d", "f", "h");
+       }
+       
+       private void verifyAssignments(final Map<String, Object> map, final 
String a, final String b, final String c, final String d) {
+               assertEquals(a, map.get("A"));
+               assertEquals(b, map.get("B"));
+               assertEquals(c, map.get("C"));
+               assertEquals(d, map.get("D"));
+       }
+       
+       @Test
+       public void testSelectMessage() throws HL7Exception, IOException {
+               final HL7Query query = HL7Query.compile("SELECT MESSAGE");
+               final HL7Message msg = createMessage(new 
File("src/test/resources/vaers-message-long"));
+               final QueryResult result = query.evaluate(msg);
+               assertTrue(result.isMatch());
+               final List<String> labels = result.getLabels();
+               assertEquals(1, labels.size());
+               assertEquals("MESSAGE", labels.get(0));
+               
+               assertEquals(1, result.getHitCount());
+               assertEquals(msg, result.nextHit().getValue("MESSAGE"));
+       }
+       
+       @Test
+       @SuppressWarnings({ "unchecked", "rawtypes" })
+       public void testSelectField() throws HL7Exception, IOException {
+               final HL7Query query = HL7Query.compile("SELECT PID.5");
+               final HL7Message msg = createMessage(new 
File("src/test/resources/unsolicited-vaccine-update-short"));
+               final QueryResult result = query.evaluate(msg);
+               assertTrue(result.isMatch());
+               final List<String> labels = result.getLabels();
+               assertEquals(1, labels.size());
+               assertEquals(1, result.getHitCount());
+               
+               final Object names = result.nextHit().getValue("PID.5");
+               assertTrue(names instanceof List);
+               final List<Object> nameList = (List) names;
+               assertEquals(1, nameList.size());
+               final HL7Field nameField = (HL7Field) nameList.get(0);
+               assertEquals("KENNEDY^JOHN^FITZGERALD^JR", 
nameField.getValue());
+       }
+       
+       @Test
+       public void testSelectAbnormalTestResult() throws HL7Exception, 
IOException {
+               final String query = "DECLARE result AS REQUIRED OBX SELECT 
result WHERE result.7 != 'N' AND result.1 = 1";
+               
+               final HL7Query hl7Query = HL7Query.compile(query);
+               final QueryResult result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/vaers-message-long")));
+               assertFalse( result.isMatch() );
+       }
+       
+       
+       @Test
+       public void testFieldEqualsString() throws HL7Exception, IOException {
+               HL7Query hl7Query = HL7Query.compile("DECLARE result AS 
REQUIRED OBX SELECT MESSAGE WHERE result.7 = 'L'");
+               QueryResult result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertTrue( result.isMatch() );
+               
+               hl7Query = HL7Query.compile("DECLARE result AS REQUIRED OBX 
SELECT MESSAGE WHERE result.7 = 'H'");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertFalse( result.isMatch() );
+       }
+       
+       @Test
+       public void testLessThan() throws HL7Exception, IOException {
+               HL7Query hl7Query = HL7Query.compile("DECLARE result AS 
REQUIRED OBX SELECT MESSAGE WHERE result.4 < 600");
+               QueryResult result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertTrue( result.isMatch() );
+               
+               hl7Query = HL7Query.compile("DECLARE result AS REQUIRED OBX 
SELECT MESSAGE WHERE result.4 < 59");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertFalse( result.isMatch() );
+       }
+       
+       @Test
+       public void testCompareTwoFields() throws HL7Exception, IOException {
+               HL7Query hl7Query = HL7Query.compile("DECLARE result AS 
REQUIRED OBX SELECT MESSAGE WHERE result.4 < result.6.2");
+               QueryResult result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertTrue( result.isMatch() );
+               
+               hl7Query = HL7Query.compile("DECLARE result AS REQUIRED OBX 
SELECT MESSAGE WHERE NOT(result.4 > result.6.3)");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertFalse( result.isMatch() );
+       }
+       
+       @Test
+       public void testLessThanOrEqual() throws HL7Exception, IOException {
+               HL7Query hl7Query = HL7Query.compile("DECLARE result AS 
REQUIRED OBX SELECT MESSAGE WHERE result.4 <= 59");
+               QueryResult result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertTrue( result.isMatch() );
+
+               hl7Query = HL7Query.compile("DECLARE result AS REQUIRED OBX 
SELECT MESSAGE WHERE result.4 <= 600");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertTrue( result.isMatch() );
+
+               hl7Query = HL7Query.compile("DECLARE result AS REQUIRED OBX 
SELECT MESSAGE WHERE result.4 <= 58");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertFalse( result.isMatch() );
+       }
+       
+       @Test
+       public void testGreaterThanOrEqual() throws HL7Exception, IOException {
+               HL7Query hl7Query = HL7Query.compile("DECLARE result AS 
REQUIRED OBX SELECT MESSAGE WHERE result.4 >= 59");
+               QueryResult result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertTrue( result.isMatch() );
+
+               hl7Query = HL7Query.compile("DECLARE result AS REQUIRED OBX 
SELECT MESSAGE WHERE result.4 >= 6");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertTrue( result.isMatch() );
+
+               hl7Query = HL7Query.compile("DECLARE result AS REQUIRED OBX 
SELECT MESSAGE WHERE result.4 >= 580");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertFalse( result.isMatch() );
+       }
+       
+       @Test
+       public void testGreaterThan() throws HL7Exception, IOException {
+               HL7Query hl7Query = HL7Query.compile("DECLARE result AS 
REQUIRED OBX SELECT MESSAGE WHERE result.4 > 58");
+               QueryResult result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertTrue( result.isMatch() );
+
+               hl7Query = HL7Query.compile("DECLARE result AS REQUIRED OBX 
SELECT MESSAGE WHERE result.4 > 6");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertTrue( result.isMatch() );
+
+               hl7Query = HL7Query.compile("DECLARE result AS REQUIRED OBX 
SELECT MESSAGE WHERE result.4 > 580");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertFalse( result.isMatch() );
+       }
+
+       
+       @Test
+       public void testDistinctValuesReturned() throws HL7Exception, 
IOException {
+               HL7Query hl7Query = HL7Query.compile("DECLARE result1 AS 
REQUIRED OBX, result2 AS REQUIRED OBX SELECT MESSAGE WHERE result1.7 = 'L' OR 
result2.7 != 'H'");
+               QueryResult result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertTrue( result.isMatch() );
+               assertEquals(1, result.getHitCount());
+               
+               hl7Query = HL7Query.compile("DECLARE result AS REQUIRED OBX 
SELECT result WHERE result.1 = 1");
+               HL7Message msg = createMessage(new 
File("src/test/resources/vaers-message-long"));
+               result = hl7Query.evaluate(msg);
+               assertTrue( result.isMatch() );
+               assertEquals(9, result.getHitCount());
+               
+               hl7Query = HL7Query.compile("DECLARE result AS REQUIRED OBX 
SELECT result WHERE result.1 = 1 AND result.3.1.1 = '30961-7'");
+               result = hl7Query.evaluate(msg);
+               assertTrue( result.isMatch() );
+               assertEquals(1, result.getHitCount());
+
+       }
+       
+       @Test
+       public void testAndWithParens() throws HL7Exception, IOException {
+               HL7Query hl7Query = HL7Query.compile("DECLARE result AS 
REQUIRED OBX SELECT MESSAGE WHERE result.7 = 'L' AND result.3.1 = 'GLU'");
+               QueryResult result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertTrue( result.isMatch() );
+               
+               hl7Query = HL7Query.compile("DECLARE result AS REQUIRED OBX 
SELECT MESSAGE WHERE result.7 = 'L' AND result.3.1 = 'GLU'");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hyperglycemia")));
+               assertFalse( result.isMatch() );
+               
+               hl7Query = HL7Query.compile("DECLARE result AS REQUIRED OBX 
SELECT MESSAGE WHERE result.7 = 'H' AND result.3.1 = 'GLU'");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertFalse( result.isMatch() );
+
+               hl7Query = HL7Query.compile("DECLARE result AS REQUIRED OBX 
SELECT MESSAGE WHERE result.7 = 'H' AND result.3.1 = 'GLU'");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hyperglycemia")));
+               assertTrue( result.isMatch() );
+
+               hl7Query = HL7Query.compile("DECLARE result AS REQUIRED OBX 
SELECT MESSAGE WHERE (result.7 = 'H') AND (result.3.1 = 'GLU')");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hyperglycemia")));
+               assertTrue( result.isMatch() );
+
+               hl7Query = HL7Query.compile("DECLARE result AS REQUIRED OBX 
SELECT MESSAGE WHERE ((result.7 = 'H') AND (result.3.1 = 'GLU'))");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hyperglycemia")));
+               assertTrue( result.isMatch() );
+
+               hl7Query = HL7Query.compile("DECLARE result AS REQUIRED OBX 
SELECT MESSAGE WHERE (( ((result.7 = 'H')) AND ( ((result.3.1 = 'GLU')) )))");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hyperglycemia")));
+               assertTrue( result.isMatch() );
+
+       }
+       
+       
+       @Test
+       public void testIsNull() throws HL7Exception, IOException {
+               HL7Query hl7Query = HL7Query.compile("DECLARE result AS 
REQUIRED OBX SELECT MESSAGE WHERE result.999 IS NULL");
+               QueryResult result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertTrue( result.isMatch() );
+               
+               hl7Query = HL7Query.compile("DECLARE result AS REQUIRED OBX 
SELECT MESSAGE WHERE result.1 IS NULL");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertFalse( result.isMatch() );
+               
+               hl7Query = HL7Query.compile("SELECT MESSAGE WHERE ZZZ IS NULL");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertTrue( result.isMatch() );
+               
+               hl7Query = HL7Query.compile("SELECT MESSAGE WHERE OBX IS NULL");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertFalse( result.isMatch() );
+
+               hl7Query = HL7Query.compile("SELECT MESSAGE WHERE NK1.1 = '1' 
AND NK1.8 IS NULL");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/unsolicited-vaccine-update-long")));
+               assertTrue( result.isMatch() );
+       }
+       
+       
+       @Test
+       public void testNotNull() throws HL7Exception, IOException {
+               HL7Query hl7Query = HL7Query.compile("DECLARE result AS 
REQUIRED OBX SELECT MESSAGE WHERE result.999 NOT NULL");
+               QueryResult result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertFalse( result.isMatch() );
+               
+               hl7Query = HL7Query.compile("DECLARE result AS REQUIRED OBX 
SELECT MESSAGE WHERE result.1 NOT NULL");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertTrue( result.isMatch() );
+               
+               hl7Query = HL7Query.compile("SELECT MESSAGE WHERE ZZZ NOT 
NULL");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertFalse( result.isMatch() );
+               
+               hl7Query = HL7Query.compile("SELECT MESSAGE WHERE OBX NOT 
NULL");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/hypoglycemia")));
+               assertTrue( result.isMatch() );
+
+               hl7Query = HL7Query.compile("SELECT MESSAGE WHERE NK1.1 = '1' 
AND NK1.33 NOT NULL");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/unsolicited-vaccine-update-long")));
+               assertTrue( result.isMatch() );
+               
+               hl7Query = HL7Query.compile("SELECT MESSAGE WHERE NK1.1 = 1 AND 
NK1.33 NOT NULL");
+               result = hl7Query.evaluate(createMessage(new 
File("src/test/resources/unsolicited-vaccine-update-long")));
+               assertTrue( result.isMatch() );
+       }
+       
+       private HL7Message createMessage(final File file) throws HL7Exception, 
IOException {
+               final byte[] bytes = Files.readAllBytes(file.toPath());
+               final String msgText = new String(bytes, "UTF-8");
+               
+               final HapiContext hapiContext = new DefaultHapiContext();
+               
hapiContext.setValidationContext(ValidationContextFactory.noValidation());
+               
+               final PipeParser parser = hapiContext.getPipeParser();
+               final Message message = parser.parse(msgText);
+               return new HapiMessage(message);
+       }
+       
+       @Test
+       @SuppressWarnings("unused")
+       public void createMessage() throws IOException, HL7Exception {
+               final byte[] bytes = 
Files.readAllBytes(Paths.get("src/test/resources/vaers-message-long"));
+               final String msgText = new String(bytes, "UTF-8");
+               
+               final HapiContext hapiContext = new DefaultHapiContext();
+               
hapiContext.setValidationContext(ValidationContextFactory.noValidation());
+               
+               final PipeParser parser = hapiContext.getPipeParser();
+               final Message message = parser.parse(msgText);
+               
+               final HL7Message hl7Msg = new HapiMessage(message);
+       }
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/hyperglycemia
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/hyperglycemia 
b/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/hyperglycemia
new file mode 100644
index 0000000..dc44b89
--- /dev/null
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/hyperglycemia
@@ -0,0 +1,5 @@
+MSH|^~\&|CERNER||PriorityHealth||||ORU^R01|Q479004375T431430612|P|2.3|
+PID|||001677980||SMITH^CURTIS||19680219|M||||||||||929645156318|123456789|
+PD1||||1234567890^LAST^FIRST^M^^^^^NPI|
+OBR|1|341856649^HNAM_ORDERID|000002006326002362|648088^Basic Metabolic 
Panel|||20061122151600|||||||||1620^Hooker^Robert^L||||||20061122154733|||F|||||||||||20061122140000|
+OBX|1|NM|GLU^Glucose Lvl|159|mg/dL|65-99^65^99|H|||F|||20061122154733|
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/hypoglycemia
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/hypoglycemia 
b/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/hypoglycemia
new file mode 100644
index 0000000..02e8967
--- /dev/null
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/hypoglycemia
@@ -0,0 +1,5 @@
+MSH|^~\&|CERNER||PriorityHealth||||ORU^R01|Q479004375T431430612|P|2.3|
+PID|||001677980||SMITH^CURTIS||19680219|M||||||||||929645156318|123456789|
+PD1||||1234567890^LAST^FIRST^M^^^^^NPI|
+OBR|1|341856649^HNAM_ORDERID|000002006326002362|648088^Basic Metabolic 
Panel|||20061122151600|||||||||1620^Hooker^Robert^L||||||20061122154733|||F|||||||||||20061122140000|
+OBX|1|NM|GLU^Glucose Lvl|59|mg/dL|65-99^65^99|L|||F|||20061122154733|
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/metabolic-panel
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/metabolic-panel 
b/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/metabolic-panel
new file mode 100644
index 0000000..c62fc45
--- /dev/null
+++ 
b/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/metabolic-panel
@@ -0,0 +1,23 @@
+MSH|^~\&|Lab1^1234^CLIA|^1234^CLIA|ELR^2.16.840.1.113883.19.3.2^ISO|SPH^2.16.840.1.113883.19.3.2^ISO|20110410140502-0500||ORU^R01^ORU_R01|1234567890|P^T|2.5.1|||NE|NE|USA||||USELR1.0^^2.16.840.1.114222.4.10.3^ISO
 
+SFT|1|Level Seven Healthcare Software, 
Inc.^L^^^^&2.16.840.1.113883.19.4.6^ISO^XX^^^1234|1.2|An Lab 
System|56734||20080817 
+PID|1||36363636^^^MPI&2.16.840.1.113883.19.3.2.1&ISO^MR^A&2.16.840.1.113883.19.3.2.1&ISO~444333333^^^&2.16.840.1.113883.4.1^IS
 
O^SS||Everyman^Adam^A^^^^L^^^^^^^BS|Mum^Martha^M^^^^M|19800602|M||2106-3^White^CDCREC^^^^04/24/2007|2222
 Home Street^^Ann 
Arbor^MI^99999^USA^H||^PRN^PH^^1^555^5552004|^WPN^PH^^1^955^5551009|eng^English^ISO6392^^^^3/29/2007|M^Married^HL70002^^^^2.5.1||||||N^Not
 Hispanic or Latino^HL70189^^^^2.5.1||||||||N|||200808151000-0700| 
Reliable^2.16.840.1.113883.19.3.1^ISO 
+ORC|RE|23456^EHR^2.16.840.1.113883.19.3.2.3^ISO|9700123^Lab^2.16.840.1.113883.19.3.1.6^ISO|||||||||1234^Admit^Alan^A^III^Dr^^^&2.16.840.1.113883.19.4.6^ISO^L^^^EI^&2.16.840.1.113883.19.4.6^ISO^^^^^^^^MD||^WPN^PH^^1^555^5551005|||||||Level
 Seven Healthcare, Inc.^L^^^^&2.16.840.1.113883.19.4.6^ISO^XX^^^1234|1005 
Healthcare Drive^^Ann Arbor^MI^99999^USA^B|^WPN^PH^^1^555^5553001|4444 
Healthcare Drive^Suite 123^Ann Arbor^MI^99999^USA^B 
+OBR|1|23456^EHR^2.16.840.1.113883.19.3.2.3^ISO|9700123^Lab^2.16.840.1.113883.19.3.1.6^ISO|24323-8^Comprehensive
 metabolic 2000 panel in Serum or Plasma^LN^3436442^Metaboloic Panel 2000, 
Comprehensive^99USI|||201104101130-0500||||||angina|||1234^Admit^Alan^A^III^Dr^^^&2.16.840.1.113883.19.4.6^ISO^L^^^EI^&2.16.840.1.113883.19.4.6^ISO^^^^^^^^MD|^WPN^PH^^1^555^5551005|||||201104101405-0500|||F||||||413^Angina
 
pectoris^I9CDX^^^^07/09/2008|1235&Slide&Stan&S&&Dr&MD&&DOC&2.16.840.1.113883.19.4.6&ISO
 
+OBX|1|NM|17861-6^Calcium [Mass/volume] in Serum or 
Plasma^LN||27.3|mg/dL^milligrams per 
deciliter^UCUM|8.7-10.7|HH|||F|||201104101130-0500|||||201104101325-0500||||GHH 
Lab^L^^^^CLIA&2.16.840.1.113883.19.4.6&ISO^XX^^^1236|3434 Industrial Loop^^Ann 
Arbor^MI^99999^USA^B|9876543^Slide^Stan^S^^^^^NPPES&2.16.840.1.113883.19.4.6&ISO^L^^^NPI
 
+OBX|2|NM|3094-0^Urea nitrogen [Mass/volume] in Serum of 
Plasma^LN||15|mg/dL^milligrams per deciliter^UCUM|6 to 
23|N|||F|||201104101130-0500|||||201104101325-0500||||GHH 
Lab^L^^^^CLIA&2.16.840.1.113883.19.4.6&ISO^XX^^^1236|3434 Industrial Loop^^Ann 
Arbor^MI^99999^USA^B|9876543^Slide^Stan^S^^^^^NPPES&2.16.840.1.113883.19.4.6&ISO^L^^^NPI
 
+OBX|3|NM|2160-0^Creatinine [Mass/volume] in Serum or 
Plasma^LN||1.8|mg/dL^milligrams per deciliter^UCUM|0.7 to 
1.2|H|||F|||201104101130-0500|||||201104101325-0500||||GHH 
Lab^L^^^^CLIA&2.16.840.1.113883.19.4.6&ISO^XX^^^1236|3434 Industrial Loop^^Ann 
Arbor^MI^99999^USA^B|9876543^Slide^Stan^S^^^^^NPPES&2.16.840.1.113883.19.4.6&ISO^L^^^NPI
 
+OBX|4|NM|3097-3^Urea nitrogen/Creatinine [Mass ratio] in Serum or 
Plasma^LN||15||6 to 25|N|||F|||201104101130-0500|||||201104101325-0500||||GHH 
Lab^L^^^^CLIA&2.16.840.1.113883.19.4.6&ISO^XX^^^1236|3434 Industrial Loop^^Ann 
Arbor^MI^99999^USA^B|9876543^Slide^Stan^S^^^^^NPPES&2.16.840.1.113883.19.4.6&ISO^L^^^NPI
+OBX|5|NM|2885-2^Protein [Mass/volume] in Serum or Plasma^LN||8.9|gm/dL^grams 
per deciliter^UCUM|6.3 to 
8.2|H|||F|||201104101130-0500|||||201104101325-0500||||GHH 
Lab^L^^^^CLIA&2.16.840.1.113883.19.4.6&ISO^XX^^^1236|3434 Industrial Loop^^Ann 
Arbor^MI^99999^USA^B|9876543^Slide^Stan^S^^^^^NPPES&2.16.840.1.113883.19.4.6&ISO^L^^^NPI
 
+OBX|6|NM|1751-7^Albumin [Mass/volume] in Serum or Plasma^LN||5.7|gm/dL^grams 
per deciliter^UCUM|3.5 to 
5.0|H|||F|||201104101130-0500|||||201104101325-0500||||GHH 
Lab^L^^^^CLIA&2.16.840.1.113883.19.4.6&ISO^XX^^^1236|3434 Industrial Loop^^Ann 
Arbor^MI^99999^USA^B|9876543^Slide^Stan^S^^^^^NPPES&2.16.840.1.113883.19.4.6&ISO^L^^^NPI
 
+OBX|7|NM|2336-6^Globulin [Mass/volume] in Serum or Plasma^LN||4.7|gm/dL^grams 
per deciliter^UCUM|2.2 to 
4.2|H|||F|||201104101130-0500|||||201104101325-0500||||GHH 
Lab^L^^^^CLIA&2.16.840.1.113883.19.4.6&ISO^XX^^^1236|3434 Industrial Loop^^Ann 
Arbor^MI^99999^USA^B|9876543^Slide^Stan^S^^^^^NPPES&2.16.840.1.113883.19.4.6&ISO^L^^^NPI
 
+OBX|8|NM|1759-0^Albumin/Globulin [Mass ratio] in Serum or Plasma^LN||1.7||0.8 
to 2.0|N|||F|||201104101130-0500|||||201104101325-0500||||GHH 
Lab^L^^^^CLIA&2.16.840.1.113883.19.4.6&ISO^XX^^^1236|3434 Industrial Loop^^Ann 
Arbor^MI^99999^USA^B|9876543^Slide^Stan^S^^^^^NPPES&2.16.840.1.113883.19.4.6&ISO^L^^^NPI
+OBX|9|NM|1975-2^Bilirubin.total [Mass/volume] in Serum or 
Plasma^LN||0.7|mg/dL^milligrams per deciliter^UCUM|0.3 to 
1.9|N|||F|||201104101130-0500|||||201104101325-0500||||GHH 
Lab^L^^^^CLIA&2.16.840.1.113883.19.4.6&ISO^XX^^^1236|3434 Industrial Loop^^Ann 
Arbor^MI^99999^USA^B|9876543^Slide^Stan^S^^^^^NPPES&2.16.840.1.113883.19.4.6&ISO^L^^^NPI
 
+OBX|10|NM|2345-7^Glucose [Mass/volume] in Serum or 
Plasma^LN||55|mg/dL^milligrams per deciliter^UCUM|60 to 
109|L|||F|||201104101130-0500|||||201104101325-0500||||GHH 
Lab^L^^^^CLIA&2.16.840.1.113883.19.4.6&ISO^XX^^^1236|3434 Industrial Loop^^Ann 
Arbor^MI^99999^USA^B|9876543^Slide^Stan^S^^^^^NPPES&2.16.840.1.113883.19.4.6&ISO^L^^^NPI
 
+OBX|11|NM|6768-6^Alkaline phosphatase [Enzymatic activity/volume] in Serum or 
Plasma^LN||64|U/L^units per liter^UCUM|32 to 
110|N|||F|||201104101130-0500|||||201104101325-0500||||GHH 
Lab^L^^^^CLIA&2.16.840.1.113883.19.4.6&ISO^XX^^^1236|3434 Industrial Loop^^Ann 
Arbor^MI^99999^USA^B|9876543^Slide^Stan^S^^^^^NPPES&2.16.840.1.113883.19.4.6&ISO^L^^^NPI
 
+OBX|12|NM|1920-8^Aspartate aminotransferase [Enzymatic activity/volume] in 
Serum or Plasma^LN||6|U/L^units per liter^UCUM|6 to 
18|N|||F|||201104101130-0500|||||201104101325-0500||||GHH 
Lab^L^^^^CLIA&2.16.840.1.113883.19.4.6&ISO^XX^^^1236|3434 Industrial Loop^^Ann 
Arbor^MI^99999^USA^B|9876543^Slide^Stan^S^^^^^NPPES&2.16.840.1.113883.19.4.6&ISO^L^^^NPI
 
+OBX|13|NM|1742-6^Alanine aminotransferase [Enzymatic activity/volume] in Serum 
or Plasma^LN||10|U/L^units per liter^UCUM|5 to 
35|N|||F|||201104101130-0500|||||201104101325-0500||||GHH 
Lab^L^^^^CLIA&2.16.840.1.113883.19.4.6&ISO^XX^^^1236|3434 Industrial Loop^^Ann 
Arbor^MI^99999^USA^B|9876543^Slide^Stan^S^^^^^NPPES&2.16.840.1.113883.19.4.6&ISO^L^^^NPI
 
+OBX|14|NM|2951-2^Sodium [Moles/volume] in Serum or 
Plasma^LN||140|mmol/L^millimoles per liter^UCUM|137 to 
147|N|||F|||201104101130-0500|||||201104101325-0500||||GHH 
Lab^L^^^^CLIA&2.16.840.1.113883.19.4.6&ISO^XX^^^1236|3434 Industrial Loop^^Ann 
Arbor^MI^99999^USA^B|9876543^Slide^Stan^S^^^^^NPPES&2.16.840.1.113883.19.4.6&ISO^L^^^NPI
 
+OBX|15|NM|2823-3^Potassium [Moles/volume] in Serum or 
Plasma^LN||4.5|mmol/L^millimoles per liter^UCUM|3.4 to 
5.3|N|||F|||201104101130-0500|||||201104101325-0500||||GHH 
Lab^L^^^^CLIA&2.16.840.1.113883.19.4.6&ISO^XX^^^1236|3434 Industrial Loop^^Ann 
Arbor^MI^99999^USA^B|9876543^Slide^Stan^S^^^^^NPPES&2.16.840.1.113883.19.4.6&ISO^L^^^NPI
 
+OBX|16|NM|2075-0^Chloride [Moles/volume] in Serum or 
Plasma^LN||99|mmol/L^millimoles per liter^UCUM|99 to 
108|N|||F|||201104101130-0500|||||201104101325-0500||||GHH 
Lab^L^^^^CLIA&2.16.840.1.113883.19.4.6&ISO^XX^^^1236|3434 Industrial Loop^^Ann 
Arbor^MI^99999^USA^B|9876543^Slide^Stan^S^^^^^NPPES&2.16.840.1.113883.19.4.6&ISO^L^^^NPI
 
+OBX|17|NM|2028-9^Carbon dioxide, total [Moles/volume] in Serum or 
Plasma^LN||27|mmol/L^millimoles per liter^UCUM|22 to 
29|N|||F|||201104101130-0500|||||201104101325-0500||||GHH 
Lab^L^^^^CLIA&2.16.840.1.113883.19.4.6&ISO^XX^^^1236|3434 Industrial Loop^^Ann 
Arbor^MI^99999^USA^B|9876543^Slide^Stan^S^^^^^NPPES&2.16.840.1.113883.19.4.6&ISO^L^^^NPI
 
+SPM|1|23456&EHR&2.16.840.1.113883.19.3.2.3&ISO^9700122&Lab&2.16.840.1.113883.19.3.1.6&ISO||119364003^Serum
 specimen^SCT^^^^20080131|||||||||||||201104101130-0500|201104101130-0500

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/unsolicited-vaccine-update-long
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/unsolicited-vaccine-update-long
 
b/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/unsolicited-vaccine-update-long
new file mode 100644
index 0000000..8edd3fd
--- /dev/null
+++ 
b/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/unsolicited-vaccine-update-long
@@ -0,0 +1,16 @@
+MSH|^~\&||MA0000||GA0000|19970901||VXU^V04|19970522MA53|T|2.3.1|||AL
+PID|||1234^^^^SR^~1234-12^^^^LR^~3872^^^^MR~221345671^^^^SS^~430078856^^^^MA^ 
||KENNEDY^JOHN^FITZGERALD^JR^^^L|BOUVIER^^^^^^M|19900607|M|KENNEDY^BABY 
BOY^^^^^^ B|W^WHITE^NY8 RACE CODES^W^WHITE^HL70005|123 MAIN ST^APT 
3B^LEXINGTON^MA^00210^ ^M^MSA CODE^MA034~345 ELM 
ST^^BOSTON^MA^00314^^BLD~^^^^^^BR^^MA002| |(617) 555-1212 
^PRN^PH^^^617^5551212^^||EN^ENGLISH^HL70296^^^|||||||WN^NOT HISPANIC^LOCAL CODE 
SET^NH^NOT OF HISPANIC ORIGIN^HL70189|CHILDREN=S HOSPITAL
+PD1|||CHILDREN=S HOSPITAL^^1234^^^^XX~LEXINGTON 
CLINIC^^1234A^^^^FI|12345^CARE^ 
PRIMARY^^^DR^MD^^^L^^^DN|||||||03^REMINDER/RECALL - NO CALLS^HL70215|Y
+NK1|1|KENNEDY^JACQUELINE^LEE|32^MOTHER^HL70063||||||||||||||||||||||||||||||898666725^^^^SS
+NK1|2|KENNEDY^JOHN^FITZGERALD|33^FATHER^HL70063||||||||||||||||||||||||||||||822546618^^^^SS
+PV1||R|||||||||||||||A|||V02^19900607~H02^19900607
+RXA|0|1|19900607|19900607|08^HEPB-PEDIATRIC/ADOLESCENT^CVX^90744^HEPB-PEDATRIC/ADOLESCENT^CPT|.5|ML^^ISO+||03^HISTORICAL
 INFORMATION - FROM PARENT=S WRITTEN RECORD^NIP0001|^JONES^LISA|^^^CHILDREN=S 
HOSPITAL||5|MCG^^ISO+|MRK12345| 199206|MSD^MERCK^MVX
+RXA|0|4|19910907|19910907|50^DTAP-HIB^CVX^90721^DTAP-HIB^CPT|.5|ML^^ISO+||00^NEW
 IMMUNIZATION RECORD^NIP0001|1234567890^SMITH^SALLY^S^^^^^^^^^VEI~1234567891 
^O=BRIAN^ROBERT^A^^DR^MD^^^^^^OEI|^^^CHILD HEALTHCARE CLINIC^^^^^101 MAIN 
STREET^^ BOSTON^MA||||W46932777|199208|PMC^PASTEUR MERIEUX 
CONNAUGHT^MVX|||CP|A| 19910907120030
+RXR|IM^INTRAMUSCULAR^HL70162|LA^LEFT ARM^HL70163
+RXA|0|1|19910907|19910907|03^MMR^CVX|.5|ML^^ISO+|||1234567890^SMITH^SALLY^S^^^^^^^^^VEI~1234567891^O=BRIAN^ROBERT^A^^DR^MD^^^^^^OEI|^^^CHILD
 HEALTHCARE CLINIC^^^^^101 MAIN 
STREET^^BOSTON^MA||||W2348796456|19920731|MSD^MERCK^MVX
+RXR|SC^SUBCUTANEOUS^HL70162|LA^LEFT ARM^HL70163
+RXA|0|5|19950520|19950520|20^DTAP^CVX|.5|ML^^ISO+|||1234567891^O=BRIAN^ROBERT^A^^DR|^^^CHILD
 HEALTHCARE CLINIC^^^^^101 MAIN STREET^^BOSTON^MA||||W22532806|19950705|PMC^ 
PASTEUR MERIEUX CONNAUGHT^MVX
+RXR|IM^INTRAMUSCULAR^HL70162|LA^LEFT ARM^HL70163
+NTE|PATIENT DEVELOPED HIGH FEVER APPROX 3 HRS AFTER VACCINE INJECTION
+RXA|0|2|19950520|19950520|03^MMR^CVX|.5|ML^^ISO+|||1234567891^O=BRIAN^ROBERT^A^^DR|^^^CHILD
 HEALTHCARE CLINIC^^^^^101 MAIN STREET^^BOSTON^MA||||W2341234567|19950630| 
MSD^MERCK^MVX
+RXR|SC^SUBCUTANEOUS^HL70162|LA^LEFT ARM^HL70163

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/unsolicited-vaccine-update-short
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/unsolicited-vaccine-update-short
 
b/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/unsolicited-vaccine-update-short
new file mode 100644
index 0000000..c3e7cf0
--- /dev/null
+++ 
b/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/unsolicited-vaccine-update-short
@@ -0,0 +1,4 @@
+MSH|^~\&|||||||VXU^V04|19970522MA53|P|2.3.1
+PID|||221345671^^^^SS||KENNEDY^JOHN^FITZGERALD^JR|BOUVIER^^^^^^M|19900607|M|||^^^^MA^^^BLD
+NK1|1|KENNEDY^JACQUELINE^LEE|32^MOTHER^HL70063
+RXA|0|1|19900607|19900607|08^HEPB-PEDIATRIC/ADOLESCENT^CVX|.5|ML^^ISO+||||||||MRK12345||MSD^MERCK^MVX

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/vaccine-query
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/vaccine-query 
b/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/vaccine-query
new file mode 100644
index 0000000..1bd47b2
--- /dev/null
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/vaccine-query
@@ -0,0 +1,3 @@
+MSH|^~\&||GA0000||MA0000|199705221605||VXQ^V01|19970522GA40|T|2.3.1|||AL
+QRD|199705221605|R|I|19970522GA05|||25^RD|^KENNEDY^JOHN^FITZGERALD^JR|VXI^VACCINE
 INFORMATION^HL70048|^SIIS
+QRF|MA0000||||256946789~19900607~MA~MA99999999~88888888~KENNEDY^JACQUELINE^LEE~BOUVIER~898666725~KENNEDY^JOHN^FITZGERALD~822546618

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/vaers-message-long
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/vaers-message-long
 
b/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/vaers-message-long
new file mode 100644
index 0000000..888b04c
--- /dev/null
+++ 
b/nifi/nifi-commons/nifi-hl7-query-language/src/test/resources/vaers-message-long
@@ -0,0 +1,60 @@
+MSH|^~\&||GA0000||VAERS 
PROCESSOR|20010331605||ORU^R01|20010422GA03|T|2.3.1|||AL|
+PID|||1234^^^^SR~1234-12^^^^LR~00725^^^^MR||Doe^John^Fitzgerald^JR^^^L||20001007|M||2106-3^White^HL70005|123
 Peachtree St^APT 3B^Atlanta^GA^30210^^M^^GA067||(678) 555-1212^^PRN|
+NK1|1|Jones^Jane^Lee^^RN|VAB^Vaccine administered by (Name)^HL70063|
+NK1|2|Jones^Jane^Lee^^RN|FVP^Form completed by (Name)-Vaccine 
provider^HL70063|101 Main Street^^Atlanta^GA^38765^^O^^GA121||(404) 
554-9097^^WPN|
+ORC|CN|||||||||||1234567^Welby^Marcus^J^Jr^Dr.^MD^L|||||||||Peachtree 
Clinic|101 Main Street^^Atlanta^GA^38765^^O^^GA121|(404) 554-9097^^WPN|101 Main 
Street^^Atlanta^GA^38765^^O^^GA121|
+OBR|1|||^CDC VAERS-1 (FDA) Report|||20010316|
+OBX|1|NM|21612-7^Reported Patient Age^LN||05|mo^month^ANSI|
+OBX|1|TS|30947-6^Date form completed^LN||20010316|
+OBX|2|FT|30948-4^Vaccination adverse events and treatment, if any^LN|1|fever 
of 106F, with vomiting, seizures, persistent crying lasting over 3 hours, loss 
of appetite|
+OBX|3|CE|30949-2^Vaccination adverse event outcome^LN|1|E^required emergency 
room/doctor visit^NIP005|
+OBX|4|CE|30949-2^Vaccination adverse event outcome^LN|1|H^required 
hospitalization^NIP005|
+OBX|5|NM|30950-0^Number of days hospitalized due to vaccination adverse 
event^LN|1|02|d^day^ANSI|
+OBX|6|CE|30951-8^Patient recovered^LN||Y^Yes^ HL70239|
+OBX|7|TS|30952-6^Date of vaccination^LN||20010216|
+OBX|8|TS|30953-4^Adverse event onset date and time^LN||200102180900|
+OBX|9|FT|30954-2^Relevant diagnostic tests/lab data^LN||Electrolytes, CBC, 
Blood culture|
+OBR|2|||30955-9^All vaccines given on date listed in #10^LN|
+OBX|1|CE30955-9&30956-7^Vaccine type^LN|1|08^HepB-Adolescent/pediatric^CVX|
+OBX|2|CE|30955-9&30957-5^Manufacturer^LN|1|MSD^Merck^MVX|
+OBX|3|ST|30955-9&30959-1^Lot number^LN|1|MRK12345|
+OBX|4|CE|30955-9&30958-3^ Route^LN|1|IM^Intramuscular ^HL70162|
+OBX|5|CE|30955-9&31034-2^Site^LN|1|LA^Left arm^ HL70163|
+OBX|6|NM|30955-9&30960-9^Number of previous doses^LN|1|01I
+OBX|7|CE|CE|30955-9&30956-7^Vaccine type^LN|2|50^DTaP-Hib^CVX|
+OBX|8|CE|30955-9&30957-5^ Manufacturer^LN|2|WAL^Wyeth_Ayerst^MVX|
+OBX|9|ST|30955-9&30959-1^Lot number^LN|2|W46932777|
+OBX|10|CE|30955-9&30958-3^ Route^LN|2|IM^Intramuscular^HL70162|
+OBX|11|CE|30955-9&31034-2^Site^LN|2|LA^Left arm^HL70163|
+OBX|12|NM|30955-9&30960-9^Number of previous doses^LN|2|01|
+OBR|3|||30961-7^Any other vaccinations within 4 weeks prior to the date listed 
in #10|
+OBX|1|CE|30961-7&30956-7^Vaccine type^LN|1|10^IPV^CVX|
+OBX|2|CE|30961-7&30957-5^Manufacturer^LN|1|PMC^Aventis Pasteur ^MVX|
+OBX|3|ST|30961-7&30959-1^Lot number^LN|1|PMC123456|
+OBX|4|CE|30961-7&30958-3^Route^LN|1|SC^Subcutaneaous^HL70162|
+OBX|5|CE|30961-7&31034-2^Site^LN|1|LA^Left arm^HL70163|
+OBX|6|NM|30961-7&30960-9^Number of previous doses^LN|1|01|
+OBX|7|TS|30961-7&31035-9^date given^LN|1|20001216|
+OBX|8|CE|30962-^Vaccinated at^LN||PVT^Private doctor�s 
office/hospital^NIP009|
+OBX|9|CE|30963-3^Vaccine purchased with^LN||PBF^Public funds^NIP008|
+OBX|10|FT|30964-1^Other medications^LN||None|
+OBX|11|FT|30965-8^Illness at time of vaccination (specify)^LN||None|
+OBX|12|FT|30966-6^Pre-existing physician diagnosed allergies, birth defects, 
medical conditions^LN||Past conditions convulsions|
+OBX|13|CE|30967-4^Was adverse event reported previously^LN||N^no^NIP009|
+OBR|4||30968-2^Adverse event following prior vaccination in patient^LN|
+OBX|1|TX|30968-2&30971-6^Adverse event^LN||None|
+OBR|5||30969-0^Adverse event following prior vaccination in brother^LN|
+OBX|1|TX||30969-0&30971-6^Adverse event^LN||vomiting, fever, otitis media|
+OBX|2|NM||30969-0&30972-4^Onset age^LN||04|mo^month^ANSI|
+OBX|3|CE||30969-0&30956-7^Vaccine Type ^LN||10^IPV^CVX|
+OBX|4|NM||30969-0&30973-2^Dose number in series^LN||02|
+OBR|6|||30970-8^Adverse event following prior vaccination in sister^LN|
+OBX|1|TX|30970-8&30971-6^Adverse event^LN||None|
+OBR|7||^For children 5 and under|
+OBX|1|NM|8339-4^Body weight at birth^LN||82|oz^ounces^ANSI|
+OBX|2|NM|30974-0^Number of brothers and sisters^LN||2|
+OBR|8|||^Only for reports submitted by manufacturer/immunization project|
+OBX|1|ST|30975-7^Mfr./Imm. Proj. report no.^LN||12345678|
+OBX|2|TS|30976-5^Date received by manufacturer/immunization 
project^LN||12345678|
+OBX|3|CE|30977-3^15 day report^LN||N^No^HL70136|
+OBX|4|CE|30978-1^Report type^LN||IN^Initial^NIP010|

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-nar-bundles/nifi-hl7-bundle/nifi-hl7-nar/pom.xml
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-hl7-bundle/nifi-hl7-nar/pom.xml 
b/nifi/nifi-nar-bundles/nifi-hl7-bundle/nifi-hl7-nar/pom.xml
new file mode 100644
index 0000000..391206e
--- /dev/null
+++ b/nifi/nifi-nar-bundles/nifi-hl7-bundle/nifi-hl7-nar/pom.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+  http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.nifi</groupId>
+        <artifactId>nifi-hl7-bundle</artifactId>
+        <version>0.1.0-incubating-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>nifi-hl7-nar</artifactId>
+    <packaging>nar</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.nifi</groupId>
+            <artifactId>nifi-hl7-processors</artifactId>
+            <version>0.1.0-incubating-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-nar-bundles/nifi-hl7-bundle/nifi-hl7-processors/.gitignore
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-nar-bundles/nifi-hl7-bundle/nifi-hl7-processors/.gitignore 
b/nifi/nifi-nar-bundles/nifi-hl7-bundle/nifi-hl7-processors/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/nifi/nifi-nar-bundles/nifi-hl7-bundle/nifi-hl7-processors/.gitignore
@@ -0,0 +1 @@
+/target/

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/45416dc6/nifi/nifi-nar-bundles/nifi-hl7-bundle/nifi-hl7-processors/pom.xml
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-hl7-bundle/nifi-hl7-processors/pom.xml 
b/nifi/nifi-nar-bundles/nifi-hl7-bundle/nifi-hl7-processors/pom.xml
new file mode 100644
index 0000000..2a0c909
--- /dev/null
+++ b/nifi/nifi-nar-bundles/nifi-hl7-bundle/nifi-hl7-processors/pom.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+  http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.nifi</groupId>
+        <artifactId>nifi-hl7-bundle</artifactId>
+        <version>0.1.0-incubating-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>nifi-hl7-processors</artifactId>
+    <packaging>jar</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.nifi</groupId>
+            <artifactId>nifi-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.nifi</groupId>
+            <artifactId>nifi-processor-utils</artifactId>
+        </dependency>
+        
+        <dependency>
+               <groupId>org.apache.nifi</groupId>
+               <artifactId>nifi-hl7-query-language</artifactId>
+               <version>0.1.0-incubating-SNAPSHOT</version>
+        </dependency>
+        
+               <dependency>
+                       <groupId>ca.uhn.hapi</groupId>
+                       <artifactId>hapi-base</artifactId>
+                       <version>2.2</version>
+               </dependency>       
+        <dependency>
+                 <groupId>ca.uhn.hapi</groupId>
+                 <artifactId>hapi-structures-v21</artifactId>
+                 <version>2.2</version>
+               </dependency>
+               <dependency>
+                 <groupId>ca.uhn.hapi</groupId>
+                 <artifactId>hapi-structures-v22</artifactId>
+                 <version>2.2</version>
+               </dependency>
+        <dependency>
+                 <groupId>ca.uhn.hapi</groupId>
+                 <artifactId>hapi-structures-v23</artifactId>
+                 <version>2.2</version>
+               </dependency>
+               <dependency>
+                 <groupId>ca.uhn.hapi</groupId>
+                 <artifactId>hapi-structures-v231</artifactId>
+                 <version>2.2</version>
+               </dependency>
+        <dependency>
+                 <groupId>ca.uhn.hapi</groupId>
+                 <artifactId>hapi-structures-v24</artifactId>
+                 <version>2.2</version>
+               </dependency>
+               <dependency>
+                 <groupId>ca.uhn.hapi</groupId>
+                 <artifactId>hapi-structures-v25</artifactId>
+                 <version>2.2</version>
+               </dependency>
+               <dependency>
+                 <groupId>ca.uhn.hapi</groupId>
+                 <artifactId>hapi-structures-v251</artifactId>
+                 <version>2.2</version>
+               </dependency>
+        <dependency>
+                 <groupId>ca.uhn.hapi</groupId>
+                 <artifactId>hapi-structures-v26</artifactId>
+                 <version>2.2</version>
+               </dependency>
+        
+        <dependency>
+            <groupId>org.apache.nifi</groupId>
+            <artifactId>nifi-mock</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-simple</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+</project>

Reply via email to