[NEW] studies_base
This commit is contained in:
24
studies_base/models/__init__.py
Normal file
24
studies_base/models/__init__.py
Normal 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
|
12
studies_base/models/study_author.py
Normal file
12
studies_base/models/study_author.py
Normal 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")
|
||||
|
12
studies_base/models/study_eligibility_condition_body_site.py
Normal file
12
studies_base/models/study_eligibility_condition_body_site.py
Normal 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")
|
||||
|
@@ -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")
|
||||
|
12
studies_base/models/study_eligibility_topic.py
Normal file
12
studies_base/models/study_eligibility_topic.py
Normal 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")
|
||||
|
12
studies_base/models/study_gender.py
Normal file
12
studies_base/models/study_gender.py
Normal 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")
|
||||
|
23
studies_base/models/study_participant.py
Normal file
23
studies_base/models/study_participant.py
Normal 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")
|
12
studies_base/models/study_participant_progress_status.py
Normal file
12
studies_base/models/study_participant_progress_status.py
Normal 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")
|
||||
|
12
studies_base/models/study_participant_state.py
Normal file
12
studies_base/models/study_participant_state.py
Normal 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")
|
||||
|
12
studies_base/models/study_phase.py
Normal file
12
studies_base/models/study_phase.py
Normal 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")
|
||||
|
10
studies_base/models/study_progress_status.py
Normal file
10
studies_base/models/study_progress_status.py
Normal 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"
|
||||
|
||||
|
12
studies_base/models/study_purpose_type.py
Normal file
12
studies_base/models/study_purpose_type.py
Normal 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")
|
||||
|
50
studies_base/models/study_questionnaire.py
Normal file
50
studies_base/models/study_questionnaire.py
Normal 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")
|
12
studies_base/models/study_questionnaire_category.py
Normal file
12
studies_base/models/study_questionnaire_category.py
Normal 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")
|
||||
|
27
studies_base/models/study_questionnaire_response.py
Normal file
27
studies_base/models/study_questionnaire_response.py
Normal 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")
|
@@ -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")
|
||||
|
12
studies_base/models/study_questionnaire_response_state.py
Normal file
12
studies_base/models/study_questionnaire_response_state.py
Normal 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")
|
||||
|
12
studies_base/models/study_questionnaire_status.py
Normal file
12
studies_base/models/study_questionnaire_status.py
Normal 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")
|
||||
|
12
studies_base/models/study_questionnaire_subject_type.py
Normal file
12
studies_base/models/study_questionnaire_subject_type.py
Normal 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")
|
||||
|
12
studies_base/models/study_questionnaire_type.py
Normal file
12
studies_base/models/study_questionnaire_type.py
Normal 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")
|
||||
|
12
studies_base/models/study_region.py
Normal file
12
studies_base/models/study_region.py
Normal 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")
|
||||
|
12
studies_base/models/study_status.py
Normal file
12
studies_base/models/study_status.py
Normal 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")
|
||||
|
59
studies_base/models/study_study.py
Normal file
59
studies_base/models/study_study.py
Normal 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")
|
10
studies_base/models/study_tag.py
Normal file
10
studies_base/models/study_tag.py
Normal 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")
|
12
studies_base/models/study_type.py
Normal file
12
studies_base/models/study_type.py
Normal 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")
|
||||
|
Reference in New Issue
Block a user