Base datatypes¶
Warning
The HL7 versions can have different implementation of base datatypes; for example the ST base datatype
of HL7 v2.6 is different from the v2.5 one. This module contains reference classes for all base datatypes
but you should not import them directly from here. If you need an implementation for a particular version
use the get_base_datatypes() function from a specific version’s module
For example if you’re using version 2.4 and you need an FT base datatype do the following:
>>> from hl7apy.v2_4 import FT
>>> f = FT('some useful information')
-
class
hl7apy.base_datatypes.BaseDataType(value, max_length=None, validation_level=None)¶ Generic datatype base class. It handles the value of the data type and its maximum length. It is meant to be extended and it should not be used directly
Parameters: - value – the value of the data type
- max_length (
int) – The maximum length of the value. Default to None - validation_level (
int) – It must be a value from classVALIDATION_LEVELIf it isSTRICTit checks thatvaluedoesn’t exceed the attr:max_length
Raise: MaxLengthReachedWhen thevalue’s length is greater than themax_length. Only ifvalidation_levelisSTRICT-
classname¶ The name of the class
-
to_er7(encoding_chars=None)¶ Encode to ER7 format
-
class
hl7apy.base_datatypes.TextualDataType(value, max_length=32, highlights=None, validation_level=None)¶ Base class for textual data types. It is meant to be extended and it should not be used directly
Parameters: - value (
str) – the value of the data type - max_length (
int) – the max length of the value (default to 32) - highlights (
tuple,list) – a list of ranges indicating the part of the value to be highlighted. e.g. ((0,5), (6,7)) The highlights cannot overlap, if they do an HL7Exception will be thrown when to_er7 method is called - validation_level (
int) – It has the same meaning as inBaseDatatype
Raise: MaxLengthReachedWhen thevalue’s length is greater thanmax_length- value (
Classes representing textual datatypes are:
-
class
hl7apy.base_datatypes.ST(value, highlights=None, validation_level=None)¶ Class for ST datatype. It extends
hl7apy.base_datatypes.TextualDatatypeand the parameters are the same of the superclassmax_lengthis 199
-
class
hl7apy.base_datatypes.FT(value, highlights=None, validation_level=None)¶ Class for FT datatype. It extends
hl7apy.base_datatypes.TextualDataTypeand the parameters are the same of the superclassmax_lengthis 65536
-
class
hl7apy.base_datatypes.ID(value, highlights=None, validation_level=None)¶ Class for ID datatype. It extends
hl7apy.base_datatypes.TextualDataTypeand the parameters are the same of the superclassmax_lengthNone
-
class
hl7apy.base_datatypes.IS(value, highlights=None, validation_level=None)¶ Class for IS datatype. It extends
hl7apy.base_datatypes.TextualDataTypeand the parameters are the same of the superclassmax_lengthis 20
-
class
hl7apy.base_datatypes.TX(value, highlights=None, validation_level=None)¶ Class for TX datatype. It extends
hl7apy.base_datatypes.TextualDataTypeand the parameters are the same of the superclassmax_lengthis 65536
-
class
hl7apy.base_datatypes.GTS(value, highlights=None, validation_level=None)¶ Class for GTS datatype. It extends
hl7apy.base_datatypes.TextualDataTypeand the parameters are the same of the superclassmax_lengthis 199
-
class
hl7apy.base_datatypes.WD(value, highlights=None, validation_level=None)¶ Datatype class for withdraw fields. They are fields that has been withdrawn from specification and should not be used. It is implemented as a
hl7apy.base_datatypes.TextualDatatypewithmax_length0.max_lengthis 0
-
class
hl7apy.base_datatypes.NumericDataType(value=None, max_length=16, validation_level=None)¶ Base class for numeric data types. It is meant to be extended and it should not be used directly
Parameters: - value – the value of the data type. Default is
None - max_length (int) – The maximum number of digit in the value. Default is 16
- validation_level (
int) – It has the same meaning as inhl7apy.base_datatypes.BaseDataType
Raise: hl7apy.exceptions.MaxLengthReachedWhen the value’s length is greater than max_length- value – the value of the data type. Default is
Classes representing numeric datatypes are:
-
class
hl7apy.base_datatypes.NM(value=None, validation_level=None)¶ Class for NM datatype. It extends
hl7apy.base_datatypes.NumericDatatypeand the parameters are the same of the superclassmax_lengthis 16.The type of
valuemust bedecimal.DecimalorRealRaise: ValueErrorraised when the value is not of one of the correct type
-
class
hl7apy.base_datatypes.SI(value=None, validation_level=None)¶ Class for NM datatype. It extends NumericDatatype and the parameters are the same of the superclass
max_lengthis 4.The type of
valuemust be int ornumbers.IntegralRaise: ValueErrorraised when the value is not of one of the correct type
-
class
hl7apy.base_datatypes.DateTimeDataType(value=None, out_format='')¶ Base class for datetime data types. It is meant to be extended and it should not be used directly. Children classes should at least override the
allowed_formatstupleParameters: - value – a datetime date object. Default is
None - out_format (str) – the format that will be used converting the object to string.
It must be an item of the
allowed_formatstuple
Raise: :exc:
InvalidDateFormat <hl7apy.exceptions.InvalidDateFormat>` if the ``formatis not in theallowed_formatsmember- value – a datetime date object. Default is
Classes representing datetime datatypes are:
-
class
hl7apy.base_datatypes.DT(value=None, out_format='%Y%m%d')¶ Class for DT base datatype. It extends DatetimeDatatype and it represents a time value with year, month and day. Parameters are the same of the superclass.
The
allowed_formatstuple is('%Y', '%Y%m', '%Y%m%d')
-
class
hl7apy.base_datatypes.TM(value=None, out_format='%H%M%S.%f', offset='', microsec_precision=4)¶ Class for TM base datatype. It extends DateTimeDatatype and it represents a time value with hours, minutes, seconds and microseconds. Parameters are the same of the superclass plus
offset. Since HL7 supports only four digits for microseconds, and Python datetime uses 6 digits, the wanted precision must be specified.The
allowed_formatstuple is('%H', '%H%M', '%H%M%S', '%H%M%S.%f'). It needs also theoffsetparameter which represents the UTC offsetParameters: - offset (
str) – the UTC offset. By default it is ‘’. It must be in the form'+/-HHMM' - microsec_precision (
int) – Number of digit of the microseconds part of the value. It must be between 1 and 4
- offset (
-
class
hl7apy.base_datatypes.DTM(value=None, out_format='%Y%m%d%H%M%S.%f', offset='', microsec_precision=4)¶ Class for DTM base datatype. It extends TM and it represents classes DT and DTM combined. Thus it represents year, month, day, hours, minutes, seconds and microseconds. Parameters are the same of the superclass.
The
allowed_formatstuple is('%Y', '%Y%m', '%Y%m%d', '%Y%m%d%H', '%Y%m%d%H%M', '%Y%m%d%H%M%S', '%Y%m%d%H%M%S.%f')