# Mapping Écrans / Base de données

Cette page décrit comment sont stockées les informations visibles dans les écrans de l'application.

## Série de campagnes

Libellé de l'élément | Obligatoire | Type | Correspondance en base de données
--- | --- | --- | ---
Nom | X | Texte libre | Program.name (PROGRAM.NAME)
Zone | X | Liste. Provenant d'un référentiel des zones d'études des campagnes halieutiques. | Program.locations (PROGRAM2LOCATION.LOCATION_FK)
Description | X | Texte libre | Program.description (PROGRAM.DESCRIPTION)

## Campagne

Libellé de l'élément | Obligatoire | Type | Correspondance en base de données
--- | --- | --- | ---
Série | X | Liste. Choix parmi les séries de campagne existantes dans la base. | ScientificCruise.program (SCIENTIFIC_CRUISE.PROGRAM_FK)
Série partielle |  | Texte libre | ScientificCruise.fishingTrip.surveyMeasurement (SURVEY_MEASUREMENT.ALPHA_NUMERICAL_VALUE, avec PMFM_FK=<PmfmId.SURVEY_PART>)
Name |  |  | ScientificCruise.name (SCIENTIFIC_CRUISE.NAME)
Nombre de poches | X | Numérique | En lecture | récupération de la plus grande valeur dans ScientificCruise.fishingTrip.gearPhysicalFeatures.gearPhysicalMeasurement.numericalvalue (GEAR_PHYSICAL_MEASURMENT.NUMERICAL_VALUE avec PMFM_FK=<PMFM_ID_MULTIRIG_NUMBER>)
En écriture | valeur dupliquée pour chaque engin (voir "Engin(s)" ci-dessous) dans ScientificCruise.fishingTrip.gearPhysicalFeatures.gearPhysicalMeasurement.numericalvalue (GEAR_PHYSICAL_MEASURMENT.NUMERICAL_VALUE avec PMFM_FK=<PMFM_ID_MULTIRIG_NUMBER>)
Port de départ | X | Liste. Choix parmi une liste finie provenant d'un référentiel d'Harmonie. | ScientificCruise.fishingTrip.departureLocation (FISHING_TRIP.DEPARTURE_LOCATION_FK) avec le lien avec la campagne via SCIENTIFIC_CRUISE_FK)
Port d'arrivée | X | Liste. Choix parmi une liste finie provenant d'un référentiel d'Harmonie. | ScientificCruise.fishingTrip.returnLocation (FISHING_TRIP.RETURN_LOCATION_FK) avec le lien avec la campagne via SCIENTIFIC_CRUISE_FK)
Date de début | X | Date (JJ/MM/AAAA) | ScientificCruise.departureDateTime (SCIENTIFIC_CRUISE.DEPARTURE_DATE_TIME)
Heure de début | X | Heure (HH:MM)
Date de fin | X | Date (JJ/MM/AAAA) | ScientificCruise.returnDateTime (SCIENTIFIC_CRUISE.RETURN_DATE_TIME)
Heure de fin | X | Heure (HH:MM)
Navire | X | Liste. Choix parmi les navires existants en base | ScientificCruise.vessel (SCIENTIFIC_CRUISE.VESSEL_FK)
Engin(s) | X | Liste. Fonctionnement via le principe de la double liste. Les éléments sont à sélectionner parmi la première liste, et sont ajoutés dans la seconde liste à leur sélection. | ScientificCruise.fishingTrip.gearPhysicalFeatures.gear (GEAR_PHYSICAL_FEATURES.GEAR_FK avec RANK_ORDER=<n° d'ordre dans la liste>)
Chef(s) de mission | X | Liste. Fonctionnement via le principe de la double liste. Les éléments sont à sélectionner parmi la première liste, et sont ajoutés dans la seconde liste à leur sélection. | La première personne de la liste est stockée sous ScientificCruise.manager (SCIENTIFIC_CRUISE.MANAGER_PERSON_FK) Pour les autres personnes, ScientificCruise.fishingTrip.vesselPersonFeatures avec un VesselPersonRole.id=<responsable_de_campagne>
Responsable(s) de salle de tri | X | Liste. Fonctionnement via le principe de la double liste. Les éléments sont à sélectionner parmi la première liste, et sont ajoutés dans la seconde liste à leur sélection. | ScientificCruise.fishingTrip.vesselPersonFeatures avec un VesselPersonRole.id=<responsable_salle_de_tri>
Commentaire |  | Texte libre | ScientificCruise.comments (SCIENTIFIC_CRUISE.COMMENTS)

## Protocole

Libellé de l'élément | Obligatoire | Type | Correspondance en base de données
--- | --- | --- | ---
Nom | X | Texte libre | TuttiProtocol.name (persisté dans le fichier)
Commentaire |  | Texte libre | TuttiProtocol.comment (persisté dans le fichier)

### Protocoles - Caractéristiques

Libellé de l'élément | Obligatoire | Type | Correspondance en base de données
--- | --- | --- | ---
Classes de taille |  | Liste. Fonctionnement via le principe de la double liste. Les éléments sont à sélectionner parmi la première liste, et sont ajoutés dans la seconde liste à leur sélection. | On récupère la liste de tous les pmfm que l'on répartit dans les différents onglets. Chaque pmfm ne peut être sélectionné que dans une seule liste.
Mise en œuvre de l'engin |  | Liste. Fonctionnement via le principe de la double liste. Les éléments sont à sélectionner parmi la première liste, et sont ajoutés dans la seconde liste à leur sélection.
Observations individuelles |  | Liste. Fonctionnement via le principe de la double liste. Les éléments sont à sélectionner parmi la première liste, et sont ajoutés dans la seconde liste à leur sélection.
Autres caractéristiques |  | Liste. Fonctionnement via le principe de la double liste. Les éléments sont à sélectionner parmi la première liste, et sont ajoutés dans la seconde liste à leur sélection.

### Espèces

Libellé de l'élément | Obligatoire | Type | Correspondance en base de données
--- | --- | --- | ---
Espèce sélectionné |  | Liste | La liste des espèces référent non encore utilisés. Note: cette liste est partagée sur les deux onglets espèces - benthos).
Tableau | Espèce |  | Lecture seule | Chaque ligne du tableau est stockée sous la forme d'un SpeciesProtocol : TuttiProtocol.species.
Code campagne |  | Texte libre
Mode de mensuration |  | Liste
Pesée |  | Booléen (Case à cocher)
Dénombrement |  | Booléen (Case à cocher)
Class Tri. |  | Booléen (Case à cocher)
Sexe |  | Booléen (Case à cocher)
Maturité |  | Booléen (Case à cocher)
Age |  | Booléen (Case à cocher)
Prélèvement de pièces calcaires |  | Booléen (Case à cocher)

### Benthos

Libellé de l'élément | Obligatoire | Type | Correspondance en base de données
--- | --- | --- | ---
Espèce sélectionné |  | Liste | La liste des espèces référent non encore utilisés. Note: cette liste est partagée sur les deux onglets espèces - benthos).
Tableau | Espèce |  | Lecture seule | Chaque ligne du tableau est stockée sous la forme d'un SpeciesProtocol : TuttiProtocol.species.
Code campagne |  | Texte libre
Mode de mensuration |  | Liste
Pesée |  | Booléen (Case à cocher)
Dénombrement |  | Booléen (Case à cocher)
Class Tri. |  | Booléen (Case à cocher)
Sexe |  | Booléen (Case à cocher)
Maturité |  | Booléen (Case à cocher)
Age |  | Booléen (Case à cocher)
Prélèvement de pièces calcaires |  | Booléen (Case à cocher)

## Trait

Libellé de l'élément | Obligatoire | Type | Correspondance en base de données
--- | --- | --- | ---
Code Station | X | Texte libre | Operation.vesselUseFeatures.vesselUseMeasurement (VESSEL_USE_MEASUREMENT.ALPHANUMERICAL_VALUE avec PMFM_FK=<PmfmId.STATION_NUMBER>)
Numéro de Trait | X | Numérique | Operation.name (OPERATION.NAME) : ajouté à la fin du "name", derrière le code de l'engin, pour rester compatible avec le format des données historiques.
Numéro de poche |  | Numérique | Liste des poches observées Operation.gearUseFeatures.gearUseMeasurement (GEAR_USE_MEASUREMENT.ALPHANUMERICAL_VALUE avec PMFM_FK=<PmfmId.MULTIRIG_AGGREGATION>)
Strate |  | Liste. Les valeurs de ce champ sont issues d'un référentiel. | Operation.gearUseFeatures.fishingArea.regulationLocation (FISHING_AREA2REG_LOCATION.LOCATION_FK associé au FISHING_AREA de l'opération) En lecture : sélection en tant que localité à partir du locationLevel (LOCATION.LOCATION_LEVEL_FK=<LocationLevelId.SCIENTIFIC_CRUISE_STRATA>)
Sous strate |  | Liste. Les valeurs de ce champ sont issues d'un référentiel. | Operation.gearUseFeatures.fishingArea.regulationLocation (FISHING_AREA2REG_LOCATION.LOCATION_FK associé au FISHING_AREA de l'opération) En lecture : sélection en tant que localité à partir du locationLevel (LOCATION.LOCATION_LEVEL_FK=<LocationLevelId.SCIENTIFIC_CRUISE_SUB_STRATA>)
Localité |  | Liste. Les valeurs de ce champ sont issues d'un référentiel. | operation.gearUseFeatures.fishingArea.regulationLocation (FISHING_AREA2REG_LOCATION.LOCATION_FK associé au FISHING_AREA de l'opération) En lecture : sélection en tant que localité à partir du locationLevel (LOCATION.LOCATION_LEVEL_FK=<LocationLevelId.SCIENTIFIC_CRUISE_LOCALITE>)
Latitude et Longitude de début de traîne |  | Cordonnées. Le format de saisie peut être modifié dans la configuration. | Operation.vesselPosition (VESSEL_POSITION.LATITUDE et VESSEL_POSITION.LONGITUDE), avec startDateTime = "Début de traine > Date et heure"
Latitude et Longitude de fin de traîne |  | Cordonnées. Le format de saisie peut être modifié dans la configuration. | Operation.vesselPosition (VESSEL_POSITION.LATITUDE et VESSEL_POSITION.LONGITUDE), avec startDateTime = "Fin de traine > Date et heure"
Date de début de traîne | X | Date (JJ/MM/AAAA) | Operation.startDateTime et Operation.fishingStartDateTime (OPERATION.START_DATE_TIME et OPERATION.FISHING_START_DATE_TIME)
Heure de début de traîne |  | Heure (HH:MM)
Date de fin de traîne |  | Date (JJ/MM/AAAA) | Operation.endDateTime et Operation.fishingEndDateTime (OPERATION.END_DATE_TIME et OPERATION.FISHING_END_DATE_TIME)
Heure de fin de traîne |  | Heure (HH:MM)
Trait rectiligne |  | Booléen (Case à cocher) | Operation.vesselUseFeatures.vesselUseMeasurement (VESSEL_USE_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=<PmfmId.RECTILINEAR_OPERATION>)
Distance chalutée |  | Numérique | Operation.vesselUseFeatures.vesselUseMeasurement (VESSEL_USE_MEASUREMENT.NUMERICAL_VALUE avec PMFM_FK=<PmfmId.TRAWL_DISTANCE>)
Durée |  | Numérique (Lecture seule) | Non stockée en base
Trait valide/invalide |  | Booléen (Case à cocher) | Operation.vesselUseFeatures.vesselUseMeasurement (VESSEL_USE_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=<PmfmId.HAUL_VALID>)
Saisisseur(s) |  | Liste. Fonctionnement via le principe de la double liste. Les éléments sont à sélectionner parmi la première liste, et sont ajoutés dans la seconde liste à leur sélection. | Operation.vesselPersonFeatures avec un VesselPersonRole.id=<responsable_de_campagne>
Autres caractéristiques > Navire |  | Lecture seule | Identique à celui de la campagne : Operation.vessel (OPERATION.VESSEL_FK).
Autres caractéristiques > Engin |  | Liste. Choix parmi les engins de la campagne | Operation.gearPhysicialFeatures (OPERATION.GEAR_PHYSCIAL_FEATURES_FK) : lien vers un engin déjà déclaré au niveau de la campagne. Le code de l'engin est également dupliqué au début de Operation.name (OPERATION.NAME), devant le numéro du trait, pour rester compatible avec le format des données historiques.
Autres caractéristiques > Navire(s) associé(s) |  | Liste. Choix parmi les navires existants en base | Navire dont le code est OPERATION_VESSEL_ASSOCIATION.VESSEL_FK avec !OPERATION_VESSEL_ASSOCIATION.IS_CATCH_ON_OPERATION_VESSEL et OPERATION_VESSEL_ASSOCIATION.OPERATION_FK = OperationId
Commentaire |  |  | Operation.comments (OPERATION.COMMENTS)
Pièces Jointes |  |  | Chaque pièce jointes est stockée dans MeasurementFile (MEASUREMENT_FILE avec PMFM_FK=null, OBJECT_TYPE_FK='OPERATION' et OBJECT_ID=<ID du trait>) MeasurementFile.path : chemin du fichier (copier dans un répertoire, puis stocké en relatif) MeasurementFile.name : nom MeasurementFile.comments : commentaire

### Trait > Mise en oeuvre de l'engin

Libellé de l'élément | Obligatoire | Type | Correspondance en base de données
--- | --- | --- | ---
Valeur |  | Type de la caractéristique issu d'un référentiel | gearUseFeatures.gearUseMeasurement (GEAR_USE_MEASUREMENT.xxx - en fonction du type de PSFM : NUMERICAL_VALUE, ALPHANUMERICAL_VALUE ou QUALITATIVE_VALUE_FK) avec gearUseFeatures.operation.id = <OperationId>

### Trait > Autres paramètres

Cet onglet permet la saisie des paramètres d'hydrologie et des paramètres environnementaux.

Libellé de l'élément | Obligatoire | Type | Correspondance en base de données
--- | --- | --- | ---
Valeur |  | Type de la caractéristique issu d'un référentiel | vesselUseFeatures.vesselUseMeasurement (VESSEL_USE_MEASUREMENT.xxx - en fonction du type de PSFM : NUMERICAL_VALUE, ALPHANUMERICAL_VALUE ou QUALITATIVE_VALUE_FK avec vesselUseFeatures.operation.id = <OperationId>

## Captures

### Captures > Résumé

Libellé de l'élément | Obligatoire | Type | Correspondance en base de données
--- | --- | --- | ---
Capture > Poids TOTAL (1) |  | Numérique | Lot "Capture" (BATCH avec IS_CATCH_BATCH=1)
Capture > Poids total VRAC (2) |  | Numérique (Lecture seule) | Non persisté.
Capture > Poids total HORS VRAC (2) |  | Numérique (Lecture seule) | Non persisté.
Capture > Poids total NON TRIE (3) |  | Numérique | Lot "Capture > Non trié"
Capture > Carroussel observé (3) |  | Numérique (Lecture seule) | Importé via l'import Pupitri. Lot "Capture > Vrac"
Capture > Trémie (1) |  | Numérique (Lecture seule) | Importé via l'import Pupitri. Lot "Capture > Vrac" (poids avant élévation) (uniquement conservé dans le champs SortingBatch.samplingRatioText) et utilisé pour le calcul de SortingBatch.samplingRatio
Espèce > Poids TOTAL (2) |  | Numérique | Non persisté.
Espèce > Poids total VRAC (1) |  | Numérique | Lot "Capture > Vrac > Espèce"
Espèce > Poids total VRAC trié (2) |  | Numérique | Non persisté.
Espèce > Poids total HORS VRAC (2) |  | Numérique | Non persisté.
Benthos > Poids TOTAL (2) |  | Numérique | Non persisté.
Benthos > Poids total VRAC (1) |  | Numérique | Lot "Capture > Vrac > Benthos"
Benthos > Poids total VRAC trié (2) |  | Numérique | Non persisté.
Benthos > Poids total HORS VRAC (2) |  | Numérique | Non persisté.
Macro-déchets > Poids total (1) |  | Numérique | Lot "Capture > Hors Vrac > Macro-déchets"
Pièces Jointes |  |  | Chaque pièce jointes est stockée dans MeasurementFile (MEASUREMENT_FILE avec PMFM_FK=null, OBJECT_TYPE_FK='CATCH_BATCH' et OBJECT_ID=<ID du lot de la capture>) MeasurementFile.path : chemin du fichier (copier dans un répertoire, puis stocké en relatif) MeasurementFile.name : nom MeasurementFile.comments : commentaire

(1) Uniquement persisté si non calculé.
CatchBatch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1 et PMFM_FK=<PmfmId.WEIGHT_OBSERVED>)

(2) Non persisté, calculé via l'élévation des poids.

(3) Uniquement si le navire possède un carrousel et un trémie (i.e navire de la campagne est celui défini dans la configuration).

### Captures > Espèces

#### Cartouche du haut

Libellé de l'élément | Obligatoire | Type | Correspondance en base de données
--- | --- | --- | ---
Poids total (1) |  | Numérique (Lecture seule) | Non stocké en base.
Poids total VRAC (2) (3) |  | Numérique. | Lot "Capture > Vrac > Espèce"
Poids VRAC trié (1) |  | Numérique (Lecture seule) | Non stocké en base.
Poids total HORS VRAC (1) |  | Numérique (Lecture seule) | Non stocké en base.
Poids inerte trié (2) |  | Numérique | Lot "Capture > Vrac > Espèce > Inert (not alive)" (2)
Poids vivant non détaillé trié (2) |  | Numérique | Lot "Capture > Vrac > Espèce > Alive not itemized" (2)

(1) Non persisté, calculé via l'élévation des poids.

(2) Uniquement persisté si non calculé.
CatchBatch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1 et PMFM_FK=<PmfmId.WEIGHT_OBSERVED>)

(3) Le plus souvent, ce poids sera similaire au poids VRAC trié Espèces et sera donc calculé. Cependant, si seule une fraction des espèces est observée, renseigner ici le poids d'élévation.

#### Tableau

Chaque ligne du tableau est stockée sous la forme d'un lot (Batch) positionné selon le caractère V ou H/V

- "Capture > Vrac > Espèce > Alive Itemized"
- "Capture > Hors Vrac > Espèce"

Libellé de l'élément | Obligatoire | Type | Correspondance en base de données
--- | --- | --- | ---
Tableau > Espèce du lot | X |  | stockage de l'espèce uniquement pour les lot parent Batch.referenceTaxon (BATCH.REFERENCE_TAXON_FK)
Tableau > V/HV | X |  | Vrac ou Hors Vrac : Batch.sortingMeasurement.qualitativeValue (SORTING_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=<PmfmId.SORTED_UNSORTED>) Poids : Batch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1 et PMFM_FK=<PmfmId.WEIGHT_OBSERVED>) si Batch.weightBeforeSampling == null, Batch.weight, sinon Batch.weightBeforeSampling
Tableau > Class. Tri |  |  | Batch.sortingMeasurement.qualitativeValue (SORTING_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=<PmfmId.SIZE_CATEGORY>) si Batch.weightBeforeSampling == null, Batch.weight, sinon Batch.weightBeforeSampling
Tableau > Sexe |  |  | Batch.sortingMeasurement.qualitativeValue (SORTING_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=<PmfmId.SEX>) si Batch.weightBeforeSampling == null, Batch.weight, sinon Batch.weightBeforeSampling
Tableau > Maturité |  |  | Batch.sortingMeasurement.qualitativeValue (SORTING_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=<PmfmId.MATURITY>) si Batch.weightBeforeSampling == null, Batch.weight, sinon Batch.weightBeforeSampling
Tableau > Age |  |  | Batch.sortingMeasurement.numericalValue (SORTING_MEASUREMENT.NUMERICAL_VALUE avec PMFM_FK=<PmfmId.AGE>) si Batch.weightBeforeSampling == null, Batch.weight, sinon Batch.weightBeforeSampling
Tableau > Poids sous‑échantillonné |  | Numérique | Batch.weight (uniquement renseigné si Batch.weightBeforeSampling !=null)
Tableau > Nombre |  |  | Calculé à partir de la somme du nombre d'individus des lots fils (BATCH.INDIVIDUAL_COUNT avec PARENT_BATCH_FK=<ID du lot de la ligne du tableau>) (voir ci-dessous "Mensuration > Tableau")
Tableau > Commentaire |  | Texte libre | Batch.comments
Tableau > Pièces Jointes |  | Fichier | Chaque pièce jointes est stockée dans MeasurementFile (MEASUREMENT_FILE avec PMFM_FK=null, OBJECT_TYPE_FK='SAMPLE' et OBJECT_ID=<ID du lot de la ligne du tableau>) MeasurementFile.path : chemin du fichier (copier dans un répertoire, puis stocké en relatif ?) MeasurementFile.name : nom MeasurementFile.comments : commentaire
Tableau > A confirmer |  | Booléen (Case à cocher) | Si coché Batch.Quality = QUALITY_FLAG_CODE_DOUBTFUL, sinon Batch.Quality = QUALITY_FLAG_CODE_NOT_QUALIFIED

#### Mensurations

Libellé de l'élément | Obligatoire | Type | Correspondance en base de données
--- | --- | --- | ---
Mensuration > Type de mesure |  |  | Dupliqué pour chaque lot de mensuration créé (un lot pour chaque taille saisie) Batch.sortingMeasurement.pmfm (SORTING_MEASUREMENT.PMFM_FK)
Mensuration > Pas de la classe de taille |  |  | Non stocké en base.
Mensuration > Tableau |  |  | Chaque ligne du tableau de mensuration est stocké sous la forme d'un lot relié au lot correspondant à la ligne parent du tableau des espèces. (BATCH avec PARENT_BATCH_FK=<ID du lot parent dans le tableau des espèces>)
Mensuration > Tableau > Classe de taille |  |  | Batch.sortingMeasurement.numericalValue (SORTING_MEASUREMENT.NUMERICAL_VALUE avec PMFM_FK=<ID correspondant au "Type de mesure">)
Mensuration > Tableau > Nombre |  |  | Batch.individualCount (BATCH.INDIVIDUAL_COUNT)
Mensuration > Tableau > Poids observé |  |  | Batch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1)

### Captures > Benthos

#### Cartouche du haut

Libellé de l'élément | Obligatoire | Type | Correspondance en base de données
--- | --- | --- | ---
Poids total (1) |  | Numérique (Lecture seule) | Non stocké en base.
Poids total VRAC (2) (3) |  | Numérique. | Lot "Capture > Vrac > Benthos"
Poids VRAC trié (1) |  | Numérique (Lecture seule) | Non stocké en base.
Poids total HORS VRAC (1) |  | Numérique (Lecture seule) | Non stocké en base.
Poids inerte trié (2) |  | Numérique | Lot "Capture > Vrac > Benthos > Inert (not alive)"
Poids vivant non détaillé trié (2) |  | Numérique | Lot "Capture > Vrac > Benthos > Alive not itemized"

(1) Non persisté, calculé via l'élévation des poids.

(2) Uniquement persisté si non calculé.
CatchBatch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1 et PMFM_FK=<PmfmId.WEIGHT_OBSERVED>)

(3) Le plus souvent, ce poids sera similaire au poids VRAC trié Benthos et sera donc calculé. Cependant, si seule une fraction des espèces est observée, renseigner ici le poids d'élévation.

#### Tableau

Chaque ligne du tableau est stockée sous la forme d'un lot (Batch) positionné selon le caractère V ou H/V

- "Capture > Vrac > Benthos > Alive Itemized"
- "Capture > Hors Vrac > Benthos"

Libellé de l'élément | Obligatoire | Type | Correspondance en base de données
--- | --- | --- | ---
Tableau > Espèce du lot | X |  | stockage de l'espèce uniquement pour les lot parent Batch.referenceTaxon (BATCH.REFERENCE_TAXON_FK)
Tableau > V/HV | X |  | Vrac ou Hors Vrac : Batch.sortingMeasurement.qualitativeValue (SORTING_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=<PmfmId.SORTED_UNSORTED>) Poids : Batch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1 et PMFM_FK=<PmfmId.WEIGHT_OBSERVED>) si Batch.weightBeforeSampling == null, Batch.weight, sinon Batch.weightBeforeSampling
Tableau > Class. Tri |  |  | Batch.sortingMeasurement.qualitativeValue (SORTING_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=<PmfmId.SIZE_CATEGORY>) si Batch.weightBeforeSampling == null, Batch.weight, sinon Batch.weightBeforeSampling
Tableau > Sexe |  |  | Batch.sortingMeasurement.qualitativeValue (SORTING_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=<PmfmId.SEX>) si Batch.weightBeforeSampling == null, Batch.weight, sinon Batch.weightBeforeSampling
Tableau > Maturité |  |  | Batch.sortingMeasurement.qualitativeValue (SORTING_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=<PmfmId.MATURITY>) si Batch.weightBeforeSampling == null, Batch.weight, sinon Batch.weightBeforeSampling
Tableau > Age |  |  | Batch.sortingMeasurement.numericalValue (SORTING_MEASUREMENT.NUMERICAL_VALUE avec PMFM_FK=<PmfmId.AGE>) si Batch.weightBeforeSampling == null, Batch.weight, sinon Batch.weightBeforeSampling
Tableau > Poids sous‑échantillonné |  | Numérique | Batch.weight (uniquement renseigné si Batch.weightBeforeSampling !=null)
Tableau > Nombre |  |  | Calculé à partir de la somme du nombre d'individus des lots fils (BATCH.INDIVIDUAL_COUNT avec PARENT_BATCH_FK=<ID du lot de la ligne du tableau>) (voir ci-dessous "Mensuration > Tableau")
Tableau > Commentaire |  | Texte libre | Batch.comments
Tableau > Pièces Jointes |  | Fichier | Chaque pièce jointes est stockée dans MeasurementFile (MEASUREMENT_FILE avec PMFM_FK=null, OBJECT_TYPE_FK='SAMPLE' et OBJECT_ID=<ID du lot de la ligne du tableau>) MeasurementFile.path : chemin du fichier (copier dans un répertoire, puis stocké en relatif) MeasurementFile.name : nom MeasurementFile.comments : commentaire
Tableau > A confirmer |  | Booléen (Case à cocher) | Si coché Batch.Quality = QUALITY_FLAG_CODE_DOUBTFUL, sinon Batch.Quality = QUALITY_FLAG_CODE_NOT_QUALIFIED

#### Mensurations

Libellé de l'élément | Obligatoire | Type | Correspondance en base de données
--- | --- | --- | ---
Mensuration > Type de mesure |  |  | Dupliqué pour chaque lot de mensuration créé (un lot pour chaque taille saisie) Batch.sortingMeasurement.pmfm (SORTING_MEASUREMENT.PMFM_FK)
Mensuration > Pas de la classe de taille |  |  | Non stocké en base.
Mensuration > Tableau |  |  | Chaque ligne du tableau de mensuration est stocké sous la forme d'un lot relié au lot correspondant à la ligne parent du tableau des espèces. (BATCH avec PARENT_BATCH_FK=<ID du lot parent dans le tableau des espèces>)
Mensuration > Tableau > Classe de taille |  |  | Batch.sortingMeasurement.numericalValue (SORTING_MEASUREMENT.NUMERICAL_VALUE avec PMFM_FK=<ID correspondant au "Type de mesure">)
Mensuration > Tableau > Nombre |  |  | Batch.individualCount (BATCH.INDIVIDUAL_COUNT)
Mensuration > Tableau > Poids observé |  |  | Batch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1)

### Captures > Macro déchets

#### Cartouche du haut

Libellé de l'élément | Obligatoire | Type | Correspondance en base de données
--- | --- | --- | ---
Macro-dechets > Poids total |  | Numérique | Lot "Capture > Hors Vrac > Macro déchets" Batch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1 et PMFM_FK=<PmfmId.WEIGHT_OBSERVED>)

#### Tableau

Chaque ligne du tableau est stockée sous la forme d'un lot (Batch) positionné sous le lot "Capture > Hors Vrac > Macro-déchets".

Libellé de l'élément | Obligatoire | Type | Correspondance en base de données
--- | --- | --- | ---
Tableau > Catégorie de déchets | X | Choix parmi les valeurs issues d'un référentiel | Batch.sortingMeasurement.qualitativeValue (SORTING_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=<PmfmId.MARINE_LITTER_TYPE>)
Tableau > Catégorie de taille | X | Choix parmi les valeurs issues d'un référentiel | Batch.sortingMeasurement.qualitativeValue (SORTING_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=<PmfmId.MARINE_LITTER_SIZE_CATEGORY>)
Tableau > Nombre | X | Numérique | Batch.quantificationMeasurement.qualitativeValue (QUANTIFICATION_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=<PmfmId.SIZE_CATEGORY>)
Tableau > Poids |  | Numérique | Batch.individualCount
Tableau > Commentaire |  | Texte libre | Batch.comments
Tableau > Pièces Jointes |  | Fichier | Chaque pièce jointes est stockée dans MeasurementFile (MEASUREMENT_FILE avec PMFM_FK=null, OBJECT_TYPE_FK='SAMPLE' et OBJECT_ID=<ID du lot de la ligne du tableau>) MeasurementFile.path : chemin du fichier (copier dans un répertoire, puis stocké en relatif) MeasurementFile.name : nom MeasurementFile.comments : commentaire

### Captures > Observations individuelles

Chaque ligne du tableau est stockée sous la forme d'un prélèvement (Sample) attaché à un lot.

Libellé de l'élément | Obligatoire | Type | Correspondance en base de données
--- | --- | --- | ---
Tableau > Espèce | X | Liste. Choix parmi les valeurs issues d'un référentiel | Sample.referenceTaxon
Tableau > Poids (kg) |  | Numérique | Sample.sampleMeasurements.numericalValue (SAMPLE_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=<PmfmId.PMFM_ID_WEIGHT_MEASURED>)
Tableau > Taille |  | Numérique | Sample.sampleMeasurements.numericalValue (SAMPLE_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=<Celui de la classe de taille>)
Tableau > Classe de taille |  | Liste. Choix parmi les caractéristiques du protocole | Sample.sampleMeasurements.qualitativeValue (SAMPLE_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=(celui choisi))
Tableau > ...(1) |  | Liste. Choix parmi les valeurs issues d'un référentiel | Sample.sampleMeasurements.qualitativeValue (SAMPLE_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=<(celui choisi)>)
Tableau > Autres caractéristiques |  | Liste Choix parmi les caractéristiques existantes en base | Tableau avec une entrée dans Sample.sampleMeasurements pour le pmfm choisi
Tableau > Commentaire |  | Texte libre | Sample.comments
Tableau > Pièces Jointes |  | Fichier | Chaque pièce jointes est stockée dans MeasurementFile (MEASUREMENT_FILE avec PMFM_FK=null, OBJECT_TYPE_FK='SAMPLE' et OBJECT_ID=<ID du lot de la ligne du tableau>) MeasurementFile.path : chemin du fichier (copier dans un répertoire, puis stocké en relatif) MeasurementFile.name : nom MeasurementFile.comments : commentaire

(1) Pour toute caractéristique renseignée dans le protocole "Caractéristiques > Observations individuelles", on aura une colonne

### Captures > Captures accidentelles

Chaque ligne du tableau est stockée sous la forme d'un prélèvement (Sample) non attaché à un lot.

Libellé de l'élément | Obligatoire | Type | Correspondance en base de données
--- | --- | --- | ---
Tableau > Espèce | X | Liste. Choix parmi les valeurs issues d'un référentiel | Sample.referenceTaxon
Tableau > Sexe |  |  | Sample.sampleMeasurements.qualitativeValue (SAMPLE_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=<PmfmId.SEX>)
Tableau > Poids (kg) |  | Numérique | Sample.sampleMeasurements.numericalValue (SAMPLE_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=<PmfmId.PMFM_ID_WEIGHT_MEASURED>)
Tableau > Taille |  | Numérique | Sample.sampleMeasurements.numericalValue (SAMPLE_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=<PmfmId de la classe de taille.>)
Tableau > Classe de taille |  | Liste. Choix parmi les caractéristiques du protocole | Sample.sampleMeasurements.qualitativeValue (SAMPLE_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=<PmfmId.>)
Tableau > Mort ou vivant |  | Liste. Choix parmi les valeurs issues d'un référentiel | Sample.sampleMeasurements.qualitativeValue (SAMPLE_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=<PmfmId.>)
Tableau > Autres caractéristiques |  | Liste Choix parmi les caractéristiques existantes en base | Tableau avec une entrée dans Sample.sampleMeasurements pour le pmfm choisi
Tableau > Commentaire |  | Texte libre | Sample.comments
Tableau > Pièces Jointes |  | Fichier | Chaque pièce jointes est stockée dans MeasurementFile (MEASUREMENT_FILE avec PMFM_FK=null, OBJECT_TYPE_FK='SAMPLE' et OBJECT_ID=<ID du lot de la ligne du tableau>) MeasurementFile.path : chemin du fichier (copier dans un répertoire, puis stocké en relatif) MeasurementFile.name : nom MeasurementFile.comments : commentaire

## Correspondance des Id et PmfmId

#### Zone d'étude

LocationLevelId.SCIENTIFIC_CRUISE_PROGRAM=301

#### Strate

LocationLevelId.SCIENTIFIC_CRUISE_STRATA=302

#### sous strate

LocationLevelId.SCIENTIFIC_CRUISE_SUB_STRATA=303

#### localité

LocationLevelId.SCIENTIFIC_CRUISE_LOCALITE=304

#### radiale

LocationLevelId.SCIENTIFIC_CRUISE_RADIALE=305

#### Catégorie Sex

PmfmId.SEX=196

QualitativeValueId.SEX_UNDEFINED=299

QualitativeValueId.SEX_MALE=300

QualitativeValueId.SEX_FEMALE=301

#### Catégorie classe de tri

PmfmId.SIZE_CATEGORY=198

QualitativeValueId.SIZE_SMALL=307

QualitativeValueId.SIZE_MEDIUM=306

QualitativeValueId.SIZE_BIG=305

#### Catégorie Age

PmfmId.AGE=1430

#### Catégorie maturité

PmfmId.MATURITY=174

QualitativeValueId.MATURITY_1=272

QualitativeValueId.MATURITY_2=273

QualitativeValueId.MATURITY_3=274

QualitativeValueId.MATURITY_4=275

QualitativeValueId.MATURITY_5=276

#### Catégorie macro-déchet

PmfmId.MARINE_LITTER_TYPE=1421

#### Classe de taille macro-déchet

PmfmId.MARINE_LITTER_SIZE_CATEGORY=1422

#### Pour stocker Cruise.surveyPart

PmfmId.SURVEY_PART=1432

PmfmId.STATION_NUMBER=1243

PmfmId.TRAWL_DISTANCE=113

PmfmId.HAUL_VALID=1163

QualitativeValueId.HAUL_VALID_YES=1575

QualitativeValueId.HAUL_VALID_NO=1576

PmfmId.RECTILINEAR_OPERATION=192

QualitativeValueId.RECTILINEAR_OPERATION_YES=277

QualitativeValueId.RECTILINEAR_OPERATION_NO=278

#### PSFM "Nombre de poche" d'un chalut (écran campagne)

PmfmId.MULTIRIG_NUMBER=1420

#### PSFM "Liste des poches observées" (écran opération)

PmfmId.MULTIRIG_AGGREGATION=1424

#### PSFM "Poids - observation par une observateur" (écran captures, onglet espèce, benthos, etc)

PmfmId.WEIGHT_MEASURED=220

#### PSFM "Vrac/Hors Vrac" - "Organisation des données campagnes"

PmfmId.SORTED_UNSORTED=1428

QualitativeValueId.SORTED_VRAC=311

QualitativeValueId.SORTED_HORS_VRAC=310

QualitativeValueId.UNSORTED=2146

PmfmId.SCIENTIFIC_CRUISE_SORTING_TYPE=1429

QualitativeValueId.SORTING_TYPE_SPECIES=2147

QualitativeValueId.SORTING_TYPE_BENTHOS=2148

QualitativeValueId.SORTING_TYPE_PLANCTON=2149

QualitativeValueId.SORTING_TYPE_MARINE_LITTER=2150

QualitativeValueId.SORTING_TYPE_ACCIDENTAL_CATCH=2151

PmfmId.SCIENTIFIC_CRUISE_SORTING_TYPE_2=1431

QualitativeValueId.SORTING_TYPE_2_ALIVE_NOT_ITEMIZED=2161

QualitativeValueId.SORTING_TYPE_2_INERT=2162

QualitativeValueId.SORTING_TYPE_2_ALIVE_ITEMIZED=2160

#### PSFM "Ouverture verticale (chalut ou drague)" (pour export operation)

PmfmId.VERTICAL_OPENING=832

#### PSFM "Ouverture Horizontale aux pointes d'ailes" (pour export operation)

PmfmId.HORIZONTAL_OPENING_WING=827

#### PSFM "Ouverture horizontale aux panneaux" (pour export operation)

PmfmId.HORIZONTAL_OPENING_DOOR=830

#### PSFM "Remis à l'eau mort ou vivant"

PmfmId.DEAD_OR_ALIVE=1393

#### PSFM "Pour référencer un autre id de pmfm"

PmfmId.ID_PMFM=1433

PmfmId.SAMPLE_ID=1435

PmfmId.OTOLITHE_ID=1436

(20=observateur volant, 95=Administrateur SIH) -> L'avantage du 20 est qu'il est inactif (=20), donc plus facilement detectable PersonId.UNKNOWN_RECORDER_PERSON=20

DepartmentCode.INSIDE_PREFIX=PDG-

DepartmentId.UNKNOWN_RECORDER_DEPARTMENT=181 (à confirmer par Vincent)

ProgramCode.SCIENTIFIC_CRUISE_PREFIX=CAM-

ObjectTypeCode.SCIENTIFIC_CRUISE=SCIENTIFIC_CRUISE

ObjectTypeCode.OPERATION=OPERATION

ObjectTypeCode.CATCH_BATCH=CATCH_BATCH

ObjectTypeCode.BATCH=BATCH

ObjectTypeCode.SAMPLE=SAMPLE

VesselPersonRoleId.SCIENTIFIC_CRUISE_MANAGER=2

VesselPersonRoleId.SORT_ROOM_MANAGER=3

VesselPersonRoleId.RECORDER_PERSON=4

TranscribingTypeId.TAXINOMIE_REFTAX_MNEMONIQUE=55

TranscribingTypeId.TAXINOMIE_COMMUN_NOM_VERNACULAIRE=56

MatrixId.PRODUCT_BATCH=1