ADAPT - Product / CropProtectionProduct / FertilizerProduct / CropVariety / Trait Discussion
Note: The integer IDs below correspond to the ReferenceID element in CompoundIdentifiers
Questions:
- Must already-labeled (i.e., "product") ingredients of labeled mixes and active ingredients (AIs) be expressed in the same way?
- Do we want to distinguish between labeled mixes and user-created mixes?
- Do we need a flag to denote that a "Product" is a mix?
- What "type" of product would a mix be considered if you were using liquid fert as a carrier for some crop protection chemicals?
- Should we always use the abstract Product class for mixes?
- Do we need a Mix subclass? (Business rules?)
- How would you express a seed treatment combined with a seed product?
- Where do things like "seed lot number" go? There could be 0..n
- Where do things like "seed lot number" go? There could be 0..n
Product | |||
Attribute | Type | Multiplicity | Description |
---|---|---|---|
Id | CompoundIdentifier | 1 | Compound Identifier |
Description | string | 1 | Human-readable description of the product |
ManufacturerId | Integer | 0..1 | Reference to a Manufacturer object |
BrandId | Integer | 0..1 | Reference to a Brand object |
| |||
ProductType | ProductTypeEnum | 1 | |
Status | ProductStatusEnum | 1 | Possible values:
Will eventually be implemented as an EnumeratedRepresentationValue |
ContextItems | ContextItem | 0..* | |
Form | ProductFormEnum | 1 | Possible values:
|
Density | NumericRepresentationValue | 0..1 | It's optional because in some cases (manure, mixes) the density may not be an intensive property of the product, but lot-specific instead. |
NumericRepresentationValue | 0..1 | The total amount defined. This is critical for specifying a tank mix extensively (e.g, A certain amount of each component product, and then a total amount.) | |
ProductComponents | ProductComponent | 0..* | Components of this product. |
HasCropProtection | Boolean | 1 | |
HasCropNutrition | Boolean | 1 | |
HasCropVariety | Boolean | 1 | |
HasHarvestCommodity | Boolean | 1 | |
Category | CategoryEnum | 1 | |
DensityFactor (Provide lot / batch - specific value of density) | |||
Attribute | Type | Multiplicity | Description |
Id | CompoundIdentifier | 1 | This class is not referenced by anything else, therefore it needs a compound identifier so it can be inserted in the Catalog |
ProductId | Integer | 1 | A reference to a product. |
BatchNo | String | 0..1 | |
LotNo | String | 0..1 | |
Density | NumericRepresentationValue | 1 | Ex: 15000 seeds/bag; 500 lb/bag; 2000 pellets/lb |
TimeScopeIds | Integer | 0..* | |
CropProtectionProduct (child class of Product) | |||
Attribute | Attribute | Multiplicity | Description |
Biological | Boolean | 1 | Property of a crop protection product |
Organophosphate | Boolean | 1 | Chemical property. |
Carbamate | Boolean | 1 | Chemical property. |
Ingredient (used by ProductComponent) | |||
Attribute | Type | Multiplicity | Description |
Id | CompoundIdentifier | 1 | |
Description | String | 1 | |
ContextItems | ContextItem | 0..* | |
ActiveIngredient (child class of Ingredient) | |||
Attribute | Type | Multiplicity | Description |
| |||
CropNutritionIngredient (child class of Ingredient) | |||
Attribute | Type | Multiplicity | Description |
| |||
IngredientCode | EnumeratedValue | 1 | |
ProductComponent | |||
Attribute | Type | Multiplicity | Description |
| |||
IngredientId | Integer | 1 | If populated, indicates that the ProductComponent is an Ingredient. Examples:
|
Quantity | NumericRepresentationValue | 1 | Quantitative description of how much of the component participates in the product. This would typically involve a representation such as:
Reminder: a RepresentationValue encapsulates the following:
|
IsCarrier | Boolean | 1 | |
IsProduct | Boolean | 1 | |
MixOrder | Integer | 0..1 | |
FertilizerProduct (child class of Product) [Not Implemented] | |||
Attribute | Type | Multiplicity | Description |
IsManure | Boolean | 1 | True if the fertilizer is manure. False if it's chemical fertilizer. |
CropVarietyProduct (child class of Product) | |||
Attribute | Type | Multiplicity | Description |
CropId | Integer | 1 | References the Crop that this variety belongs to. |
TraitIds | Integer | 0..* | Optional list of Trait |
GeneticallyEnhanced | Boolean | 1 | Is this a Genetically enhanced variety? |
Trait (used by CropVariety, Catalog) | |||
Attribute | Type | Multiplicity | Description |
Id | CompoundIdentifier | 1 | |
TraitCode | String | 1 | Short code: e.g., "RR2", "A-GT" |
Description | String | 0..1 | Human-readable name; e.g., "RoundUp Ready 2", "Agrisure-GT" |
ManufacturerId | Integer | 0..1 | |
CropIDs | Integer | 0..* | What crops can this trait be present in? |
HarvestedCommodityProduct (Subclass of Product) | |||
Attribute | Type | Multiplicity | Description |
CropId | Integer | 1 | |
GenericProduct (child class of Product) | |||
Attribute | Type | Multiplicity | Description |
MixProduct (child class of Product) | |||
Attribute | Type | Multiplicity | Description |
IsTemporary | Boolean | 1 | False for a station mix; true for a tank mix or hot mix |
IsHotmix | Boolean | 1 | False for a station mix or tank mix; true for a hot mix |
TotalQuantity | NumericRepresentationValue | 0..1 | The total amount defined. This is critical for specifying a tank mix extensively (e.g, A certain amount of each component product, and then a total amount.) |
AvailableProduct | This object is used solely to establish a connection between a grower and the products that the said grower has available for use. The motivating user story is where a service provider that deals with multiple growers is instantiating an ApplicationDataModel to prepare a card or another FMIS to service multiple growers. It becomes critically important to conserve the relationship between each grower and the specific products that the said grower can usem in order to properly populate product selection drop-downs, prevent operator errors (that could have costly regulatory implications), etc. This object must NOT be referenced by prescriptions, WorkItems, etc. It can NOT replace a Product reference. Note: This should be replaced by one of the forms of a ResourceAllocation object. | ||
Attribute | Type | Multiplicity | Description |
Id | CompoundIdentifier | 1 | |
ProductID | Integer | 1 | |
GrowerID | Integer | 1 | |
ContextItems | ContextItem | 0..* | |
TimeScopes | TimeScope | 0..* | |
ContainedPackagedProduct | |||
Attribute | Type | Multiplicity | Description |
PackagedProductId | Integer | 1 | |
Count | Integer | 1 | |
Container | |||
Attribute | Type | Multiplicity | Description |
Id | CompoundIdentifier | 1 | |
Description | String | 1 | |
ContainerModelId | Integer | 0..1 | |
ContainerUseType | ContainerUseTypeEnum | 1 | |
CorrespondingDeviceElementId | Integer | 0..1 | |
ContextItems | ContextItem | 0..* | |
ContainerModel | |||
Attribute | Type | Multiplicity | Description |
Id | CompoundIdentifier | 1 | |
Description | String | 1 | |
Status | ContainerModelStatusEnum | 1 | |
Capacity | NumericRepresentationValue | 0..1 | |
DefaultUseType | ContainerUseTypeEnum | 0..1 | |
Length | NumericRepresentationValue | 0..1 | |
Width | NumericRepresentationValue | 0..1 | |
Height | NumericRepresentationValue | 0..1 | |
ContextItems | ContextItem | 0..* | |
CropNutritionProduct | |||
Attribute | Type | Multiplicity | Description |
IsManure | Boolean | 1 | |
IngredientUse | |||
Attribute | Type | Multiplicity | Description |
Id | CompoundIdentifier | 1 | |
ProductId | Integer | 1 | |
IngredientId | Integer | 1 | |
Fraction | Double | 1 | |
IsProduct | Boolean | 1 | |
PackagedProduct | |||
Attribute | Type | Multiplicity | Description |
Id | CompoundIdentifier | 1 | |
Description | String | 0..1 | |
ProductId | Integer | 1 | |
ContainerModelId | Integer | 1 | |
Status | PackagedProductStatusEnum | 0..1 | |
ProductQuantity | NumericRepresentationValue | 0..1 | |
ContainedPackagedProducts | ContainedPackagedProduct | 0..* | |
GrossWeight | NumericRepresentationValue | 0..1 | |
NetWeight | NumericRepresentationValue | 0..1 | |
ContextItems | ContextItem | 0..* | |
isBulk | Boolean | 1 | |
PackagedProductInstance | |||
Attribute | Type | Multiplicity | Description |
Id | CompoundIdentifier | 1 | |
Description | String | 1 | |
PackagedProductId | Integer | 1 | |
ProductQuantity | NumericRepresentationValue | 0..1 | |
ContainedPackagedProductInstanceIds | Integer | 0..* | |
Height | NumericRepresentationValue | 0..1 | |
GrossWeight | NumericRepresentationValue | 0..1 | |
NetWeight | NumericRepresentationValue | 0..1 | |
ContainerId | Integer | 0..1 | |
ContextItems | ContextItem | 0..* | |
PermittedProduct | |||
Attribute | Type | Multiplicity | Description |
Id | CompoundIdentifier | 1 | |
TimeScopes | TimeScope | 0..* | |
GrowerId | Integer | 1 | |
ProductId | Integer | 1 | |
ContextItems | ContextItem | 0..* |
CategoryEnum | |
Enumeration Literal | Description |
Additive | |
Carrier | |
Fungicide | |
GrowthRegulator | |
Insecticide | |
Herbicide | |
Manure | |
NitrogenStabilizer | |
Unknown | |
Variety | |
Fertilizer | |
Pesticide | |
ContainerModelStatusEnum | |
Enumeration Literal | Description |
Active | |
Inactive | |
Retired | |
NoLongerSold | |
ContainerUseTypeEnum | |
Enumeration Literal | Description |
Disposable | |
Reusable | |
Fixed | |
Mobile | |
PackagedProductStatusEnum | |
Enumeration Literal | Description |
Active | |
Inactive | |
Retired | |
NoLongerSold | |
ProductFormEnum | |
Enumeration Literal | Description |
Gas | |
Liquid | |
Solid | |
Unknown | |
ProductStatusEnum | |
Enumeration Literal | Description |
Active | |
Inactive | |
Retired | |
NoLongerSold | |
ProductTypeEnum | |
Enumeration Literal | Description |
Chemical | |
Fertilizer | |
Generic | |
Mix | |
Variety |