陈昶聿
9 天以前 579438ab87a88332f3643fbeefb3bbc43c87ae59
smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
@@ -18,9 +18,8 @@
import com.smartor.domain.*;
import com.smartor.domain.entity.ServiceSubtaskEntity;
import com.smartor.mapper.*;
import com.smartor.service.IPatChildArchiveService;
import com.smartor.service.IPatMaternityArchiveService;
import com.smartor.service.IPatMedOuthospService;
import com.smartor.service.IPatSpecificArchiveGenerateService;
import com.smartor.service.IServiceExternalService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
@@ -79,9 +78,7 @@
    @Autowired
    private ISysConfigService configService;
    @Autowired
    private IPatMaternityArchiveService patMaternityArchiveService;
    @Autowired
    private IPatChildArchiveService patChildArchiveService;
    private IPatSpecificArchiveGenerateService patSpecificArchiveGenerateService;
    @Autowired
    private PatMedOuthospMapper patMedOuthospMapper;
    @Autowired
@@ -2459,61 +2456,20 @@
        return 1;
    }
    //新增患者专科档案基本信息
    /**
     * 完成接诊时按专科档案生成配置生成妇科/儿科档案。
     *
     * <p>生成逻辑内部只对指定机构生效,未命中配置或生成失败均不影响接诊主流程。</p>
     */
    private void genePatSpecificArchive(PatMedOuthosp patMedOuthosp, PatArchive patArchive) {
        String deptCategory = judgeDeptCategory(patMedOuthosp.getDeptcode(), patMedOuthosp.getOrgid());
        boolean isGynecology = "1".equals(deptCategory);  // 是否妇科
        boolean isPediatrics = "2".equals(deptCategory);  // 是否儿科
        if (isGynecology) {
            // 走妇科档案生成逻辑
            PatMaternityArchiveDetail patMaternityArchiveDetail
                    = DtoConversionUtils.sourceToTarget(patMedOuthosp, PatMaternityArchiveDetail.class);
            patMaternityArchiveDetail.setSourceType("1");
            patMaternityArchiveDetail.setPhone(patArchive.getTelcode());
            patMaternityArchiveDetail.setPatid(patArchive.getId());
            patMaternityArchiveDetail.setPatname(patArchive.getName());
            patMaternityArchiveDetail.setBirthdate(patArchive.getBirthdate());
            patMaternityArchiveDetail.setSex(patArchive.getSex());
            patMaternityArchiveDetail.setAddress(patArchive.getPlaceOfResidence());
            patMaternityArchiveDetail.setOuthospno(patMedOuthosp.getOuthospno());
            patMaternityArchiveDetail.setSerialnum(patMedOuthosp.getSerialnum());
            patMaternityArchiveDetail.setIcd10code(patMedOuthosp.getIcd10code());
            patMaternityArchiveDetail.setDeptcode(patMedOuthosp.getDeptcode());
            patMaternityArchiveDetail.setDeptname(patMedOuthosp.getDeptname());
            patMaternityArchiveDetail.setDoctorName(patMedOuthosp.getDrname());
            patMaternityArchiveDetail.setDoctorCode(patMedOuthosp.getDrcode());
            patMaternityArchiveDetail.setManagementDoctorName(patMedOuthosp.getDrname());
            patMaternityArchiveDetail.setManagementDoctorCode(patMedOuthosp.getDrcode());
            patMaternityArchiveDetail.setOrgid(patMedOuthosp.getOrgid());
            patMaternityArchiveDetail.setCampusid(patMedOuthosp.getCampusid());
            patMaternityArchiveService.insertOrUpdateMaternityArchive(patMaternityArchiveDetail);
        } else if (isPediatrics) {
            // 走儿科档案生成逻辑
            PatChildArchiveDetail patChildArchiveDetail
                    = DtoConversionUtils.sourceToTarget(patMedOuthosp, PatChildArchiveDetail.class);
            patChildArchiveDetail.setSourceType("1");
            patChildArchiveDetail.setPhone(patArchive.getTelcode());
            patChildArchiveDetail.setPatid(patArchive.getId());
            patChildArchiveDetail.setPatname(patArchive.getName());
            patChildArchiveDetail.setBirthdate(patArchive.getBirthdate());
            patChildArchiveDetail.setSex(patArchive.getSex());
//            patChildArchiveDetail.setAddress(patArchive.getPlaceOfResidence());
            patChildArchiveDetail.setOuthospno(patMedOuthosp.getOuthospno());
            patChildArchiveDetail.setSerialnum(patMedOuthosp.getSerialnum());
            patChildArchiveDetail.setIcd10code(patMedOuthosp.getIcd10code());
            patChildArchiveDetail.setDeptcode(patMedOuthosp.getDeptcode());
            patChildArchiveDetail.setDeptname(patMedOuthosp.getDeptname());
            patChildArchiveDetail.setDoctorName(patMedOuthosp.getDrname());
            patChildArchiveDetail.setDoctorCode(patMedOuthosp.getDrcode());
            patChildArchiveDetail.setManagementDoctorName(patMedOuthosp.getDrname());
            patChildArchiveDetail.setManagementDoctorCode(patMedOuthosp.getDrcode());
            patChildArchiveDetail.setOrgid(patMedOuthosp.getOrgid());
            patChildArchiveDetail.setCampusid(patMedOuthosp.getCampusid());
            patChildArchiveService.insertOrUpdateChildArchive(patChildArchiveDetail);
        } else {
            // 未命中配置,不生成档案
        try {
            int generated = patSpecificArchiveGenerateService.generateByOuthosp(patMedOuthosp, patArchive);
            if (generated > 0) {
                log.info("完成接诊自动生成专科档案成功,outhospno={},生成数量={}",
                        patMedOuthosp.getOuthospno(), generated);
            }
        } catch (Exception e) {
            log.error("完成接诊自动生成专科档案失败,outhospno={}", patMedOuthosp.getOuthospno(), e);
        }
    }