{
descricao_proc_emi: { key: 'procEmi', type: Types.Values(*%w[1 2 3 4 22]) },
cpf_do_trabalhador: { key: 'cpfTrab', type: Types::String },
matricula_do_trabalhador: { key: 'matricula', type: Types::String.optional },
categoria_do_trabalhador: { key: 'codCateg', type: Types::CategoriaTrabalhadorTsv.optional },
data_de_emissao: { key: 'dtAso', type: Types::Date },
tipo: { key: 'tpExameOcup', type: Types.Values(*%w[0 1 2 3 4 9]) },
medico_nome: { key: 'medico/nmMed', type: Types::String },
medico_crm_numero: { key: 'medico/nrCRM', type: Types::String },
medico_crm_uf: { key: 'medico/ufCRM', type: Types::String },
medico_pcmso_nome: { key: 'respMonit/nmResp', type: Types::String },
medico_pcmso_crm_numero: { key: 'respMonit/nrCRM', type: Types::String },
medico_pcmso_crm_uf: { key: 'respMonit/ufCRM', type: Types::String },
e_social_recibo: { key: 'nrRecibo', type: Types::String },
exames: { key: 'exame', attributes: {
data: { key: 'dtExm', type: Types::Date },
procedimento_diagnostico_e_social_codigo: { key: 'procRealizado', type: Types::String },
observacao: { key: 'obsProc', type: Types::String.optional },
ordem: { key: 'ordExame', type: Types.Values(*%w[1 2]).optional }
} }
}.freeze