Пример: XML-реестр больничных → TDTP
Этот отдельный Go-конвертер читает XML вида
<REESTR_LN><RECORD>…</RECORD></REESTR_LN> и превращает каждую запись
<RECORD> в строку TDTP <R>. В одном реестре может быть много больничных.
Структура взята из иллюстративного примера, а не из проверенного
export.xml ПФУ. Известные поля WIC_* реальной выгрузки этот конвертер
пока не принимает: для их поддержки нужен обезличенный образец файла.
В папке находятся конвертер, входной XML, тесты,
готовый TDTP и
отчёт об ошибке. В образце одна правильная запись и одна
с невозможной датой 2026-02-31.
Повторить пример
Из корня репозитория в PowerShell:
New-Item -ItemType Directory -Force examples\pfu-xml\output | Out-Null
go run ./examples/pfu-xml `
--input examples/pfu-xml/demo-input.xml `
--output examples/pfu-xml/output/my-run.tdtp.xml `
--errors examples/pfu-xml/output/my-errors.xml `
--today 2026-09-29 `
--max-days 30
.\tdtpcli_v2.exe test examples\pfu-xml\output\my-run.tdtp.xml
Проверенная запись попадёт в TDTP. Ошибочная будет пропущена, а её номер
<RECORD>, NUM_LN и причина попадут в my-errors.xml. Конвертер выведет
предупреждение с числом пропущенных записей. Если ошибочны все записи,
он создаст только отчёт и завершится с ошибкой. Уже существующие файлы
результата и отчёта конвертер не заменяет.
--max-days — обязательный согласованный лимит, не норматив ПФУ; 30
используется только для демонстрации. --today фиксирует дату проверки;
без него берётся текущая дата по Киеву. По умолчанию DATE_START должен
попадать в окно ±1 календарный месяц от неё. Параметры --window-months
и --window-field start|end|both меняют это правило.
Проверяются обязательные поля, версия, календарные даты YYYY-MM-DD,
порядок дат и длительность включительно. Идентификаторы остаются TEXT
для сохранения начальных нулей; даты получают тип DATE, версия и
DURATION_DAYS — INTEGER. Готовый TDTP содержит контрольные суммы xxh3.
Если нужен один TDTP со всеми строками и колонками validation_status
и validation_error, смотрите CSV-кейс с проверкой в SQL.