O TED (LEVERS ELETRONEY DIARY) é a versão on -line do 'Supplement to the Official Journal' da UE, dedicado às compras públicas européias.
O TED fornece acesso gratuito a avisos de compras públicas de autoridades contratantes com sede na União Europeia e no Espaço Econômico Europeu (também se prestarem serviços em qualquer outro país).
Atualmente, o site do TED oferece downloads a granel de pacotes XML que datam de 1993, que podem ser encontrados no FTP ftp://ted.europa.eu/ acessível com credenciais genéricas (convidado/convidado).
Este repo contém scripts para extrair e analisar avisos de concessão de contratos TED, ou seja, os resultados do procedimento de compras. Os scripts foram totalmente testados para extrair todos os avisos de concessão do contrato para 2014, 2015 e 2016. Os documentos são extraídos como dicionários de Python, que podem ser salvos em um banco de dados MongoDB para facilitar a recuperação ou normalmente normalizados para serem convertidos em CSVs.
A imagem abaixo mostra um exemplo de documento, como mostrado no site do TED.

Um exemplo de dados extraídos (do mesmo documento acima):
{
'DOC_ID': '466898-2016',
'CODED_DATA': {
'NOTICE_DATA': {
'IA_URL_GENERAL': 'www.ekz.ch',
'ISO_COUNTRY': 'CH',
'NO_DOC_OJS': '2016/S 253-466898',
'ORIGINAL_CPV': ['79970000'],
'REF_NOTICE': ['2016/S 172-310484']
},
'CODIF_DATA': {
'AA_AUTHORITY_TYPE': '4',
'AC_AWARD_CRIT': 'Z',
'DS_DATE_DISPATCH': '20161230',
'MA_MAIN_ACTIVITIES': ['Z'],
'NC_CONTRACT_NATURE': '4',
'PR_PROC': '2',
'RP_REGULATION': '7',
'TD_DOCUMENT_TYPE': '7',
'TY_TYPE_BID': '9'
}
},
'CONTRACT': {
'OTH_NOT': 'NO',
'CONTRACTING_AUTHORITY': 'Elektrizitätswerke des Kantons Zürich',
'CONTRACT_OBJECT': {
'CONCLUSION_FRAMEWORK_AGREEMENT': 'NO',
'CONTRACTS_DPS': 'NO',
'CONTRACT_COVERED_GPA': 'YES',
'CPV_MAIN': '79970000'
}
},
'AWARDS_OF_CONTRACT': [
{
'CONTRACTOR': {
'ADDRESS': 'Mühlebachstraße 52',
'COUNTRY': 'CH',
'OFFICIALNAME': 'Linkgroup AG',
'POSTAL_CODE': '8008',
'TOWN': 'Zürich'
},
'CONTRACT_VALUE': {
'COST': {
'CURRENCY': 'CHF',
'VALUE': 700000.0
}
}
}
]
}
Campos e descrição dos dados extraídos
| Campo | Tipo de dados | Descrição |
|---|---|---|
| Doc_id | Corda | Número exclusivo do documento no TED. |
A seção CodEd_Data é dividida em 2 grupos de dados.
| Campo | Tipo de dados | Descrição |
|---|---|---|
| NO_DOC_OJS | Corda | Número de aviso em Ted |
| Original_nuts | Lista (string) | Código (s) de região (s) do local de desempenho ou entrega. Um código de 2-5 dígitos da nomenclatura de unidades territoriais para estatísticas . Valores de pesquisa para os dois primeiros dígitos: iso_country.csv |
| Original_cpv | Lista (string) | Produto ou serviço 8 dígitos Códigos (s) do vocabulário de compras comuns . Valores de pesquisa para os dois primeiros dígitos: cpv.csv |
| Iso_country | Corda | Código ISO de 2 caracteres do país onde o órgão contratante está localizado. Valores de pesquisa: iso_country.csv |
| Ia_url_general | Corda | Principal endereço da Internet (URL) do órgão contratante |
| Ref_Notice | Lista (string) | Número do aviso de referência no TED. Referenciando uma publicação anterior (informações anteriores, Corrigendum, ...) |
| Valores_list | Valor total | Valor total estimado (s) ou valor final total da aquisição |
Valores_list podem ser compostos pelos seguintes campos:
| Campo | Tipo de dados | Descrição |
|---|---|---|
| Global_value | Valor | O valor total da proposta. Deve ser igual à soma da lista de contratos_value |
| Contracts_value | Lista (valor) | Valor de prêmios individuais. Isso acontece quando o contrato é composto de várias partes ou lotes. |
Cada valor pode ser um valor único ou de alcance e pode ter porcentagem de IVA
| Campo | Tipo de dados | Descrição |
|---|---|---|
| MOEDA | Corda | Moeda do valor |
| VALOR | Flutuador | Valor |
| Vat_prct | Int | Porcentagem de IVA |
| Campo | Tipo de dados | Descrição |
|---|---|---|
| MOEDA | Corda | Moeda do valor |
| Low_value | Flutuador | Valor mais baixo do intervalo |
| High_value | Flutuador | Maior valor do intervalo |
| Vat_prct | Int | Porcentagem de IVA |
| Campo | Tipo de dados | Descrição |
|---|---|---|
| Ds_date_dispatch | Corda | Data de despacho do aviso. Formato: yyyymmdd |
| Td_document_type | Corda | Tipo de documento. Valores da pesquisa: td_document_type.csv |
| Aa_authority_type | Corda | Tipo de autoridade de premiação. Valores de pesquisa: aa_authority_type.csv |
| Nc_contract_nature | Corda | Natureza do contrato. Valores de pesquisa: nc_contract_nature.csv |
| Pr_proc | Corda | Tipo de procedimento. Valores da pesquisa: pr_proc.csv |
| RP_Regulação | Corda | O regulamento que se aplica ao procedimento. Valores de pesquisa: rp_regulação.csv |
| Ty_type_bid | Corda | Tipo de oferta. Valores da pesquisa: ty_type_bid.csv |
| Ac_award_crit | Corda | Tipo de critério de premiação. Valores da pesquisa: AC_AWARD_CRIT.CSV |
| Ma_main_activities | Lista (string) | Principal atividade do órgão contratante. Valores de pesquisa: ma_main_activities.csv |
A seção do contrato contém o próprio aviso, no formato XML. No arquivo XML original, esta seção pode estar disponível em traduções diferentes, até 24 quando está totalmente traduzido. Se disponível, a tradução em inglês do contrato é preferida. Caso contrário, francês e alemão se tornam segunda e terceira escolha, respectivamente. Quando qualquer uma dessas traduções não está presente, a primeira disponível é escolhida.
| Campo | Tipo de dados | Descrição |
|---|---|---|
| OTH_NOT | Corda | Indique se o aviso segue uma estrutura padrão (então OTH_NOT = NO ) ou a estrutura está aberta para permitir a publicação de qualquer outro aviso que não esteja seguindo um formulário padrão, também conhecido como aviso não estruturado (então oth_not = sim ). Somente quando oth_not = não , os campos contrating_authority, contrat_object e prêmio_of_contract são extraídos |
| Campo | Tipo de dados | Descrição |
|---|---|---|
| Contrating_authority | Corda | Nome da autoridade contratante |
Objeto do contrato.
| Campo | Tipo de dados | Descrição |
|---|---|---|
| Nozes | Lista (string) | Código (s) de região (s) do local de desempenho ou entrega. Um código de 2-5 dígitos da nomenclatura de unidades territoriais para estatísticas . Valores de pesquisa para os dois primeiros dígitos: iso_country.csv |
| NUTS_EXTRA | Corda | Comentários extraídos adicionais sobre o local de desempenho ou entrega |
| Cpv_main | Corda | Produto ou serviço principal Código de 8 dígitos do vocabulário comum de compras . Valores de pesquisa para os dois primeiros dígitos: cpv.csv |
| Contrat_covered_gpa | Corda | Sim ou não, se o contrato for coberto pelo GPA (Contrato de Compras do Governo) |
| Conclusão_framework_agreement | Corda | Sim ou não, se o contrato fizer parte de um contrato -quadro |
| Contracts_dps | Corda | Sim ou não se o contrato estiver sujeito a um sistema de compra dinâmico |
| Contrat_value | Valor do contrato | Valor total. Deve corresponder à soma dos valores do contrato de contratante individual. Consulte a seção Awards_Of_contract |
Cada valor do contrato pode ser composto pelos seguintes campos:
| Campo | Tipo de dados | Descrição |
|---|---|---|
| CUSTO | Valor | O custo real |
| ESTIMATIVA | Valor | Uma estimativa inicial do custo |
| Número_of_years | Int | Número do ano o contrato último. Custo/estimativa pode ser administrado por ano |
| Número_of_months | Int | Número do mês o contrato último. Custo/estimativa pode ser administrado por mês |
Os campos são os mesmos mencionados acima. Consulte o tipo de dados do valor da seção
Lista de prêmios.
Cada prêmio pode conter as seguintes subseções:
| Campo | Tipo de dados | Descrição |
|---|---|---|
| OficialName | Corda | Nome do Empreiteiro |
| PAÍS | Corda | País de contratante |
| ENDEREÇO | Corda | Endereço (nome da rua) do contratado |
| CIDADE | Corda | Cidade do empreiteiro |
| Postal_code | Corda | Código Postal de Contratante |
Os campos são os mesmos mencionados acima. Consulte a Seção 3.3.1 contrat_value
Módulos Python necessários:
Opcional:
Versão Python: 3.6 Banco de dados: MongoDB, modo local
Exemplo de como converter um documento
file_path = '454322_2015.xml' # Contract Award notice downloaded from tED website
# Extract the raw data
from extractor import extract
raw = extract ( file_path )
# Validate the raw data
from validator import validate
data = validate ( raw )
# Prune the data: remove empty fields
from validator import prune
prune ( data )Estrutura do repositório:
.
├── Lookups
│ └── AA_AUTHORITY_TYPE.csv
│ └── AC_AWARD_CRIT.csv
│ └── CPV.csv
│ └── ISO_COUNTRY.csv
│ └── MA_MAIN_ACTIVITY.csv
│ └── NC_CONTRACT_NATURE.csv
│ └── PR_PROC.csv
│ └── RP_REGULATION.csv
│ └── TD_DOCUMENT_TYPE.csv
│ └── TY_TYPE_BID.csv
├── extractor.py
└── validator.py
└── mongo_import.py
Lookups : pasta contendo vários arquivos de pesquisaextractor.py : Script para extrair dados brutos dos avisos de concessão do contratovalidator.py : scripts para validar os dados brutos e podar o dicionário (ou seja, remova os arquivos vazios)mongo_import.py : script para fazer upload dos dados em um banco de dados MongoDB Alessandra Sozzi, trabalhando para o Escritório de Estatísticas Nacionais Big Data Project
Liberado sob a licença do MIT.