Schedule a demo
Segment

Financial transaction

Carries charge and billing transaction data for services rendered, including the transaction type (charge, credit, or payment), transaction date, quantity, procedure code, diagnosis code, amount, and department. It is commonly sent by ancillary systems or the EHR to the hospital billing system in DFT (Detail Financial Transaction) messages, or embedded in ADT and order messages. FT1 drives charge capture for revenue cycle management.

54fields
3required
v2.9HL7 version
ft1.py
from zato.hl7v2 import FT1, CWE

ft1 = FT1()
transaction_type = CWE(identifier='CG', text='Charge')
ft1.transaction_type = transaction_type
transaction_code = CWE(identifier='WELLNESS01', text='Annual Wellness')
ft1.transaction_code = transaction_code

Build FT1 segments in Python

How to construct and work with real-world FT1 segments.

1

Annual wellness visit charge

Core wellness visit transaction with service date, charge type, amounts, department, and health plan

from zato.hl7v2.v2_9 import FT1
from zato.hl7v2.v2_9 import CP, CWE, CX, DR

ft1 = FT1()
ft1.set_id_ft1 = '1'
ft1.transaction_id = CX(
    id_number='TXN001', assigning_authority='WELL')
ft1.transaction_batch_id = 'BATCH2024'
ft1.transaction_date = DR(dr_1='20240315', dr_2='20240315')
ft1.transaction_posting_date = '20240315120000'
ft1.transaction_type = CWE(
    identifier='CG',
    text='Charge',
    name_of_coding_system='HL70017'
)
ft1.transaction_code = CWE(
    identifier='WELL01',
    text='Annual wellness visit',
    name_of_coding_system='C4'
)
ft1.transaction_quantity = '1'
ft1.transaction_amount_extended = CP(cp_1='150.00', cp_2='USD')
ft1.transaction_amount_unit = CP(cp_1='25.00', cp_2='USD')
ft1.department_code = CWE(
    identifier='WELL',
    text='Wellness clinic',
    name_of_coding_system='HL70049'
)
ft1.health_plan_id = CWE(
    identifier='PLAN',
    text='Blue Preferred',
    name_of_coding_system='HL70072'
)
2

Preventive screening charge

Screening service with location, performing and ordering clinicians, procedure code, and facility identifiers

from zato.hl7v2.v2_9 import FT1
from zato.hl7v2.v2_9 import CWE, CNE, DR, EI, PL, XCN

ft1 = FT1()
ft1.set_id_ft1 = '2'
ft1.transaction_batch_id = 'SCREEN24'
ft1.transaction_date = DR(dr_1='20240601', dr_2='20240601')
ft1.transaction_type = CWE(
    identifier='CG', text='Charge',
    name_of_coding_system='HL70017')
ft1.transaction_code = CWE(
    identifier='SCRN', text='Preventive screening',
    name_of_coding_system='C4')
ft1.transaction_quantity = '1'
ft1.assigned_patient_location.point_of_care = 'WELL'
ft1.assigned_patient_location.room = '101'
ft1.assigned_patient_location.bed = 'A'
ft1.fee_schedule = CWE(
    identifier='STD', text='Standard fee',
    name_of_coding_system='HL70024')
ft1.patient_type = CWE(
    identifier='O', text='Outpatient',
    name_of_coding_system='HL70018')
ft1.diagnosis_code_ft1 = [
    CWE(identifier='Z13.1', text='Screening exam',
        name_of_coding_system='I10'),
    CWE(identifier='Z00.00', text='General exam',
        name_of_coding_system='I10')]
ft1.performed_by_code = [XCN(
    person_identifier='5555', family_name='LEE',
    given_name='SARAH', suffix='MD')]
ft1.ordered_by_code = [XCN(
    person_identifier='6666', family_name='PARK',
    given_name='JAMES', suffix='MD')]
ft1.filler_order_number = EI(
    entity_identifier='ORD789',
    namespace_id='LAB', universal_id='SYS')
ft1.entered_by_code = [XCN(
    person_identifier='7777', family_name='BILLING',
    given_name='KIM', suffix='RN')]
ft1.procedure_code = CNE(
    identifier='99387', text='Annual wellness',
    name_of_coding_system='CPT')
3

Fitness and nutrition program fees

Wellness program line with procedure modifiers, facilities, revenue code, and service reason

from zato.hl7v2.v2_9 import FT1
from zato.hl7v2.v2_9 import CQ, CP, CWE, CX, DR, XON

ft1 = FT1()
ft1.set_id_ft1 = '3'
ft1.transaction_date = DR(dr_1='20240910', dr_2='20240910')
ft1.transaction_posting_date = '20240910140000'
ft1.transaction_type = CWE(
    identifier='CG', text='Charge',
    name_of_coding_system='HL70017')
ft1.transaction_code = CWE(
    identifier='FIT', text='Fitness assessment',
    name_of_coding_system='C4')
ft1.transaction_quantity = '1'
ft1.transaction_amount_extended = CP(cp_1='95.00', cp_2='USD')
ft1.performing_facility = [XON(
    organization_name='GREENVALLEY',
    id_number='Wellness Center')]
ft1.ordering_facility = XON(
    organization_name='NUTRI',
    id_number='Nutrition Services')
ft1.item_number = CWE(
    identifier='EQ', text='Treadmill kit')
ft1.model_number = 'MOD2024'
ft1.referral_number = CX(
    id_number='REF123', check_digit='REF',
    assigning_authority='SYS')
ft1.authorization_number = CX(
    id_number='AUTH456', check_digit='PAYER',
    assigning_authority='PI')
ft1.revenue_code = CWE(
    identifier='0250', text='General',
    name_of_coding_system='HL70456')
ft1.ndc_qty_and_uom = CQ(cq_1='30', cq_2='EA')
ft1.dme_certificate_of_medical_necessity_transmission_code = CWE(identifier='ROUTINE', text='Routine documentation',
        name_of_coding_system='HL70475')
ft1.service_reason_code = CWE(
    identifier='WELL', text='Wellness program',
    name_of_coding_system='HL70964')

Learn by building

Step-by-step guides for working with HL7 v2 in Zato.

Frequently asked questions

FT1 describes a single financial transaction: the service period, charge and procedure codes, amounts, department and payer context, and who performed or entered the service. It is common in DFT messages to feed billing and analytics.

In HL7 v2.9 the FT1 definition assigns transaction quantity to field 10. Positions 8 and 9 are not defined for this segment, so parsers skip them and quantity is always read from field 10.

Both fields use CWE with code tables HL70017 (transaction type) and HL70132 (transaction code). Use typed constructors for clarity:

from zato.hl7v2.v2_9 import FT1, CWE

ft1 = FT1()
ft1.transaction_type = CWE(
    identifier='CG', text='Charge',
    name_of_coding_system='HL70017')
ft1.transaction_code = CWE(
    identifier='WELLNESS01', text='Annual Wellness',
    name_of_coding_system='C4')

transaction_date uses the DR (date range) datatype for the service period:

from zato.hl7v2.v2_9 import FT1, DR

ft1 = FT1()
ft1.transaction_date = DR(
    dr_1='20240315', dr_2='20240315')

Use repeatable XCN fields performed_by_code and ordered_by_code:

from zato.hl7v2.v2_9 import FT1, XCN

ft1 = FT1()
ft1.performed_by_code = [XCN(
    person_identifier='5555',
    family_name='LEE',
    given_name='SARAH',
    suffix='MD')]
ft1.ordered_by_code = [XCN(
    person_identifier='6666',
    family_name='PARK',
    given_name='JAMES',
    suffix='MD')]

Zato connects to any system that speaks HL7v2 over MLLP or FHIR over REST. This includes Epic, Cerner, Meditech, Allscripts, and other EHR platforms.

Yes, Zato has built-in MLLP support for sending and receiving HL7v2 messages. MLLP channels handle the framing protocol automatically.

Zato supports HL7 v2.9, which is backward compatible with earlier versions including v2.3, v2.5, and v2.7. Standard segments and datatypes are available as typed Python classes.

Yes. Zato handles both HL7v2 and FHIR natively, so you can parse v2 messages and build FHIR resources with IG-specific extensions in the same service. Typed Python classes are available for both protocols, including extensions from US Core, UK Core, Da Vinci, and other Implementation Guides.

FT1 field reference

Complete list of fields in the FT1 segment, HL7 v2.9.

#Python nameDatatypeUsageRepeatableTable
1set_id_ft1SIOptionalNo-
2transaction_idCXOptionalNo-
3transaction_batch_idSTOptionalNo-
4transaction_dateDRRequiredNo-
5transaction_posting_dateDTMOptionalNo-
6transaction_typeCWERequiredNoHL70017
7transaction_codeCWERequiredNoHL70132
10transaction_quantityNMOptionalNo-
11transaction_amount_extendedCPOptionalNo-
12transaction_amount_unitCPOptionalNo-
13department_codeCWEOptionalNoHL70049
14health_plan_idCWEOptionalNoHL70072
15insurance_amountCPOptionalNo-
16assigned_patient_locationPLOptionalNo-
17fee_scheduleCWEOptionalNoHL70024
18patient_typeCWEOptionalNoHL70018
19diagnosis_code_ft1CWEOptionalYesHL70051
20performed_by_codeXCNOptionalYesHL70084
21ordered_by_codeXCNOptionalYes-
22unit_costCPOptionalNo-
23filler_order_numberEIOptionalNo-
24entered_by_codeXCNOptionalYes-
25procedure_codeCNEOptionalNoHL70088
26procedure_code_modifierCNEOptionalYesHL70340
27advanced_beneficiary_notice_codeCWEOptionalNoHL70339
28medically_necessary_duplicate_procedure_reasonCWEOptionalNoHL70476
29ndc_codeCWEOptionalNoHL70549
30payment_reference_idCXOptionalNo-
31transaction_reference_keySIOptionalYes-
32performing_facilityXONOptionalYes-
33ordering_facilityXONOptionalNo-
34item_numberCWEOptionalNo-
35model_numberSTOptionalNo-
36special_processing_codeCWEOptionalYes-
37clinic_codeCWEOptionalNo-
38referral_numberCXOptionalNo-
39authorization_numberCXOptionalNo-
40service_provider_taxonomy_codeCWEOptionalNo-
41revenue_codeCWEOptionalNoHL70456
42prescription_numberSTOptionalNo-
43ndc_qty_and_uomCQOptionalNo-
44dme_certificate_of_medical_necessity_transmission_codeCWEOptionalNo-
45dme_certification_type_codeCWEOptionalNo-
46dme_duration_valueNMOptionalNo-
47dme_certification_revision_dateDTOptionalNo-
48dme_initial_certification_dateDTOptionalNo-
49dme_last_certification_dateDTOptionalNo-
50dme_length_of_medical_necessity_daysNMOptionalNo-
51dme_rental_priceMOOptionalNo-
52dme_purchase_priceMOOptionalNo-
53dme_frequency_codeCWEOptionalNo-
54dme_certification_condition_indicatorIDOptionalNo-
55dme_condition_indicator_codeCWEOptionalNo-
56service_reason_codeCWEOptionalNoHL70964

Ready to build integrations?

Get started with Zato and connect your systems in minutes.

Open source In Python