填报接口的开发

发布时间 2023-04-23 20:31:41作者: 葬爱_坤疤

接口的开发:

每周填报

患者每周都将自己的情况上传上去,根据上传的数据要对数据进行预警,那些指数出现问题。是一周来进行判断。

接口的前期想法:其中关联着很多的表,运健写了有一些接口是决定我这边的接口要如何的去写,比如是他写的运动下拉表列,没有将指定的运动id传进去,所以我要根据对应的内容来:比如说这个患者运动了“3次”,我就要从这个3次中,读取指定的id,到用户表user中去将读取出来的运动的id,修改到用户表中去。其中的数据来自多个表,我不得不新建了DTO来帮助我写接口,将每个表中需要的数据都复制到DTO中

  • 其中设计到三张表(Tbuser用户表,TbbBloodSugar血糖表,TbBlood血压表)

  • Controller

    • /**
      * 每周填报
      * @param weeklyReport
      * @return
      */
      @PutMapping("/weeklyreport")
      public AjaxResult weeklyreport(WeeklyReport weeklyReport){
         boolean b = tbUserService.weeklyReport(weeklyReport);
         if (b){
             return AjaxResult.success("上传成功");
        }else {
             return AjaxResult.error("上传失败,请完善填写的数据");
        }

      }
  • ITbuserService

    • /**
      *每周填报
      * @param weeklyReport
      * @return
      */
      public boolean weeklyReport(WeeklyReport weeklyReport);
  • TbuserServiceImpl

    • **
      * 每周填报
      * @param weeklyReport
      * @return
      */
      @Override
      public boolean weeklyReport(WeeklyReport weeklyReport) {
         boolean update1=false;
         boolean update2=false;
         boolean update=false;
         //查询出指定的患者
         LambdaQueryWrapper<TbUser> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.eq(TbUser::getUserId,weeklyReport.getUserId());
         TbUser one = iTbUserService.getOne(lambdaQueryWrapper);
         //修改身高
         one.setHeight(weeklyReport.getHeight());
         //修改体重
         one.setWeight(weeklyReport.getWeight());
         //修改胸围
         one.setChestMeasurement(weeklyReport.getChestMeasurement());




         //—————————————————————————修改运动次数———————————————————————
         //获取修改的运动次数中文字
         String motionNumber = weeklyReport.getMotionNumber();

         LambdaQueryWrapper<TbUserMotion> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
         lambdaQueryWrapper1.eq(TbUserMotion::getMotionNumber,motionNumber);
         //找对应的数据返回运动id
         TbUserMotion one1 = iTbUserMotionService.getOne(lambdaQueryWrapper1);
         int motionId = one1.getMotionId();
         //修改运动次数
         one.setMotionNumber(motionId);



         //—————————————————————————修改运动时间———————————————————————
         //获取修改运动时间的中文字
         String motionTime = weeklyReport.getMotionTime();

         LambdaQueryWrapper<TbUserMotion> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
         lambdaQueryWrapper2.eq(TbUserMotion::getMotionTime,motionTime);
         //找对应的数据返回运动id
         TbUserMotion one2 = iTbUserMotionService.getOne(lambdaQueryWrapper2);
         int motionId1 = one2.getMotionId();

         //修改运动的时间
         one.setMotionTime(motionId1);


         update = iTbUserService.update(one, lambdaQueryWrapper);

         //—————————————————————————修改血压的舒张压———————————————————————

         //获取用户血压的id
         String bloodId = one.getBloodId();
         LambdaQueryWrapper<TbBlood> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
         lambdaQueryWrapper3.eq(TbBlood::getBloodId,bloodId);
         //找到指定的血压id
         TbBlood one3 = iTbBloodService.getOne(lambdaQueryWrapper3);

         //获取修改舒张压的数据
         Long diastolicPressure = weeklyReport.getDiastolicPressure();
         one3.setDiastolicPressure(diastolicPressure);

         //获取修改收缩压的数据
         Long systolicPressure = weeklyReport.getSystolicPressure();
         one3.setSystolicPressure(systolicPressure);

         //获取修改血压测量的时间
         Date bloodPressureTime = weeklyReport.getBloodPressureTime();
         one3.setBloodPressureTime(bloodPressureTime);

         update1 = iTbBloodService.update(one3, lambdaQueryWrapper3);

         //—————————————————————————修改血糖———————————————————————

         //读取用户的血糖id
         String bloodSugarId = one.getBloodSugarId();
         LambdaQueryWrapper<TbBloodSugar> lambdaQueryWrapper4 = new LambdaQueryWrapper<>();
         lambdaQueryWrapper4.eq(TbBloodSugar::getBloodSugarId,bloodSugarId);
         //找到指定的血糖id
         TbBloodSugar one4 = iTbBloodSugarService.getOne(lambdaQueryWrapper4);


         //获取并修改餐后血糖
         Long postprandialBloodSugar = weeklyReport.getPostprandialBloodSugar();
         one4.setPostprandialBloodSugar(postprandialBloodSugar);
         //获取并修改空腹血糖
         Long fastingBloodSugar = weeklyReport.getFastingBloodSugar();
         one4.setFastingBloodSugar(fastingBloodSugar);

         update2 = iTbBloodSugarService.update(one4, lambdaQueryWrapper4);


         return update && update1 && update2;
      }

 

 

月季填报

月季填报是每个月的要对患者的一些变化不大数据,要每月进行上传,也是供给预警来判断的。这个接口和周填报表是同一个理念的,其中要修改的数据大部分也单表就可以找到,比如血脂,总胆固醇,高密度脂蛋白,低密度脂蛋白。这个接口比周填报要简单点,其中比较麻烦的颈动脉超声检查,他有这自己独立的表,所以我要到他的表中将其中的数据进行修改。

  • 其中设计到二张表(Tbuser用户表,TbAtheromatousPlaque颈动脉超声检查表)

  • Controller

    • /**
      * 月季填报
      * @param monthlyReport
      * @return
      */
      @PutMapping("/monthlyreport")
      public AjaxResult monthlyreport(MonthlyReport monthlyReport){
         boolean b = tbUserService.monthlyReport(monthlyReport);
         if (b){
             return AjaxResult.success("上传成功");
        }else {
             return AjaxResult.error("上传失败,请完善填写的数据");
        }
      }
  • ITbuserService

    • /**
      * 月季填报
      * @param monthlyReport
      * @return
      */
      public boolean monthlyReport(MonthlyReport monthlyReport);
  • TbuserServiceImpl

    • /**
      * 月季填报
      * @param monthlyReport
      * @return
      */
      @Override
      public boolean monthlyReport(MonthlyReport monthlyReport) {
         boolean update=false;
         boolean update1=false;
         //找到指定的用户
         LambdaQueryWrapper<TbUser> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.eq(TbUser::getUserId,monthlyReport.getUserId());
         TbUser one = iTbUserService.getOne(lambdaQueryWrapper);
         //修改血脂
         one.setBloodFat(monthlyReport.getBloodFat());
         //修改总胆固醇
         one.setTotalCholesterol(monthlyReport.getTotalCholesterol());
         //修改高密度脂蛋白
         one.setHighDensityLipoprotein(monthlyReport.getHighDensityLipoprotein());
         //修改低密度脂蛋白
         one.setLowDensityLipoprotein(monthlyReport.getLowDensityLipoprotein());

         update = iTbUserService.update(one, lambdaQueryWrapper);

         //—————————————————————颈动脉超声检查——————————————————————————————
         //查询该用户指定的颈动脉超声
         LambdaQueryWrapper<TbAtheromatousPlaque> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
         lambdaQueryWrapper1.eq(TbAtheromatousPlaque::getUserId,one.getUserId());

         TbAtheromatousPlaque one1 = iTbAtheromatousPlaqueService.getOne(lambdaQueryWrapper1);
         //修改有无粥样斑快
         one1.setAtheromatousPlaque(monthlyReport.getAtheromatousPlaque());
         //修改粥样斑快大小
         one1.setAtheromatousPlaqueSize(monthlyReport.getAtheromatousPlaqueSize());

         update1 = iTbAtheromatousPlaqueService.update(one1, lambdaQueryWrapper1);

         return update && update1;
      }

 

 

根据患者的userId去查询他所属的签约医生的名字

这个接口是跟前端对接的时候,缺少的接口。在家属端在修改患者的填报或者是数据的填写的时候,数据要回显在当中的框中。当时我不理解的,其他的数据都有回显这个选择医生的数据没有。当时我知道了,当数据当点击选这医生的时候,就要回其数据进行回显,接口写太多写乱掉了,不知道哪些有还是没有,知道到后面开发的差不多的时候,要将缺少的接口要进行添加或者修改

  • 其中设计到二张表(Tbuser用户表,TbDotctor医生表)

  • 家属端中有添加自己的所属患者,属于同一个家属。所以当要每个患者的都有一个Id传入当中,传入一个userId患者的id,读取其签约医生的id,我们根据签约医生的id,到医生表中,找到这个医生,将其所以数据都反馈出来包括名字

  • Controller

    • /**
      * 根据患者的userId去查询他所属的签约医生的名字
      * @param userId
      * @return
      */
      @GetMapping("/selectDoctorName")
      private AjaxResult selectDoctorName(Long userId){
         List<TbDoctor> tbDoctors = tbFamilyService.selectDoctorName(userId);
         return AjaxResult.success(tbDoctors);
      }
  • IFamilyService

    • /**
       * 根据患者的userId去查询他所属的签约医生的名字
       * @param userId
       * @return
       */
      List<TbDoctor> selectDoctorName(Long userId);
  • FamilyServiceImol

    • /**
      * 根据患者的userId去查询他所属的签约医生的名字
      * @param userId
      * @return
      */
      @Override
      public List<TbDoctor> selectDoctorName(Long userId) {
         List list1 = new ArrayList();
         //到数据查询指定的患者
         LambdaQueryWrapper<TbUser> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.eq(TbUser::getUserId,userId);
         TbUser one = iTbUserService.getOne(lambdaQueryWrapper);
         //根据该患者的信息,找到其医生的id
         Long doctorId = one.getDoctorId();

         //根据找到的医生的id,到数据库医生表中查询该医生
         LambdaQueryWrapper<TbDoctor> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
         lambdaQueryWrapper1.eq(TbDoctor::getDoctorId,doctorId);
         TbDoctor one1 = iTbDoctorService.getOne(lambdaQueryWrapper1);
         //添加到list中
         list1.add(one1);

         return list1;
      }

 

插询家属端患者的签约签约医生的电话

这个接口是跟前端对接的时候,缺少的接口。其中的接口就的求助当中的功能和用户端的求助是不一样。我们要点击求助将其电话要反馈出来,万一遇到紧急境况家属端也可以拨打电话来求助

  • 其中设计到二张表(Tbuser用户表,TbFamily家属表)

  • 在家属端中我们和魏芳妮沟通了一下,当这个家属有多名患者时,要反馈哪个医生的电话呢,最后就是同一个家属下的患者都是签约医生,这样的话,输出来的电话就是只有一个,就不会先一个患者的症状,打电话过去是另外一个医生的乌龙

  • Controller

    • /**
      * 插询家属端患者的签约签约医生的电话
      * @param familyId
      * @return
      */
      @GetMapping("/selectDoctorPhone")
      private AjaxResult selectDoctorPhone(Long familyId){
         List<TbDoctor> tbDoctors = tbFamilyService.selectDoctorPhone(familyId);
         return AjaxResult.success(tbDoctors);
      }
  • IFamilyService

    • /**
       * 插询家属端患者的签约签约医生的电话
       * @param familyId
       * @return
       */
      List<TbDoctor>  selectDoctorPhone(Long familyId);
  • FamilyServiceImol

    • @Autowired
      private ITbDoctorService iTbDoctorService;
      /**
      * 插询家属端患者的签约签约医生的电话
      * @param familyId
      * @return
      */
      @Override
      public List<TbDoctor> selectDoctorPhone(Long familyId) {
         //查询出患者中的签约医生
         List list1 = new ArrayList();
         LambdaQueryWrapper<TbUser> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.eq(TbUser::getFamilyId,familyId);
         //查询签约医生的id
         List<TbUser> list = iTbUserService.list(lambdaQueryWrapper);
         TbUser tbUser = list.get(0);
         Long doctorId = tbUser.getDoctorId();
         //根据签约医生的id,到医生中查询出医生的信息
         LambdaQueryWrapper<TbDoctor> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
         lambdaQueryWrapper1.eq(TbDoctor::getDoctorId,doctorId);
         TbDoctor one = iTbDoctorService.getOne(lambdaQueryWrapper1);
         list1.add(one);

         return list1;
      }

 

问题及解决

后台管理视频上传bug

问题的分析:当我将这个接口的视频上传的时候,视频的路径是上传过去了,当时网络中一直跳出下边如图的问题。我在其他患者患管理中也是这样的问题,我上网找了许多的资料,根本就是没有解决的方法。

解决:后来我将前端的ui,重新启动了一遍,就不会出现这样的报错了

 

 

 

扩展学习

消息订阅的学习

我到微信的公共平台中登录小程序中,有着发送消息订阅的案列。但是其中的,是自带的接口,需要一些的接口的参数,我根据其中的一些的参数进行填写,其中一些不知道的参数,就问前端,要吗就是去网上找这个参数要在哪里找。

 

其中的access_token要根据其他的参数来生成的

template_id是微信中弹出消息的模板id是前端给你的

总结

今天的学的状态是不错的,完成每周填报和季月填报的接口,还要前端反馈给我的一些缺少的接口。难点在于消息订阅我在,还没有做出开,找到需要的数据,将其发送,会报错。在找其原因 的时候花了很多的时间。