Technical Minutes 2021 07 15 - adewg/ICAR GitHub Wiki

ICAR Animal Data Exchange Working Group – Technical meeting 15 July 2021

  • In attendance: Andreas S, Andrew C, Beate M-F, Erwin S, Peter B, Sven S, Thomas P

Agenda:

The group worked through open items from the backlog, with particular focus on issues that could be resolved prior to the release of version 1.2.

1. Extension to icarMovementDeathResource (#224)

We noted the need to extend the icarDeathEventResource. We have already added in Develop branch a DeathMethod which has enumerated values representing the type of death. We noted the need to add further reasons to the DeathReason enumeration. Assigned to Andrew C

2. Add "PregnantMultipleFoetus" in the icarAnimalReproductionStatusType (#223

There was some discussion about whether there was any value in trying to represent the number of foetuses in icarAnimalCoreResource's reproductionStatus. We agreed to add the PregnantMultipleFoetus value to the enumeration.

3. Add "icarQuarterId" in the TreamentEventresources (#221)

We noted that there is already a site property in icarTreatmentEventResource. This is a text field because there did not seem to be an agreed international list of sites. We agreed to leave the site property as a text field, but to also add a treatmentSite enumerated field, using the list of enumerated values that Erwin had provided

4. Milking Statistics (#218

There was discussion about milking statistics for individual animals, in contrast to the existing issue #184 that covered herd and animal set statistics. We agreed that this would seem to be a new DailyMilkingAveragesResource (or similar) that could be retrieved like an event for individual animals. Assigned to Andreas S

5. New values for production purposes (#215)

There was a proposal to add additional values for to the productionPurpose for icarAnimalCoreResource, with the values "Breeding" and "SucklerCow". Andrew explained that the original intent of the production purpose had been to identify the primary breeding objective for which the animals were being selected. In this context, "Breeding" is not relevant, and "SucklerCow" doesn't explain whether the cow operation is selecting for milk, or meat, or both. We agreed that the productionPurpose should really be an array of enumerated values, so that it could act like a multi-valued set. However, this would be a breaking change. To discuss at a future date when Anton H is also present.

6. Nullable declaration is not working correctly for reference types (#214)

We briefly discussed the nullable declaration problem that occurs for .NET code generation. We did not know if this has been resolved, or still exists. To discuss at a future date when Anton H is also present.

7. Remove DoNotBreed from an animal (#213)

We discussed the intent of the doNotBreed flag and icarReproDoNotBreedEventResource, and whether this was a temporary flag that could just be modified (in which case using an HTTP DELETE for the event could be interpreted as a deletion). We were not convinced this should be the case, as the reason the event existed was to document the change of state - if this was not required, people could potentially just PUT/PATCH the icarAnimalCoreResource. Potential solutions include:

  • Implementing DELETE (implementation specific)
  • Changing the event to an icarReproBreedControl event (breaking change if the existing event is replaced)
  • Adding a boolean doNotBreed attribute to the icarReproDoNotBreedEventResource.

8. Add "Unknown" to the icarDepartureReasonType enumeration (#206)

We reviewed and agreed to add "Unknown" to this enumeration. Assigned to Andrew C

9. Add 2 types to the icarReproParturitionResource (#191)

  • We discussed calvingEase, to which an enumeration has been added in Develop. The enumeration used aligns with the Interbull list, which reasonably represents most or all values in country-specific lists.
  • Weight in kilograms (as opposed to a category) could be an icarWeightEventResource for the progeny, linked to the parturition event.
  • Birth or Survival status is really a property of the progeny animal, or the Birth event for the progeny. However, not all progeny are fully specified or even tagged at birth.
  • An alternative would be to add a new structure in parallel to the progeny[] array of icarAnimalCoreResource that provided a less complete and more birth-oriented set of details for the one or multiple progeny of the parturition, including their survival status and other attributes. This would work even if progeny are not tagged and fully recorded as individuals.

10. Semantics for POST Method (#154)

Andrew has submitted an updated Pull Request that meets the requirements discussed at the last meeting to handle batch posts:

  • POSTing an array of resources, rather than a collection
  • Returning an array of batch results, allowing records to receive the issued ID (where successful) or the errors if not sucessful.
  • Supporting matching to the original resources using the metadata.
  • Supporting warnings as well as errors.

Review is requested, then we can create equivalent URL schemes for the other areas (only health is covered in the example).

Next meeting scheduled for 29 July 2021 at 8:15am CET