Example #1
0
 def post(self, patient_medical_id):
     """
     提交病历标签
     :param patient_medical_id:
     :return:
     """
     data = request.jsondata
     symptom = data.get("symptom")  # 症状
     follow_symptom = data.get("follow_symptom")  # 伴随症状
     disease_time = data.get("disease_time")  # 发病时间
     stage = data.get("stage")  # 分期
     pathology = data.get("pathology")  # 病理分型
     check_item = data.get("check_item")  # 检查项目
     medical_history = data.get("medical_history")  # 相关病史
     operation = data.get("operation")  # 手术
     treatment = data.get("treatment")  # 治疗
     complication = data.get("complication")  # 合并症
     patient_medical = Query(PatientMedical).get(patient_medical_id)
     try:
         label = Query(PatientMedicalLabel).equal_to("patient_medical", patient_medical).first()
     except LeanCloudError, e:
         if e.code == 101:
             label = PatientMedicalLabel()
             label.set("patient_medical", patient_medical)
         else:
             raise e
Example #2
0
 def delete(self, doctor_id, patient_medical_id):
     """
     取消接收
     :param patient_medical_id:
     :return:
     """
     patient_medical = Query(PatientMedical).get(patient_medical_id)
     doctor_medical = Query(DoctorMedicalRelation).equal_to("doctor_id", doctor_id).equal_to("patient_medical",
                                                                                             patient_medical).first()
     doctor_medical.set("is_cancel", True)
     doctor_medical.save()
     return patient_medical
Example #3
0
    def get(self, patient_medical_id):
        """
        通过创建好的病历id,获取创建时候的过程,同时带着病历模板信息
        :param patient_medical_id: 病历id
        :return:
        """
        app.logger.debug(u"获取病历过程,患者病历id:%s" % patient_medical_id)

        patient_medical = Query(PatientMedical).get(patient_medical_id)
        processes_list = json.loads(patient_medical.get("processes_json"))
        processes = []
        for _process in processes_list:
            try:
                process = Query(MedicalProcess).get(_process['process_id'])
            except LeanCloudError, e:
                if e.code == 101:
                    continue
            process.set("fill", True if _process['head'] else False)
            process.set("base_url", "http://m.ihaoyisheng.com/medical/processes/%s?patient_medical_id=%s" % (process.id, patient_medical_id))
            processes.append(process)
Example #4
0
 def post(self, patient_id):
     """
     提交患者个人信息
     :param patient_id:
     :return:
     """
     data = request.jsondata
     name = data.get("name")
     sex = data.get("sex")
     birth = datetime.datetime.strptime(data.get("birth"), "%Y-%m-%d")
     height = data.get("height")
     weight = data.get("weight")
     try:
         patient_info = Query(PatientInfo).equal_to("patient_id", patient_id).first()
     except LeanCloudError, e:
         if e.code == 101:
             patient_info = PatientInfo()
             patient_info.set("patient_id", patient_id)
             patient_info.save()
         else:
             raise e
 def post(self):
     data = request.jsondata
     username = data.get('username')
     password = data.get('password')
     try:
         User().login(username, password)
     except LeanCloudError:
         abort(403, message=u"认证失败")
     else:
         user = Query(User).equal_to("username", username).first()
         try:
             token = Query(AuthToken).equal_to("user", user).greater_than("expires_time", datetime.datetime.now()).first()
         except LeanCloudError, e:
             if e.code == 101:  # 服务端对应的 Class 还没创建
                 expires_date = datetime.datetime.now() + datetime.timedelta(hours=8)
                 token = AuthToken()
                 token.set("user", user)
                 token.set("expires_time", expires_date)
                 token.set("access_token", str(uuid.uuid1()))
                 token.save()
                 return {
                     "access_token": token.access_token,
                     "expires_time": token.expires_time.isoformat()
                 }
             else:
                 raise e
         else:
Example #6
0
 def post(self, patient_medical_id):
     """
     我要患者-接收患者
     :return:
     """
     doctor_id = request.jsondata.get("doctor_id")
     patient_medical = Query(PatientMedical).get(patient_medical_id)
     try:
         doctor_medical = Query(DoctorMedicalRelation).equal_to("doctor_id", doctor_id).equal_to("patient_medical",
                                                                                                 patient_medical).first()
     except LeanCloudError, e:
         if e.code == 101:
             doctor_medical = DoctorMedicalRelation()
             doctor_medical.set("doctor_id", doctor_id)
             doctor_medical.set("patient_medical", patient_medical)
             doctor_medical.set("is_cancel", False)
             doctor_medical.save()
Example #7
0
    def post(self, patient_medical_id):
        """
        创建病历过程
        :param patient_id: 病历id
        :return:
        """
        data = request.jsondata
        result_json = data.get("result_json")
        creater_id = data.get("creater_id")
        process_id = data.get("process_id")
        if not (creater_id.startswith("doctor-") or creater_id.startswith("patient-")):
            abort(400, message=u"创建者id不正确")
        patient_medical = Query(PatientMedical).get(patient_medical_id)

        process = Query(MedicalProcess).get(process_id)
        patient_process = PatientMedicalProcess()
        patient_process.set("process", process)
        patient_process.set("result_json", result_json)
        patient_process.set("patient_id", patient_medical.patient_id)
        patient_process.set("creater_id", creater_id)
        patient_process.save()

        # update medical record head
        processes_list = json.loads(patient_medical.get("processes_json"))
        for _process in processes_list:
            if _process['process_id'] == process_id:
                _process['head'] = patient_process.id
                break
        else:
            abort(400, message=u'更新过程head失败')

        patient_medical.set("processes_json", json.dumps(processes_list))

        if processes_list[0].get("head") and processes_list[1].get("head"):
            patient_medical.set("finish", True)
            patient_medical.save()
        else:
            patient_medical.set("finish", False)
            patient_medical.save()

        patient_medical.save()

        return patient_process
Example #8
0
             abort(401, message=u"创建失败,未完成病历不能超过3个。")
     except LeanCloudError, e:
         if e.code == 101:
             pass
         else:
             raise e
 try:
     patient_medical = Query(PatientMedical).equal_to("medical", medical).equal_to("patient_id", patient_id).first()
     if patient_medical:
         if creater_id.startswith("doctor-"):
             if not (patient_medical.get("creater_id") == creater_id or creater_id == "doctor-100000"):
                 abort(401, message=u"该患者病历已被其他医生创建")
         elif creater_id.startswith("patient-"):
             if patient_medical.get("patient_id") != patient_id:
                 abort(401, message=u"患者只能给自己创建病历")
         patient_medical.set("first_create", False)
         return patient_medical
 except LeanCloudError, e:
     if e.code == 101:
         pass
     else:
         raise e
 patient_medical = PatientMedical()
 patient_medical.set("creater_id", creater_id)
 # 如果是医生创建,接收者就是医生id,如果是值班医生或者患者创建,那么没有接收者
 if creater_id.startswith("doctor-"):
     patient_medical.set("receive_doctor_id", int(creater_id[7:]))
 else:
     patient_medical.set("receive_doctor_id", -1)
 patient_medical.set("patient_id", patient_id)
 patient_medical.set("medical", medical)