diff --git a/docs/cost/index.md b/docs/cost/index.md index 762f7522..0dc51767 100644 --- a/docs/cost/index.md +++ b/docs/cost/index.md @@ -33,43 +33,34 @@ You can read more about the Infrastructure Data Standard in [CoST Guidance Note ``` -## Mapping to IDS and from OCDS - -The following mapping tables describe: +The following tables document two mappings: -* How each element of the CoST Infrastructure Data Standard can be represented as **structured data** using the [Open Contracting for Infrastructure Data Standard](../projects/index), in the 'Mapping to OC4IDS' column. +* The **CoST IDS to OC4IDS** mapping describes how to represent each element of the CoST IDS as structured data using OC4IDS. Use this mapping if you already collect data according to the CoST IDS and you want to publish your data using OC4IDS, or if you want to make sure that your OC4IDS publication conforms to the CoST IDS. +* The **OCDS to OC4IDS** mapping describes how to use OCDS data to populate the sections of an OC4IDS file which relate to the CoST IDS. Use this mapping if you have access to OCDS data on infrastructure contracting processes and you want to create a summary by project in OC4IDS format, or if you want to check which CoST IDS elements your OCDS data covers. -* How existing OCDS data can be used to populate project-level and contracting process summary data, in the 'Mapping from OCDS' column. +The organization of the mapping tables reflects the structure of the CoST IDS, which is described in [Getting Started](../projects/index). -```eval_rst -.. admonition:: Mapping from OCDS - :class: Note - - .. markdown:: - - Some mappings use fields from [OCDS extensions](https://standard.open-contracting.org/1.1/en/extensions/). In these cases, the names of extensions are noted in parentheses; where possible, alternative mappings are provided that use only fields from the core OCDS schema. - -``` +## CoST IDS to OC4IDS Mapping ### Project level -#### Project identification +#### Identification ```eval_rst .. csv-table-no-translate:: :header-rows: 1 - :widths: 20 20 30 30 + :widths: 20 20 20 30 :file: ../../build/current_lang/project-level-identification.csv ``` -#### Project preparation +#### Preparation ```eval_rst .. csv-table-no-translate:: :header-rows: 1 - :widths: 20 20 30 30 + :widths: 20 20 20 30 :file: ../../build/current_lang/project-level-preparation.csv ``` @@ -78,7 +69,7 @@ The following mapping tables describe: ```eval_rst .. csv-table-no-translate:: :header-rows: 1 - :widths: 20 20 30 30 + :widths: 20 20 20 30 :file: ../../build/current_lang/project-level-completion.csv ``` @@ -89,12 +80,112 @@ The following mapping tables describe: ```eval_rst .. csv-table-no-translate:: :header-rows: 1 - :widths: 20 20 30 30 + :widths: 20 20 20 30 :file: ../../build/current_lang/process-level-procurement.csv ``` #### Implementation +```eval_rst +.. csv-table-no-translate:: + :header-rows: 1 + :widths: 20 20 20 30 + :file: ../../build/current_lang/process-level-implementation.csv +``` + +## OCDS to OC4IDS Mapping + +### Guidance + +#### Command-line tool and reference implementation + +OCDS Kit's [convert-to-oc4ids](https://ocdskit.readthedocs.io/en/latest/cli/ocds.html#convert-to-oc4ids) command is a command-line tool and reference implementation for converting OCDS data to OC4IDS format. + +`convert-to-oc4ids` covers most mappings in the following categories: + +* project-level identification +* project-level preparation +* process-level procurement + +However, `convert-to-oc4ids` does not cover all mappings, nor does it perform currency conversions. Mappings which `convert-to-oc4ids` does not cover are shown in *italics*. + +#### Mapping codelists + +Mappings that depend on the specific classification or codelist used in the OCDS data are not documented in detail, as they may differ by publisher. For example, mapping to the OC4IDS projectSector codelist. + +#### Alternative mappings + +Some mappings offer optional alternatives in case the primary mapping isn't available. For example, for OCDS data in which `planning.project.title` isn't available, you can optionally set the project `title` based on the `tender.title`. + +In order to provide analysts with additional context, alternative mappings may copy additional fields which don't appear in OC4IDS schema. You should remove these fields if you plan to publish your OC4IDS data. + +#### OCDS extensions + +Some mappings use fields from [OCDS extensions](https://standard.open-contracting.org/latest/en/guidance/map/extensions/#extensions). In these cases, the names of extensions are noted in parentheses; where possible, alternative mappings are provided that use only fields from the core OCDS schema. + +#### Handling conflicts and duplicates + +Implementations of the mapping should give consideration to: + +* OCDS data that contains fields that differ between contracting processes but map to a single field in OC4IDS: for example, where `planning.project.title` differs for two contracting processes that relate to the same project, but OC4IDS has a single `title` field at the project level. +* OCDS data that contains multiple `Organization` objects with the same `.role` that map to a single field in OC4IDS: for example, where a contracting process has two `Organization`s with the 'procuringEntity' role, but OC4IDS has a single `.summary.tender.procuringEntity` field at the contract level. +* Checking for duplicates when copying objects from OCDS. For example, checking whether an `Organization` object has already been copied before copying it again. +* Handling identifier conflicts when copying objects from OCDS. For example, where two contracting processes both contain a ``Document`` with the same `.id`. + +Read the `convert-to-oc4ids` [transformation notes](https://ocdskit.readthedocs.io/en/latest/cli/ocds.html#transformation-notes) to learn about how OCDS Kit handles the above scenarios. + +#### Handling multiple currencies + +Some mappings involve converting values in OCDS, which may be in different currencies, to a base currency. + +Implementations which include multiple currencies should give consideration to [value dating](https://en.wikipedia.org/wiki/Value_date). One approach is to use the compiled release's `date`. + +### Mapping + +#### Project level + +##### Identification + +```eval_rst +.. csv-table-no-translate:: + :header-rows: 1 + :widths: 20 20 20 30 + :file: ../../build/current_lang/project-level-identification.csv +``` + +##### Preparation + +```eval_rst +.. csv-table-no-translate:: + :header-rows: 1 + :widths: 20 20 20 30 + :file: ../../build/current_lang/project-level-preparation.csv +``` + +##### Project completion + +```eval_rst +.. csv-table-no-translate:: + :header-rows: 1 + :widths: 20 20 20 30 + :file: ../../build/current_lang/project-level-completion.csv +``` + +#### Process level + +The mappings in this section relate to the `contractingProcesses` section of the OC4IDS schema, unless otherwise specified. + +##### Procurement + +```eval_rst +.. csv-table-no-translate:: + :header-rows: 1 + :widths: 20 20 20 30 + :file: ../../build/current_lang/process-level-procurement.csv +``` + +##### Implementation + Disclosures in the implementation section of the CoST IDS relate to changes to a contract's value, duration or scope that were made after the contract was awarded. If OCDS data is available, these changes can be determined by comparing the most recent OCDS release to a compiled release created from all prior releases (to better understand these concepts, refer to the [OCDS documentation](https://standard.open-contracting.org/1.1/en/getting_started/releases_and_records/)). The specific fields to monitor for changes between releases are described in the mapping table below. @@ -104,7 +195,7 @@ In some cases, OCDS data may include an explanation of changes in the relevant ` ```eval_rst .. csv-table-no-translate:: :header-rows: 1 - :widths: 20 20 30 30 + :widths: 20 20 20 30 :file: ../../build/current_lang/process-level-implementation.csv ``` diff --git a/docs/examples/example.json b/docs/examples/example.json index 7a0515a0..794731d2 100644 --- a/docs/examples/example.json +++ b/docs/examples/example.json @@ -26,6 +26,13 @@ "transport", "transport.road" ], + "additionalClassifications": [ + { + "scheme": "COFOG", + "id": "04.5.1", + "description": "Road transport (CS)" + } + ], "type": "expansion", "relatedProjects": [ { @@ -574,7 +581,7 @@ }, { "id": "a1b1c1-construction-completion", - "documentType": "comletionCertificate", + "documentType": "completionCertificate", "title": "Completion certificate for construction at M75 J4-5 upgrade", "description": "Completion certificate for the construction upgrading motorway M75 Junctions 4-5.", "url": "https://example.com/Published/a1b1c1-construction-completion.html", diff --git a/docs/reference/changelog.md b/docs/reference/changelog.md index fbb1e30f..9eba5ca8 100644 --- a/docs/reference/changelog.md +++ b/docs/reference/changelog.md @@ -4,6 +4,7 @@ ### Documentation +* [#210](https://github.com/open-contracting/infrastructure/issues/210) - update project identification mapping for sector, replace reference to Budget and projects extension with Projects extension. * [#217](https://github.com/open-contracting/infrastructure/issues/217) - remove repeated 'OCDS:' in mapping documentation. * [#268](https://github.com/open-contracting/infrastructure/issues/268), [#269](https://github.com/open-contracting/infrastructure/issues/269) replace 'finalAudit' with 'technicalAuditReport' and 'financialAuditReport' in mapping. diff --git a/mapping/process-level-implementation.csv b/mapping/process-level-implementation.csv index 12c3887a..1cf243ec 100644 --- a/mapping/process-level-implementation.csv +++ b/mapping/process-level-implementation.csv @@ -1,7 +1,7 @@ -CoST IDS element,CoST IDS draft definition,Mapping to OC for Infrastructure,Mapping from OCDS -Variation to contract price,Difference between the price at contract award and the current projected price,"Contracting process: For each variation, publish an entry with a ``.date`` and ``.description`` in ``.summary.modifications`` with ``.type`` of 'value'. Provide the contract value before the variation in ``.oldContractValue`` and the contract value after the variation in ``.newContractValue``",Monitor ``contracts.value`` for changes. Copy ``contracts.amendments.description`` to ``.description`` and ``release.date`` to ``.date`` -Escalation of contract price,"Escalation to date of the price of materials, labour, equipment etc. due to fluctuations in inflation, currency etc.","Contracting process: For each escalation, publish an entry with a ``.date`` and ``.description`` in ``.summary.modifications`` with ``.type`` of 'value'. Provide the contract value before the escalation in ``.oldContractValue`` and the contract value after the escalation in ``.newContractValue``",Monitor ``contracts.value`` for changes. Copy ``contracts.amendments.description`` to ``.description`` and ``release.date`` to ``.date`` -Variation to contract duration,Difference between original duration at contract award and the current projected duration in weeks.,"Contracting process: For each variation, publish an entry with a ``.date`` and ``.description`` in ``.summary.modifications`` with ``.type`` of 'duration'. Provide the contract period before the variation in ``.oldContractPeriod`` and the contract period after the variation in ``.newContractPeriod``",Monitor ``contracts.period`` for changes. Copy ``contracts.amendments.description`` to ``.description`` and ``release.date`` to ``.date`` -Variation to contract scope,Any changes between original scope at contract award and the current scope,"Contracting process: For each variation, publish an entry with a ``.date`` and ``.description`` in ``.summary.modifications`` with ``.type`` of 'scope'","Monitor ``contracts.description``, ``contracts.items`` and ``contracts.implementation.milestones`` for changes. Copy ``contracts.amendments.description`` to ``.description`` and ``release.date`` to ``.date``" -Reasons for price changes,"Summary of reasons for primary changes (e.g. variations) that then lead to changes in contract price, major price fluctuations and accumulative increase or decrease in price.","Contracting process: For each variation, provide a ``.rationale`` in ``.summary.modifications``.",Copy ``contracts.amendments.rationale`` to ``.rationale`` -Reasons for scope and duration changes,Summary of reasons for primary changes (e.g. variations) that then lead to changes in the scope and duration.,"Contracting process: For each variation, provide a ``.rationale`` in ``.summary.modifications``.",Copy ``contracts.amendments.rationale`` to ``.rationale`` +CoST IDS element,CoST IDS draft definition,Mapping to OC4IDS,Mapping from OCDS +Variation to contract price,Difference between the price at contract award and the current projected price,"Contracting process: For each variation, publish an entry with a ``.date`` and ``.description`` in ``.summary.modifications`` with ``.type`` of 'value'. Provide the contract value before the variation in ``.oldContractValue`` and the contract value after the variation in ``.newContractValue``",*Monitor* ``contracts.value`` *for changes. Copy* ``contracts.amendments.description`` *to* ``.description`` *and* ``release.date`` *to* ``.date``. +Escalation of contract price,"Escalation to date of the price of materials, labour, equipment etc. due to fluctuations in inflation, currency etc.","Contracting process: For each escalation, publish an entry with a ``.date`` and ``.description`` in ``.summary.modifications`` with ``.type`` of 'value'. Provide the contract value before the escalation in ``.oldContractValue`` and the contract value after the escalation in ``.newContractValue``",*Monitor* ``contracts.value`` *for changes. Copy* ``contracts.amendments.description`` *to* ``.description`` *and* ``release.date`` *to* ``.date``. +Variation to contract duration,Difference between original duration at contract award and the current projected duration in weeks.,"Contracting process: For each variation, publish an entry with a ``.date`` and ``.description`` in ``.summary.modifications`` with ``.type`` of 'duration'. Provide the contract period before the variation in ``.oldContractPeriod`` and the contract period after the variation in ``.newContractPeriod``",*Monitor* ``contracts.period`` *for changes. Copy* ``contracts.amendments.description`` *to* ``.description`` *and* ``release.date`` *to* ``.date``. +Variation to contract scope,Any changes between original scope at contract award and the current scope,"Contracting process: For each variation, publish an entry with a ``.date`` and ``.description`` in ``.summary.modifications`` with ``.type`` of 'scope'","*Monitor* ``contracts.description``, ``contracts.items`` *and* ``contracts.implementation.milestones`` *for changes. Copy* ``contracts.amendments.description`` *to* ``.description`` *and* ``release.date`` *to* ``.date``." +Reasons for price changes,"Summary of reasons for primary changes (e.g. variations) that then lead to changes in contract price, major price fluctuations and accumulative increase or decrease in price.","Contracting process: For each variation, provide a ``.rationale`` in ``.summary.modifications``.",*Copy* ``contracts.amendments.rationale`` *to* ``.rationale``. +Reasons for scope and duration changes,Summary of reasons for primary changes (e.g. variations) that then lead to changes in the scope and duration.,"Contracting process: For each variation, provide a ``.rationale`` in ``.summary.modifications``.",*Copy* ``contracts.amendments.rationale`` *to* ``.rationale``. diff --git a/mapping/process-level-procurement.csv b/mapping/process-level-procurement.csv index 942454b4..d9292355 100644 --- a/mapping/process-level-procurement.csv +++ b/mapping/process-level-procurement.csv @@ -1,14 +1,18 @@ -CoST IDS element,CoST IDS draft definition,Mapping to OC for Infrastructure,Mapping from OCDS -Procuring entity,Enter name of the organization carrying out the procurement,Project Level: Add an entry to ``parties`` with 'procuringEntity' included in its ``.roles`` | Contracting process: Record the name and identifier in ``.summary.tender.procuringEntity``,Copy from ``tender.procuringEntity.name`` and ``tender.procuringEntity.id`` -Procuring entity contact details,Postal and Electronic address,Project Level: Publish the postal address in ``parties.address`` and the electronic address in ``parties.contactPoint``,Check for a party with 'procuringEntity' in ``.roles`` and copy from ``.address`` and ``.contactPoint`` -Contract administrative entity,Enter name of the organization carrying out the contract administrative entity if different from the Procuring Entity,Project Level: Add an entry to ``parties`` with 'administrativeEntity' included in its ``.roles`` | Contracting process: Record the name and identifier in ``.summary.tender.administrativeEntity``,Check for a party with 'administrativeEntity' in ``.roles`` and copy from ``.name`` and ``.identifier`` -Contract status,"Select from pre-award, active or closed",Contracting process: Publish in ``.summary.status`` using the contractingProcessStatus codelist,Map following the business logic in the contractingProcessStatus codelist -Procurement process,"Develop a list such as International Competitive Bidding, National Competitive Bidding, Donor Procurement Rules, Framework, Direct Award",Contracting process: Publish in ``.summary.tender.procurementMethodDetails`` and map to ``.summary.tender.procurementMethod``,"Copy from ``tender.procurementMethod``; if the OCDS data uses the list developed for infrastructure monitoring, copy from ``tender.procurementMethodDetails``; otherwise, map from ``tender.procurementMethodDetails`` to this list where possible" -Contract type,"Develop a list such as Design, Supervision, Design & Supervision, Design & Build, Construction","Contracting process: Add one or more values to the ``.summary.nature`` array. (e.g. [""design"", ""build""] for a design and build contract)",Map from ``tender.items.classification`` or ``tender.items.additionalClassifications`` or infer from ``tender.description`` -Number of firms tendering,Number of firms who submit a tender,Contracting process: Publish in ``.summary.tender.numberOfTenderers``,Copy from ``tender.numberOfTenderers`` -Cost estimate,Currency and amount of the original pre-tender estimate of the contract,Contracting process: Publish in ``.summary.tender.costEstimate``,Copy from ``tender.value`` of the last release in which ``tender.status`` is 'planning' -Contract title,The formal name of the contract,Contracting process: Publish in ``.summary.title``,"Copy from ``contracts.title``, ``awards.title`` or ``tender.title``; for contracting processes with multiple awards or contracts, copy from ``tender.title``" -Contract firm(s),Legal name of supplier,Project Level: Add an entries to ``parties`` with 'supplier' included in their ``.roles`` | Contracting process: Add the names and identifiers to the ``.summary.suppliers`` array,"Check for parties with 'supplier' in ``.roles`` and copy from ``.name`` and ``.identifier``, or copy from ``awards.suppliers``" -Contract price,Currency and price at contract award,Contracting process: Publish in ``.summary.contractValue``,"Copy from ``awards.value``; for contracting processes with multiple awards, use the sum of ``awards.value``" -Contract scope of work,"Main outputs from the contract e.g. detailed design, supervision, project management and or type, quantity, unit for construction",Contracting process: Publish in ``.summary.description``. Additionally detailed documentation may be provided as documents within linked releases,"Copy from ``contracts.description``, `contracts.items.description`` or ``contracts.implementation.milestones``; if not available, copy from ``awards.description``, ``awards.items.description``, ``tender.description`` or ``tender.items.description``; for contracting processes with multiple contracts or awards, copy from ``tender.description`` or ``tender.items.description``." -Contract start date and contract period (duration),Enter dates and Number of weeks from contract start date to (anticipated) completion date,Contracting process: Publish in ``.summary.contractPeriod``,"Copy from ``awards.contractPeriod``; if not available, copy from ``tender.contractPeriod``; for contracting processes with multiple awards, set ``.startDate`` to the earliest of ``awards.contractPeriod.startDate`` and ``.endDate`` to the latest of ``awards.contractPeriod.endDate``." +CoST IDS element,CoST IDS draft definition,Mapping to OC4IDS,Mapping from OCDS +Procuring entity,Enter name of the organization carrying out the procurement,Project Level: Add an entry to ``parties`` with 'procuringEntity' included in its ``.roles`` | Contracting process: Record the name and identifier in ``.summary.tender.procuringEntity``,"Check the ``parties`` array for ``Organization`` objects with 'procuringEntity' in ``.roles``. Copy each object to the ``parties`` array in OC4IDS. If there is more than one procuring entity, do not set ``.summary.tender.procuringEntity.name`` and ``.summary.tender.procuringEntity.id``; otherwise, set them to the procuring entity's ``.name`` and ``.id``." +Procuring entity contact details,Postal and Electronic address,Project Level: Publish the postal address in ``parties.address`` and the electronic address in ``parties.contactPoint``,"Check the ``parties`` array for ``Organization`` objects with 'procuringEntity' in ``.roles``. Copy each object to the ``parties`` array in OC4IDS. If there is more than one procuring entity, do not set ``.summary.tender.procuringEntity.name`` and ``.summary.tender.procuringEntity.id``; otherwise, set them to the procuring entity's ``.name`` and ``.id``." +Contract administrative entity,Enter name of the organization carrying out the contract administrative entity if different from the Procuring Entity,Project Level: Add an entry to ``parties`` with 'administrativeEntity' included in its ``.roles`` | Contracting process: Record the name and identifier in ``.summary.tender.administrativeEntity``,"Check the ``parties`` array for ``Organization`` objects with 'administrativeEntity' in ``.roles``. Copy each object to the ``parties`` array in OC4IDS. If there is more than one procuring entity, do not set ``.summary.tender.administrativeEntity.name`` and ``.summary.tender.administrativeEntity.id``; otherwise, set them to the procuring entity's ``.name`` and ``.id``." +Contract status,"Select from pre-award, active or closed",Contracting process: Publish in ``.summary.status`` using the contractingProcessStatus codelist,Set ``.summary.status`` to a value from the contractingProcessStatus codelist according to the business logic in the codelist. +Procurement process,"Develop a list such as International Competitive Bidding, National Competitive Bidding, Donor Procurement Rules, Framework, Direct Award",Contracting process: Publish in ``.summary.tender.procurementMethodDetails`` and map to ``.summary.tender.procurementMethod``,Set ``.summary.tender.procurementMethod`` and ``.summary.tender.procurementMethodDetails``to the values of ``tender.procurementMethod`` and ``tender.procurementMethodDetails`` respectively. +Contract type,"Develop a list such as Design, Supervision, Design & Supervision, Design & Build, Construction","Contracting process: Add one or more values to the ``.summary.nature`` array. (e.g. [""design"", ""build""] for a design and build contract)",*Map from* ``tender.items.classification`` *or* ``tender.items.additionalClassifications`` *or infer from* ``tender.description``. +Number of firms tendering,Number of firms who submit a tender,Contracting process: Publish in ``.summary.tender.numberOfTenderers``,Set ``.summary.numberOfTenderers`` to the value of ``tender.numberOfTenderers``. +Cost estimate,Currency and amount of the original pre-tender estimate of the contract,Contracting process: Publish in ``.summary.tender.costEstimate``,Check the individual releases for the contracting process and set ``contractingProcess.summary.tender.costEstimate`` to the value of ``tender.value`` in the most recent release with `tender.status`` set to 'planning'. +Contract title,The formal name of the contract,Contracting process: Publish in ``.summary.title``,"If the contracting process has only one ``Contract`` object in ``contracts``, set ``.summary.title`` to the value of the contract's ``.title``; if not available and the contracting process has only one ``Award`` object in ``awards``, use its ``.title``. Otherwise, use ``tender.title``." +Contract firm(s),Legal name of supplier,Project Level: Add an entries to ``parties`` with 'supplier' included in their ``.roles`` | Contracting process: Add the names and identifiers to the ``.summary.suppliers`` array,"Check the ``parties`` array for ``Organization`` objects with 'supplier' in ``.roles``. For each such object, copy it to the ``parties`` array in OC4IDS, add an ``OrganizationReference`` object to ``.summary.suppliers` and set the ``OrganizationReference``'s ``.name`` and ``.id`` to the ``Organization``'s ``.name`` and ``.id``." +Contract price,Currency and price at contract award,Contracting process: Publish in ``.summary.contractValue``,"If the value of ``value.currency`` is the same for all ``Award`` objects in ``awards``, set ``.summary.contractValue.amount`` to the sum of ``value.amount`` in each ``Award`` object and set ``.summary.contractValue.currency`` to the value of ``value.currency``. *Otherwise, convert* ``value.amount`` *in each* ``Award`` *object to a base currency, set* ``.summary.contractValue.amount`` *to the sum of the converted values and set* ``.summary.contractValue.currency`` *to the base currency.*" +Contract scope of work,"Main outputs from the contract e.g. detailed design, supervision, project management and or type, quantity, unit for construction",Contracting process: Publish in ``.summary.description``. Additionally detailed documentation may be provided as documents within linked releases,"If there is more than one ``Contract`` object in ``contracts`` or more than one ``Award`` object in awards, set ``.summary.description`` to the value of ``tender.description```; if unavailable and if there is only one ``Item`` object in ``tender.items``, then set ``.summary.description`` to the value of the item's ``.description``. + +Otherwise, if there is only one ``Award`` or ``Contract`` object with a ``.description`` field, set ``.summary.description`` to the value of the object's ``.description``. + +Otherwise, if there is only one ``Item`` with a ``.description`` field in ``awards.items`` and ``contracts.items``, set ``.summary.description`` to the value of the item's ``.description``." +Contract start date and contract period (duration),Enter dates and Number of weeks from contract start date to (anticipated) completion date,Contracting process: Publish in ``.summary.contractPeriod``,"Set ``.summary.contractPeriod.startDate`` to the earliest ``.contractPeriod.startDate`` of all ``Award`` objects in ``awards`` and set ``.summary.contractPeriod.endDate`` to the latest ``.contractPeriod.endDate`` of all ``Award`` objects in ``awards``; if not available, set ``.summary.contractPeriod`` to the value of ``tender.contractPeriod``." diff --git a/mapping/project-level-completion.csv b/mapping/project-level-completion.csv index d91312f1..dfd4a75c 100644 --- a/mapping/project-level-completion.csv +++ b/mapping/project-level-completion.csv @@ -1,7 +1,7 @@ -CoST IDS element,CoST IDS draft definition,Mapping to OC for Infrastructure,Mapping from OCDS -Project status (current),"The current stage of the project. Select from identification, preparation, construction, completion, completed or cancelled.",Project Level: Publish in ``status``,Infer from ``tag`` of most recent release -Project completion cost,State projected or actual completion cost (currency and amount),Project Level: Publish in ``completion/finalValue``,"Infer projected cost from ``contracts.value`` and infer actual cost from ``contracts.implementation.finalValue`` (Contract completion extension); if not available, infer from total of ``contracts.implementation.transactions.value``" -Completion date,State projected or actual completion date,Project Level: Publish in ``completion/endDate``,"Infer from ``contracts.implementation.endDate`` (Contract completion extension); if not available, infer from ``contracts.period.endDate``" -Project Scope at completion (projected),"Indicate projected or actual scope of project. Aim is to show if the completed project scope differs from the original project scope. Specify main outputs (type, quantity, unit)",Project Level: Publish free text as ``completion/finalScopeDetails`` and/or include document with ``.type`` of ``projectScope`` and dates and descriptions that show this is final scope at completion,Check ``planning.documents`` for documents with ``.type`` set to `projectScope` or infer from ``contracts.items`` or ``contracts.implementation.milestones`` -Reasons for project changes,"Summary of primary reasons for any changes in scope, time and cost","Project Level: Publish using ``completion/endDateDetails``, ``completion/finalValueDetails`` and ``completion/finalScopeDetails``","Infer from ``contracts.implementation.endDateDetails`` and ``contracts.implementation.finalValueDetails`` (Contract completion extension); if not available, infer from ``contracts.amendments``" -Reference to audit and evaluation reports,Reference to publicly available technical and financial audits,"Project Level: Publish in ``documents``, with ``.type`` set to 'financialAuditReport' or 'technicalAuditReport' and include a short description and/or a link to a document providing details",Check ``contracts.implementation.documents`` for documents with ``.type`` set to 'finalAudit' +CoST IDS element,CoST IDS draft definition,Mapping to OC4IDS,Mapping from OCDS +Project status (current),"The current stage of the project. Select from identification, preparation, construction, completion, completed or cancelled.",Project Level: Publish in ``status``,*Infer from* ``tag`` *of most recent release.* +Project completion cost,State projected or actual completion cost (currency and amount),Project Level: Publish in ``completion/finalValue``,"*Infer projected cost from* ``contracts.value`` *and infer actual cost from* ``contracts.implementation.finalValue`` *(Contract completion extension); if not available, infer from total of* ``contracts.implementation.transactions.value``." +Completion date,State projected or actual completion date,Project Level: Publish in ``completion/endDate``,"*Infer from* ``contracts.implementation.endDate`` *(Contract completion extension); if not available, infer from* ``contracts.period.endDate``." +Project Scope at completion (projected),"Indicate projected or actual scope of project. Aim is to show if the completed project scope differs from the original project scope. Specify main outputs (type, quantity, unit)",Project Level: Publish free text as ``completion/finalScopeDetails`` and/or include document with ``.type`` of ``projectScope`` and dates and descriptions that show this is final scope at completion,*Check* ``planning.documents`` *for documents with* ``.type`` *set to* `projectScope` *or infer from* ``contracts.items`` *or* ``contracts.implementation.milestones``. +Reasons for project changes,"Summary of primary reasons for any changes in scope, time and cost","Project Level: Publish using ``completion/endDateDetails``, ``completion/finalValueDetails`` and ``completion/finalScopeDetails``","*Infer from* ``contracts.implementation.endDateDetails`` *and* ``contracts.implementation.finalValueDetails`` *(Contract completion extension); if not available, infer from* ``contracts.amendments``." +Reference to audit and evaluation reports,Reference to publicly available technical and financial audits,"Project Level: Publish in ``documents``, with ``.type`` set to 'financialAuditReport' or 'technicalAuditReport' and include a short description and/or a link to a document providing details",Check the ``contracts.implementation.documents`` array for ``Document`` objects with ``.type`` set to 'finalAudit'. Copy each such object to the ``documents`` array. diff --git a/mapping/project-level-identification.csv b/mapping/project-level-identification.csv index 37008a1b..358f2139 100644 --- a/mapping/project-level-identification.csv +++ b/mapping/project-level-identification.csv @@ -1,8 +1,8 @@ -CoST IDS element,CoST IDS draft definition,Mapping to OC for Infrastructure,Mapping from OCDS -Project owner,Name of the sponsoring Government department,Project Level: Add an entry to ``parties`` with 'publicAuthority' included in its ``.roles``,Check for parties with 'buyer' or 'publicAuthority' in ``.roles`` and infer from ``.name`` -Sector,"Develop a list of sectors relevant to country e.g. housing, transport, energy, water etc.","Project Level: Publish in ``sector``, with any additional sectors in ``additionalClassifications``","Map from ``planning.project.sector`` (Budget and projects extension, PPP profile)" -Subsector,"Develop a subset for each sector e.g. Transport could be subdivided into national highway, local road, railway, port, airport etc.",Project Level: Publish in ``additionalClassifications``,"Copy from ``planning.project.additionalClassifications`` (Budget and projects extension, PPP profile)" -Project name,Specify the project name,Project Level: Publish in ``title``,"Copy from ``planning.project.title`` (Budget and projects extension, PPP profile); if not available, infer from ``tender.title``" -Project Location,Briefly specify location of the project,"Project Level: Publish using the ``locations`` fields as an address, geometry (point/line/polygon) or gazetteer entry","Copy from ``planning.project.locations`` (Budget and projects extension, PPP profile); if not available, infer from ``tender.items.deliveryLocation`` or ``tender.items.deliveryAddress`` (Location extension)" -Purpose,Specify the socio-economic purpose of the project,"Project Level: Publish in ``purpose``; if classified against a codelist, also publish in ``additionalClassifications``.",Infer from ``planning.rationale`` and check ``planning.documents`` for documents with ``.type`` set to 'needsAssessment' -Project description,Concise description and details of the project,Project Level: Publish in ``description``,"Copy from ``planning.project.description`` (Budgets and projects extension, PPP profile); if not available, infer from ``tender.description``" +CoST IDS element,CoST IDS draft definition,Mapping to OC4IDS,Mapping from OCDS +Project owner,Name of the sponsoring Government department,Project Level: Add an ``Organization`` object to ``parties`` with 'publicAuthority' included in its ``.roles``. Set ``publicAuthority.name`` and ``publicAuthority.id`` to the ``.name`` and ``.id`` of the object.,"Check the ``parties`` array for ``Organization`` objects with 'buyer' in ``.roles``. Copy each object to the ``parties`` array in OC4IDS and add 'publicAuthority' to its ``.roles``. *If there is more than one public authority, do not set* ``publicAuthority.name`` *and* ``publicAuthority.id``; *otherwise, set them to the public authority's* ``.name`` *and* ``.id``." +Sector,"Develop a list of sectors relevant to country e.g. housing, transport, energy, water etc.",Project Level: Map to the projectSector codelist and publish one or more values in ``sector``. Publish any additional sector classifications from local or other global codelists in ``additionalClassifications``.,"*Copy the* ``Classification`` *object from* ``planning.project.sector`` *(Project extension) to the* ``additionalClassifications`` *array. Additionally, map the classification used in OCDS to the projectSector codelist and publish one or more values in* ``sector``." +Subsector,"Develop a subset for each sector e.g. Transport could be subdivided into national highway, local road, railway, port, airport etc.",Project Level: Publish in ``additionalClassifications``,Copy each ``Classification`` object from the ``planning.project.additionalClassifications`` array (Project extension) to the ``additionalClassifications`` array. +Project name,Specify the project name,Project Level: Publish in ``title``,"Set ``title`` to the value of ``planning.project.title`` (Project extension); if not available, optionally use ``tender.title``." +Project Location,Briefly specify location of the project,"Project Level: Publish using the ``locations`` fields as an address, geometry (point/line/polygon) or gazetteer entry","Copy each ``Location`` object from ``planning.project.locations`` (Project extension) to the ``locations`` array; if not available, optionally use ``tender.items.deliveryLocation`` or ``tender.items.deliveryAddress`` (Location extension). Add an ``.id`` to each ``Location`` object." +Purpose,Specify the socio-economic purpose of the project,"Project Level: Publish in ``purpose``; if classified against a codelist, also publish in ``additionalClassifications``.","Set ``purpose`` to the value of ``planning.rationale``; if not available, optionally check the ``planning.documents`` array for ``Document`` objects with ``.type`` set to 'needsAssessment' and copy each object to the ``documents`` array." +Project description,Concise description and details of the project,Project Level: Publish in ``description``,"Set ``description`` to the value of ``planning.project.description`` (Project extension); if not available, optionally use ``tender.description``." diff --git a/mapping/project-level-preparation.csv b/mapping/project-level-preparation.csv index 0baffe3a..11d979e9 100644 --- a/mapping/project-level-preparation.csv +++ b/mapping/project-level-preparation.csv @@ -1,8 +1,8 @@ -CoST IDS element,CoST IDS draft definition,Mapping to OC for Infrastructure,Mapping from OCDS -Project Scope (main output),"Main outputs from the project that are being taken forward into construction (type, quantity, unit)","Project Level: Publish in ``documents``, with ``.type`` set to 'projectScope' and include a short description and/or a link to a document providing details",Check ``planning.documents`` for documents with ``.type`` set to `projectScope` or infer from ``tender.items`` or ``tender.milestones`` -Environmental impact,"Briefly describe the environmental impacts and mitigation measures for this project e.g. impacts on flora, fauna & woodlands, areas of natural beauty, carbon emissions etc. and mitigation measures e.g. pollution control, low carbon solutions, sustainable timber etc.","Project Level: Publish in ``documents``, with ``.type`` set to 'environmentalImpact' and include a short description and/or a link to a document providing details.",Check ``planning.documents`` for documents with ``.type`` set to 'environmentalImpact' -Land and settlement impact,"State the amount of land and property that was acquired for the project e.g. 25km2 land, and related impacts e.g. archaeological issues (moved Saxon burial site), local/indigenous settlements (relocated 5 indigenous villages of 500 villagers each), impacts on local businesses e.g. (30 business properties purchased).","Project Level: Publish in ``documents``, with ``.type`` set to 'landAndSettlementImpact' and include a short description and/or a link to a document providing details.",Check ``planning.documents`` for documents with ``.type`` set to 'landAndSettlementImpact` -Contact details,Postal and electronic address of the Project Owner,Project Level: Publish in the ``.address`` and ``.contactPoint`` of the party with 'publicAuthority' included in its ``.roles``,Check for a party with 'buyer' or 'publicAuthority' in ``.roles`` and infer from ``.address`` and ``.contactPoint`` -Funding sources,Name the funding organization(s)/sources of funding,"Project Level: If a funding organization is the project owner, add 'funder' to the ``.roles`` of the existing entry in ``parties``. Otherwise, add a new entry to ``parties`` for each funding organization with 'funder' included in its ``.roles``. When information on the amount provided by each funder is available, use ``budget/budgetBreakdown`` to provide details","Infer from ``planning.budgetBreakdown.sourceParty`` (Budget breakdown extension); if not available, check for parties with 'funder' in ``.roles`` and infer from ``.name``" -Project Budget,"Specify the projected costs/allocated budget for the project (currency and amount). The budget includes land / property acquisition, environmental mitigation measures, H&S provisions, client, consultant & contractor costs, VAT etc.",Project Level: Publish in ``budget/amount``,Infer from ``budget/amount`` -Project budget approval date,Date project budget was authorized,Project Level: Publish in ``budget/approvalDate`` and include additional document with ``.type`` of 'budgetApproval' if required,Check ``planning.documents`` for a document with ``.type`` set to 'budgetApproval' or check ``planning.milestones`` for a milestone with ``.type`` set to 'approval' and infer from ``.dateMet`` +CoST IDS element,CoST IDS draft definition,Mapping to OC4IDS,Mapping from OCDS +Project Scope (main output),"Main outputs from the project that are being taken forward into construction (type, quantity, unit)","Project Level: Publish in ``documents``, with ``.type`` set to 'projectScope' and include a short description and/or a link to a document providing details","Check the ``planning.documents`` array for ``Document`` objects with ``.type`` set to 'projectScope' and copy each object to the ``documents`` array; if not available, optionally copy ``Item`` objects from ``tender.items`` to ``contractingProcesses.summary.tender.items`` and copy ``Milestone`` objects from ``tender.milestones`` to ``contractingProcesses.summary.tender.milestones``." +Environmental impact,"Briefly describe the environmental impacts and mitigation measures for this project e.g. impacts on flora, fauna & woodlands, areas of natural beauty, carbon emissions etc. and mitigation measures e.g. pollution control, low carbon solutions, sustainable timber etc.","Project Level: Publish in ``documents``, with ``.type`` set to 'environmentalImpact' and include a short description and/or a link to a document providing details.",Check the ``planning.documents`` array for ``Document`` objects with ``.type`` set to 'environmentalImpact'. Copy each object to the ``documents`` array. +Land and settlement impact,"State the amount of land and property that was acquired for the project e.g. 25km2 land, and related impacts e.g. archaeological issues (moved Saxon burial site), local/indigenous settlements (relocated 5 indigenous villages of 500 villagers each), impacts on local businesses e.g. (30 business properties purchased).","Project Level: Publish in ``documents``, with ``.type`` set to 'landAndSettlementImpact' and include a short description and/or a link to a document providing details.",Check the ``planning.documents`` array for ``Document`` objects with ``.type`` set to 'landAndSettlementImpact'. Copy each object to the ``documents``. +Contact details,Postal and electronic address of the Project Owner,Project Level: Publish in the ``.address`` and ``.contactPoint`` of the party with 'publicAuthority' included in its ``.roles``,Check the ``parties`` array for ``Organization`` objects with ``.role`` set to 'buyer'. Copy each object to the ``parties`` array in OC4IDS and add 'publicAuthority' to its ``.roles``. +Funding sources,Name the funding organization(s)/sources of funding,"Project Level: If a funding organization is the project owner, add 'funder' to the ``.roles`` of the existing entry in ``parties``. Otherwise, add a new entry to ``parties`` for each funding organization with 'funder' included in its ``.roles``. When information on the amount provided by each funder is available, use ``budget/budgetBreakdown`` to provide details","Check the ``parties`` array for ``Organization`` objects referenced in ``planning.budgetBreakdown.sourceParty`` (Budget breakdown extension), copy each object to the ``parties`` array in OC4IDS and add 'funder' to its ``.roles``; if not available, check the ``parties`` array for parties with 'funder' in ``.roles`` and copy each object to the ``parties`` array in OC4IDS." +Project Budget,"Specify the projected costs/allocated budget for the project (currency and amount). The budget includes land / property acquisition, environmental mitigation measures, H&S provisions, client, consultant & contractor costs, VAT etc.",Project Level: Publish in ``budget/amount``,"If the project has only one contracting process, set ``budget.amount`` and ``budget.currency`` in OC4IDS to the values of ``budget.amount`` and ``budget.currency``. If the project has more than one contracting process and the value of ``budget.currency`` is the same in all contracting processes, set ``budget.amount`` in OC4IDS to the sum of the value of ``budget.amount`` in each contracting process and set ``budget.currency`` in OC4IDS to the value of ``budget.currency``. *Otherwise, convert the values of* ``budget.amount`` *in each contracting process to a base currency, set* ``budget.amount`` *in OC4IDS to the sum of the converted values and set* ``budget.currency`` *in OC4IDS to the base currency.*" +Project budget approval date,Date project budget was authorized,Project Level: Publish in ``budget/approvalDate`` and include additional document with ``.type`` of 'budgetApproval' if required,"Check the ``planning.documents`` array for ``Document`` objects with ``.type`` set to 'budgetApproval' and copy each object to the ``documents`` array; *if not available, optionally check* ``planning.milestones`` *for* ``Milestone`` *objects with* ``.type`` *set to* 'approval' *and set* ``budget/approvalDate`` *to the value of* ``.dateMet``."