123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992 |
- package thyyxxk.webserver.service.inpatient.casefrontsheet;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.alibaba.fastjson.serializer.SerializerFeature;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.web.client.RestTemplate;
- import thyyxxk.webserver.config.exception.ExceptionEnum;
- import thyyxxk.webserver.constants.sidicts.Insutype;
- import thyyxxk.webserver.constants.sidicts.MedType;
- import thyyxxk.webserver.dao.his.LoginDao;
- import thyyxxk.webserver.dao.his.inpatient.casefrontsheet.BasSelectOverviewDao;
- import thyyxxk.webserver.dao.his.inpatient.casefrontsheet.CaseFrontSheetDao;
- import thyyxxk.webserver.dao.his.inpatient.casefrontsheet.SheetCreatedDao;
- import thyyxxk.webserver.entity.ResultVo;
- import thyyxxk.webserver.entity.api.forpowersi.drgdip.frontsheetqualitycheck.QualityCheckParams;
- import thyyxxk.webserver.entity.casefrontsheet.*;
- import thyyxxk.webserver.entity.casefrontsheet.request.*;
- import thyyxxk.webserver.entity.casefrontsheet.response.SheetOverviewForBas;
- import thyyxxk.webserver.entity.covid.Region;
- import thyyxxk.webserver.entity.dictionary.CodeName;
- import thyyxxk.webserver.entity.dictionary.HisWjwMatchEntity;
- import thyyxxk.webserver.service.externalhttp.PowersiSrvc;
- import thyyxxk.webserver.service.zhuyuanyisheng.emr.EmrServer;
- import thyyxxk.webserver.utils.*;
- import java.lang.reflect.Field;
- import java.lang.reflect.Method;
- import java.util.*;
- import java.util.concurrent.ConcurrentHashMap;
- import java.util.concurrent.TimeUnit;
- @Slf4j
- @Service
- public class CaseFrontSheetMainService {
- private static ConcurrentHashMap<String, List<CodeName>> allDictionary;
- private final CaseFrontSheetDao dao;
- private final SheetCreatedDao createdDao;
- private final BasSelectOverviewDao basDao;
- private final LoginDao userDao;
- private final PowersiSrvc srvc;
- private final EmrServer emrService;
- public CaseFrontSheetMainService(SheetCreatedDao createdDao, CaseFrontSheetDao dao, BasSelectOverviewDao basDao,
- LoginDao userDao, PowersiSrvc srvc, EmrServer emrService) {
- this.dao = dao;
- this.createdDao = createdDao;
- this.basDao = basDao;
- this.userDao = userDao;
- this.srvc = srvc;
- this.emrService = emrService;
- if (allDictionary == null) {
- allDictionary = new ConcurrentHashMap<>();
- }
- }
- public ResultVo<Map<String, List<CodeName>>> getAllDictionary() {
- if (allDictionary.isEmpty()) {
- allDictionary.put("getMarriageCode", createdDao.getMarriageCode());
- allDictionary.put("getSexCode", createdDao.getSexCode());
- allDictionary.put("getAdmissWay", createdDao.getAdmissWay());
- allDictionary.put("getBloodType", createdDao.getBloodType());
- allDictionary.put("getAnaesthesia", createdDao.getAnaesthesia());
- allDictionary.put("getOperateScale", createdDao.getOperateScale());
- allDictionary.put("getAdmissStatus", createdDao.getAdmissStatus());
- allDictionary.put("getDisAdmissStatus", createdDao.getDisAdmissStatus());
- allDictionary.put("getCutHealGrade", createdDao.getCutHealGrade());
- allDictionary.put("getDisdiagStatus", createdDao.getDisdiagStatus());
- allDictionary.put("getHbsag", createdDao.getHbsag());
- allDictionary.put("getDiagConform", createdDao.getDiagConform());
- allDictionary.put("getDisdiagType", createdDao.getDisdiagType());
- allDictionary.put("getPatientStatus", createdDao.getPatientStatus());
- allDictionary.put("getQualityLevel", createdDao.getQualityLevel());
- allDictionary.put("getZyDismissWay", createdDao.getZyDismissWay());
- allDictionary.put("getTumorLevelT", createdDao.getTumorLevelT());
- allDictionary.put("getTumorLevelN", createdDao.getTumorLevelN());
- allDictionary.put("getTumorLevelM", createdDao.getTumorLevelM());
- allDictionary.put("getTumorLevel", createdDao.getTumorLevel());
- allDictionary.put("getRelations", createdDao.getRelations());
- List<CodeName> temp = new ArrayList<>();
- temp.add(new CodeName());
- temp.addAll(createdDao.getStatutoryEpidemic());
- allDictionary.put("getStatutoryEpidemic", temp);
- allDictionary.put("getClinicalPathwayManagement", createdDao.getClinicalPathwayManagement());
- allDictionary.put("getDrgsManagement", createdDao.getDrgsManagement());
- allDictionary.put("getCaseClassification", createdDao.getCaseClassification());
- allDictionary.put("getOccupation", createdDao.getOccupation());
- allDictionary.put("getCountry", createdDao.getCountry());
- allDictionary.put("getNation", createdDao.getNation());
- allDictionary.put("getPayMethod", createdDao.getPayMethod());
- }
- return ResultVoUtil.success(allDictionary);
- }
- public ResultVo<String> resetDictionary() {
- allDictionary.clear();
- return ResultVoUtil.success();
- }
- @Scheduled(cron = "0 0 3 * * ?")
- public void refreshDictionary() {
- resetDictionary();
- }
- public ResultVo<List<CodeName>> getUserWards() {
- String code = TokenUtil.getInstance().getTokenUserId();
- List<Integer> roles = createdDao.selectUserRoles(code);
- List<CodeName> list;
- if (roles.contains(7) || roles.contains(1)) {
- list = createdDao.getAllWards();
- } else {
- list = createdDao.getUserWards(code);
- }
- list.removeIf(Objects::isNull);
- return ResultVoUtil.success(list);
- }
- public ResultVo<List<CodeName>> getAllWards() {
- return ResultVoUtil.success(createdDao.getAllWards());
- }
- public ResultVo<List<SheetOverview>> getPatientOverview(String ward) {
- return ResultVoUtil.success(dao.getPatientOverview(ward));
- }
- public ResultVo<List<SheetOverview>> getOutPatient(DismissedSheetInquiry param) {
- param.setEnd(param.getEnd() + " 23:59:59");
- if (StringUtil.isBlank(param.getWard())) {
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "请选择科室!");
- }
- return ResultVoUtil.success(dao.getOutPatients(param));
- }
- /**
- * 查询病案首页汇总
- *
- * @param param 查询的条件
- * @return 返回数据
- */
- public ResultVo<SheetOverviewForBas> getOutPatientForBas(DismissedSheetInquiry param) {
- SheetOverviewForBas response = new SheetOverviewForBas();
- if (StringUtil.notBlank(param.getWard())) {
- int cd = dao.getCDBlfxCount(param.getWard());
- int all = dao.getAllDisPatientCount(param.getWard());
- if (cd == 0 || all == 0) {
- response.setCdPercentage("0.00%");
- } else {
- response.setCdPercentage(DecimalUtil.getPercent(cd, all));
- }
- }
- if (StringUtil.notBlank(param.getStart())) {
- param.setStart(param.getStart() + " 00:00:00");
- }
- if (StringUtil.notBlank(param.getEnd())) {
- param.setEnd(param.getEnd() + " 23:59:59");
- }
- List<SheetOverview> baseList;
- List<SheetOverview> seedList;
- if (StringUtil.notBlank(param.getBah())) {
- baseList = basDao.selectPatientsFromSignedBase(param);
- seedList = basDao.selectPatientsForBasByBah(param);
- baseList = removeDuplicateData(baseList, seedList);
- if (baseList.isEmpty()) {
- String describe = param.getFileStatus() == 0 ? "未归档" : "已归档";
- return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST,
- "没有找到此患者的" + describe + "病案。");
- }
- if (param.getLateFlag() != 3) {
- baseList.removeIf(item -> !item.getLateFlag().equals(param.getLateFlag()));
- }
- response.setList(baseList);
- return ResultVoUtil.success(response);
- }
- if (StringUtil.notBlank(param.getWard())) {
- baseList = basDao.selectPatientsForBasByWard2(param);
- seedList = basDao.selectPatientsForBasByWard(param);
- baseList = removeDuplicateData(baseList, seedList);
- if (param.getLateFlag() != 3) {
- baseList.removeIf(item -> !item.getLateFlag().equals(param.getLateFlag()));
- }
- response.setList(baseList);
- return ResultVoUtil.success(response);
- }
- baseList = basDao.selectPatientsForBasByFileStatus2(param);
- seedList = basDao.selectPatientsForBasByFileStatus(param);
- baseList = removeDuplicateData(baseList, seedList);
- if (param.getLateFlag() != 3) {
- baseList.removeIf(item -> !item.getLateFlag().equals(param.getLateFlag()));
- }
- response.setList(baseList);
- return ResultVoUtil.success(response);
- }
- private List<SheetOverview> removeDuplicateData(List<SheetOverview> baseList,
- List<SheetOverview> seedList) {
- if (baseList.isEmpty()) {
- return seedList;
- }
- if (seedList.isEmpty()) {
- return baseList;
- }
- Map<String, Integer> map = new HashMap<>(seedList.size());
- for (SheetOverview overview : seedList) {
- String key = overview.getBah().trim() + "-" + overview.getTimes();
- map.put(key, 1);
- }
- baseList.removeIf(item -> map.containsKey(item.getBah().trim() + "-" + item.getTimes()));
- baseList.addAll(seedList);
- return baseList;
- }
- public ResultVo<CaseFrontsheetMain> getPatientInfo(SheetOverview overview) {
- String bah = overview.getBah();
- Integer times = overview.getTimes();
- if (overview.getRenew()) {
- dao.deleteOldSheet(bah, times);
- }
- StandardAddressMember standardAddressMember = getStandardAddressMember(bah);
- CaseFrontsheetMain sheet = dao.selectSignedSheetMain(bah, times);
- if (null != sheet) {
- sheet.setDisdiagList(getSheetDisDiags(bah, times, 1));
- sheet.setSurgeryList(getSheetSurgeries(bah, times, 1));
- if (null != standardAddressMember) {
- sheet.setStandardAddress(standardAddressMember.makeStandardAddress());
- }
- if (sheet.getAge() == 0 && null == sheet.getAgeDays()) {
- sheet.setAgeDays(DateUtil.calculateNewBornAge(sheet.getBirthDate(), sheet.getAdmissDate()));
- dao.updateNewBornAge(bah, times, sheet.getAgeDays());
- }
- if (StringUtil.isBlank(sheet.getMedType())) {
- String psnmedtype = dao.selectMedType(sheet.getBah(), sheet.getAdmissTimes());
- MedType medType = MedType.get(psnmedtype);
- if (null != medType) {
- sheet.setMedType(psnmedtype);
- sheet.setMedTypeName(medType.getName());
- }
- }
- if (null == sheet.getDismissDate()) {
- Date dismissDate = dao.getDismissDateFromYzActOrder("yz_act_order", bah, times);
- if (null == dismissDate) {
- dismissDate = dao.getDismissDateFromYzActOrder("yz_inact_order", bah, times);
- }
- sheet.setDismissDate(dismissDate);
- Integer days = DateUtil.daysBetween(dismissDate, sheet.getAdmissDate());
- sheet.setAdmissDays(0 == days ? "1" : String.valueOf(days));
- }
- if (StringUtil.isBlank(sheet.getAdmissDays()) || sheet.getAdmissDays().equals("-1")) {
- Integer days = DateUtil.daysBetween(sheet.getDismissDate(), sheet.getAdmissDate());
- sheet.setAdmissDays(0 == days ? "1" : String.valueOf(days));
- }
- autoFillPart(sheet);
- return ResultVoUtil.success(sheet);
- }
- int flag = overview.getInOutFlag();
- if (flag == 2) {
- flag = dao.selectActCount(bah, times) > 0 ? 1 : 2;
- }
- sheet = dao.getAPatientMi(bah);
- CaseFrontsheetMain sheet1 = flag == 1 ? dao.getZyActPatient("zy_actpatient", "yz_act_order", bah, times) :
- dao.getZyActPatient("zy_inactpatient", "yz_inact_order", bah, times);
- if (null == sheet1) {
- sheet1 = flag == 1 ? dao.getZyActPatient("zy_inactpatient", "yz_inact_order", bah, times) :
- dao.getZyActPatient("zy_actpatient", "yz_act_order", bah, times);
- }
- sheet.setAge(DateUtil.calculateAge(sheet.getBirthDate(), sheet1.getAdmissDate()));
- if (null != sheet.getAge() && sheet.getAge() == 0) {
- sheet.setAgeDays(DateUtil.calculateNewBornAge(sheet.getBirthDate(), sheet1.getAdmissDate()));
- }
- if (StringUtil.isBlank(sheet1.getMedType())) {
- String injurySerialNo = dao.selectInjurySerialNo(bah, times);
- if (StringUtil.notBlank(injurySerialNo)) {
- sheet1.setMedType("42");
- }
- }
- sheet1.setMedTypeName(MedType.getName(sheet1.getMedType()));
- sheet1.setInsutype(Insutype.getName(sheet1.getInsutype()));
- final int hasInfant = dao.getInfant(bah, times);
- sheet1.setHasInfant(String.valueOf(hasInfant));
- if (null == sheet1.getDismissDate()) {
- final Date dismissDate = flag == 1 ?
- dao.getDismissDateFromYzActOrder("yz_inact_order", bah, times)
- : dao.getDismissDateFromYzActOrder("yz_act_order", bah, times);
- sheet1.setDismissDate(dismissDate);
- }
- CaseFrontsheetMain sheet2 = dao.getBatjBa1(bah, times);
- if (sheet2 == null && dao.isBatjBa1Exist(bah, times) == 0) {
- dao.createBatjBa1(bah, times, sheet.getName(), sheet1.getAdmissDate(),
- sheet1.getAdmissDept(), sheet1.getAdmissWard());
- log.info("insert batjBa1>>> " + bah + ", " + times);
- }
- CaseFrontsheetMain sheet3 = flag == 1 ? dao.getBatjBa2ForInPatient(bah, times) :
- dao.getBatjBa2ForOutPatient(bah, times);
- if (sheet3 == null && dao.isBatjBa2Exist(bah, times) == 0) {
- dao.createBatjBa2(bah, times);
- log.info("insert batjBa2>>> " + bah + ", " + times);
- }
- mergeObject(sheet1, sheet);
- mergeObject(sheet2, sheet);
- mergeObject(sheet3, sheet);
- Integer days = DateUtil.daysBetween(sheet.getDismissDate(), sheet.getAdmissDate());
- sheet.setAdmissDays(0 == days ? "1" : String.valueOf(days));
- if (null == sheet.getQualityControlDate()) {
- sheet.setQualityControlDate(new Date());
- }
- sheet.setDisdiagList(getSheetDisDiags(bah, times, 0));
- sheet.setSurgeryList(getSheetSurgeries(bah, times, 0));
- if (null == standardAddressMember) {
- sheet.setLivePlaceCombo(sheet.getLivePlace());
- } else {
- sheet.setStandardAddress(standardAddressMember.makeStandardAddress());
- sheet.setLivePlaceCombo(standardAddressMember.makeAddressCombo() + sheet.getLivePlace());
- }
- List<CodeName> patCharges = dao.selectPatCharges(bah, times);
- for (CodeName item : patCharges) {
- String code = String.valueOf(item.getCode().charAt(0)).toUpperCase() +
- item.getCode().substring(1);
- try {
- Method m = sheet.getClass().getMethod("set" + code, String.class);
- m.invoke(sheet, item.getName());
- } catch (Exception e) {
- log.error("反射出错", e);
- }
- }
- sheet.setSurgicalFee(DecimalUtil.add(sheet.getAnesthetizeFee(), sheet.getSurgeryFee()));
- autoFillPart(sheet);
- return ResultVoUtil.success(sheet);
- }
- private void autoFillPart(CaseFrontsheetMain sheet) {
- String patNo = sheet.getBah();
- int times = sheet.getAdmissTimes();
- if (StringUtil.isBlank(sheet.getCaseClassification())) {
- String blfxElement = dao.selectBlfxElement(patNo, times);
- if (StringUtil.notBlank(blfxElement)) {
- JSONObject blfxObj = JSONObject.parseObject(blfxElement);
- JSONArray blfxArray = blfxObj.getJSONArray("病例分型");
- if (null != blfxArray && !blfxArray.isEmpty()) {
- JSONObject blfxItem = blfxArray.getJSONObject(0);
- sheet.setCaseClassification(blfxItem.getString("code"));
- }
- }
- }
- if (StringUtil.isBlank(sheet.getBacilliculture())) {
- int bacillicultureCount = dao.selectBacillicultureCount(patNo, times);
- sheet.setBacilliculture(bacillicultureCount > 0 ? "1" : "2");
- }
- if (StringUtil.isBlank(sheet.getStatutoryEpidemic())) {
- List<Map<String, String>> epidemics = dao.selectStatutoryEpidemic(patNo, times);
- if (ListUtil.notBlank(epidemics)) {
- Map<String, String> epidemic = epidemics.get(0);
- if (StringUtil.notBlank(epidemic.get("a"))) {
- sheet.setStatutoryEpidemic("1");
- } else if (StringUtil.notBlank(epidemic.get("b"))) {
- sheet.setStatutoryEpidemic("2");
- } else if (StringUtil.notBlank(epidemic.get("c"))) {
- sheet.setStatutoryEpidemic("3");
- }
- }
- }
- if (StringUtil.isBlank(sheet.getUseAntibiotic())) {
- int antibioticCounts = dao.selectAntibiotics(patNo, times);
- sheet.setUseAntibiotic(antibioticCounts > 0 ? "1" : "2");
- }
- }
- private StandardAddressMember getStandardAddressMember(String bah) {
- StandardAddressMember member = dao.selectStandardAddressMember(bah);
- if (null != member) {
- return member;
- }
- String socialNo = dao.selectSocialNo(bah);
- if (null == socialNo || socialNo.trim().length() < 15) {
- return null;
- }
- Integer district;
- try {
- district = Integer.parseInt(socialNo.substring(0, 6));
- } catch (Exception e) {
- return null;
- }
- Region city = dao.selectParentRegion(district);
- if (null == city) {
- return null;
- }
- Region province = dao.selectParentRegion(city.getCode());
- if (null == province) {
- return null;
- }
- member = new StandardAddressMember();
- member.setCityCode(city.getCode());
- member.setCityName(city.getName());
- member.setDistrictCode(district);
- member.setDistrictName(dao.selectRegionName(district));
- member.setProvinceCode(province.getCode());
- member.setProvinceName(province.getName());
- return member;
- }
- private List<CaseFrontsheetDisdiag> getSheetDisDiags(String bah, int times, int status) {
- List<CaseFrontsheetDisdiag> disdiags = status == 1 ?
- dao.selectSignedSheetDiags(bah, times) : dao.getDisdiags(bah, times);
- if (disdiags.isEmpty()) {
- JSONObject emrPatientData = emrService.getEmrPatientData(bah, times);
- JSONArray diagList;
- try {
- diagList = emrPatientData.getJSONArray("出院诊断");
- } catch (Exception e) {
- diagList = null;
- }
- if (null != diagList) {
- for (int i = 0; i < diagList.size(); i++) {
- JSONObject diagItem = diagList.getJSONObject(i);
- CaseFrontsheetDisdiag diag = dao.selectDiagInfoByCode(diagItem.getString("code"));
- if (null != diag) {
- diag.setNo(disdiags.size() + 1);
- disdiags.add(diag);
- }
- }
- }
- }
- while (disdiags.size() < 27) {
- disdiags.add(new CaseFrontsheetDisdiag());
- }
- return disdiags;
- }
- private List<CaseFrontsheetSurgery> getSheetSurgeries(String bah, int times, int status) {
- List<CaseFrontsheetSurgery> surgeries = status == 1 ?
- dao.selectSignedSheetSurgeries(bah, times) : dao.getSurgeries(bah, times);
- if (surgeries.isEmpty()) {
- JSONArray oprtList = emrService.getPatientSurgery(bah, times);
- for (int i = 0; i < oprtList.size(); i++) {
- JSONObject oprtItem = oprtList.getJSONObject(i);
- JSONObject oprtName;
- try {
- oprtName = oprtItem.getJSONObject("手术名称");
- } catch (Exception e) {
- continue;
- }
- if (null == oprtName) {
- continue;
- }
- JSONArray oprtNameVals = oprtName.getJSONArray("value");
- if (null == oprtNameVals) {
- continue;
- }
- String opdate = oprtItem.getJSONObject("手术日期").getString("value");
- JSONArray oprtorArr = oprtItem.getJSONObject("术者").getJSONArray("value");
- JSONObject oprtor = null == oprtorArr ? new JSONObject() : oprtorArr.getJSONObject(0);
- JSONObject assis1 = new JSONObject();
- JSONObject firstAssist = oprtItem.getJSONObject("第一助手");
- if (null != firstAssist) {
- JSONArray assis1Arr = firstAssist.getJSONArray("value");
- assis1 = null == assis1Arr ? assis1 : assis1Arr.getJSONObject(0);
- }
- JSONObject assis2 = new JSONObject();
- JSONObject secondAssist = oprtItem.getJSONObject("第二助手");
- if (null != secondAssist) {
- JSONArray assis2Arr = secondAssist.getJSONArray("value");
- assis2 = null == assis2Arr ? assis2 : assis2Arr.getJSONObject(0);
- }
- JSONObject anstor = new JSONObject();
- JSONObject anesDor = oprtItem.getJSONObject("麻醉医生");
- if (null != anesDor) {
- JSONArray anstorArr = anesDor.getJSONArray("value");
- anstor = null == anstorArr ? anstor : anstorArr.getJSONObject(0);
- }
- for (int j = 0; j < oprtNameVals.size(); j++) {
- JSONObject oprtCodeName = oprtNameVals.getJSONObject(j);
- CaseFrontsheetSurgery surgery = dao.selectSurgeryByCode(oprtCodeName.getString("code"));
- if (null != surgery) {
- surgery.setNo(surgeries.size() + 1);
- surgery.setDate(DateUtil.parse(opdate));
- surgery.setOperator(oprtor.getString("code"));
- surgery.setOperatorName(oprtor.getString("name"));
- surgery.setAssistantOne(assis1.getString("code"));
- surgery.setAssistantOneName(assis1.getString("name"));
- surgery.setAssistantTwo(assis2.getString("code"));
- surgery.setAssistantTwoName(assis2.getString("name"));
- surgery.setAnaesthesiaor(anstor.getString("code"));
- surgery.setAnaesthesiaorName(anstor.getString("name"));
- surgeries.add(surgery);
- }
- }
- }
- }
- while (surgeries.size() < 5) {
- surgeries.add(new CaseFrontsheetSurgery());
- }
- return surgeries;
- }
- private void mergeObject(CaseFrontsheetMain origin, CaseFrontsheetMain destination) {
- if (origin == null || destination == null) {
- return;
- }
- Field[] fields = destination.getClass().getDeclaredFields();
- for (Field field : fields) {
- try {
- field.setAccessible(true);
- Object valueD = field.get(origin);
- Object valueO = field.get(destination);
- if (null == valueO) {
- field.set(destination, valueD);
- }
- field.setAccessible(false);
- } catch (Exception e) {
- log.error("合并实体类出错", e);
- }
- }
- }
- private ResultVo<List<CodeName>> saveSheet(CaseFrontsheetMain sheet) {
- String bah = sheet.getBah();
- int times = sheet.getAdmissTimes();
- if (StringUtil.notBlank(sheet.getSocialNo())) {
- sheet.setSocialNo(sheet.getSocialNo().toUpperCase());
- }
- dao.updateAPatientMi(sheet);
- Integer[] addrs = sheet.getStandardAddress();
- if (null != addrs && addrs.length > 0) {
- Integer province = addrs[0];
- Integer city = addrs.length > 1 ? addrs[1] : null;
- Integer district = addrs.length > 2 ? addrs[2] : null;
- dao.updateAddressCascader(bah, province, city, district);
- }
- dao.updateZyActPatient(bah, times, sheet.getAutopsy(), sheet.getDiagConform1(),
- sheet.getDiagConform2(), sheet.getDiagConform3(), sheet.getDiagConform4(),
- sheet.getDiagConform5(), sheet.getHasSurgery(), sheet.getPathologicDiagStr(),
- sheet.getPathologicDiagCode(), sheet.getClinicDiagCode(), sheet.getClinicDiagStr());
- dao.updateZyInActPatient(bah, times, sheet.getAutopsy(), sheet.getDiagConform1(), sheet.getDiagConform2(),
- sheet.getDiagConform3(), sheet.getDiagConform4(), sheet.getDiagConform5(), sheet.getHasSurgery(),
- sheet.getPathologicDiagStr(), sheet.getPathologicDiagCode(), sheet.getClinicDiagCode(), sheet.getClinicDiagStr());
- dao.updateBatjBa1(sheet);
- dao.updateBatjBa2(sheet);
- dao.deleteOldDisdiag(bah, times);
- if (!sheet.getDisdiagList().isEmpty()) {
- List<CaseFrontsheetDisdiag> diags = sheet.getDisdiagList();
- for (int i = 0; i < diags.size(); i++) {
- CaseFrontsheetDisdiag item = diags.get(i);
- if (StringUtil.isBlank(item.getCode())) {
- break;
- }
- item.setNo(i + 1);
- item.setBah(bah);
- item.setTimes(times);
- dao.writeNewDisdiag(item);
- }
- }
- dao.deleteOldSurgeryRecord(bah, times);
- if (!sheet.getSurgeryList().isEmpty()) {
- List<CaseFrontsheetSurgery> surgeries = sheet.getSurgeryList();
- for (int i = 0; i < surgeries.size(); i++) {
- CaseFrontsheetSurgery item = surgeries.get(i);
- if (StringUtil.isBlank(item.getCode())) {
- break;
- }
- if (null == item.getDate()) {
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "手术日期不能为空!");
- }
- item.setNo(i + 1);
- item.setBah(bah);
- item.setTimes(times);
- dao.writeNewZySurgeryRecord(item);
- }
- }
- return ResultVoUtil.success();
- }
- private ResultVo<List<CodeName>> archiveSheet(CaseFrontsheetMain sheet) {
- String staff = TokenUtil.getInstance().getTokenUserId();
- List<Integer> roles = userDao.getUserRoles(staff);
- if (roles.contains(7) || roles.contains(1)) {
- String bah = sheet.getBah();
- int times = sheet.getAdmissTimes();
- int lateFlag = isLateSubmit(sheet.getDismissDate()) ? 1 : 0;
- sheet.setLateFlag(lateFlag);
- //插入数据 SignDate 签收日期 在点击签收后 向数据库中插入
- sheet.setSignDate(new Date());
- sheet.setSignStaff(staff);
- sheet.setFileStatus(1);
- //判断是否已经插入过了
- Integer fileStatus = dao.selectFileStatus(sheet.getBah(), sheet.getAdmissTimes());
- if (null == fileStatus) {
- insertSheetData(sheet);
- basDao.updateActFileStatus(bah, times, 1);
- return ResultVoUtil.success();
- }
- if (fileStatus == 1) {
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "请勿重复签收 ( ˉ ⌓ ˉ ๑)");
- }
- dao.updateSignStatus(bah, times, lateFlag, staff);
- basDao.updateActFileStatus(bah, times, 1);
- return ResultVoUtil.success();
- }
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "您没有签收首页的权限。");
- }
- private void insertSheetData(CaseFrontsheetMain sheet) {
- dao.deleteOldSheet(sheet.getBah(), sheet.getAdmissTimes());
- //在t_case_frontsheet_main表中插入 主体的内容
- dao.insert(sheet);
- //循环插主要的诊断
- QueryWrapper<CaseFrontsheetDisdiag> diagWrapper = new QueryWrapper<>();
- diagWrapper.eq("bah", sheet.getBah());
- diagWrapper.eq("times", sheet.getAdmissTimes());
- createdDao.delete(diagWrapper);
- for (CaseFrontsheetDisdiag caseFrontsheetDisdiag : sheet.getDisdiagList()) {
- caseFrontsheetDisdiag.setBah(sheet.getBah());
- caseFrontsheetDisdiag.setTimes(sheet.getAdmissTimes());
- if (caseFrontsheetDisdiag.getNo() != null) {
- createdDao.insert(caseFrontsheetDisdiag);
- }
- }
- //循环插入做过的手术
- QueryWrapper<CaseFrontsheetSurgery> surgeryWrapper = new QueryWrapper<>();
- surgeryWrapper.eq("bah", sheet.getBah());
- surgeryWrapper.eq("times", sheet.getAdmissTimes());
- basDao.delete(surgeryWrapper);
- for (CaseFrontsheetSurgery caseFrontsheetSurgery : sheet.getSurgeryList()) {
- caseFrontsheetSurgery.setBah(sheet.getBah());
- caseFrontsheetSurgery.setTimes(sheet.getAdmissTimes());
- if (caseFrontsheetSurgery.getNo() != null) {
- basDao.insert(caseFrontsheetSurgery);
- }
- }
- }
- @Transactional(rollbackFor = Exception.class)
- public synchronized ResultVo<String> unArchiveSheet(OpCaseFrontsheet param) {
- CaseFrontsheetMain sheet = param.getSheet();
- if (sheet.getFileStatus() == 0) {
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "未签收的病案首页无需解除签收!");
- }
- dao.deleteOldSheet(sheet.getBah(), sheet.getAdmissTimes());
- Map<String, Object> map = new HashMap<>();
- map.put("bah", sheet.getBah());
- map.put("times", sheet.getAdmissTimes());
- createdDao.deleteByMap(map);
- basDao.deleteByMap(map);
- log.info("解除签收状态, 操作员:{} >>> 住院号:{}, 住院次数:{}",
- param.getStaffId(), sheet.getBah(), sheet.getAdmissTimes());
- basDao.updateActFileStatus(sheet.getBah(), sheet.getAdmissTimes(), 0);
- dao.writeBaOpLog(param.getOpType(), param.getStaffId(), sheet.getBah(), sheet.getAdmissTimes());
- log.info("写入病案操作日志, 操作员:{} >>> 住院号:{}, 住院次数:{}, 操作编码:{}",
- param.getStaffId(), sheet.getBah(), sheet.getAdmissTimes(), param.getOpType());
- return ResultVoUtil.success("已成功解除签收。");
- }
- private JSONObject powersiQualityCheck(CaseFrontsheetMain sheet) {
- JSONObject obj = new JSONObject();
- obj.put("functionId", "100138");
- JSONObject baseinfo = new JSONObject();
- baseinfo.put("name", sheet.getName());
- baseinfo.put("age", sheet.getAge());
- baseinfo.put("sex_id", sheet.getSex());
- Integer agedays = sheet.getAgeDays();
- baseinfo.put("nwb_age", agedays);
- baseinfo.put("out_hosp_id", FilterUtil.filterDismissWay(sheet.getZyDismissWay()));
- baseinfo.put("is_autopsy_id", sheet.getAutopsy());
- JSONObject inputParam = new JSONObject();
- inputParam.put("baseInfo", baseinfo);
- JSONArray hsptzdDagnsInfo = new JSONArray();
- for (CaseFrontsheetDisdiag diag : sheet.getDisdiagList()) {
- if (null == diag.getNo()) {
- break;
- }
- JSONObject itm = new JSONObject();
- itm.put("icd_code", diag.getCode());
- itm.put("dagns_type", diag.getNo() == 1 ? 1 : 2);
- itm.put("disease_name", diag.getName());
- itm.put("order", diag.getNo());
- hsptzdDagnsInfo.add(itm);
- }
- inputParam.put("hsptzdDagnsInfo", hsptzdDagnsInfo);
- JSONArray hsptzdOprtInfo = new JSONArray();
- for (CaseFrontsheetSurgery surgery : sheet.getSurgeryList()) {
- if (null == surgery.getNo()) {
- break;
- }
- JSONObject itm = new JSONObject();
- itm.put("oprt_code", surgery.getCode());
- itm.put("oprt_name", surgery.getName());
- itm.put("oprt_type", surgery.getNo() == 1 ? 1 : 2);
- itm.put("order", surgery.getNo());
- hsptzdOprtInfo.add(itm);
- }
- inputParam.put("hsptzdOprtInfo", hsptzdOprtInfo);
- obj.put("inputParam", inputParam);
- try {
- JSONObject result = srvc.setlQualityControl(obj);
- log.info("\n病案质控接口:\n参数:{}\n结果:{}", obj, result);
- return result;
- } catch (Exception e) {
- log.error("创智诊断校验访问失败:http://172.16.32.183:8917/mmg-transceiver/interfaceFactory/call");
- return null;
- }
- }
- public ResultVo<Map<String, List<CodeName>>> printVerification(OpCaseFrontsheet param) {
- CaseFrontsheetMain sheet = param.getSheet();
- Integer status = dao.selectFileStatus(sheet.getBah(), sheet.getAdmissTimes());
- if (null != status && status == 1) {
- List<Integer> roles = dao.getUserRoles(param.getStaffId());
- if (roles.contains(60)) {
- return ResultVoUtil.success();
- }
- if (!roles.contains(7)) {
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "已最终归档病案首页无法打印!");
- }
- }
- sheet.setIsDoctorPrint(true);
- sheet.setAddressMember(getStandardAddress(sheet.getStandardAddress()));
- ResultVo<List<CodeName>> save = saveSheet(sheet);
- if (save.getCode() != ExceptionEnum.SUCCESS.getCode()) {
- Map<String, List<CodeName>> map = new HashMap<>();
- map.put("force", save.getData());
- return ResultVoUtil.fail(ExceptionEnum.INTERNAL_SERVER_ERROR, "校验未通过。", map);
- }
- Map<String, List<CodeName>> warnings = beginAnalyzeSheet(sheet, param.getOpType());
- if (warnings.get("force").isEmpty()) {
- if (param.getPage() == 2) {
- insertSheetAfterPrint(sheet);
- }
- if (warnings.get("advice").isEmpty()) {
- return ResultVoUtil.success();
- }
- }
- return ResultVoUtil.fail(ExceptionEnum.INTERNAL_SERVER_ERROR, "校验未通过。", warnings);
- }
- private void insertSheetAfterPrint(CaseFrontsheetMain sheet) {
- String bah = sheet.getBah();
- int times = sheet.getAdmissTimes();
- Integer fileStatus = dao.selectFileStatus(bah, times);
- if (null == fileStatus || 0 == fileStatus) {
- sheet.setFileStatus(0);
- insertSheetData(sheet);
- }
- }
- public ResultVo<List<CodeName>> saveVerify(OpCaseFrontsheet info) {
- CaseFrontsheetMain sheet = info.getSheet();
- if (sheet.getFileStatus() == 1 && !userDao.getUserRoles(TokenUtil.getInstance().getTokenUserId()).contains(7)) {
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "已签收的病案首页无法保存,如需保存,请联系病案室对此病案解除签收。");
- }
- sheet.setAddressMember(getStandardAddress(sheet.getStandardAddress()));
- sheet.getSurgeryList().forEach(item -> {
- if (StringUtil.notBlank(item.getCode())) {
- item.setType(dao.selectOperationType(item.getCode()));
- }
- });
- final String bah = sheet.getBah();
- final int times = sheet.getAdmissTimes();
- int optype = info.getOpType();
- if (optype == 2) {
- dao.writeBaOpLog(optype, info.getStaffId(), bah, times);
- return archiveSheet(sheet);
- }
- List<CodeName> message = VerifyCaseFrontSheet.getInstance().saveVerify(sheet);
- if (message.isEmpty()) {
- dao.writeBaOpLog(optype, info.getStaffId(), bah, times);
- if (!sheet.getDisdiagList().isEmpty()) {
- sheet.setMainDisdiagStatus(sheet.getDisdiagList().get(0).getDismissStatus());
- }
- return optype == 1 ? saveSheet(sheet) : archiveSheet(sheet);
- }
- return ResultVoUtil.fail(ExceptionEnum.INTERNAL_SERVER_ERROR, "校验未通过。", message);
- }
- private Map<String, List<CodeName>> beginAnalyzeSheet(CaseFrontsheetMain sheet, int optype) {
- sheet.getSurgeryList().forEach(item -> {
- if (StringUtil.notBlank(item.getCode())) {
- item.setType(dao.selectOperationType(item.getCode()));
- }
- });
- List<CodeName> force = VerifyCaseFrontSheet.getInstance().printVerify(sheet, optype);
- CaseFrontsheetDisdiag disdiag = sheet.getDisdiagList().get(0);
- List<CodeName> advice = VerifyCaseFrontSheet.getInstance().adviseVerification(sheet.getSocialNo(), disdiag.getCode());
- setlQualityControlPass(sheet, advice);
- surgeryChargesVerify(sheet, advice);
- JSONObject powersi = powersiQualityCheck(sheet);
- if (null != powersi) {
- JSONObject responseEntity = powersi.getJSONObject("responseEntity");
- if (null != responseEntity) {
- JSONArray retarr = responseEntity.getJSONArray("newSettleMemInfo");
- if (null != retarr && !retarr.isEmpty()) {
- for (int i = 0; i < retarr.size(); i++) {
- advice.add(new CodeName("", retarr.getJSONObject(i).getString("result_msg")));
- }
- }
- }
- }
- Map<String, List<CodeName>> map = new HashMap<>();
- map.put("force", force);
- map.put("advice", advice);
- return map;
- }
- public ResultVo<Map<String, List<CodeName>>> sheetVerification(SheetOverview view) {
- if (StringUtil.isBlank(view.getBah()) || null == view.getTimes() || null == view.getInOutFlag()) {
- return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "住院号、住院次数、在院状态不能为空。");
- }
- CaseFrontsheetMain sheet = getPatientInfo(view).getData();
- if (null == sheet) {
- return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "没有查询到病案数据。");
- }
- Map<String, List<CodeName>> warnings = beginAnalyzeSheet(sheet, 4);
- List<CodeName> forces = warnings.get("force");
- if (view.getInOutFlag() == 1) {
- forces.removeIf(item -> Objects.equals(item.getCode(), "dismissDate"));
- forces.removeIf(item -> Objects.equals(item.getCode(), "pathologicDiagCode"));
- }
- return ResultVoUtil.success(warnings);
- }
- public ResultVo<List<YiBaoDisdiag>> getYbDiags(String bah, int times) {
- List<YiBaoDisdiag> diags = dao.getYbDiags(bah, times);
- return ResultVoUtil.success(diags);
- }
- @Transactional
- public ResultVo<String> saveYbDiags(SaveYbDiag param) {
- dao.deleteOldYbDiag(param.getBah(), param.getTimes());
- List<String> diagCodes = new ArrayList<>();
- for (int i = 0; i < param.getYbDiags().size(); i++) {
- YiBaoDisdiag diag = param.getYbDiags().get(i);
- if (StringUtil.isBlank(diag.getCode())) {
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "【诊断序号:" + diag.getNo() + "】诊断编码不能为空!");
- }
- if (StringUtil.isBlank(diag.getName())) {
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "【诊断序号:" + diag.getNo() + "】诊断名称不能为空!");
- }
- if (StringUtil.isBlank(diag.getCyzg())) {
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "【诊断序号:" + diag.getNo() + "】出院转归不能为空!");
- }
- if (null == diag.getSiDiagType()) {
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "【诊断序号:" + diag.getNo() + "】诊断类别不能为空!");
- }
- if (diagCodes.contains(diag.getCode())) {
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "【诊断编码:" + diag.getCode() + "】请勿填入重复的诊断!");
- }
- diagCodes.add(diag.getCode());
- diag.setNo(i + 1);
- diag.setBah(param.getBah());
- diag.setTimes(param.getTimes());
- dao.insertNewYbDiag(diag);
- }
- return ResultVoUtil.success();
- }
- public ResultVo<List<SheetOverview>> advanceSearch(AdvanceSearch param) {
- return ResultVoUtil.success(dao.advanceSearch(param));
- }
- public ResultVo<String> fetchSsfz(String code, String bah, Integer times) {
- DisefamilyGrade disefamilyGrade = dao.selectDisefamilyGrade(code);
- if (null == disefamilyGrade) {
- return ResultVoUtil.success("无对照的病种。");
- }
- boolean hasModified = dao.selectModified(bah, times) > 0;
- List<String> surgeries = hasModified ? dao.selectPatientSurgeryCodes(bah, times, "batj_ba4_modify")
- : dao.selectPatientSurgeryCodes(bah, times, "batj_ba4");
- if (ListUtil.isBlank(surgeries)) {
- return ResultVoUtil.success("有对照的非手术分值:" + disefamilyGrade.getNoneOprnGrade());
- }
- List<OprnDisefamilyGrade> oprnGrades = dao.selectOperationDisefamilies(disefamilyGrade.getDisefamilyCode());
- int ssfz = 0;
- for (OprnDisefamilyGrade oprn : oprnGrades) {
- if (surgeries.contains(oprn.getOprnCode())) {
- if (oprn.getOprnGrade() > ssfz) {
- ssfz = oprn.getOprnGrade();
- }
- }
- }
- if (ssfz != 0) {
- return ResultVoUtil.success("有对照的手术分值:" + ssfz);
- }
- return ResultVoUtil.success("有对照的非手术分值:" + disefamilyGrade.getNoneOprnGrade());
- }
- private boolean isLateSubmit(Date dismissDate) {
- long days = (System.currentTimeMillis() - dismissDate.getTime()) / 1000 / (3600 * 24);
- return (int) days > 7;
- }
- public void increaseDiagWeight(String code) {
- dao.increaseDiagWeight(code);
- }
- public ResultVo<CodeName> selectSiDiagByBaDiag(String code) {
- CodeName result = dao.selectSiDiagByBaDiag(code);
- if (null == result) {
- return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "没有查询到此诊断的医保对照诊断。");
- }
- return ResultVoUtil.success(result);
- }
- private StandardAddressMember getStandardAddress(Integer[] addrs) {
- if (null == addrs || addrs.length < 3) {
- return null;
- }
- return dao.selectStandardAddressMember2(addrs[0], addrs[1], addrs[2]);
- }
- private void setlQualityControlPass(CaseFrontsheetMain sheet, List<CodeName> messages) {
- String patNo = sheet.getBah();
- int times = sheet.getAdmissTimes();
- String admdvs = dao.selectSetlInsuplcAdmdvs(patNo, times);
- if (StringUtil.notBlank(admdvs) && admdvs.startsWith("43")) {
- Integer qualityPassed = dao.qualityPass(patNo, times);
- if (null == qualityPassed || qualityPassed != 1) {
- messages.add(new CodeName("", "此患者医保结算清单质控未通过!"));
- }
- }
- }
- private void surgeryChargesVerify(CaseFrontsheetMain sheet, List<CodeName> messages) {
- List<CaseFrontsheetSurgery> surgeries = sheet.getSurgeryList();
- if (null != surgeries && !surgeries.isEmpty()) {
- List<HisWjwMatchEntity> surgeryChargeCode = dao.selectSurgeryChargeCode(surgeries);
- for (HisWjwMatchEntity entity : surgeryChargeCode) {
- if (StringUtil.notBlank(entity.getWjwCode())) {
- entity.setChargeCode(entity.getWjwCode().split("\\^"));
- entity.setChargeName(entity.getWjwName().split("\\^"));
- Integer chargeSumamt = dao.selectChargeSumamt(sheet.getBah(), sheet.getAdmissTimes(), entity.getChargeCode());
- if (null == chargeSumamt || chargeSumamt < 1) {
- String charges = entity.getWjwName().replaceAll("\\^", ",");
- messages.add(new CodeName("surgeryTable", "患者有手术【" + entity.getName() +
- "】,但没有找到对应的收费项目【" + charges + "】。"));
- }
- }
- }
- }
- }
- public ResultVo<String> frontsheetQualityCheck(CaseFrontsheetMain sheet) {
- List<CodeName> anstWays = dao.selectZdAnstWays();
- Map<String, CodeName> anstWaysMap = new HashMap<>();
- for (CodeName item : anstWays) {
- anstWaysMap.put(item.getCode(), item);
- }
- List<CodeName> countries = dao.selectZdCountries();
- Map<String, CodeName> countriesMap = new HashMap<>();
- for (CodeName item : countries) {
- countriesMap.put(item.getCode(), item);
- }
- List<CodeName> nations = dao.selectZdNations();
- Map<String, CodeName> nationsMap = new HashMap<>();
- for (CodeName item : nations) {
- nationsMap.put(item.getCode(), item);
- }
- QualityCheckParams params = new QualityCheckParams();
- params.setBaseInfo(FrontSheetUtil.fillBaseInfoFromSheet(sheet, countriesMap, nationsMap));
- params.setDiseInfoList(FrontSheetUtil.fillDiseInfoFromSheet(sheet.getDisdiagList()));
- params.setOprtInfoList(FrontSheetUtil.fillOprtInfoFromSheet(sheet.getSurgeryList(), anstWaysMap));
- JSONObject jsonParams = JSONObject.parseObject(JSON.toJSONString(params, SerializerFeature.WriteNullStringAsEmpty));
- String url = "http://172.16.32.126:8080/drg_web/drgGroupThird/V2/groupAndQuality.action";
- RestTemplate template = new RestTemplate();
- String result = template.postForObject(url, jsonParams, String.class);
- result = "http://172.16.32.126:8080" + result;
- String url2 = "http://172.16.32.126:8080/drg_web/drgGroupThird/V2/drgGroupAndQuality.action";
- String result2 = template.postForObject(url2, jsonParams, String.class);
- log.info("病案质控:\n参数:{}\n结果:{}", jsonParams, result2);
- return ResultVoUtil.success(result);
- }
- public ResultVo<String> isMedinsSetl(String patNo, Integer times) {
- String admdvs = dao.selectSetlInsuplcAdmdvs(patNo, times);
- if (StringUtil.isBlank(admdvs)) {
- return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "自费及工伤患者无需进行医保结算单质控。");
- }
- if (!admdvs.startsWith("43")) {
- return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "跨省异地患者无需进行医保结算单质控。");
- }
- return ResultVoUtil.success();
- }
- }
|