Skip to content

Commit 68049d1

Browse files
committed
preg_term and ga_at_delivery support.
1 parent 53f551c commit 68049d1

5 files changed

Lines changed: 116 additions & 17 deletions

File tree

CHANGES

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
cutlass 1.0.3
2+
3+
* Support for preg_term and ga_at_delivery fields in SubjectAttribute.
4+
5+
- Victor <victor73@github.com> Wed, 21 Feb 2018 16:00:00 -0400
6+
17
cutlass 1.0.2
28

39
* Support for subproject in VisitAttribute, SubjectAttribute and

cutlass/DiseaseMeta.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import json
22
import logging
3-
from Util import *
3+
from Util import enforce_string
44

55
class DiseaseMeta(object):
66
def __init__(self):

cutlass/HostAssayPrep.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
from itertools import count
88
from cutlass.iHMPSession import iHMPSession
99
from cutlass.Base import Base
10-
from cutlass.Util import *
10+
from cutlass.Util import enforce_int, enforce_string
1111

12-
# pylint: disable=C0302, W0703, R0192
12+
# pylint: disable=C0302, W0703
1313

1414
# Create a module logger named after the module
1515
module_logger = logging.getLogger(__name__)

cutlass/SubjectAttribute.py

Lines changed: 83 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ def __init__(self, *args, **kwargs):
5656
self._education = None
5757
self._family_history = None
5858
self._father = None
59+
self._ga_at_delivery = None
5960
self._gallbladder = None
6061
self._hyperlipidemia = None
6162
self._hypertension = None
@@ -68,6 +69,7 @@ def __init__(self, *args, **kwargs):
6869
self._osa = None
6970
self._pancreatitis = None
7071
self._postmenopausal = None
72+
self._preg_term = None
7173
self._pvd = None
7274
self._rx = None
7375
self._siblings = None
@@ -399,6 +401,33 @@ def father(self, father):
399401

400402
self._father = father
401403

404+
@property
405+
def ga_at_delivery(self):
406+
"""
407+
str: Gestational age at delivery, in weeks. There are three
408+
possible values: "<37wk", ">37wk" and "unknown".
409+
"""
410+
self.logger.debug("In 'ga_at_delivery' getter.")
411+
412+
return self._ga_at_delivery
413+
414+
@ga_at_delivery.setter
415+
@enforce_string
416+
def ga_at_delivery(self, ga_at_delivery):
417+
"""
418+
The setter for the gestational age at delivery.
419+
420+
Args:
421+
ga_at_delivery (str): "<37wk", ">37wk", or "unknown".
422+
423+
Returns:
424+
None
425+
"""
426+
427+
self.logger.debug("In 'ga_at_delivery' setter.")
428+
429+
self._ga_at_delivery = ga_at_delivery
430+
402431
@property
403432
def gallbladder(self):
404433
"""
@@ -412,7 +441,7 @@ def gallbladder(self):
412441
@enforce_string
413442
def gallbladder(self, gallbladder):
414443
"""
415-
The setter for the gallbladder disaese data.
444+
The setter for the gallbladder disease data.
416445
417446
Args:
418447
gallbladder (str): Yes/No, duration, clarification.
@@ -713,6 +742,32 @@ def postmenopausal(self, postmenopausal):
713742

714743
self._postmenopausal = postmenopausal
715744

745+
@property
746+
def preg_term(self):
747+
"""
748+
str: Status of pregnancy ("preterm": <37wk, "full term": >= 37wk, or "NA").
749+
"""
750+
self.logger.debug("In 'preg_term' getter.")
751+
752+
return self._preg_term
753+
754+
@preg_term.setter
755+
@enforce_string
756+
def preg_term(self, preg_term):
757+
"""
758+
The setter for the status of pregnancy.
759+
760+
Args:
761+
preg_term (str): The status of pregnancy.
762+
763+
Returns:
764+
None
765+
"""
766+
767+
self.logger.debug("In 'preg_term' setter.")
768+
769+
self._preg_term = preg_term
770+
716771
@property
717772
def pvd(self):
718773
"""
@@ -1030,55 +1085,59 @@ def _get_raw_doc(self):
10301085
doc['meta']['chf'] = self._chf
10311086

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

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

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

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

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

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

1111+
if self._ga_at_delivery is not None:
1112+
self.logger.debug("%s object has ga_at_delivery set.", __name__)
1113+
doc['meta']['ga_at_delivery'] = self._ga_at_delivery
1114+
10561115
if self._gallbladder is not None:
1057-
self.logger.debug(__name__ + " object has gallbladder set.")
1116+
self.logger.debug("%s object has gallbladder set.", __name__)
10581117
doc['meta']['gallbladder'] = self._gallbladder
10591118

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

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

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

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

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

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

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

1163+
if self._preg_term is not None:
1164+
self.logger.debug("%s object has preg_term set.", __name__)
1165+
doc['meta']['preg_term'] = self._preg_term
1166+
11041167
if self._pvd is not None:
11051168
self.logger.debug("%s object has pvd set.", __name__)
11061169
doc['meta']['pvd'] = self._pvd
@@ -1286,6 +1349,9 @@ def load_subject_attr(attrib_data):
12861349
if 'father' in attrib_data['meta']:
12871350
attrib.father = attrib_data['meta']['father']
12881351

1352+
if 'ga_at_delivery' in attrib_data['meta']:
1353+
attrib.ga_at_delivery = attrib_data['meta']['ga_at_delivery']
1354+
12891355
if 'gallbladder' in attrib_data['meta']:
12901356
attrib.gallbladder = attrib_data['meta']['gallbladder']
12911357

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

1391+
if 'preg_term' in attrib_data['meta']:
1392+
attrib.preg_term = attrib_data['meta']['preg_term']
1393+
13251394
if 'pvd' in attrib_data['meta']:
13261395
attrib.pvd = attrib_data['meta']['pvd']
13271396

tests/test_subject_attr.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,15 @@ def testFather(self):
270270

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

273+
# ga_at_delivery
274+
def testGaAtDelivery(self):
275+
""" Test the ga_at_delivery property. """
276+
subj_attr = self.session.create_subject_attr()
277+
278+
self.util.stringTypeTest(self, subj_attr, "ga_at_delivery")
279+
280+
self.util.stringPropertyTest(self, subj_attr, "ga_at_delivery")
281+
273282
# gallbladder
274283
def testGallbladder(self):
275284
""" Test the gallbladder property. """
@@ -376,6 +385,15 @@ def testPostmenopausal(self):
376385

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

388+
# preg_term
389+
def testPregTerm(self):
390+
""" Test the preg_term property. """
391+
subj_attr = self.session.create_subject_attr()
392+
393+
self.util.stringTypeTest(self, subj_attr, "preg_term")
394+
395+
self.util.stringPropertyTest(self, subj_attr, "preg_term")
396+
379397
# pvd (peripheral vascular disease)
380398
def testPVD(self):
381399
""" Test the pvd (peripheral vascular disease) property. """
@@ -455,6 +473,7 @@ def testLoadSaveDeleteSubjectAttribute(self):
455473
subj_attr.education = "Yes, high school"
456474
subj_attr.family_history = "Yes, cancer"
457475
subj_attr.father = "Dad"
476+
subj_attr.ga_at_delivery = "<37wk"
458477
subj_attr.gallbladder = "Yes, 2 years"
459478
subj_attr.hyperlipidemia = "Yes, 3 years"
460479
subj_attr.hypertension = "Yes, 4 years"
@@ -467,6 +486,7 @@ def testLoadSaveDeleteSubjectAttribute(self):
467486
subj_attr.osa = "Yes, 6 years"
468487
subj_attr.pancreatitis = "Yes, 7 years"
469488
subj_attr.postmenopausal = "N/A"
489+
subj_attr.preg_term = "preterm"
470490
subj_attr.pvd = "Yes, 8 years"
471491
subj_attr.rx = "None"
472492
subj_attr.siblings = "Brother and sister"
@@ -505,6 +525,10 @@ def testLoadSaveDeleteSubjectAttribute(self):
505525
"SubjectAttribute comment not saved & loaded successfully")
506526
self.assertEqual(subj_attr.contact, subj_attr_loaded.contact,
507527
"SubjectAttribute contact not saved & loaded successfully")
528+
self.assertEqual(subj_attr.ga_at_delivery, subj_attr_loaded.ga_at_delivery,
529+
"SubjectAttribute ga_at_delivery not saved & loaded successfully")
530+
self.assertEqual(subj_attr.preg_term, subj_attr_loaded.preg_term,
531+
"SubjectAttribute preg_term not saved & loaded successfully")
508532
self.assertEqual(subj_attr.subproject, subj_attr_loaded.subproject,
509533
"SubjectAttribute subproject not saved & loaded successfully")
510534
self.assertEqual(subj_attr.tags[0], subj_attr_loaded.tags[0],

0 commit comments

Comments
 (0)