0% found this document useful (0 votes)
36 views13 pages

Host Transmission Specifications - Autolyser Dialab

The document outlines the Variable Serial Protocol for the DIALAB Autolyser, detailing communication procedures between the analyzer and host computer, including patient transmission and results reception. It emphasizes the importance of adhering to specific character lengths and checksum calculations to ensure successful data exchange. Additionally, it provides guidelines for modifying scripts and handling errors during communication.

Uploaded by

Radu Ichim
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
36 views13 pages

Host Transmission Specifications - Autolyser Dialab

The document outlines the Variable Serial Protocol for the DIALAB Autolyser, detailing communication procedures between the analyzer and host computer, including patient transmission and results reception. It emphasizes the importance of adhering to specific character lengths and checksum calculations to ensure successful data exchange. Additionally, it provides guidelines for modifying scripts and handling errors during communication.

Uploaded by

Radu Ichim
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

SECTION - IV

SOFTWARE

Important Notice:

Any modification to the Variable Serial Protocol is restricted to qualified personnel only. The

Dialab. guaranties the correct performance of the internal serial protocol. The responsibility for any

malfunction arising out of any modifications to the scripts of the Variable Serial Protocol rests with

the customer.

WARNING

This information regards the setting up of the barcode for sample tubes identification. The reading

of the sample barcode label has the same progression as patient code.

For example: Once a patient code of 15 characters has been entered, then a code of 8 characters

followed by 7 empty spaces to reach the 15 characters is sent.

The code read on the barcode label must have the same sequence 8 + 7 for correct detection.

SERIAL COMMUNICATION OF THE DIALAB Autolyser


TO A HOST COMPUTER
4-1. GENERAL
The DIALAB Autolyser allows bidirectional communication through RS 232C serial connection with
any host computer.
The particular feature of the dialog is that it is always the host computer, which initiates the
communication for either transmitting patient list or for receiving the results.
To initiate any communication the host computer will have to send to analyzer the character STX
(0x02) and expect the character ACK (0x06) as a response. At this point the host computer will
send data to the analyzer and terminate the communication by sending the character EOT (0x04).
It is important to remember that any communication is followed by a response from the analyzer.
It must be noted that if the parameter to be transmitted is shorter in length than the length
requirement of the communication protocol than a space must be added before or after. For
example the analyses have length 4, therefore to send a code GLU one must add a space before
or after to reach the length of 4 characters.

INDEX DIALAB Autolyser - Service Page 21


4-2. PATIENT TRANSMISSION
► Start communication with sequence STX<->ACK
► Send patient code................................................. (15 characters)
► Send list type for patient insertion......................... ("T" for Routine or "R" for STAT)
► Send type of serum............................................... ("S" for Serum or "U" for Urine)
► Send if the patient is a clone................................. ("Y" for Yes or "N" for No)
► Transmit position of capsule................................. ("00" unknown)
► Send number of tests to be executed................... (from "01" to "99")
► Send codes of tests to be performed.................... (4 characters)
► Send Check-Sum.................................................. (3 characters)
► Send end transmission character EOT
► Wait for response from the analyzer..................... (2 characters)
If the communication is successful then the analyzer responds with character "Y" followed by a
byte, which identifies the position where patient has been inserted. In case the communication was
unsuccessful, then the analyzer responds with "N" followed by a byte identifying the type of error.
The possible errors generated by the analyzer in response to the invalid insertion of patient are as
follows:

0x01 Check-Sum Error


0x02 Unknown Command
0x03 Routine/STAT field Error
0x04 Serum/Urine field Error
0x05 Clone Yes/No field Error
0x06 Cup position Error
0x07 Number of Analysis field Error
0x08 Wrong Number of Test
0x09 Position already in execution
0x0A Cloning impossible
0x0B Code duplicated
0x0C One or more analysis not present in the analyzer
0x0D One or more analysis not present in the current plate
0x0E Too many analysis for the patient
0x12 No patient to repeat
0x13 The serum field in the patient to be repeated is different from the
memorized one
0x14 Patient to be repeated, but the list is already full
0x15 Patient to be repeated, but the list is different
0x16 The assigned position is already in use
0x17 Already existing or performed patient, it is not a clone and belongs
to a supplementary (extra) list
0x18 Already performed patient, but no repetitions or clones are active

For example to send a patient with code 000000000000001, serum type and with analysis GLU,
BUN and CHO onto the STATS list, then one must send the following sequence of characters
(excluding initial sequence STX<->ACK):
000000000000001RSN0003GLU BUN CHO 134<EOT>
Where:
000000000000001...... Patient code
R................................. Identifies STATS list
S................................. Identifies the type of patient (in this case: Serum)
N................................. Identifies that the patient is not a clone
00................................ Unknown position (the analyzer will insert the patient in a convenient
position)
03................................ Identifies the number of test to be executed.
GLU, BUN, CHO......... Test codes (observe the space after each code to reach the 4
characters limit)
134.............................. Identifies the Check-Sum
<EOT>........................ This character ends communication

INDEX DIALAB Autolyser - Service Page 22


4-3. RESULTS RECEPTION
There are three commands for receiving reports from the analyzer:
R........ Reception of next available report
L......... Reception of the last report sent (in case of reception problems)
A........ Reception of the first available report (in case one desires to receive again all
the reports)
The commands R, L, and A require standard communication or the procedure STX<->ACK and
the character EOT to end communication.
As a response to one of these three commands the analyzer sends the requested report (if
available) or the character NAK (0x15) if there is no report to be sent.
It must be borne in mind that after a run test the reports are not immediately available for
transmission, as these need validation. To do this, go to Utility menu, RS232 and enable the
option "Accept result to be sent". This operation must always be performed after each run test or
groups of run test.
There is also an additional option for performing validation operation automatically. Go to Setup of
the analyzer (Menu Utility, Setup Analyzer), go to the Serial (fourth from the left) and enable the
option "All results must be sent automatically (without validate)" at the bottom of the page.
In case of positive response to the request for a report the analyzer transmits:
Patient code................. 15 characters
List type....................... "T" for Routine or "R" for STATS
Sample type................. "S" for Serum or "U" for Urine
Number of reports....... 3 characters

For each report:


Analysis code.............. 4 characters
Result........................... 7 characters
Check-Sum.................. 3 characters
<EOT>

4-4. CALCULATION OF CHECK-SUM:


This procedure calculates a Control code in accordance with the transmitted or received data.
An algebraic sum of ASCII values of all the sent characters is executed. For example the character
"A" has ASCII value 65 - 0x41.
Consequently the module 256 of the found value is executed (balance of dividing the value by
256). This is the Check-Sum to be sent.

IMPORTANT NOTE FOR VARIABLE COMMUNICATION PROTOCOL


THE TERMINATING CHARACTERS OF VARIABLE LENGTH STRINGS DO NOT ENTER INTO
THE CHECKSUM CALCULATION

INDEX DIALAB Autolyser - Service Page 23


4-5. WIRING DIAGRAM OF INTERFACE CABLE

Autolyser PLUS

Autolyser PLUS

INDEX DIALAB Autolyser - Service Page 24


4-6. VARIABLE SERIAL PROTOCOL
Introduction
The variable serial protocol has been designed to provide the user with possibility to personalize
the transmitted and received data from the analyzer.

ATTENTION: WHEN A VARIABLE COMMUNICATION PROTOCOL IS CREATED OR


MODIFIED (BOTH IN TRANSMITTING AND/OR RECEIVING), IT IS ABSOLUTELY
NECESSARY TO SAVE BOTH TRANSMITTING AND RECEIVING SCRIPTS AND TO COMPILE
AGAIN BOTH OF THEM, EVEN THOU ONLY ONE HAS BEEN MODIFIED.

The user can transmit or receive in addition to preset data (patient code, analysis code, results
etc.), also the simple text strings and/or characters in order to meet the personal requirements.

Not only the user can decide to send or receive numerical information (for example number of
tests) not as single byte but as a preset numerical string or vice versa.

For example the user can decide to receive something like:

"Initiate analysis data"


<Analysis data true and typical>
"End analysis data"

Where the phrases "Initiate analysis data" and "End analysis data" do not refer to any preset data
by the analyzer but serve only for monitoring communication process (can be useful for inserting
specific markers on those programs which obtain information from text files).

It is obvious that the protocol of initiation and end of communication, the commands for the request
of report, and the analyzer responses in case of error or success remain identical to the usual
preset serial communication.

NOTE:

a) If a check-sum is omitted in a communication then the analyzer will not control it.
b) The following numbers have been used to represent the error codes relevant to sending a
patient to the analyzer as regards the parameters not part of the standard serial
communication:

0x0F Data (constant) sent to a TAG #Char, #String or #String does not fall within
the possible values range
0x10 Data (variable) sent to a TAG #Char, #String or #String is not valid
0x11 An analysis variable is outside the SET BEGIN/END relative to the analysis

INDEX DIALAB Autolyser - Service Page 25


Error Code Description
1 Number of invalid analysis
2 Invalid Data (not through variables)
3 Invalid Data (through variables)
4 An analysis variable is outside the SET BEGIN/END relative to
the analysis
18 The patient is not to be repeated
19 The field corresponding to the Serum/Urine is different from
the patient in memory
20 Patients list full
21 Transmitted list different from the original
22 A patient has been sent after assigning him a specific position,
which is already occupied.
23 The patient is already in the list (or has been executed), the
Clone field has not been enabled, but the list of assignment is
different in comparison to that of the patient stored in the
analyzer.
24 The transmitted code belongs to an executed patient but
neither the Repetition field nor the Clone field has been
activated.

Notes regarding Scripts


A script is a text document. Each one of the single commands must each reside in a different line
and be complete. In other words a single command cannot be divided into more lines.
String ‘Name’|$10 -> Valid line
String ‘Name’|$10 char ‘A’ -> Invalid line
String ‘Name`|$10 -> Invalid Command

An editor for writing, modifications, saving and compiling of one or more scripts is accessible
inside the program (setup function). In any case it is possible to write a script with any text editor
(DOS or Windows) like Notepad of Windows or the EDITOR of the DOS. It is not possible to import
documents written with UNIX as the characters used for going to the next line are different from
the ones used by the DOS or Windows.
CAUTION!
If one wants to use the script stored in a removable disk (for example floppy disk) then it

will be necessary to copy it on the hard disk.

TYPE OF DATA
Character: Identifies a single character, can pass as printable character (enclosed between
single apostrophes), as decimal ASCII value (followed by symbol $) or else
hexadecimal ASCII value (followed by 0x).
If for example we want to identify the character A (decimal value 65 or
hexadecimal value 41) then we can write 'A', $65 or 0x41.
String: Identifies a sequence of printable characters enclosed in single apostrophes, for
example: 'this is a string'.
Comment: Identifies a portion of test (preceded by a character; which will not be compiled
but will serve as note only for the programmer.
Variables: These are particular sequence of characters preceded by the symbol #, which
will be used by the program for storing internal information’s (patient code,
analysis name and etc.), refer to "TABLE 1 - TRANSMISSION/RECEPTION".
There are also variables for direct uses, which allow for identification of any
character below ASCII 32 (space) to facilitate the writing of the script (for
example, one can use the variable #EOT to identify the character $4), see
"TABLE 2 - INTERNAL VARIABLES".

INDEX DIALAB Autolyser - Service Page 26


SCRIPT FUNCTIONS
String: Identifies a string of variable length ending with a particular character.
Syntax:
String <string>I<Terminator>
Where
<String> Transmit/receive string
<Terminator> End character
NOTE:
It is not possible to use the variables like parameter <Terminator>
Example:
String ‘Hello Word’|$0
String ‘My String’|’@’
String #Variable1|0x10

String: Identifies a string of fixed length


Syntax:
String <String>|<Length>
Where
<String> Transmit/receive string
<Length> String length
Note:
If the length of the text strings is less than the data length then a series of spaces will be
added on the right to reach the data preset length. In case the text string is longer than the
data length then the string end will be cut off to match the data length.
If the length of the numerical values is less than the data length then a series of characters
'0' will be added to the left to reach the preset data dimension. In case the length of the
numerical values string is longer than the data length then the string will be truncated to
match the data length.

It is not possible to use variables as parameter <Length>.


Example:
String ‘Hello Word’|$40
String #Variable1|0x10
Char: Identifies a single character (or single byte)
Syntax:
Char <Character>
Example:
Char ‘H’
Char $20
Char 0x10
Char #STX
Set: Identifies the beginning and the end of the group of repetitive commands
Syntax
Set Begin<Name of group>
Begin repetitive group
Set End<Name of group>
End repetitive group
NOTE:
Actually the ANALYSESDATA is the unique SET present, which identifies the analysis
in transmission/reception.
Only one command SET BEGIN and one command SET END can be present in a
script.
A script must always contain the command SET.
The variable PATIENTNUMBERTEST must be present before the command SET.

INDEX DIALAB Autolyser - Service Page 27


COMPILATION ERROR
One or more errors due to incorrect script writing or the system error may show up during
compilation of a script. The compiler shows the error code, the description of error, and the line
where it has been detected.
The following table shows the error codes, description, and the possible causes:

Error Code Description Possible Causes


An invalid command has been inserted in the
1 Unknown command
commands of script.
A string as first parameter for String or String
2 A string request
command has not been inserted.
A string like parameter <lunghezza> of command
3 A number request
String has been inserted.
4 Invalid number format Inserted invalid decimal or hexadecimal number.
a) Inserted more than two parameters for
command String or String.
5 Excessive data
b) Inserted more than one parameter for the
command Char or Set.
6 Invalid data A string for command Char has been inserted.
7 String Terminator Request The end (') character of a string not found.
a) Inserted less than two parameters for
command String or String.
8 Too little data
b) No parameter inserted for command Char or
Set.
The string length for String command is less than 0
9 Invalid String Length
or more than 128.
a) An empty string inserted for the command
10 Empty string String or String.
b) Inserted a character identified as "
a) Tried to transfer an invalid variable in the list
of internal variables.
11 Unknown variable
b) Tried to use a transmission variable in the
script of reception or vice versa.
12 Damaged file Hard disk error. Contact Sales/Service.
Internal error. Probably damaged program. Reinstall
13 Unknown file the program. If the problem persists contact
sales/service.
a) The text SET BEGIN or SET END not written.
Incorrect identifier in the b) A different value from ANALYSEDATA
14
SET command. transferred as <Group name> for the SET
command.
15 Damaged exit file Hard disk error. Contact sales/service.
16 SET command not closed The SET END not inserted in the script.
17 Too many SET commands More than one SET BEGIN command inserted.
18 SET command not found The SET BEGIN command not found in the script.
Incorrect variable for SET A different value from ANALYSEDATA transferred
19
command as <Group name> for the SET command.
Variable not found before The highlighted variable required in the script before
20
the SET command the SET BEGIN command.
The variable must be String The highlighted variable must be String type, not
21
type Char
An already occupied position on the plate has been
22 Already occupied position
entered
Patient exists but in different An already existing code (or already executed) on
23
lists the plate has been entered, but the list is different.
Patient executed but no An already processed code has been entered
24
repetition without indicating a repetition or a clone.

INDEX DIALAB Autolyser - Service Page 28


TABEL 1 – TRANSMISSION
The following variables are used for the transmission of a report from analyzer to the host
computer:
Variable Usage Type of valid data
PATIENTCODE Patient Code String
PATIENTNAME Patient Name String
PATIENTSURNAME Patient Surname String
(1)
PATIENTGROUP Group String Character
(2)
PATIENTLISTTYPE List String Character
(3)
PATIENTTYPE Method Type String Character
PATIENTNOTE Descriptive Note String
PATIENTNUMBERTEST Number of Results String Character
CHECKSUM Check-Sum String Character
ANALYSESCODE Analysis Code String
ANALYSENAME Analysis name String
(4)
ANALYSESTYPE Analysis Type String Character
ANALYSESCONCENTRATION1 1st Concentration String
ANALYSESCONCENTRATION2 2nd Concentration String
ANALYSESFLAGS1 Flag 1st Result String
ANALYSESFLAGS2 Flag 2nd Result String
ANALYSESMINVALUE Minimum Value String
ANALYSESMAXVALUE Maximum Value String
ANALYSESUM1 1st Unit of Measurement String
ANALYSESUM2 2nd unit of measurement String
ANALYSESUMFACTOR Unit Factor String
(5)
ANALYSES2RESULT Does the 2nd result exists? String Character
(3)
ANALYSESSERUMTYPE Method Type String Character
ANALYSESURINE24H Urine in 24/h String
(1)
Identifies Male, Female or Child (Select one of these):
‘M’ : Male
‘F’ : Female
‘C’ : Child
(2)
Identifies Routine or STAT (Select one of these):
‘R’ : Routine
‘S’ : STAT
Transmitting patient from archive will always have identifier of Routine.
(3)
Identifies Serum or Urine (Select one of these):
‘S’ : Serum
‘U’ : Urine
(4)
Identifies Clinical Chemistry, ISE Module or Relation Analysis (Select one of these):
‘C’ : Clinical Chemistry
‘I’ : ISE Module
‘R’ : Relation Analysis
(5)
Identifies if the 2nd result exists or not (Select one of these):
‘Y’ : 2nd result exists
‘N’ : 2nd result does not exists

● If only the final result is desired then always refer to variables pertaining to 2nd result.
● In case of the absence of 2nd result then its variables will have the same values of the 1st
result.

INDEX DIALAB Autolyser - Service Page 29


TABLE 1 – RECEPTION
The following variables are used for reception of a patient by the analyzer:
Variable Usage Type of valid data
PATIENTCODE Patient Code String
PATIENTNAME Patient Name String
PATIENTSURNAME Patient Surname String
PATIENTLISTTYPE List (1) String Character
PATIENTGROUP Group (2) String Character
PATIENTTYPE Method Type (3) String Character
PATIENTURINE24H Urine in 24/h String
PATIENTNOTE Descriptive Note String
PATIENTISCONTROL If the patient is a control (4) String Character
PATIENTCONTROLKNOK If it is a known control (5) String Character
PATIENTCONTROLLEVEL Control Level (6) String Character
PATIENTCLONE If it is a clone (7) String Character
PATIENTCUPPOSITION Vial (Cup) position String Character
PATIENTNUMBERTEST Number of test String Character
CHECKSUM Check-Sum String Character
ANALYSESCODE Analysis Code String

(1)
Identifies Routine or STAT (Select only one of these):
$0 : Routine
$1 : STAT
‘0’ : Routine
‘1’ : STAT
‘R’ : Routine
‘S’ : STAT
‘ROUTINE’ : Routine
‘STAT’ : STAT
(2)
Identifies Male, Female or Child (Select only one of these):
$0 : Male
$1 : Female
$2 : Child
‘0’ : Male
‘1’ : Female
‘2’ : Child
‘M’ : Male
‘F’ : Female
‘C’ : Child
‘MAN’ : Male
‘FEMALE’ : Female
‘CHILD’ : Child
(3)
Identifies Serum or Urine (Select only one of these):
$0 : SERUM
$1 : URINE
‘0’ : SERUM
‘1’ : URINE
‘S’ : SERUM
‘U’ : URINE
‘SERUM’ : SERUM
‘URINE’ : URINE
(4)
Identifies a Control or a Sample (Select only one of these):
$0 : Sample
$1 : Control
‘0’ : Sample
‘1’ : Control
‘N’ : Sample
‘Y’ : Control
‘S’ : Sample
‘C’ : Control

INDEX DIALAB Autolyser - Service Page 30


‘NO’ : Sample
‘YES’ : Control
‘SAMPLE’ : Sample
‘CONTROL’ : Control

(5)
Identifies a Known or Unknown Control (Select only one of these):
$0 : Unknown
$1 : Known
‘0’ : Unknown
‘1’ : Known
‘N’ : Unknown
‘Y’ : Known
‘U’ : Unknown
‘K’ : Known
‘NO’ : Unknown
‘YES’ : Known
‘UNKNOW’ : Unknown
‘KNOW’ : Known

(6)
Identifies Control Level (Select only one of these):
$1 : Level 1
$2 : Level 2
$3 : Level 3
‘1’ : Level 1
‘2’ : Level 2
‘3’ : Level 3
‘L’ : Level 1
‘N’ : Level 2
‘A’ : Level 3
‘LOW’ : Level 1
‘NORMAL’ : Level 2
‘ABNORMAL’ : Level 3

(7)
Identifies if it is a Clone (Select only one of these):
$0 : Normal
$1 : Clone
‘0’ : Normal
‘1’ : Clone
‘N’ : Normal
‘Y’ : Clone
‘NOCLONE’ : Normal
‘CLONE’ : Clone

Note:
It is possible to repeat the patient if:
1. It is not present among the executed patients
2. No free position exists on the plate
3. The patient has already been inserted in the current list
4. The lists of execution are different
5. The Serum/Urine field is different
6. It is also selected as clone

INDEX DIALAB Autolyser - Service Page 31


TABEL 2 – INTERNAL VARIABLES
Variables Decimal Hexadecimal
NUL $00 0x01
SOH $01 0x02
STX $02 0x03
ETX $03 0x04
EOT $04 0x05
ENQ $05 0x06
ACK $06 0x07
BEL $07 0x08
BS $08 0x09
TAB $09 0x0A
LF $10 0x0B
VF $11 0x0C
FF $12 0x0D
CR $13 0x0E
SO $14 0x0F
SI $15 0x10
DLE $16 0x12
DC1 $17 0x13
DC2 $18 0x14
DC3 $19 0x15
DC4 $20 0x16
NAK $21 0x17
SYN $22 0x18
ETB $23 0x19
CAN $24 0x1A
EM $25 0x1B
SUB $26 0x1C
ESC $27 0x1D
FS $28 0x1E
GS $29 0x1F
RS $30 0x20
US $31 0x21

SCRIPT EXAMPLES
The examples outlined here are the transformation in script of the standard routine of the patient
reception by the analyzer.

String #PatientCode|$15
Char #PatientListType
Char #PatientType
Char #PatientClone
String #PatientCupPosition|$2
String #PatientNumberTest|$2
Set #BeginAnalysesData
String #AnalysesCode|$4
Set #EndAnalysesData
String #CheckSum|$3
The following are the details of the above Scripts:
String #PatientCode|$15
Patient Code of fixed length equal to 15 characters
Char #PatientListType
Type of list (Routine/STAT) as single character
Char #PatientType
Serum type (Serum/Urine) as single character

INDEX DIALAB Autolyser - Service Page 32


Char #PatientClone
Identifies if the patient is or is not a clone (single character)
String #PatientCupPosition|$2
Position of serum cup (string of fixed length equal to 2 characters)
String #PatientNumberTest|$2
Number of tests to be executed (string of fixed length equal to 2 characters)
Set #BeginAnalysesData
Beginning of analysis codes
String #AnalysesCode|$4
An analysis code of fixed length equal to 4 characters. It must be entered for each
type of test as per qty indicated in the #PatientNumberTest.
Set #EndAnalysesData
End of analysis codes
String #CheckSum|$3
Check-Sum (transferred as a string of fixed length equal to 3 characters)

The following examples are the transformation in script of the standard routine for the
transmission of a report by the analyzer to the host computer:
String #PatientCode|$15
Char #PatientType
String #PatientNumberTest|$3
Set #BeginAnalysesData
String #AnalysesCode|$04
String #AnalysesConcentration2|$7
Set #EndAnalysesData
String #CheckSum|$3

The details of the above scripts are as follows:


String #PatientCode|$15
Patient Code of fixed length equal to 15 characters
Char #PatientType
Serum type (Serum/Urine) as single character
String #PatientNumberTest|$3
Number of results to be sent (a string of fixed length equal to 3 characters)
Set #BeginAnalysesData
Beginning of zone repeated for the number of results to be sent (see
#PatientNumberTest)
String #AnalysesCode|$04
An analysis code of fixed length equal to 4 characters
String #AnalysesConcentration2|$7
Concentration referred to the analysis code as per #AnalysesCode (a string of fixed
length equal to 7 characters)
Set #EndAnalysesData
End of zone repeated for the number of results to be sent
String #CheckSum|$3
Check-Sum (transferred as a string of fixed length equal to 3 characters)

INDEX DIALAB Autolyser - Service Page 33

You might also like