Example #1
0
 def _testCreateCase(self):        
     oldcasecount = Case.objects.all().count()
     oldevents = CaseEvent.objects.all().count()
     
     
     user = User.objects.get(username='******')
     newcase = Case()
     newcase.description = "this is a case made by the test case"
     newcase.opened_by = user
     newcase.assigned_date = datetime.utcnow()
     newcase.assigned_to = user
     
     newcase.category = Category.objects.all()[0]
     newcase.status = Status.objects.all()[0]
     newcase.priority = Priority.objects.all()[0]
     
     newcase.save()
     
     #is the thing created?
     self.assertEqual(Case.objects.all().count(), oldcasecount + 1)
     self.assertEqual(CaseEvent.objects.all().count(), oldevents + 1)
     
     #verify that the case count created has created a new caseevent
     events = CaseEvent.objects.filter(case=newcase)
     self.assertEqual(1,events.count())
     #verify that said case count is a new case event of type "open"
     self.assertEqual("event-open", events[0].activity.event_class)
Example #2
0
def create_case(user, all_users, case_no):    
    newcase = Case()
    newcase.body = "Aliquam ultricies in. Nisl suspendisse ut curabitur nullam, libero magna, id velit quis vitae at. In massa gravida, luctus consequat quis integer, amet amet diam ornare nascetur libero ultrices, lorem urna et. Hac vestibulum, turpis sed sapien cumque. Morbi justo semper lorem gravida, interdum a ante mattis augue at semper, aliquam ridiculus, vulputate repellendus, mi sem in non. Vitae nunc egestas, consectetuer nibh est, ac vestibulum vitae augue ut mauris, ante tortor, velit gravida nisl pellentesque dolor."
    newcase.opened_by = user
    newcase.last_edit_by = user
    
    newcase.assigned_to = all_users[random.randint(0,len(all_users)-1)]
    newcase.assigned_date = datetime.utcnow() - timedelta(days=random.randint(0,720))
    
    #newcase.category = Category.objects.all()[random.randint(0, Category.objects.all().count()-1)]
    newcase.category = Category.objects.all()[random.randint(0, 1)] #right now only support issue/question categories, so only the first two categories
    #newcase.status = Status.objects.all()[random.randint(0, Status.objects.all().count() -1)]
    
    #set the default opened case
    newcase.status = Status.objects.all().filter(category=newcase.category).filter(state_class=constants.CASE_STATE_OPEN)[0]
    
    newcase.priority = Priority.objects.all()[random.randint(0, Priority.objects.all().count() -1)]    

    if newcase.category.slug == "Question":
        newcase.description = question_arr[random.randint(0,len(question_arr))-1]
    elif newcase.category.slug == "Issue":
        newcase.description = question_arr[random.randint(0,len(question_arr))-1]

    newcase.save()
    return newcase
Example #3
0
def inject_case_data(patient, event_arr):
    """
    Pull data from the event_arr and assign it to a patient if they were new inbound triage cases
    """    
    print "Adding monitoring event to patient %s" % (patient)
    startdelta = timedelta(minutes=random_inject.randint(1,200)) #sometime in the past 3
    main_info = event_arr[0:4]            
    category_txt = main_info[0].strip()            
    title = main_info[1].strip()
    body = main_info[2].strip()
    source = main_info[3].strip()

    if title.count("%s") == 1:
        title = title % patient
    if body.count("%s") == 1:
        body = body % patient\

    newcase = Case()
    newcase.description = title
    newcase.body = body
    newcase.category = Category.objects.get(slug=category_txt)
    
    creator=None
    if source.lower() == 'provider':
        creator = careteam.primary_provider.user            
    elif source.lower() == 'caregiver':
        creator = careteam.caregivers.all()[0]
    elif source.lower() == 'patient':
        creator = careteam.patient.user
    elif source.lower() == 'home monitor':
        creator = User.objects.get(username ='******')
    
    if creator == None:
        print "no creator, wtf"
    newcase.opened_by = creator    
    newcase.opened_date = datetime.utcnow() - startdelta
    newcase.last_edit_by = creator
    newcase.last_edit_date = newcase.opened_date
    newcase.status = Status.objects.all().filter(category=newcase.category).filter(state_class=constants.CASE_STATE_OPEN)[0]

    newcase.assigned_to = careteam.primary_provider.user
    newcase.assigned_date = newcase.opened_date 

    if source.lower() == 'home monitor':
        newcase.priority = Priority.objects.all()[0]
    else:
        newcase.priority = Priority.objects.all()[random_inject.randint(0, Priority.objects.all().count() -1)]
    newcase.save(unsafe=True)
    careteam.add_case(newcase)
Example #4
0
def load_interaction(careteam, interaction_arr):
    """
    works through the entire array to simulate the case lifecycle
    """
    startdelta = timedelta(days=random.randint(1,7)) #sometime in the past week
    
    
    main_info = interaction_arr[0:4]
    category_txt = main_info[0].strip()
    title = main_info[1].strip()
    body = main_info[2].strip()
    source = main_info[3].strip()
    
    if title.count("%s") == 1:
        title = title % careteam.patient.user.first_name
    if body.count("%s") == 1:
        body = body % careteam.patient.user.first_name
    
    newcase = Case()
    newcase.description = title
    newcase.body = body
    newcase.category = Category.objects.get(slug=category_txt)
    
    creator=None
    if source.lower() == 'provider':
        creator = careteam.primary_provider.user            
    elif source.lower() == 'caregiver':
        creator = careteam.caregivers.all()[0]
    elif source.lower() == 'patient':
        creator = careteam.patient.user
    elif source.lower() == 'home monitor':
        creator = User.objects.get(username ='******')
    
    if creator == None:
        print "no creator, wtf: " + str(interaction_arr)
    newcase.opened_by = creator    
    newcase.opened_date = datetime.utcnow() - startdelta
    newcase.last_edit_by = creator
    newcase.last_edit_date = newcase.opened_date
    newcase.status = Status.objects.all().filter(category=newcase.category).filter(state_class=constants.CASE_STATE_OPEN)[0]

    newcase.assigned_to = careteam.providers.all()[random.randint(0,careteam.providers.all().count()-1)].user
    newcase.assigned_date = newcase.opened_date 

    newcase.priority = Priority.objects.all()[random.randint(0, Priority.objects.all().count() -1)]    
    newcase.save(unsafe=True)
    careteam.add_case(newcase)
    
    
    
    subarr = interaction_arr[4:]
    while len(subarr) >= 3:
        resp = subarr[0].strip()
        src = subarr[1].lower().strip()
        evt = subarr[2].lower().strip()
        
        if resp == '' and src == '' and evt == '':
            break
        responder=None
        if src.lower() == 'provider':
            responder = careteam.primary_provider.user            
        elif src.lower() == 'caregiver':
            responder = careteam.caregivers.all()[0]
        elif src.lower() == 'patient':
            responder = careteam.patient.user
        if responder == None:
            print "wtf: " + str(subarr)
        
        evt = CaseEvent()
        evt.case = newcase
        if resp.count("%s") == 1:
            resp = resp % careteam.patient.user.first_name
        evt.notes = resp
        evt.activity = ActivityClass.objects.filter(category=newcase.category)\
            .filter(event_class=constants.CASE_EVENT_COMMENT)[0]
        evt.created_by = responder
        startdelta = startdelta - timedelta(minutes=random.randint(4,480))
        evt.created_date = datetime.utcnow() - startdelta
        evt.save(unsafe=True)
            
        
        if len(subarr[3:]) >= 3:
            subarr = subarr[3:]
        else:
            break
Example #5
0
def create_homemonitoring_alert(num_alerts, careteam):
    alerts = [
("Patient weight has dropped over 10 lbs","Please contact patient immediately for dietary assessment", 1),
("Patient has been vomiting more than 48 hours after treatment","Please contact patient immediately - if non responsive, call for an ambulance",1),
("Patient has shortness of breath/chest pain","Contact patient immediately and recommend checking in to ED",1),
("Patient has pain in a new place","Call patient for pain assessment",4),
("Patient has severe nausea", "Contact patient immediately",3),
("Patient is experiencing hearing loss","Check for other neuro side effects",4),
("Patient has not submitted daily measurements","Contact patient and caregiver immediately",1),
("Patient daily measurements incomplete", "Advise patient to retest full results",4)              
              ]
    random.shuffle(alerts)
    
    for n in range(0, num_alerts):
        newcase = Case()
               
        newcase.description = "%s" % alerts[n][0]
        newcase.body = alerts[n][1]
        
        print "\tNew Alert: %s" % alerts[n][0]
        newcase.category = Category.objects.get(category='HomeMonitoring')
        newcase.opened_by = User.objects.get(id=2) # the hard coded ashand system messages
        newcase.last_edit_by = User.objects.get(id=2) # the hard coded ashand system messages
        newcase.assigned_to = careteam.primary_provider.user
        newcase.status = Status.objects.all().filter(category=newcase.category).filter(state_class=constants.CASE_STATE_OPEN)[0]
        
        td = timedelta(hours=alerts[n][2])
        newcase.next_action_date = datetime.utcnow() + td
        newcase.priority= Priority.objects.all()[0]
        newcase.save()
        careteam.add_case(newcase)