Skip to content

Commit

Permalink
preg_term and ga_at_delivery support.
Browse files Browse the repository at this point in the history
  • Loading branch information
victor73 committed Feb 21, 2018
1 parent 53f551c commit 68049d1
Show file tree
Hide file tree
Showing 5 changed files with 116 additions and 17 deletions.
6 changes: 6 additions & 0 deletions CHANGES
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
cutlass 1.0.3

* Support for preg_term and ga_at_delivery fields in SubjectAttribute.

- Victor <[email protected]> Wed, 21 Feb 2018 16:00:00 -0400

cutlass 1.0.2

* Support for subproject in VisitAttribute, SubjectAttribute and
Expand Down
2 changes: 1 addition & 1 deletion cutlass/DiseaseMeta.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import json
import logging
from Util import *
from Util import enforce_string

class DiseaseMeta(object):
def __init__(self):
Expand Down
4 changes: 2 additions & 2 deletions cutlass/HostAssayPrep.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
from itertools import count
from cutlass.iHMPSession import iHMPSession
from cutlass.Base import Base
from cutlass.Util import *
from cutlass.Util import enforce_int, enforce_string

# pylint: disable=C0302, W0703, R0192
# pylint: disable=C0302, W0703

# Create a module logger named after the module
module_logger = logging.getLogger(__name__)
Expand Down
97 changes: 83 additions & 14 deletions cutlass/SubjectAttribute.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ def __init__(self, *args, **kwargs):
self._education = None
self._family_history = None
self._father = None
self._ga_at_delivery = None
self._gallbladder = None
self._hyperlipidemia = None
self._hypertension = None
Expand All @@ -68,6 +69,7 @@ def __init__(self, *args, **kwargs):
self._osa = None
self._pancreatitis = None
self._postmenopausal = None
self._preg_term = None
self._pvd = None
self._rx = None
self._siblings = None
Expand Down Expand Up @@ -399,6 +401,33 @@ def father(self, father):

self._father = father

@property
def ga_at_delivery(self):
"""
str: Gestational age at delivery, in weeks. There are three
possible values: "<37wk", ">37wk" and "unknown".
"""
self.logger.debug("In 'ga_at_delivery' getter.")

return self._ga_at_delivery

@ga_at_delivery.setter
@enforce_string
def ga_at_delivery(self, ga_at_delivery):
"""
The setter for the gestational age at delivery.
Args:
ga_at_delivery (str): "<37wk", ">37wk", or "unknown".
Returns:
None
"""

self.logger.debug("In 'ga_at_delivery' setter.")

self._ga_at_delivery = ga_at_delivery

@property
def gallbladder(self):
"""
Expand All @@ -412,7 +441,7 @@ def gallbladder(self):
@enforce_string
def gallbladder(self, gallbladder):
"""
The setter for the gallbladder disaese data.
The setter for the gallbladder disease data.
Args:
gallbladder (str): Yes/No, duration, clarification.
Expand Down Expand Up @@ -713,6 +742,32 @@ def postmenopausal(self, postmenopausal):

self._postmenopausal = postmenopausal

@property
def preg_term(self):
"""
str: Status of pregnancy ("preterm": <37wk, "full term": >= 37wk, or "NA").
"""
self.logger.debug("In 'preg_term' getter.")

return self._preg_term

@preg_term.setter
@enforce_string
def preg_term(self, preg_term):
"""
The setter for the status of pregnancy.
Args:
preg_term (str): The status of pregnancy.
Returns:
None
"""

self.logger.debug("In 'preg_term' setter.")

self._preg_term = preg_term

@property
def pvd(self):
"""
Expand Down Expand Up @@ -1030,55 +1085,59 @@ def _get_raw_doc(self):
doc['meta']['chf'] = self._chf

if self._comment is not None:
self.logger.debug(__name__ + " object has comment set.")
self.logger.debug("%s object has comment set.", __name__)
doc['meta']['comment'] = self._comment

if self._contact is not None:
self.logger.debug(__name__ + " object has contact set.")
self.logger.debug("%s object has contact set.", __name__)
doc['meta']['contact'] = self._contact

if self._diabetes is not None:
self.logger.debug(__name__ + " object has diabetes set.")
self.logger.debug("%s object has diabetes set.", __name__)
doc['meta']['diabetes'] = self._diabetes

if self._education is not None:
self.logger.debug(__name__ + " object has education set.")
self.logger.debug("%s object has education set.", __name__)
doc['meta']['education'] = self._education

if self._family_history is not None:
self.logger.debug(__name__ + " object has family_history set.")
self.logger.debug("%s object has family_history set.", __name__)
doc['meta']['family_history'] = self._family_history

if self._father is not None:
self.logger.debug(__name__ + " object has father set.")
self.logger.debug("%s object has father set.", __name__)
doc['meta']['father'] = self._father

if self._ga_at_delivery is not None:
self.logger.debug("%s object has ga_at_delivery set.", __name__)
doc['meta']['ga_at_delivery'] = self._ga_at_delivery

if self._gallbladder is not None:
self.logger.debug(__name__ + " object has gallbladder set.")
self.logger.debug("%s object has gallbladder set.", __name__)
doc['meta']['gallbladder'] = self._gallbladder

if self._hyperlipidemia is not None:
self.logger.debug(__name__ + " object has hyperlipidemia set.")
self.logger.debug("%s object has hyperlipidemia set.", __name__)
doc['meta']['hyperlipidemia'] = self._hyperlipidemia

if self._hypertension is not None:
self.logger.debug(__name__ + " object has hypertension set.")
self.logger.debug("%s object has hypertension set.", __name__)
doc['meta']['hypertension'] = self._hypertension

if self._illicit_drug is not None:
self.logger.debug(__name__ + " object has illicit_drug set.")
self.logger.debug("%s object has illicit_drug set.", __name__)
doc['meta']['illicit_drug'] = self._illicit_drug

if self._kidney is not None:
self.logger.debug(__name__ + " object has kidney set.")
self.logger.debug("%s object has kidney set.", __name__)
doc['meta']['kidney'] = self._kidney

if self._liver is not None:
self.logger.debug(__name__ + " object has liver set.")
self.logger.debug("%s object has liver set.", __name__)
doc['meta']['liver'] = self._liver

if self._lmp is not None:
self.logger.debug(__name__ + " object has lmp set.")
self.logger.debug("%s object has lmp set.", __name__)
doc['meta']['lmp'] = self._lmp

if self._mother is not None:
Expand All @@ -1101,6 +1160,10 @@ def _get_raw_doc(self):
self.logger.debug("%s object has postmenopausal set.", __name__)
doc['meta']['postmenopausal'] = self._postmenopausal

if self._preg_term is not None:
self.logger.debug("%s object has preg_term set.", __name__)
doc['meta']['preg_term'] = self._preg_term

if self._pvd is not None:
self.logger.debug("%s object has pvd set.", __name__)
doc['meta']['pvd'] = self._pvd
Expand Down Expand Up @@ -1286,6 +1349,9 @@ def load_subject_attr(attrib_data):
if 'father' in attrib_data['meta']:
attrib.father = attrib_data['meta']['father']

if 'ga_at_delivery' in attrib_data['meta']:
attrib.ga_at_delivery = attrib_data['meta']['ga_at_delivery']

if 'gallbladder' in attrib_data['meta']:
attrib.gallbladder = attrib_data['meta']['gallbladder']

Expand Down Expand Up @@ -1322,6 +1388,9 @@ def load_subject_attr(attrib_data):
if 'postmenopausal' in attrib_data['meta']:
attrib.postmenopausal = attrib_data['meta']['postmenopausal']

if 'preg_term' in attrib_data['meta']:
attrib.preg_term = attrib_data['meta']['preg_term']

if 'pvd' in attrib_data['meta']:
attrib.pvd = attrib_data['meta']['pvd']

Expand Down
24 changes: 24 additions & 0 deletions tests/test_subject_attr.py
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,15 @@ def testFather(self):

self.util.stringPropertyTest(self, subj_attr, "father")

# ga_at_delivery
def testGaAtDelivery(self):
""" Test the ga_at_delivery property. """
subj_attr = self.session.create_subject_attr()

self.util.stringTypeTest(self, subj_attr, "ga_at_delivery")

self.util.stringPropertyTest(self, subj_attr, "ga_at_delivery")

# gallbladder
def testGallbladder(self):
""" Test the gallbladder property. """
Expand Down Expand Up @@ -376,6 +385,15 @@ def testPostmenopausal(self):

self.util.stringPropertyTest(self, subj_attr, "postmenopausal")

# preg_term
def testPregTerm(self):
""" Test the preg_term property. """
subj_attr = self.session.create_subject_attr()

self.util.stringTypeTest(self, subj_attr, "preg_term")

self.util.stringPropertyTest(self, subj_attr, "preg_term")

# pvd (peripheral vascular disease)
def testPVD(self):
""" Test the pvd (peripheral vascular disease) property. """
Expand Down Expand Up @@ -455,6 +473,7 @@ def testLoadSaveDeleteSubjectAttribute(self):
subj_attr.education = "Yes, high school"
subj_attr.family_history = "Yes, cancer"
subj_attr.father = "Dad"
subj_attr.ga_at_delivery = "<37wk"
subj_attr.gallbladder = "Yes, 2 years"
subj_attr.hyperlipidemia = "Yes, 3 years"
subj_attr.hypertension = "Yes, 4 years"
Expand All @@ -467,6 +486,7 @@ def testLoadSaveDeleteSubjectAttribute(self):
subj_attr.osa = "Yes, 6 years"
subj_attr.pancreatitis = "Yes, 7 years"
subj_attr.postmenopausal = "N/A"
subj_attr.preg_term = "preterm"
subj_attr.pvd = "Yes, 8 years"
subj_attr.rx = "None"
subj_attr.siblings = "Brother and sister"
Expand Down Expand Up @@ -505,6 +525,10 @@ def testLoadSaveDeleteSubjectAttribute(self):
"SubjectAttribute comment not saved & loaded successfully")
self.assertEqual(subj_attr.contact, subj_attr_loaded.contact,
"SubjectAttribute contact not saved & loaded successfully")
self.assertEqual(subj_attr.ga_at_delivery, subj_attr_loaded.ga_at_delivery,
"SubjectAttribute ga_at_delivery not saved & loaded successfully")
self.assertEqual(subj_attr.preg_term, subj_attr_loaded.preg_term,
"SubjectAttribute preg_term not saved & loaded successfully")
self.assertEqual(subj_attr.subproject, subj_attr_loaded.subproject,
"SubjectAttribute subproject not saved & loaded successfully")
self.assertEqual(subj_attr.tags[0], subj_attr_loaded.tags[0],
Expand Down

0 comments on commit 68049d1

Please sign in to comment.