[NEW] studies_base

This commit is contained in:
clementthomas
2024-07-16 17:14:00 +02:00
parent 27770a6a1f
commit d7735363ae
35 changed files with 1580 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
from . import study_author
from . import study_eligibility_topic
from . import study_gender
from . import study_participant
from . import study_phase
from . import study_purpose_type
from . import study_progress_status
from . import study_questionnaire
from . import study_region
from . import study_status
from . import study_study
from . import study_tag
from . import study_type
from . import study_questionnaire_category
from . import study_questionnaire_response
from . import study_questionnaire_status
from . import study_questionnaire_subject_type
from . import study_questionnaire_type
from . import study_participant_progress_status
from . import study_participant_state
from . import study_questionnaire_response_state
from . import study_questionnaire_response_progress_status
from . import study_eligibility_condition_clinical_status
from . import study_eligibility_condition_body_site

View File

@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyAuthor(models.Model):
_name = "study.author"
name = fields.Char("Name")
sequence = fields.Integer("Sequence")

View File

@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyEligibilityConditionBodySite(models.Model):
_name = "study.eligibility.condition.body.site"
name = fields.Char("Name")
sequence = fields.Integer("Sequence")

View File

@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyEligibilityConditionClinicalStatus(models.Model):
_name = "study.eligibility.condition.clinical.status"
name = fields.Char("Name")
sequence = fields.Integer("Sequence")

View File

@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyEligibilityTopic(models.Model):
_name = "study.eligibility.topic"
name = fields.Char("Name")
sequence = fields.Integer("Sequence")

View File

@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyGender(models.Model):
_name = "study.gender"
name = fields.Char("Name")
sequence = fields.Integer("Sequence")

View File

@@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyParticipant(models.Model):
_name = "study.participant"
identifier_primary_id = fields.Char("Idientifiant Seintinelles", readonly=True)
part_of = fields.Many2one("study.study", string="Étude", readonly=True)
subject = fields.Many2one("res.partner", string="Contact", domain=[("category_patient",'=',1)], readonly=True)
firstname = fields.Char("Prénom", related="subject.firstname")
lastname = fields.Char("Nom", related="subject.lastname")
progress_status = fields.Many2one("study.participant.progress.status", string="Statut de la participation")
state = fields.Many2one("study.participant.state", string="État de la participation")
part_of_author = fields.Many2one("study.author", string="Platforme d'étude", related="part_of.author")
author = fields.Char("ID plateforme")
identifier = fields.Char("Idientifiants de l'enrôlement")
#questionnaire_responses = fields.One2many("study.questionnaire.response", "study_questionnaire_id", string="Réponses")

View File

@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyParticipantProgressStatus(models.Model):
_name = "study.participant.progress.status"
name = fields.Char("Name")
sequence = fields.Integer("Sequence")

View File

@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyParticipantState(models.Model):
_name = "study.participant.state"
name = fields.Char("Name")
sequence = fields.Integer("Sequence")

View File

@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyPhase(models.Model):
_name = "study.phase"
name = fields.Char("Name")
sequence = fields.Integer("Sequence")

View File

@@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyProgressStatus(models.Model):
_name = "study.progress.status"

View File

@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyPurposeType(models.Model):
_name = "study.purpose.type"
name = fields.Char("Name")
sequence = fields.Integer("Sequence")

View File

@@ -0,0 +1,50 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyQuestionnaire(models.Model):
_name = "study.questionnaire"
title = fields.Char("Nom du questionnaire")
name = fields.Char("Acronyme")
progress_status = fields.Many2one("study.progress.status", string="Statut du questionnaire")
approval_date = fields.Datetime("Date d'approbation")
last_review_date = fields.Datetime("Dernière relecture")
effective_period_start = fields.Datetime("Début de la collecte")
effective_period_end = fields.Datetime("Fin de la collecte")
study_id = fields.Many2one("study.study", string="Étude")
category = fields.Many2one("study.questionnaire.category", string="Catégorie de questionnaire")
type = fields.Many2one("study.questionnaire.type", string="Type de questionnaire")
purpose = fields.Text("Objectif")
subject_type = fields.Many2one("questionnaire.subject.type", string="Sujets")
description = fields.Text("Description du questionnaire")
jurisdiction = fields.Many2many("study.region", string="Zones géographiques ciblées")
derived_from = fields.Many2one("study.questionnaire", string="Dérivé de")
version = fields.Char("Vestion")
status = fields.Many2one("study.questionnaire.status", string="Statut de publication")
experimental = fields.Boolean("Questionnaire de test")
author = fields.Many2one("study.author", string="Platforme d'étude")
identifier_author = fields.Char("ID plateforme")
identifier_primary_id = fields.Char("Identifiant Seintinelles", readonly=True)
rank_in_study = fields.Integer("Rang dans l'étude")
fixed_start_date = fields.Datetime("Date de début de collecte")
fixed_end_date = fields.Datetime("Date limite de collecte")
repeated = fields.Integer("Nombre de répétition")
repeat_delay = fields.Integer("Délai de répétition")
repeat_delay_type = fields.Selection([("d", "Jour"), ("m", "Mois"), ("y", "Année")], string="Type de délai de répétition")
following = fields.Many2one("study.questionnaire", string="Questionnaire précédent")
following_repeat_delay = fields.Integer("Délai avec le questionnaire précédent")
following_repeat_delay_type = fields.Selection([("d", "Jour"), ("m", "Mois"), ("y", "Année")], string="Type de délai avec le questionnaire précédent")
preceding = fields.Many2one("study.questionnaire", string="Questionnaire suivant")
preceding_repeat_delay = fields.Integer("Délai avec le questionnaire suivant")
preceding_repeat_delay_type = fields.Selection([("d", "Jour"), ("m", "Mois"), ("y", "Année")], string="Type de délai avec le questionnaire suivant")
copyright = fields.Text("Copyright")
copyright_label = fields.Char("Propriétaire et année du copyright")

View File

@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyQuestionnaireCategory(models.Model):
_name = "study.questionnaire.category"
name = fields.Char("Name")
sequence = fields.Integer("Sequence")

View File

@@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyQuestionnaireResponse(models.Model):
_name = "study.questionnaire.response"
identifier_primary_id = fields.Char("Idientifiant Seintinelles", readonly=True)
start_date = fields.Datetime("Date de début de collecte", readonly=True)
end_date = fields.Datetime("Date limite de collecte", readonly=True)
state = fields.Many2one("study.questionnaire.response.state", string="État de la réponse")
progress_status = fields.Many2one("study.questionnaire.response.progress.status", string="État d'avancement")
authored = fields.Datetime("Date de saisie des réponses", readonly=True)
author = fields.Many2one("study.author", string="Platform d'étude", readonly=True)
identifier_author = fields.Char("ID plateforme", readonly=True)
redirect_url = fields.Char("Lien personnel de redirection vers le questionnaire")
study_id = fields.Many2one("study.study", "Étude")
study_questionnaire_id = fields.Many2one("study.questionnaire", string="Questionnaire")
study_participant_id = fields.Many2one("study.participant", string="Participation")
source = fields.Many2one("res.partner", string="Contact", domain=[("category_patient",'=',1)], readonly=True)
firstname = fields.Char("Prénom", related="source.firstname")
lastname = fields.Char("Nom", related="source.lastname")

View File

@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyQuestionnaireResponseProgressStatus(models.Model):
_name = "study.questionnaire.response.progress.status"
name = fields.Char("Name")
sequence = fields.Integer("Sequence")

View File

@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyQuestionnaireResponseState(models.Model):
_name = "study.questionnaire.response.state"
name = fields.Char("Name")
sequence = fields.Integer("Sequence")

View File

@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyQuestionnaireStatus(models.Model):
_name = "study.questionnaire.status"
name = fields.Char("Name")
sequence = fields.Integer("Sequence")

View File

@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyQuestionnaireSubjectType(models.Model):
_name = "study.questionnaire.subject.type"
name = fields.Char("Name")
sequence = fields.Integer("Sequence")

View File

@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyQuestionnaireType(models.Model):
_name = "study.questionnaire.type"
name = fields.Char("Name")
sequence = fields.Integer("Sequence")

View File

@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyRegion(models.Model):
_name = "study.region"
name = fields.Char("Name")
sequence = fields.Integer("Sequence")

View File

@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudStatus(models.Model):
_name = "study.status"
name = fields.Char("Name")
sequence = fields.Integer("Sequence")

View File

@@ -0,0 +1,59 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyStudy(models.Model):
_name = "study.study"
title = fields.Char("Nom de l'étude")
name = fields.Char("Acronyme")
period_start = fields.Date("Début de l'étude")
period_end = fields.Date("Fin de l'étude")
progress_status = fields.Many2one("study.progress.status", string="Avancement de l'étude")
type = fields.Many2one("study.type", string="Type")
description_summary = fields.Char("Brève description de l'étude")
description = fields.Text("Description de l'étude")
keyword = fields.Many2one("study.tag", string="Mots-clés")
primary_purpose_type = fields.Many2one("study.purpose.type", string="Objectif principal")
part_of = fields.Many2one("study.study", string="Fait partie de")
ppc_reference = fields.Char("Référence Comité de Protection des Personnes")
version = fields.Char("Version")
phase = fields.Many2one("study.phase", string="Phase")
status = fields.Many2one("study.status", string="Status")
site = fields.Many2one("res.partner", string="Lieu de l'étude")
author = fields.Many2one("study.author", string="Platforme technique d'étude")
identitifer_author = fields.Char("ID plateforme")
identifier_primary_id = fields.Char("Idientifiant Seintinelles", readonly=True)
recruitment_target_number = fields.Integer("Nombre de participants à recruter")
recruitment_max_number = fields.Integer("Nombre limite de participations")
recruitment_eligibility_gender = fields.Many2many("study.gender", string="Genre")
recruitment_eligibility_age_min = fields.Integer("Âge min")
recruitment_eligibility_age_max = fields.Integer("Âge max")
recruitment_eligibility_condition_clinical_status = fields.Many2many("study.eligibility.condition.clinical.status", string="Statut de l'affectation (malade, ancien malade...)")
recruitment_eligibility_condition_body_site = fields.Many2many("study.eligibility.condition.body.site", string="Localisation anatomique de l'affection")
recruitment_eligibility_study_incl = fields.Many2many("study.study",
"study_study_recruitment_eligibility_study_incl",
"base_study_id",
"incl_study_id",
string="Doit avoir participé aux études...")
recruitment_eligibility_study_excl = fields.Many2many("study.study",
"study_study_recruitment_eligibility_study_excl",
"base_study_id",
"excl_study_id",
string="Ne doit pas avoir participé aux études...")
recruitment_eligibility_description = fields.Text("Description de la cible")
recruitment_eligibility_topic = fields.Many2many("study.eligibility.topic", string="Thématique de recherche")
region = fields.Many2many("study.region", string="Zones géographiques étudiées")
questionnaires = fields.One2many("study.questionnaire", "study_id", string="Questionnaires")
contacts = fields.Many2many("res.partner", string="Contacts")
note = fields.Text("Annotations")

View File

@@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyTag(models.Model):
_name = "study.tag"
name = fields.Char("Name")

View File

@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo import osv
from odoo.exceptions import UserError
class StudyType(models.Model):
_name = "study.type"
name = fields.Char("Name")
sequence = fields.Integer("Sequence")