Beispiel #1
0
 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))
Beispiel #2
0
 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))
Beispiel #3
0
 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 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
Beispiel #5
0
 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 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
Beispiel #7
0
def rws(ctx, url, username, password, raw, verbose, output, virtual_dir):
    if ctx.obj is None:
        ctx.obj = {}
    ctx.obj['URL'] = url
    ctx.obj['USERNAME'] = username
    ctx.obj['PASSWORD'] = password
    ctx.obj['VIRTUAL_DIR'] = virtual_dir
    if virtual_dir:
        if username and password:
            ctx.obj['RWS'] = RWSConnection(url,
                                           username,
                                           password,
                                           virtual_dir=virtual_dir)
        else:
            # Acceptable for UnAuth Requests
            ctx.obj['RWS'] = RWSConnection(url, virtual_dir=virtual_dir)
    else:
        if username and password:
            ctx.obj['RWS'] = RWSConnection(url, username, password)
        else:
            ctx.obj['RWS'] = RWSConnection(url)
    ctx.obj['RAW'] = raw
    ctx.obj['OUTPUT'] = output
    ctx.obj['VERBOSE'] = verbose
Beispiel #8
0
from rwslib.rws_requests.odm_adapter import *
from rwslib.rws_requests.biostats_gateway import *

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"
Beispiel #9
0
__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
Beispiel #10
0
            # Variable OID required
            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)
Beispiel #12
0
from rwslib.rws_requests.biostats_gateway import *
from rwslib.rwsobjects import RWSException
from rwslib import RWSConnection
import configparser
from rwslib.extras.audit_event.parser import parse

# reading the innovate credentials from the application config files.

config = configparser.ConfigParser()
config.read(r'F:\Codebase\Rave-Data-Ingestor\applicationconfig.ini')
generic_list = []

# making the connection using the rws connection object

rws_connection = RWSConnection(domain=config.get('medidata', 'domain'),
                               username=config.get('medidata', 'username'),
                               password=config.get('medidata', 'password'))
study_list = []


# maintaining the generic list for all the studies in the CRO
class clinical_masters:
    def get_clinical_studies():
        study_data = rws_connection.send_request(ClinicalStudiesRequest())
        return study_data

    def get_studies_list():
        study_data = clinical_masters.get_clinical_studies()
        studies_list = []
        for study_object in study_data:
            studies_list.append(study_object.studyname)
Beispiel #13
0
from rwslib.rws_requests.odm_adapter import *
from rwslib.rws_requests.biostats_gateway import *

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")
Beispiel #14
0
if __name__ == '__main__':
    # An example
    logging.basicConfig(level=logging.INFO)

    from rwslib._settings import accounts

    # Accounts is a dict of dicts like
    # accounts = {'innovate' : {'username': '******',
    #                          'password':'******'},
    #             'otherurl' : {'username': '******',
    #                          'password':'******'},
    #            }

    acc = accounts['innovate']
    rv = RWSConnection('innovate', acc['username'], acc['password'])

    path, _ = os.path.split(os.path.realpath(__file__))
    db_path = os.path.join(path, 'local_cvs.db')

    # Make sqllite connection
    logging.info('Opening/overwriting sqllite db %s' % db_path)
    conn = sqlite3.connect(db_path)

    # DBAdaptor takes care of all the database specific parts of the process
    db_adaptor = SQLLiteDBAdapter(conn)

    lcv = LocalCVBuilder(rv, 'SIMPLESTUDY', 'TEST', db_adaptor)
    lcv.execute()

    # Once complete you can do further work with the conn object, run SQL statements etc.
        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))
Beispiel #16
0
 def test_classes(self):
     test_eventer = TestEventer()
     conn = RWSConnection('innovate', "FAKE_USER", "FAKE_PASS")
     ODMAdapter(conn, "Mediflex", "Dev", test_eventer)