示例#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))
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
示例#3
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
示例#4
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
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)
示例#7
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)
示例#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")
        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))
示例#10
0
 def test_classes(self):
     test_eventer = TestEventer()
     conn = RWSConnection('innovate', "FAKE_USER", "FAKE_PASS")
     ODMAdapter(conn, "Mediflex", "Dev", test_eventer)