Import format
This page describes which files the import accepts and how Puelas interprets each column.
Accepted files
- CSV exports from Tru-Test (Datamars) indicators, for example XR5000 or Data Link.
- CSV exports from Gallagher Animal Performance.
- Any CSV with a header row and at least one data row. Unknown columns are taught once in the Review step.
| Feature | Detail |
|---|---|
| Extension | .csv or .txt |
| Separator | ; or ,, detected from the header row |
| Encoding | UTF-8 (with or without BOM) |
| Size | up to 8 MB per file, up to 10 files at a time |
Values are read without leading or trailing spaces. Stray quotation marks inside a value, which some indicators write, are read as text.
:::note Excel spreadsheets
.xlsx files are not imported directly. Export them to CSV from Excel before importing.
:::
Data Puelas infers
Name
It comes from the file name, without the extension, without the Tru-Test_ prefix and without the leading YYYY-MM-DD_ date. Underscores become spaces.
Tru-Test_2025-06-11_LOTE.F-MADRE.csv → LOTE.F-MADRE
Date
It is the first value of the Date column, in YYYY-MM-DD format. If the file has no such column, today's date is proposed.
Session kind
It is decided by the file's columns, in this order:
| If the file has… | Kind |
|---|---|
a DX PRENEZ column | Palpation |
an ECO column followed by two digits (for example ECO25) | Ultrasound |
a GDR column | Pre-breeding |
CHIP in the name, or a SEXO column | Weaning |
| none of the above | Weighing |
The name, date and kind can be corrected before confirming.
Recognized columns
Each organization starts with these rules. Headers are compared without distinguishing uppercase from lowercase.
| Column | Data | Values |
|---|---|---|
EID | Electronic tag | |
VID | Visual tag | |
LOTE ORIGEN | Lot | Looks up the lot by name, or creates it. |
FECHA NACIM | Birth month and year | 08/2025 or 8/2025 → month and year; 2025 → year only. |
PESO | Weight | kg |
SEXO | Sex | H → Female; M → Male |
RAZA | Breed | AN → Angus; AC → Red Angus |
PADRE | Sire and conception | REPASO → natural service, no sire; GEORDIE, CARBONO, TITAN → that sire, by artificial insemination; any other value → that sire. |
GDR | GDR and decision | 1 to 5 → that score and Keep; DESCARTE → Cull |
DX PRENEZ | Pregnancy diagnosis | PRENADA → Pregnant; VACIA → Empty; COLA → Carrying, late |
ECO25, ECO26, … | Diagnosis and service | P IATF → Pregnant by artificial insemination; P REPASO → Pregnant by natural service; VACIA → Empty |
NOTA | Note and decision | NO, N0 (with a zero), NO VA → note and Cull; any other text → note |
Live Weight (kg) | Weight | Gallagher |
Notes | Note | Gallagher |
Average Daily Gain (kg/d), Overall Daily Gain (kg/d) | Ignored | Puelas calculates the gain on its own. |
Date, Time | Session date |
Rules learned in the Review step are added to these.
Animal data and session data
- Animal data: electronic tag, visual tag, sex, breed, sire, how it was conceived, lot, birth year and month. They are stored on the animal; the most recent import updates them. An empty cell never deletes a piece of data.
- Session data: weight, GDR, keep or cull, pregnancy diagnosis, how it was served, note. They are stored as a reading for that day.
How it was conceived is how the animal itself was conceived; how it was served is how the calf it carries was conceived.
Validations
| Situation | Result |
|---|---|
| Row without an electronic tag | Rejected. |
| Electronic tag repeated in the same file | The first is imported; the second is rejected. |
| Weight under 20 kg or over 1200 kg | The row is rejected. An empty weight is not an error. |
| File already imported (same content) | Skipped. |
| Empty file or file without data rows | Can't be read. |
Example
Header and one row from a Tru-Test export of a palpation:
EID;VID;Date;Time;DX PRENEZ;ECO25;NOTA
032 010002684911;4761;2026-03-27;08:12:40;VACIA;P IATF;
Puelas imports it as a Palpation dated 27/03/2026. DX PRENEZ records Empty. ECO25 is a copy of the previous ultrasound's result: if it matches what was recorded then, it generates nothing new; if it doesn't match, you are warned and what was recorded then stands.