天天看點

一些更改的後端接口和代碼

tags: ACT iBreathCare

urls.py

url(r'^i111/',view.getPatientNotInGroup),
    url(r'^i112/',view.getOEHAll),
    url(r'^i5000/',view.getOutPatientDate),
    url(r'^i5001/',view.getEmgPatientDate),
    url(r'^i5002/',view.getInPatientDate),
    url(r'^i9996/',view.sendMessage),
    url(r'^i9998/',view.addVitualExpGroup),
    url(r'^i9999/',view.returnfilter),
    url(r'^i4999/',view.selectPatientFromGroup),
           

view.py

returnfilter

@login_required
@csrf_exempt
@PermissionCheck(3)
def returnfilter(request, data, D_id):
    resultAll = []
    result = []
    if data['group']!='':
        result = select.filterIdByGroup(data['group'].split('/'))
        resultAll.append(helper1(result))
    if data['sex']=='0':
        result1 = helper1(select.filterIdByGender('1'))
        result2 = helper1(select.filterIdByGender('2'))
        result1.extend(result2)
        resultAll.append(result1)
    else:
        result = select.filterIdByGender(data['sex'])
        resultAll.append(helper1(result))
    result = select.filterIdByAge((data['age'].split('/')[0]), (data['age'].split('/')[1]))
    resultAll.append(helper1(result))
    result = select.filterIdByHospitalTimes((data['hstime'].split('/')[0]), (data['hstime'].split('/')[1]), (data['date'].split('/')[0]), (data['date'].split('/')[1]))
    resultAll.append(helper1(result))
    result = select.filterIdByMedicalVisit((data['medicvisit'].split('/')[0]), (data['medicvisit'].split('/')[1]), (data['date'].split('/')[0]), (data['date'].split('/')[1]))
    resultAll.append(helper2(result))
    #result = select.filterIdByCAT((data['CAT'].split('/')[0]), (data['CAT'].split('/')[1]), (data['date'].split('/')[0]), (data['date'].split('/')[1]))
    #resultAll.append(helper1(result))
    #result = select.filterIdBySickerTimes(int(data['sicktime'].split('/')[0]),int(data['sicktime'].split('/')[1]))
    #resultAll.append(helper2(result))
    #result = select.filterIdByLungFunc((data['LungF'].split('/')[0]), (data['LungF'].split('/')[1]), (data['date'].split('/')[0]), (data['date'].split('/')[1]))

    tmpmessage = resultAll[0] if len(resultAll)!=0 else []
    for res in resultAll:
        tmpmessage = [val for val in res if val in tmpmessage]

    patientlist = select.getPatientsBasicInfo()
    patientmap = {}
    for patient in patientlist:
        patientmap[patient['P_id']]=patient

    message = []
    for temp in tmpmessage:
        if temp in patientmap:
            message.append(patientmap[temp])
    js = json.dumps(message)
    return HttpResponse(js)

           

sendMessage

@login_required
@csrf_exempt
@PermissionCheck(3)
def sendMessage(request,data,D_id):
    print 'send'
    print data
    message = {"result":"-1"}
    if(insert.sendMessage(data,D_id)):
        message = {"result":"0"}
    print message
    js = json.dumps(message)
    push.reply(data['P_id'],data['message'])
    return HttpResponse(js)

           

addVitualExpGroup

@login_required
@csrf_exempt
@PermissionCheck(2)
def addVitualExpGroup(request,data,D_id):
    message = []
    if insert.addExpGroup(D_id,data['name'],data['description'], data['date']) == True:
        groups = select.getExpGroups(D_id)
        newg_id = int(groups[len(groups)-1]['G_id'])
        print newg_id
        pids = tools.forCheckbox2(data, 'add')
        print pids
        if insert.addPatientToExpGroup(newg_id,pids):
            message.append({'g_id':newg_id})
    print message

    js = json.dumps(message)
    return HttpResponse(js)

           

selectPatientFromGroup

@login_required
@csrf_exempt
@PermissionCheck(3)
def selectPatientFromGroup(request, data, D_id):
    resultAll = []
    result = []
    if data['group']!='':
        result = select.filterIdByGroup(data['group'].split('/'))
        resultAll = (helper1(result))

    message = []
    patientlist = select.getPatientsBasicInfo()
    if resultAll == []:
        message = patientlist
    else:
        patientmap = {}
        for patient in patientlist:
            patientmap[patient['P_id']]=patient
        for temp in resultAll:
            if temp in patientmap:
                message.append(patientmap[temp])

    js = json.dumps(message)
    return HttpResponse(js)

           

getOutPatientDate

@login_required
@csrf_exempt
@PermissionCheck(3)
def getOutPatientDate(request, data, D_id):

    message = select.getOutPatientDate(data)

    js = json.dumps(message)
    return HttpResponse(js)

           

getEmgPatientDate

@login_required
@csrf_exempt
@PermissionCheck(3)
def getEmgPatientDate(request, data, D_id):

    message = select.getEmgPatientDate(data)

    js = json.dumps(message)
    return HttpResponse(js)

           

getInPatientDate

@login_required
@csrf_exempt
@PermissionCheck(3)
def getInPatientDate(request, data, D_id):

    message = select.getInPatientDate(data)

    js = json.dumps(message)
    return HttpResponse(js)

           

getPatientNotInGroup

@login_required
@csrf_exempt
@PermissionCheck(3)
def getPatientNotInGroup(request,data,D_id):
    message = {}
    list =[]
    pglist =[]
    temp = select.getAllExpGroupPatientsID()
    for item in temp:
        pglist.append(item[0])
    patientlist = select.getPatientsBasicInfo()
    print patientlist
    for patient in patientlist:
        print patient['P_id'],"patient"
        if patient['P_id'] not in pglist:
            list.append(patient)

    js = json.dumps(list)
    return HttpResponse(js)

           

getOEHAll

@login_required
@csrf_exempt
@PermissionCheck(3)
def getOEHAll(request,data,D_id):
    message = select.getOEHAll(data['P_id'], data['para'])
    # print type(list(message))
    js = json.dumps(list(message))
    # print js
    return HttpResponse(js)

           

select.py

filterIdByHospitalTimes

def filterIdByHospitalTimes(lower, upper, start=None, end=None):
    from django.utils.timezone import now
    if start==None or end==None or start=='' or end=='':
        end = now().date()
        start = datetime.date(end.year - 1, end.month, end.day)
    lower = int(lower) if lower!='' else 0
    upper = int(upper) if upper!='' else 0
    try:
        #此處應該從inhospitalinfo表中取出未合并相同項的P_id 再計算次數 不需要從medicalvisit中取數 但是略麻煩
        result = MedicalVisit.objects.filter(h_time__gte=lower, h_time__lte=upper).values_list('P_id').distinct()
        result2 = InHospitalInfo.objects.filter(date__gte=start,date__lte=end).values_list('P_id').distinct()
        if lower    != 0 and result2!=None and result!=None:
            result = [val for val in result2 if val in result]
        return result
    except Exception, e:
        tools.exceptionRecord('select.py', 'filterIdByHospitalTimes', e)

           

filterIdByGroup

def filterIdByGroup(group):
    resultAll = []
    try:
        for gid in group:
            result = PatientGroup.objects.filter(G_id=int(gid)).values_list('P_id')
            if result!=None:
                for res in result:
                    resultAll.append(res)
        return list(set(resultAll))
    except Exception, e:
        tools.exceptionRecord('select.py', 'filterIdByGroup', e)

           

filterIdByCAT 此處還需要繼續修改

def filterIdByCAT(lower, upper, start=None, end=None):
    from django.utils.timezone import now
    if start==None or end==None or start=='' or end=='':
        end = now().date()
        start = datetime.date(end.year - 1, end.month, end.day)
    lower = int(lower) if lower!='' else 0
    upper = int(upper) if upper!='' else 0
    try:
        result = CATandMRC.objects.filter(date__gte=start, date__lte=end,
                                          catSum__gte=lower, catSum__lte=upper).values_list('P_id').distinct()
        return result
    except Exception, e:
        tools.exceptionRecord('select.py', 'filterIdByCAT', e)


           

filterIdByLungFunc 此處需要繼續修改

def filterIdByLungFunc(lower, upper, start=None, end=None):
    from django.utils.timezone import now
    if start==None or end==None or start=='' or end=='':
        end = now().date()
        start = datetime.date(end.year - 1, end.month, end.day)
    lower = int(lower) if lower!='' else 0
    upper = int(upper) if upper!='' else 0
    try:
        result = LungFunc.objects.filter(date__gte=start, date__lte=end,
                                         GOLD__gte=lower, GOLD__lte=upper).values_list('P_id').distinct()
        return result
    except Exception, e:
        tools.exceptionRecord('select.py', 'filterIdByLungFunc', e)

           

filterIdBySickerTimes 此處有錯

def filterIdBySickerTimes(lower, upper, start=None, end=None):
    from django.utils.timezone import now
    lower = str(lower) if lower!='' else '0'
    upper = str(upper) if upper!='' else '0'
    if start==None or end==None or start=='' or end=='':
        end = now().date()
        start = datetime.date(end.year - 1, end.month, end.day)
    try:
        print 'sicktime'
        print str(start)
        result = []
        for i in Clinic.objects.raw('select distinct P_id from Website_clinic X where '
                                    '(select count(*) from Website_clinic Website_inhospitalinfo where date >= "' + str(start) + '" and P_id = X.P_id and Website_inhospitalinfo.acuteExac = "1") >= ' + lower + ' and '
                                    '(select count(*) from Website_clinic where date >= "' + str(start) + '" and P_id = X.P_id and acuteExac = "1") <= ' + upper + ';'):
            #Website_catandmrc Website_emergcallinfo Website_inhospitalinfo Website_outpatientserviceinfo
            result.append(i.P_id)
        print result
        return result
    except Exception, e:
        tools.exceptionRecord('select.py', 'filterIdBySickerTimes', e)

           

getMsg2Weeks

def getMsg2Weeks(P_id, type, num, times):
    num = int(num)
    part = num*int(times)
    if part<0:  part = 0;#new add
    if part>26: part = 26;
    end = now().date()-timedelta(weeks=part)
    #num = 20

    # end = datetime.datetime.strptime('2017-05-16', "%Y-%m-%d").date()
    start = end - timedelta(weeks=num)
    temp = {}
    message =[]
    record = []
    message.append(temp)
    for i in xrange(num*7 + 1):
        temp[str(i+1)] = str(start + timedelta(days=i))[5:10].replace("-","")
        record.append(str(start + timedelta(days=i))[0:4])
    print temp, len(temp)
    try:
        if type == 1:
            values = CATandMRC.objects.filter(date__gte=start, P_id=P_id).values('date', 'catSum', 'mrc')
        elif type == 2:
            values = PmExposure.objects.filter(date__gte=start, P_id=P_id).values('date','exposure')
        # else:
        #     return message
        for v in values:
            v['date']= str(v['date'])[5:10].replace("-","")
        message.append(list(values))
    except Exception, e:
        tools.exceptionRecord('select.py','getMsg2Weeks',e)
    message.append(record)
    return message

           

getMessage

def getMessage(data):
     try:
        start = datetime.date.today().replace(day=1)
        print 'start'
        print datetime.date.today()
        print start
        text = MessageText.objects.filter(Q(date_upload__gte=start)).values("id","P_id","date","date_upload","content","sign")
        print text
        for t in text:
            t['type'] = "0"
        audio = MessageAudio.objects.filter(Q(date_upload__gte=start)).values("id","P_id","date","date_upload","content","sign")
        for a in audio:
            a['type'] = "1"
        q = list(chain(text,audio))
        # print q
        q = sorted(q, key=lambda q:q['date_upload'])
        q = sorted(q, key=lambda q:q['P_id'])
        #q = sorted(q, key=lambda q:q['sign'], reverse=True)
        a = {}
        for v in q:
            if v['P_id'] not in a:
                a[v['P_id']] = {"P_id":v['P_id'],"content":[{"date":str(v['date']),"date_upload":str(v['date_upload']),"content":v['content'],"sign":v['sign'],"type":v['type']}]}
            else:
                a[v['P_id']]['content'].append({"date":str(v['date']),"date_upload":str(v['date_upload']),"content":v['content'],"sign":v['sign'],"type":v['type']})
        result = list(a.values())
        print result
        return result
     except Exception, e:
        tools.exceptionRecord('select.py', 'getMessage', e)
        return {"result":"-1"}

           
def getOutPatientDate(data):
    try:
         temp = OutPatientServiceInfo.objects.all().values('date')
         result = []
         for i in temp:
             i['date'] = str(i['date'])
             result.append(i)
         return result
    except Exception, e:
         tools.exceptionRecord('select.py', 'getOutPatientDate', e)

           
def getEmgPatientDate(data):
    try:
         temp = EmergCallInfo.objects.all().values('date')
         result = []
         for i in temp:
             i['date'] = str(i['date'])
             result.append(i)
         return result
    except Exception, e:
         tools.exceptionRecord('select.py', 'getEmgPatientDate', e)

           
def getInPatientDate(data):
    try:
        temp = InHospitalInfo.objects.all().values('date')
        result = []
        for i in temp:
            i['date'] = str(i['date'])
            result.append(i)
        return result
    except Exception, e:
         tools.exceptionRecord('select.py', 'getInPatientDate', e)

           

羅小萌同學的select部分未加入

insert.py

def sendMessage(data,D_id):
    try:
        d = datetime.datetime.strptime('1970-01-01', "%Y-%m-%d").date()
        newobj = MessageText(P_id = data['P_id'],D_id=D_id,content = data['message'],date = d,sign=data['sign'])
        newobj.save()
        return True
    except Exception, e:
        tools.exceptionRecord('insert.py','sendMessage',e)
        return False

           

models.py

class MessageText(models.Model):
    P_id = models.CharField(max_length=12, null=False)
    D_id = models.CharField(max_length=12, default='')
    content = models.CharField(max_length=200)
    date = models.DateField(null=False)
    date_upload = models.DateTimeField(auto_now_add=True)
    sign = models.CharField(max_length=1, default="1")

class MessageAudio(models.Model):
    P_id = models.CharField(max_length=12, null=False)
    D_id = models.CharField(max_length=12, default='')
    content = models.FileField(upload_to="AUDIO")
    date = models.DateField(null=False)
    date_upload = models.DateTimeField(auto_now_add=True)
    sign = models.CharField(max_length=1, default="1")

           
ACT