Example #1
0
 def test_complete_studies(self):
     ec = Client()
     id = 28795402
     ncts = [
         'NCT00031265', 'NCT02199847', 'NCT00902980', 'NCT01266824',
         'NCT03418909'
     ]
     article = ec.efetch(db='pubmed', id=id)
     for i, a in enumerate(article):
         crud.pubmedarticle_to_db(a, 'systematic_reviews')
     for n in ncts[:3]:
         crud.review_trial(id, n, False, 'included', 'testuser_1', 1)
     for n in ncts[3:]:
         crud.review_trial(id, n, False, 'relevant', 'testuser_1', 1)
     crud.complete_studies(id, True)
     metadata = crud.review_medtadata_db(id)
     self.assertEqual(metadata['included_complete'], True)
     trials = crud.get_review_trials_fast(id)['reg_trials']
     for i, t in enumerate(trials):
         if t['nct_id'] in ncts[:3]:
             self.assertEqual(trials[i]['verified'], True)
             self.assertEqual(trials[i]['relationship'], 'included')
         if t['nct_id'] in ncts[3:]:
             self.assertEqual(trials[i]['verified'], False)
             self.assertEqual(trials[i]['relationship'], 'relevant')
     crud.complete_studies(id, False)
     trials = crud.get_review_trials_fast(id)['reg_trials']
     for i, t in enumerate(trials):
         if t['nct_id'] in ncts[:3]:
             self.assertEqual(trials[i]['verified'], False)
             self.assertEqual(trials[i]['relationship'], 'included')
Example #2
0
 def test_review_lock_status(self):
     ec = Client()
     ids = [28616955, 28800192, 28797191]
     for id in ids:
         self.assertIsNone(crud.review_medtadata_db(id))
     article = ec.efetch(db='pubmed', id=ids)
     for i, a in enumerate(article):
         crud.pubmedarticle_to_db(a, 'systematic_reviews')
         self.assertEqual(crud.review_lock_status(ids[i]), False)
         crud.complete_studies(ids[i], True)
         self.assertEqual(crud.review_lock_status(ids[i]), True)
         crud.complete_studies(ids[i], False)
         self.assertEqual(crud.review_lock_status(ids[i]), False)
Example #3
0
def included_complete():
    """
    mark the current review as having a complete list of included trials
    @return: success/failure message
    """
    if not current_user.is_authenticated:
        return "Sorry! This action is only available to logged-in users", 400, {
            'ContentType': 'application/json'
        }
    data = request.json
    review = data['review_id']
    complete = data['value']
    crud.complete_studies(review, complete)
    return json.dumps({
        'success': True,
        'message': 'Thanks for verifying!'
    }), 200, {
        'ContentType': 'application/json'
    }
Example #4
0
 def test_add_trial_to_locked(self):
     ec = Client()
     ids = [28616955, 28800192, 28797191]
     nct_ids = ['NCT00195624', 'NCT00200889', 'NCT00207688']
     test_nct = 'NCT00695409'
     for id in ids:
         self.assertIsNone(crud.review_medtadata_db(id))
     article = ec.efetch(db='pubmed', id=ids)
     for i, a in enumerate(article):
         crud.pubmedarticle_to_db(a, 'systematic_reviews')
         crud.review_trial(ids[i], nct_ids[i], False, 'included',
                           'testuser_1', 1, 'up')
         crud.complete_studies(ids[i], True)
         crud.review_trial(ids[i], test_nct, False, 'included',
                           'testuser_1', 1, 'up')
         self.assertIsNone(
             crud.check_existing_review_trial(ids[i], test_nct))
         crud.complete_studies(ids[i], False)
         crud.review_trial(ids[i], test_nct, False, 'included',
                           'testuser_1', 1, 'up')
         self.assertIsNotNone(
             crud.check_existing_review_trial(ids[i], test_nct))
Example #5
0
 def test_get_locked(self):
     ec = Client()
     ids = [28569363, 29202845, 28933578]
     for id in ids:
         self.assertIsNone(crud.review_medtadata_db(id))
     article = ec.efetch(db='pubmed', id=ids)
     for i, a in enumerate(article):
         crud.pubmedarticle_to_db(a, 'systematic_reviews')
     self.assertIsNone(crud.get_locked())
     crud.complete_studies(ids[0], True)
     self.assertEqual(crud.get_locked(), [ids[0]])
     crud.complete_studies(ids[1], True)
     self.assertEqual(crud.get_locked(), [ids[0], ids[1]])
     crud.complete_studies(ids[2], True)
     self.assertEqual(crud.get_locked(), [ids[0], ids[1], ids[2]])
     crud.complete_studies(ids[1], False)
     self.assertEqual(crud.get_locked(), [ids[0], ids[2]])
Example #6
0
 def test_review_trial(self):
     ec = Client()
     id = 28616955
     nct_ids = ['NCT00195624', 'NCT00200889', 'NCT00207688']
     article = ec.efetch(db='pubmed', id=id)
     for i, a in enumerate(article):
         crud.pubmedarticle_to_db(a, 'systematic_reviews')
     self.assertEqual(len(crud.get_review_trials_fast(id)['reg_trials']), 0)
     # trial is inserted with correct values
     crud.review_trial(id, nct_ids[0], False, 'relevant', 'testuser_1', 1)
     trials = crud.get_review_trials_fast(id)['reg_trials']
     for i, t in enumerate(trials):
         if t['nct_id'] == nct_ids[0]:
             self.assertEqual(trials[i]['nct_id'], nct_ids[0])
             self.assertEqual(trials[i]['upvotes'], 1)
             self.assertEqual(trials[i]['downvotes'], 0)
             self.assertEqual(trials[i]['voters'], 'testuser_1')
             self.assertEqual(trials[i]['verified'], False)
             self.assertEqual(trials[i]['relationship'], 'relevant')
     # when the trial is added again by another user, it should recieve an upvote
     crud.review_trial(id, nct_ids[0], False, 'relevant', 'testuser_2', 2)
     trials = crud.get_review_trials_fast(id)['reg_trials']
     for i, t in enumerate(trials):
         if t['nct_id'] == nct_ids[0]:
             self.assertEqual(trials[i]['nct_id'], nct_ids[0])
             self.assertEqual(trials[i]['upvotes'], 2)
             self.assertEqual(set(trials[i]['voters'].split(', ')),
                              {'testuser_1', 'testuser_2'})
             self.assertEqual(trials[i]['downvotes'], 0)
             self.assertEqual(trials[i]['verified'], False)
             self.assertEqual(trials[i]['relationship'], 'relevant')
     # adding an existing trial from the relevant column as included will move it
     crud.review_trial(id, nct_ids[0], False, 'included', 'testuser_2', 2)
     trials = crud.get_review_trials_fast(id)['reg_trials']
     for i, t in enumerate(trials):
         if t['nct_id'] == nct_ids[0]:
             self.assertEqual(trials[i]['nct_id'], nct_ids[0])
             self.assertEqual(trials[i]['upvotes'], 2)
             self.assertEqual(set(trials[i]['voters'].split(', ')),
                              {'testuser_1', 'testuser_2'})
             self.assertEqual(trials[i]['downvotes'], 0)
             self.assertEqual(trials[i]['verified'], False)
             self.assertEqual(trials[i]['relationship'], 'included')
     # test included trial
     crud.review_trial(id, nct_ids[1], False, 'included', 'testuser_2', 2)
     trials = crud.get_review_trials_fast(id)['reg_trials']
     for i, t in enumerate(trials):
         if t['nct_id'] == nct_ids[1]:
             self.assertEqual(trials[i]['nct_id'], nct_ids[1])
             self.assertEqual(trials[i]['upvotes'], 1)
             self.assertEqual(trials[i]['voters'], 'testuser_2')
             self.assertEqual(trials[i]['downvotes'], 0)
             self.assertEqual(trials[i]['verified'], False)
             self.assertEqual(trials[i]['relationship'], 'included')
     # trying to insert a relevant trial when it's already included will give a vote but not move the trial
     crud.review_trial(id, nct_ids[1], False, 'relevant', 'testuser_1', 1)
     trials = crud.get_review_trials_fast(id)['reg_trials']
     for i, t in enumerate(trials):
         if t['nct_id'] == nct_ids[1]:
             self.assertEqual(trials[i]['nct_id'], nct_ids[1])
             self.assertEqual(trials[i]['upvotes'], 2)
             self.assertEqual(set(trials[i]['voters'].split(', ')),
                              {'testuser_1', 'testuser_2'})
             self.assertEqual(trials[i]['downvotes'], 0)
             self.assertEqual(trials[i]['verified'], False)
             self.assertEqual(trials[i]['relationship'], 'included')
     # except for user_id 17 which can move included to relevant
     crud.review_trial(id,
                       nct_ids[1],
                       False,
                       'relevant',
                       'cochranebot',
                       17,
                       vote_type='down')
     trials = crud.get_review_trials_fast(id)['reg_trials']
     for i, t in enumerate(trials):
         if t['nct_id'] == nct_ids[1]:
             self.assertEqual(trials[i]['nct_id'], nct_ids[1])
             self.assertEqual(trials[i]['upvotes'], 2)
             self.assertEqual(set(trials[i]['voters'].split(', ')),
                              {'cochranebot', 'testuser_1', 'testuser_2'})
             self.assertEqual(trials[i]['downvotes'], 1)
             self.assertEqual(trials[i]['verified'], False)
             self.assertEqual(trials[i]['relationship'], 'relevant')
     # if the review is locked and the trial is included, allow a vote
     crud.review_trial(id, nct_ids[2], False, 'included', 'testuser_1', 1)
     crud.complete_studies(id, True)
     crud.review_trial(id, nct_ids[2], False, 'included', 'testuser_2', 2)
     trials = crud.get_review_trials_fast(id)['reg_trials']
     for i, t in enumerate(trials):
         if t['nct_id'] == nct_ids[2]:
             self.assertEqual(trials[i]['nct_id'], nct_ids[2])
             self.assertEqual(trials[i]['upvotes'], 2)
             self.assertEqual(set(trials[i]['voters'].split(', ')),
                              {'testuser_1', 'testuser_2'})
             self.assertEqual(trials[i]['downvotes'], 0)
             self.assertEqual(trials[i]['verified'], True)
             self.assertEqual(trials[i]['relationship'], 'included')