ISBT 128 Barcode FAQ & Tutorial
ISBT-128 Barcode Overview
The ISBT 128 barcode symbology is an international standard based
on the Code 128
Barcode for the transfer of information associated with blood transfusion,
cellular therapy and tissue transplantation. ISBT 128 is not in the
public domain; therefore, implementation requires registration with
ICCBBA including payment of annual fees. The
ICCBBA publishes the
ISBT-128 specification,
which should be referred to in all ISBT128 projects. The purpose of
this Webpage is not to provide information about this standard, but
to describe how to use ISBT in IDAutomation's products.
ISBT 128 barcodes begin with an equal '=' or ampersand '&' character,
which is referred to as the first of two characters that make up the
data identifier. If the second character of the data identifier is a
non alpha-numeric character of 1–9, A–N or P–Z, the symbol type is a
Donation Identification Number and the second data identifier character
is also the first character of the data content. When using IDAutomation
barcode products, data identifiers should be static data (or a constant)
that is appended to the dynamic data before encoding. Encoding should
be done in the
Code 128 barcode type with the default "auto" character set enabled,
which is the default on all IDAutomation products.
A keyboard entry check character referred to as [K] is sometimes
required at the end of ISBT-128 barcodes to verify correct manual entry.
This character appears only in the eye-readable text (aka: human readable
text) and is not encoded in the barcode itself. K is calculated according
to the ISO/IEC 7064 modulo 37-2
checksum method.
Flag characters are required for some ISBT barcode symbols. When
used, flag characters are encoded in the barcode and are included in
the eye-readable text. However, flag characters are not part of the
product identification itself. When required in the symbol and not used,
the value of the flags should be 00.
The following tutorial demonstrates the implementation of a donation
number of W0000 07 123456 in Crystal Reports with the IDAutomation
Universal Barcode
Font Advantage™, which produces Code 128 and many other barcode
types from a single font. This tutorial may also be used as a guide
for other types of label and reporting software programs.
- Install the
Universal
Barcode Font Advantage™.
- Open a report in design mode with Crystal Reports.
- Follow the
Barcode Implementation Tutorial for Crystal Reports, with the
following considerations:
- Modify the source of the data to be encoded in Step 10 so
that static data, such as the "=" character, is separated from
dynamic data that is retrieved from a database. For example,
the following formula encodes "=", the donor number from a database
and two flag characters:
IDAutomation_Uni_C128("=" & {Table1.DonorNumberField} & "01",
FALSE )
- Open field explorer and create three separate fields for
the text interpretation mentioned in step 12, named ISBT Flag,
ISBT ID and ISBT K.

- Modify the ISBT ID formula to connect to the data source
of the Donor Number Field.
- Place the ISBT Flag formula on the form with the needed
data (in this case "01" is used) and choose to rotate the field
by 270 degrees with the format field option.
- Modify the ISBT K formula to include the K check character:
- Change the formula syntax from Crystal Syntax to Basic
Syntax.
- Open and paste the following formula into the formula
editor, where DataString is equal to the data being evaluated
for the check digit:
Dim DataString As String
DataString = {Table1.DonorNumberField}
'DataString must equal to the data being evaluated for the check digit,
'Example: DataString = "W0000 07 123456" Dim CorrectData As String Dim WeightedSum As Number Dim StringLength As Number Dim AscValue As Number Dim CharValue As Number Dim CheckDigitAscVal As Number Dim CheckDigitAsc As Number Dim StringLen As Number Dim I As Number StringLen = Len(DataString) For I = 1 To StringLen AscValue = Asc(Mid(DataString, I, 1)) If AscValue < 58 And AscValue > 47 Then CorrectData = CorrectData &
Mid(DataString, I, 1) '0-9
If AscValue < 91 And AscValue > 64 Then CorrectData = CorrectData &
Mid(DataString, I, 1) 'A-Z
Next I
DataString = CorrectData
CorrectData = ""
WeightedSum = 0
StringLength = Len(DataString)
For I = 1 To StringLength
AscValue = Asc(Mid(DataString, I, 1))
If AscValue < 58 And AscValue > 47 Then CharValue = AscValue - 48
'0-9 = values
If AscValue < 91 And AscValue > 64 Then CharValue = AscValue - 55
'A-Z = values 10-35
WeightedSum = ((WeightedSum + CharValue) * 2) Mod 37
Next I
CheckDigitAscVal = (38 - WeightedSum) Mod 37
If CheckDigitAscVal < 10 Then CheckDigitAsc = CheckDigitAscVal + 48 '0-9
If CheckDigitAscVal < 36 And CheckDigitAscVal > 9 Then CheckDigitAsc =
CheckDigitAscVal + 55 'A-Z
If CheckDigitAscVal = 36 Then CheckDigitAsc = 42
Formula = Chr(CheckDigitAsc)
- Place a border around this field with the format field
option.
- Place the fields on the form and size appropriately in preview
mode.

- If problems are encountered in this tutorial, it is suggested
to
download the Crystal Report example.
The
following source code is a ISO7064 MOD 37-2 VB function used to
calculate a checksum character with an algorithm that is commonly used
in ISBT-128 barcodes as the K check character for manual keyboard entry.
The
source code may be easily used in Visual Basic applications including
VBA, VB6, VB.NET and Microsoft Access to display the check character
K. The source code is free to use with a license to any of IDAutomation's
products.
If assistance is needed, please
contact IDAutomation.
Back to Top
|