提交修改

This commit is contained in:
quyixiao 2025-03-25 23:33:34 +08:00
parent fbcd56b5a4
commit 94fce468f9
5 changed files with 197 additions and 5 deletions

View File

@ -2,8 +2,8 @@ package com.heyu.api.baidu.handle.medical;
import com.heyu.api.baidu.BaiduBaseHandle;
import com.heyu.api.baidu.request.medical.BMedicalReportDetectionRequest;
import com.heyu.api.baidu.response.medical.BMedicalReportDetectionResp;
import com.heyu.api.baidu.request.medical.BHealthReportRequest;
import com.heyu.api.baidu.response.medical.BHealthReportResp;
import org.springframework.stereotype.Component;
/***
@ -13,19 +13,19 @@ import org.springframework.stereotype.Component;
*
*/
@Component
public class BHealthReportHandle extends BaiduBaseHandle<BMedicalReportDetectionRequest, BMedicalReportDetectionResp> {
public class BHealthReportHandle extends BaiduBaseHandle<BHealthReportRequest, BHealthReportResp> {
@Override
public String getUri() {
return "/rest/2.0/ocr/v1/health_report";
}
@Override
public String check(BMedicalReportDetectionRequest bMedicalReportDetectionRequest) {
public String check(BHealthReportRequest bMedicalReportDetectionRequest) {
return checkSimpleProbabilityLocation(bMedicalReportDetectionRequest);
}
@Override
public String getContent(BMedicalReportDetectionRequest bMedicalReportDetectionRequest) {
public String getContent(BHealthReportRequest bMedicalReportDetectionRequest) {
return getSimpleProbabilityLocationContent(bMedicalReportDetectionRequest).toString();
}
}

View File

@ -0,0 +1,70 @@
package com.heyu.api.controller.medical;
import com.heyu.api.baidu.handle.medical.BHealthReportHandle;
import com.heyu.api.baidu.request.medical.BHealthReportRequest;
import com.heyu.api.baidu.response.medical.BHealthReportResp;
import com.heyu.api.controller.BaseController;
import com.heyu.api.data.annotation.CacheResult;
import com.heyu.api.data.annotation.NotIntercept;
import com.heyu.api.data.utils.ApiR;
import com.heyu.api.data.utils.R;
import com.heyu.api.resp.medical.HealthReportResp;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/***
*
* https://console.bce.baidu.com/support/?_=1740575657628&timestamp=1740581406549#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8C%BB%E7%96%97%E7%A5%A8%E6%8D%AEOCR&api=rest%2F2.0%2Focr%2Fv1%2Fhealth_report&method=post
*医疗诊断报告单识别
*
*
*
接口描述
支持识别全国各地各医院医疗诊断报告单包括医院名称报告名称姓名性别年龄科室临床诊断报告日期检查部位检查方法检查所见检查提示建议肉眼可见 14个字段
*/
@Slf4j
@RestController
@RequestMapping("/health")
@NotIntercept
public class HealthReportController extends BaseController {
@Autowired
private BHealthReportHandle bHealthReportHandle;
@RequestMapping("/report")
@CacheResult
public R report(BHealthReportRequest req) {
List<HealthReportResp> respList = new ArrayList<>();
ApiR<BHealthReportResp> bR = bHealthReportHandle.handle(req);
if (bR.isSuccess()) {
BHealthReportResp bMedicalReportDetectionResp = bR.getData();
if (CollectionUtils.isNotEmpty(bMedicalReportDetectionResp.getWordsResult())) {
for (BHealthReportResp.WordsResultDTO wordsResultDTO : bMedicalReportDetectionResp.getWordsResult()) {
HealthReportResp healthReportResp = new HealthReportResp();
healthReportResp.setWord(wordsResultDTO.getWord());
healthReportResp.setWordName(wordsResultDTO.getWordName());
respList.add(healthReportResp);
}
}
return R.ok().setData(respList);
}
return R.error(bR.getErrorMsg());
}
}

View File

@ -0,0 +1,76 @@
package com.heyu.api.controller.medical;
import com.heyu.api.baidu.handle.medical.BMedicalDetailHandle;
import com.heyu.api.baidu.request.medical.BMedicalDetailRequest;
import com.heyu.api.baidu.response.medical.BMedicalDetailResp;
import com.heyu.api.controller.BaseController;
import com.heyu.api.data.annotation.CacheResult;
import com.heyu.api.data.annotation.NotIntercept;
import com.heyu.api.data.utils.ApiR;
import com.heyu.api.data.utils.R;
import com.heyu.api.resp.medical.MedicalDetailResp;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/**
* https://console.bce.baidu.com/support/?_=1740575657628&timestamp=1740580669633#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8C%BB%E7%96%97%E7%A5%A8%E6%8D%AEOCR&api=rest%2F2.0%2Focr%2Fv1%2Fmedical_detail&method=post
* 医疗费用明细识别
* <p>
* <p>
* 接口描述
* 支持识别全国医疗费用明细的姓名日期病人ID总金额等关键字段支持识别费用明细项目清单包含项目类型项目名称单价数量规格金额其中北京地区识别效果最佳
*/
@Slf4j
@RestController
@RequestMapping("/medical")
@NotIntercept
public class MedicalDetailController extends BaseController {
@Autowired
private BMedicalDetailHandle bMedicalDetailHandle;
@RequestMapping("/detail")
@CacheResult
public R detail(BMedicalDetailRequest req) {
MedicalDetailResp resp = new MedicalDetailResp();
ApiR<BMedicalDetailResp> bR = bMedicalDetailHandle.handle(req);
if (bR.isSuccess()) {
BMedicalDetailResp bMedicalDetailResp = bR.getData();
BMedicalDetailResp.WordsResultDTO wordsResultDTO = bMedicalDetailResp.getWordsResult();
resp.setPatient(wordsResultDTO.getPatientID().getWord()); //病人ID
resp.setTotalAmount(wordsResultDTO.getTotalAmount().getWord()); //总金额
resp.setDate(wordsResultDTO.getDate().getWord()); //日期
resp.setName(wordsResultDTO.getName().getWord()); //姓名
if (CollectionUtils.isNotEmpty(wordsResultDTO.getCostDetail())) {
List<List<MedicalDetailResp.CostDetailDTO>> list = new ArrayList<>();
for (List<BMedicalDetailResp.WordsResultDTO.CostDetailDTO> costDetailDTOS : wordsResultDTO.getCostDetail()) {
List<MedicalDetailResp.CostDetailDTO> list1 = new ArrayList<>();
for (BMedicalDetailResp.WordsResultDTO.CostDetailDTO costDetailDTO : costDetailDTOS) {
MedicalDetailResp.CostDetailDTO cost = new MedicalDetailResp.CostDetailDTO();
cost.setWord(costDetailDTO.getWord());
cost.setWordName(costDetailDTO.getWordName());
list1.add(cost);
}
list.add(list1);
}
resp.setCostDetail(list);
}
}
return R.error();
}
}

View File

@ -0,0 +1,12 @@
package com.heyu.api.resp.medical;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
@Data
public class HealthReportResp extends BaseResp {
private String word; //字段名包括医院名称报告名称姓名性别年龄科室临床诊断报告日期检查部位检查方法检查所见检查提示建议肉眼可见
private String wordName; //word_name字段对应的识别结果
}

View File

@ -0,0 +1,34 @@
package com.heyu.api.resp.medical;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
public class MedicalDetailResp extends BaseResp {
private String patient; //病人ID
private String totalAmount; //总金额
private String date; //日期
private String name; //姓名
private List<List<CostDetailDTO>> costDetail; // 项目明细
@NoArgsConstructor
@Data
public static class CostDetailDTO {
private String wordName; // 字段名包括项目类型项目名称单价数量规格金额
private String word; //word_name字段对应的识别结果
}
}