2020-02-27 14:54:46 +00:00
|
|
|
import enum
|
|
|
|
|
2020-03-26 16:51:53 +00:00
|
|
|
from marshmallow import INCLUDE, post_load
|
2020-02-27 14:54:46 +00:00
|
|
|
|
|
|
|
from crc import ma
|
|
|
|
|
|
|
|
|
|
|
|
class ProtocolBuilderInvestigatorType(enum.Enum):
|
|
|
|
PI = "Primary Investigator"
|
|
|
|
SI = "Sub Investigator"
|
|
|
|
DC = "Department Contact"
|
|
|
|
SC_I = "Study Coordinator 1"
|
|
|
|
SC_II = "Study Coordinator 2"
|
|
|
|
AS_C = "Additional Study Coordinators"
|
|
|
|
DEPT_CH = "Department Chair"
|
|
|
|
IRBC = "IRB Coordinator"
|
|
|
|
SCI = "Scientific Contact"
|
|
|
|
|
|
|
|
|
2020-07-31 03:03:11 +00:00
|
|
|
# Deprecated: Marked for removal
|
2020-02-27 14:54:46 +00:00
|
|
|
class ProtocolBuilderStatus(enum.Enum):
|
2021-08-16 16:09:02 +00:00
|
|
|
# • Active: found in PB and not hold
|
2020-04-21 21:13:30 +00:00
|
|
|
# • Hold: store boolean value in CR Connect (add to Study Model)
|
2021-08-16 16:09:02 +00:00
|
|
|
# • Open To Enrollment: has start date?
|
2020-04-21 21:13:30 +00:00
|
|
|
# • Abandoned: deleted in PB
|
2020-07-28 21:16:48 +00:00
|
|
|
incomplete = 'incomplete' # Found in PB but not ready to start (not q_complete)
|
2021-08-16 16:09:02 +00:00
|
|
|
active = 'active' # found in PB, marked as "q_complete" and not hold
|
2020-07-28 21:16:48 +00:00
|
|
|
hold = 'hold' # CR Connect side, if the Study ias marked as "hold".
|
2021-08-16 16:09:02 +00:00
|
|
|
open = 'open' # Open To Enrollment: has start date?
|
2020-07-28 21:16:48 +00:00
|
|
|
abandoned = 'abandoned' # Not found in PB
|
2020-04-21 21:13:30 +00:00
|
|
|
|
|
|
|
|
|
|
|
#DRAFT = 'draft', # !Q_COMPLETE
|
2021-08-16 16:09:02 +00:00
|
|
|
#IN_PROCESS = 'in_process', # Q_COMPLETE && !UPLOAD_COMPLETE
|
|
|
|
#IN_REVIEW = 'in_review', # Q_COMPLETE && (!UPLOAD_COMPLETE)
|
|
|
|
#REVIEW_COMPLETE = 'review_complete', # Q_COMPLETE && UPLOAD_COMPLETE
|
2020-04-21 21:13:30 +00:00
|
|
|
#INACTIVE = 'inactive', # Not found in PB
|
|
|
|
|
2020-02-27 14:54:46 +00:00
|
|
|
|
|
|
|
|
|
|
|
class ProtocolBuilderStudy(object):
|
|
|
|
def __init__(
|
2021-08-16 16:50:09 +00:00
|
|
|
self, STUDYID: int, TITLE: str, NETBADGEID: str,
|
2021-11-05 13:59:14 +00:00
|
|
|
DATE_MODIFIED: str, Q_COMPLETE: str, HSRNUMBER: str
|
2020-02-27 14:54:46 +00:00
|
|
|
):
|
|
|
|
self.STUDYID = STUDYID
|
|
|
|
self.TITLE = TITLE
|
|
|
|
self.NETBADGEID = NETBADGEID
|
|
|
|
self.DATE_MODIFIED = DATE_MODIFIED
|
2021-11-03 16:40:43 +00:00
|
|
|
self.Q_COMPLETE = Q_COMPLETE
|
2021-11-05 13:59:14 +00:00
|
|
|
self.HSRNUMBER = HSRNUMBER
|
2020-02-27 14:54:46 +00:00
|
|
|
|
|
|
|
class ProtocolBuilderStudySchema(ma.Schema):
|
|
|
|
class Meta:
|
|
|
|
model = ProtocolBuilderStudy
|
|
|
|
unknown = INCLUDE
|
2021-08-16 16:09:02 +00:00
|
|
|
fields = ["STUDYID", "TITLE", "NETBADGEID",
|
2021-11-03 16:58:03 +00:00
|
|
|
"DATE_MODIFIED", "Q_COMPLETE"]
|
2020-02-27 14:54:46 +00:00
|
|
|
|
2020-03-26 16:51:53 +00:00
|
|
|
@post_load
|
|
|
|
def make_pbs(self, data, **kwargs):
|
|
|
|
return ProtocolBuilderStudy(**data)
|
|
|
|
|
2020-02-27 14:54:46 +00:00
|
|
|
|
|
|
|
class ProtocolBuilderInvestigator(object):
|
2020-03-26 16:51:53 +00:00
|
|
|
def __init__(self, NETBADGEID: str, INVESTIGATORTYPE: str, INVESTIGATORTYPEFULL: str):
|
2020-02-27 14:54:46 +00:00
|
|
|
self.NETBADGEID = NETBADGEID
|
|
|
|
self.INVESTIGATORTYPE = INVESTIGATORTYPE
|
|
|
|
self.INVESTIGATORTYPEFULL = INVESTIGATORTYPEFULL
|
|
|
|
|
|
|
|
|
|
|
|
class ProtocolBuilderInvestigatorSchema(ma.Schema):
|
|
|
|
class Meta:
|
|
|
|
model = ProtocolBuilderInvestigator
|
|
|
|
unknown = INCLUDE
|
2020-04-03 17:52:12 +00:00
|
|
|
fields = ["NETBADGEID", "INVESTIGATORTYPE", "INVESTIGATORTYPEFULL"]
|
2020-02-27 14:54:46 +00:00
|
|
|
|
2020-03-26 16:51:53 +00:00
|
|
|
@post_load
|
|
|
|
def make_inv(self, data, **kwargs):
|
|
|
|
return ProtocolBuilderInvestigator(**data)
|
2020-02-27 14:54:46 +00:00
|
|
|
|
2020-04-03 20:24:38 +00:00
|
|
|
|
2020-02-27 14:54:46 +00:00
|
|
|
class ProtocolBuilderRequiredDocument(object):
|
|
|
|
def __init__(self, AUXDOCID: str, AUXDOC: str):
|
|
|
|
self.AUXDOCID = AUXDOCID
|
|
|
|
self.AUXDOC = AUXDOC
|
|
|
|
|
|
|
|
|
|
|
|
class ProtocolBuilderRequiredDocumentSchema(ma.Schema):
|
|
|
|
class Meta:
|
2020-04-03 20:24:38 +00:00
|
|
|
fields = ["AUXDOCID","AUXDOC"]
|
2020-02-27 14:54:46 +00:00
|
|
|
unknown = INCLUDE
|
|
|
|
|
2020-03-26 16:51:53 +00:00
|
|
|
@post_load
|
|
|
|
def make_req(self, data, **kwargs):
|
|
|
|
return ProtocolBuilderRequiredDocument(**data)
|