prepare

El comando prepare corrige problemas de calidad en las entregas compiladas de OCDS.

Ejecute el comando help para leer su descripción, formato de salida y opciones:

$ ocdscardinal help prepare
Correct quality issues within OCDS compiled releases in a line-delimited JSON file

Corrected data is written to standard output as line-delimited JSON.

Quality issues are written to standard error as CSV rows with the columns: line, ocid, path, array
indexes, incorrect value, error description.

Usage: ocdscardinal[EXE] prepare [OPTIONS] --output <OUTPUT> --errors <ERRORS> <FILE>

Arguments:
  <FILE>
          The path to the file (or "-" for standard input), in which each line is a contracting
          process as JSON text

Options:
  -s, --settings <SETTINGS>
          The path to the settings file

  -v, --verbose...
          Increase verbosity

  -o, --output <OUTPUT>
          The file to which to write corrected data (or "-" for standard output)

  -e, --errors <ERRORS>
          The file to which to write quality issues (or "-" for standard output)

  -h, --help
          Print help (see a summary with '-h')

Flujo de trabajo

Atención

Antes de seguir el flujo de trabajo de este comando, siga los pasos anteriores en el Flujo de trabajo general.

  1. Inicialice un archivo settings.ini, usando el comando init:

    $ ocdscardinal init settings.ini
    Settings written to "settings.ini".
    
  2. Ejecute el comando prepare. Por ejemplo, si sus datos están en input.jsonl, este comando escribe los datos corregidos en prepared.jsonl y los problemas de calidad en issues.csv:

    ocdscardinal prepare --settings settings.ini --output prepared.jsonl --errors issues.csv input.jsonl
    
  3. Revise los problemas de calidad en el archivo issues.csv. No se preocupe si se notifican muchos problemas: la mayoría son repetitivos y pueden solucionarse de una vez. Lea la demostración para aprender a interpretar los resultados.

  4. Ajuste la configuración en el archivo settings.ini para solucionar los problemas de calidad.

Repita los 3 últimos pasos hasta que esté satisfecho con los resultados.

Nota

Este comando está diseñado para advertir únicamente sobre problemas de calidad (1) que pueda solucionar y (2) que interfieran con el cálculo de indicators. Si desea comprobar otros problemas de calidad, póngase en contacto con el Equipo de soporte de datos de OCP para usar Pelican.

Demonstración

Ejemplo

El estado de la oferta (/bids/details[]/status) es necesario para determinar si una oferta ha sido enviada, invitada o retirada.

Este archivo simplificado contiene una oferta sin estado:

{"ocid":"ocds-213czf-1","bids":{"details":[{"id":1}]}}

Para esta demostración, escriba los problemas de calidad en la consola:

$ ocdscardinal prepare --output prepared.jsonl --errors - docs/examples/prepare.jsonl
1,ocds-213czf-1,/bids/details[]/status,0,,not set

Los problemas de calidad se notifican como filas CSV. Si se añade un encabezado y se representa la fila como una tabla, se produce:

line

ocid

path

array indexes

incorrect value

error description

1

ocds-213czf-1

/bids/details[]/status

0

not set

Si escribe los problemas de calidad en un archivo en lugar de en la consola, puede abrir el CSV como una hoja de cálculo.

Teniendo en cuenta el contexto de este ejemplo, las columnas pueden utilizarse del siguiente modo.

Columna

Uso

line

Busque la entrega compilada problemática en el archivo de entrada.

ocid

Busque la entrega compilada problemática en otro sistema, como la fuente de datos.

path

Consulte el campo que tiene un error. Esta columna puede utilizarse para ordenar y filtrar los errores.

array indexes

Encuentra el array problemático en la entrega compilada. Si la ruta contiene varios arrays ([]), los índices se separan por puntos.

incorrect value

Consulte el valor que causó el problema. Si el problema es que el campo no está configurado, está en blanco.

error description

Determine la posible solución al problema. Los valores posibles son:

Value

Meaning

not set

The field isn’t set. To correct, fill in missing values.

invalid

The code isn’t valid. To correct, re-map incorrect codes.

Configuración

Correct structural errors

If a value is an object where OCDS expects an array, then calculations fail.

The command replaces each such object with an array containing the object. The command supports replacing:

  • /bids/details[]/tenderers

  • /awards/suppliers

Nota

Este comportamiento no puede desactivarse. Si necesita desactivarlo, cree un issue en GitHub.

Normalizar campos de ID

Algunos campos ID admiten tanto cadenas ("1") como números enteros (1): por ejemplo, el id de una adjudicación y el awardID de un contrato. Si los tipos son inconsistentes, las búsquedas fallan: por ejemplo, recuperar la adjudicación de un contrato o la dirección de un proveedor.

El comando convierte estos campos ID en cadenas, para evitar este problema:

  • /buyer/id

  • /tender/procuringEntity/id

  • /bids/details[]/tenderers[]/id

  • /awards[]/id

  • /awards[]/suppliers[]/id

  • /awards[]/items[]/classification/id

  • /contracts[]/awardID

A medida que se añadan nuevos indicadores, se convertirán los campos ID adicionales.

Nota

Este comportamiento no puede desactivarse. Si necesita desactivarlo, cree un issue en GitHub.

Llenar valores faltantes

El comando permite rellenar:

  • /bids/details[]/value/currency

  • /bids/details[]/items[]/classification/scheme

  • /bids/details[]/status

  • /awards[]/items[]/classification/scheme

  • /awards[]/status

Para rellenar uno o más de estos campos cuando el campo no está configurado, añada una sección [defaults] con las propiedades relevantes a su Archivo de configuración. Por ejemplo:

[defaults]
currency = USD
item_classification_scheme = UNSPSC
bid_status = valid
award_status = active

A medida que se añadan nuevos indicadores, campos adicionales de moneda y esquema se rellenarán.

Truco

¿Necesita llenar otros valores? Cree un issue en GitHub, o escriba a James McKinney, Head of Technology de OCP.

Eliminar valores incorrectos

Truco

¿Necesita eliminar otros valores? Cree un issue en GitHub, o escriba a James McKinney, Head of Technology de OCP.

Montos monetatios

Los indicadores asumen que los valores de importe son exactos. Si a un campo de importe se le asigna un valor de marcador, esta suposición falla. Por ejemplo, si se utiliza 0 cuando el importe es confidencial o no se ha introducido, las ofertas más bajas podrían calcularse erróneamente.

Para eliminar un valor de cantidad, añada una sección [redactions] con una propiedad amount a su Archivo de configuración. Su valor es una lista separada por barras verticales («|»). Por ejemplo:

[redactions]
amount = 0|99999999

Esta configuración permite eliminar valores de:

  • /bids/details[]/value/amount

IDs de organizaciones

Los indicadores asumen que los valores de ID representan entidades distintas. Si a un campo ID se le asigna un valor de marcador, esta suposición falla. Por ejemplo, si el valor del marcador se utiliza con frecuencia, los proveedores principales podrían estar mal calculados.

Para eliminar un valor ID de una referencia de organización, añada una sección [redactions] con una propiedad organization_id a su Archivo de configuración. Su valor es una lista separada por barras verticales («|»). Por ejemplo:

[redactions]
organization_id = my-placeholder|dummy-value

Esta configuración permite eliminar valores de:

  • /buyer/id

  • /tender/procuringEntity/id

  • /bids/details[]/tenderers[]/id

  • /awards[]/suppliers[]/id

Re-mapear códigos inválidos

El comando permite sustituir códigos en estos campos de la lista de códigos:

  • /bids/details[]/status, agregando una sección [codelists.bid_status]

  • /awards[]/status, by adding a [codelists.award_status] section

Para sustituir un código, añada una propiedad en la sección correspondiente, en la que el código a sustituir sea el nombre, y su sustitución sea el valor. Por ejemplo:

[codelists.bid_status]
Qualified = valid
Disqualified = disqualified
InTreatment = pending

Truco

¿Necesita mapear otros valores? Cree un issue en GitHub, o escriba a James McKinney, Head of Technology de OCP.

Standardize unconstrained values

Text fields with non-standardized values can be standardized to ease the configuration of indicators. For example, if a value is formatted as {mutual category} - {individual detail}, you can split the value on the - separator and keep the {mutual category} prefix.

To standardize a value by splitting it on a separator and keeping the prefix, add a [modifications_split] section with a procurement_method_details property to your Archivo de configuración. For example:

[modifications_split]
procurement_method_details = -

This configuration supports standardizing values in:

  • /tender/procurementMethodDetails

Truco

Need to standardize other values? Create an issue on GitHub, or email James McKinney, OCP’s Head of Technology.

Reemplace valores incorrectos del estado de la adjudicación

En raras ocasiones, conviene cambiar el estatus de una adjudicación en función del estatus de sus contratos.

Ejemplo

El Gobierno de Ruritania agrupa muchas decisiones en un objeto de adjudicación y utiliza el objeto de contrato como sustituto de la decisión individual. Así, cada objeto de adjudicación está relacionado con uno o varios objetos de contrato. Si se anula la decisión individual (por ejemplo, la adjudicación se recurre ante un tribunal o el proveedor se niega a firmar el contrato), el estado del objeto de contrato cambia a anulado. El estado del objeto de adjudicación permanece activo.

Los indicadores asumen que las adjudicaciones, y no los contratos, representan decisiones individuales, de conformidad con OCDS. En el ejemplo, para cumplir mejor este supuesto, el estado de una adjudicación puede cambiarse a cancelado si el estado de cada contrato relacionado es cancelado.

Para sustituir el estado de una adjudicación de este modo, añada una sección [corrections] con una propiedad award_status_by_contract_status a su Archivo de configuración. Su valor es un booleano. Por ejemplo:

[corrections]
award_status_by_contract_status = true

Truco

¿Necesita corregir otros valores? Cree un issue en GitHub, o escriba a James McKinney, Head of Technology de OCP.