PanatrackerGP has a unique and powerful feature that enables the reading and parsing of GS1 barcodes. This type of barcode can contain multiple pieces of data in a single barcode (e.g., item code, lot code, production date, etc.). With proper configuration, PanatrackerGP can parse these codes and capture the data with a single barcode scan.

PanatrackerGP accomplishes this parsing through the use of the CompositeCodeXml setting. This setting captures the rules to parse and identify the GS1 application identifier components in a GS1 barcode. This feature is based upon the power of Regex expressions. Regex is a powerful, yet complicated language that enables the definition of patterns in data. A default CompositeCodeXml setting is already set in your PanatrackerGP system, but Panatrack's Professional Services team can work with you to tune this feature to your environment.
Below is the default setting that should address most needs for GS1 barcodes.
<CompositeCode xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><CompositePatterns><Pattern PatternName="GS1" RecognitionPattern="^(01|02)\d{14}"><Segment Regex="^(01|02)(?'item'\d{1,14})(\|)?" /><Segment Regex="^11(?'proddate'\d{6})(\|)?" /><Segment Regex="^17(?'expirationdate'\d{6})(\|)?" /><Segment Regex="^15(?'bestbydate'\d{6})(\|)?" /><Segment Regex="^10(?'lot'\w*)(\|)?" /><Segment Regex="^240(?'LotAttribute1'\w{7})(?'LotAttribute2'\w*)(\|)?" /><Segment Regex="^21(?'serial'\w{1,20})(\|)?" /><Segment Regex="^3202(?'quantity'\d{6})(\|)?" Decimal="2" /><Segment Regex="^3201(?'quantity'\d{6})(\|)?" Decimal="1" /><Segment Regex="^3200(?'quantity'\d{6})(\|)?" Decimal="0" /><Segment Regex="^(?:30|37)(?'altquantity'\d*)(\|)?" /></Pattern><Pattern PatternName="GS1 with identifier" RecognitionPattern="^(?:]d2|]C1|]e0|]Q3)"><Segment Regex="^(?'symbology'.{3})"/><Segment Regex="^(01|02)(?'item'\d{1,14})(\|)?" /><Segment Regex="^11(?'proddate'\d{6})(\|)?" /><Segment Regex="^17(?'expirationdate'\d{6})(\|)?" /><Segment Regex="^15(?'bestbydate'\d{6})(\|)?" /><Segment Regex="^10(?'lot'\w*)(\|)?" /><Segment Regex="^240(?'LotAttribute1'\w{7})(?'LotAttribute2'\w*)(\|)?" /><Segment Regex="^21(?'serial'\w{1,20})(\|)?" /><Segment Regex="^3202(?'quantity'\d{6})(\|)?" Decimal="2" /><Segment Regex="^3201(?'quantity'\d{6})(\|)?" Decimal="1" /><Segment Regex="^3200(?'quantity'\d{6})(\|)?" Decimal="0" /><Segment Regex="^(?:30|37)(?'altquantity'\d*)(\|)?" /></Pattern><Pattern PatternName="Panacode Bulk" RecognitionPattern="^\[PB\]"><Segment Regex=".*<I>(?'item'[\w\s\/\.-]*)" /><Segment Regex=".*<U>(?'unitofmeasure'[\w\s\/\.-]*)" /><Segment Regex=".*<Q>(?'quantity'[\w\s\/\.-]*)" /></Pattern><Pattern PatternName="Panacode Lot" RecognitionPattern="^\[PL\]"><Segment Regex=".*<I>(?'item'[\w\s\/\.-]*)" /><Segment Regex=".*<L>(?'lot'[\w\s\/\.-]*)" /><Segment Regex=".*<U>(?'unitofmeasure'[\w\s\/\.-]*)" /><Segment Regex=".*<Q>(?'quantity'[\w\s\/\.-]*)" /></Pattern><Pattern PatternName="Panacode Serial" RecognitionPattern="^\[PS\]"><Segment Regex=".*<I>(?'item'[\w\s\/\.-]*)" /><Segment Regex=".*<S>(?'serial'[\w\s\/\.-]*)" /><Segment Regex=".*<U>(?'unitofmeasure'[\w\s\.-]*)" /></Pattern><Pattern PatternName='Panacode Credentials' RecognitionPattern='^\[PC\]'><Segment Regex=".*<U>(?'user'[\w\s\/\.-]*)"/><Segment Regex=".*<P>(?'password'[\w\s\/\.-]*)"/></Pattern></CompositePatterns></CompositeCode>
The above CompositeCodeXml is a way for PanatrackerGP to be field configured to handle multiple pieces of data in a single barcode, without requiring custom programming.
