def test_read_timeout(self): """Test against an external website to verify read timeout""" rave = RWSConnection('https://innovate.mdsol.com') with mock.patch("requests.sessions.Session.get") as mock_get: mock_get.side_effect = requests.exceptions.ReadTimeout() with self.assertRaises(RWSException) as exc: rave.send_request(rws_requests.ClinicalStudiesRequest(), verify=False,retries=0) self.assertEqual('Server Read Timeout', str(exc.exception))
def test_no_timeout_unauth(self): """No timeout raised, then we get the Authorisation Exception """ rave = RWSConnection('https://innovate.mdsol.com') with mock.patch("requests.sessions.Session.get") as mock_get: mock_get.return_value = mock.MagicMock(requests.models.Response, status_code=401, headers={}, text='Authorization Header not provided') with self.assertRaises(AuthorizationException) as exc: rave.send_request(rws_requests.ClinicalStudiesRequest(), timeout=3600, verify=False, retries=0) self.assertEqual('Authorization Header not provided', str(exc.exception))
def test_read_timeout(self): """Test against an external website to verify read timeout""" rave = RWSConnection('https://innovate.mdsol.com') with mock.patch("requests.sessions.Session.get") as mock_get: mock_get.side_effect = requests.exceptions.ReadTimeout() with self.assertRaises(RWSException) as exc: rave.send_request(rws_requests.ClinicalStudiesRequest(), verify=False, retries=0) self.assertEqual('Server Read Timeout', str(exc.exception))
def test_no_timeout_unauth(self): """No timeout raised, then we get the Authorisation Exception """ rave = RWSConnection('https://innovate.mdsol.com') with mock.patch("requests.sessions.Session.get") as mock_get: mock_get.return_value = mock.MagicMock( requests.models.Response, status_code=401, headers={}, text='Authorization Header not provided') with self.assertRaises(AuthorizationException) as exc: rave.send_request(rws_requests.ClinicalStudiesRequest(), timeout=3600, verify=False, retries=0) self.assertEqual('Authorization Header not provided', str(exc.exception))
def get_rave_subjects(): """ Gets a list of Patients registered :return: """ client = RWSConnection(domain=RAVE_URL, username=RAVE_USER, password=RAVE_PASSWORD) subjects = client.send_request( StudySubjectsRequest(STUDY, ENV, subject_key_type='SubjectUUID')) return subjects
def push_demographics(subject_id, patient_json): """ Insert Patient Demography Data :param subject_uuid: UUID for subject :param patient_json: returned Patient JSON :return: """ locationoid, subject_uuid = subject_id.split('_') mapping = [] date_of_birth = patient_json.get('birthDate') if date_of_birth: mapping.append( dict(folder_oid="SCREEN", form_oid="DM", field_oid="DM.BRTHDTC", value=munge_to_rave_date(date_of_birth), cdash_domain="DM", cdash_element="BRTHDTC")) gender = patient_json.get('gender') if gender: if gender.lower() in ['male', 'female']: mapping.append( dict(folder_oid="SCREEN", form_oid="DM", field_oid="DM.SEX", value=gender.upper(), cdash_domain="DM", cdash_element="SEX")) if mapping: odm = make_odm(STUDY, ENV, locationoid, subject_uuid, mapping, retrieved_datetime=datetime.datetime.now(), transfer_user='******', transfer_identifier=audit_id(), freeze=False) request = PostDataRequest(str(odm)) client = RWSConnection(domain=RAVE_URL, username=RAVE_USER, password=RAVE_PASSWORD) response = client.send_request(request) return response
if __name__ == '__main__': from _settings import accounts #Accounts is a dict of dicts like # accounts = {'innovate' : {'username': '******', # 'password':'******'}, # 'otherurl' : {'username': '******', # 'password':'******'}, # } acc = accounts['innovate'] rave = RWSConnection('innovate', acc['username'], acc['password']) print rave.send_request(VersionRequest(), retries=3) print rave.send_request(BuildVersionRequest()) print rave.send_request(DiagnosticsRequest()) print rave.send_request(CacheFlushRequest()).istransactionsuccessful print "Clinical studies request" studies = rave.send_request(ClinicalStudiesRequest(),timeout=60) print len(studies) print rave.last_result.url print rave.last_result.text print rave.request_time print "Metadata studies request" m_studies = rave.send_request(MetadataStudiesRequest()) print len(m_studies)
__author__ = 'andrew' from rwslib import RWSConnection from rwslib.rws_requests import * from rwslib.rws_requests.odm_adapter import * from rwslib.rws_requests.biostats_gateway import * if __name__ == '__main__': from _settings import accounts acc = accounts['innovate'] rave = RWSConnection('innovate', acc['username'], acc['password']) print rave.send_request(VersionRequest()) try: audits = rave.send_request(AuditRecordsRequest('Mediflex','Dev',startid=4000000,per_page=10000)) print rave.next_link #Get headers, next and last entries? except: raise #print audits while rave.next_link <> None: rave.next(AuditRecordsRequest('Mediflex','Dev')) print rave.next_link
MdsolDerivationDef("AGE", form_oid="DM", field_oid="AGE")( # Variable OID required to be identified as a data step MdsolDerivationStep(form_oid="DM", field_oid="DOB", data_format="StandardValue", variable_oid="DOB"), MdsolDerivationStep(function=StepType.Age) ) ) return odm if __name__ == '__main__': from rwslib import RWSConnection from rwslib.rws_requests import PostMetadataRequest, PostDataRequest from _settings import accounts account = accounts['innovate'] r = RWSConnection('innovate', account['username'], account['password']) if False: # MetaData projectname = 'TESTSTUDY' odm_definition = example_metadata(projectname, "Draft1") request = PostMetadataRequest(projectname, str(odm_definition)) else: #Clinical Data projectname = 'Mediflex' odm_definition = example_clinical_data(projectname,"DEV") request = PostDataRequest(str(odm_definition)) # Uncomment this to see the generated ODM # print(str(odm_definition)) response = r.send_request(request) print(str(response))
def push_conmeds(subject_id, conmeds): """ Insert a Concomitant Medication Record :param subject_id: UUID for subject :param conmeds: list of conmeds """ locationoid, subject_uuid = subject_id.split('_') client = RWSConnection(domain=RAVE_URL, username=RAVE_USER, password=RAVE_PASSWORD) for medrx in conmeds: # print(medrx) mapping = [] resource = medrx.get('resource') # Log context ctxt = resource.get('id') print(ctxt) mapping.append( dict(folder_oid="SUBJECT", form_oid="CM", field_oid="CM.CMINDC", value=ctxt, cdash_domain="CM", log_context_field="CM.CMINDC", log_context_value=ctxt, is_new=True)) period = resource.get('effectivePeriod') if period: if period.get('start'): mapping.append( dict(folder_oid="SUBJECT", form_oid="CM", field_oid="CM.CMSTDTC", value=munge_to_rave_date( period.get('start').split('T')[0]), cdash_domain="CM", log_context_field="CM.CMINDC", log_context_value=ctxt)) if period.get('end'): mapping.append( dict(folder_oid="SUBJECT", form_oid="CM", field_oid="CM.CMENDTC", value=munge_to_rave_date( period.get('end').split('T')[0]), cdash_domain="CM", log_context_field="CM.CMINDC", log_context_value=ctxt)) # truncate the text, should look into how we get a proper name if resource.get('dosage'): dosage = resource.get('dosage')[0] cmtrt = dosage.get('text')[:198] mapping.append( dict(folder_oid="SUBJECT", form_oid="CM", field_oid="CM.CMTRT", value=cmtrt, cdash_domain="CM", log_context_field="CM.CMINDC", log_context_value=ctxt)) if dosage.get('route'): mapping.append( dict(folder_oid="SUBJECT", form_oid="CM", field_oid="CM.CMROUTE", value=dosage.get('route').get('text'), cdash_domain="CM", log_context_field="CM.CMINDC", log_context_value=ctxt)) odm = make_odm(STUDY, ENV, locationoid, subject_uuid, mapping, retrieved_datetime=datetime.datetime.now(), transfer_user='******', transfer_identifier=audit_id(), freeze=False) request = PostDataRequest(str(odm)) response = client.send_request(request)
if __name__ == '__main__': from _settings import accounts # Accounts is a dict of dicts like # accounts = {'innovate' : {'username': '******', # 'password':'******'}, # 'otherurl' : {'username': '******', # 'password':'******'}, # } acc = accounts['innovate'] rave = RWSConnection('innovate', acc['username'], acc['password']) print(rave.send_request(VersionRequest(), retries=3)) print(rave.send_request(BuildVersionRequest())) print(rave.send_request(DiagnosticsRequest())) print(rave.send_request(CacheFlushRequest()).istransactionsuccessful) print("Clinical studies request") studies = rave.send_request(ClinicalStudiesRequest(), timeout=60) print(len(studies)) print(rave.last_result.url) print(rave.last_result.text) print(rave.request_time) print("Metadata studies request") m_studies = rave.send_request(MetadataStudiesRequest()) print(len(m_studies))
dict(folder_oid="SUBJECT", form_oid="AE", field_oid="AETERM", value="AE 3", log_context_field="AEACNOTH", log_context_value="XX3"), dict(folder_oid="SUBJECT", form_oid="AE", field_oid="AESTDTC", value="03 Feb 1981", log_context_field="AEACNOTH", log_context_value="XX3"), dict(folder_oid="SUBJECT", form_oid="AE", field_oid="AEACNOTH", value="XX3", log_context_field="AEACNOTH", log_context_value="XX3", is_new=True), # Must send a line like this if you want to CREATE a record. ] odm = make_odm("Mediflex", "Dev", "MDSOL", "222 IJS", mapping_values, datetime.now(), "EHR Import User", audit_id()) request = PostDataRequest(str(odm)) print(str(odm)) rave = RWSConnection('innovate', 'username', 'password') print(rave.send_request(request))