doc/api/generalInterface/JZ_MZ_WanChengJZ½Ó¿ÚÎĵµ.md
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,252 @@ # JZ_MZ_WanChengJZ 鍿¥è¯å®ææ¥è¯ æ¥å£ææ¡£ > æ¥å£ï¼`POST /smartor/serviceExternal/generalInterface` > æ¶æ¯ç±»åï¼`JZ_MZ_WanChengJZ` > ææ¡£çææ¥æï¼2026-10-20 > 说æï¼å段ååºå大å°åï¼è¯·ä¸¥æ ¼æææ¡£ä¸çæ¼é³å段åä¼ åã --- ## ä¸ãæ¥å£è¯´æ | é¡¹ç® | å 容 | | --- | --- | | æ¥å£å°å | `/smartor/serviceExternal/generalInterface` | | è¯·æ±æ¹å¼ | `POST` | | Content-Type | `application/json;charset=UTF-8` | | è®¤è¯æ¹å¼ | æ éç»å½ï¼`/smartor/serviceExternal/**` å·²é ç½® `permitAll`ï¼ | | æ¶æ¯ç±»å | `JZ_MZ_WanChengJZ` | | ä¸å¡å«ä¹ | 鍿¥è¯å®ææ¥è¯ | | å¤çå ¥å£ | `addFinshJZInfo` | | æ¯å¦è½åº | æ¯ï¼å®é è½åºï¼ | | ä¸å¡è¯´æ | æ¥æ¶é¨æ¥è¯å®ææ¥è¯ä¿¡æ¯ï¼åå ¥é¨è¯å°±è¯è®°å½ï¼å¹¶æé访天æ°çæé访任å¡ã | ## äºãè¯·æ±æ¥æ ### 2.1 æ¥æç»æ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | XiaoXiTou | object | æ¯ | æ¶æ¯å¤´ | | YeWuXX | object | æ¯ | ä¸å¡ä¿¡æ¯ï¼å¿ é¡»å å« `XiaoXiID` | ### 2.2 æ¶æ¯å¤´ `XiaoXiTou` | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | FaSongFCSJC | String | å¦ | åéæ¹ç¨åºç®ç§°ï¼é»è®¤ `ZJHES` | | FaSongJGID | String | æ¯ | åéæºæ IDï¼å¯¹åºç³»ç» `orgid`ï¼é¨åæ¶æ¯ç±»åç¨å®è¦çä¸å¡ä¸çæºæ ID | | FaSongJGMC | String | å¦ | åéæºæåç§° | | FaSongSJ | String | å¦ | åéæ¶é´ï¼å»ºè®® `yyyy-MM-dd HH:mm:ss` | | FaSongXTJC | String | å¦ | åéç³»ç»ç®ç§°ï¼é»è®¤ `SUIFANGXT` | | FaSongXTMC | String | å¦ | åéç³»ç»åç§°ï¼é»è®¤ `é访系ç»` | | XiaoXiID | String | å¦ | æ¶æ¯ IDï¼æ¬æ¥å£ååºåæ¾åçæ¯ `YeWuXX.XiaoXiID` | | XiaoXiLX | String | æ¯ | æ¶æ¯ç±»åï¼å³å®ä¸å¡åæ¯ï¼ç¼ºå¤±æä¸ºç©ºæ¶æ¥å£æ¥é | | XiaoXiMC | String | å¦ | æ¶æ¯åç§° | | ZuHuID | String | å¦ | å»é¢ ID | | ZuHuMC | String | å¦ | å»é¢åç§° | ### 2.3 ä¸å¡ä¿¡æ¯ `YeWuXX` | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | XiaoXiID | String | æ¯ï¼å»ºè®®ï¼ | æ¶æ¯ IDï¼åæ ·æ¾å ¥ååº `Data.XiaoXiID`ï¼ç¼ºå¤±æ¶è¿å `null` | | BingRenXX | object | æ¯ | æ£è ä¿¡æ¯ï¼`ZuZhiJGID` å¯çç¥ï¼ä»£ç ä½¿ç¨æ¶æ¯å¤´ `FaSongJGID` | | JiuZhenXX | object | æ¯ | å°±è¯ä¿¡æ¯ï¼è³å°å å«ç§å®¤ãå°±è¯æ¥æ | | ZhenDuanList | array | æ¯ | è¯æå表ï¼ä¸è½ä¸ºç©º | | WenZhenList | array | æ¯ | é®è¯å表ï¼ä¸è½ä¸ºç©º | ### 2.4 请æ±ç¤ºä¾ ```json { "XiaoXiTou": { "FaSongJGID": "47255004333112711A1001", "FaSongJGMC": "丽水å¸ä¸å»é¢", "FaSongSJ": "2026-10-20 10:00:00", "XiaoXiLX": "JZ_MZ_WanChengJZ", "XiaoXiID": "MSG-20261020-0001" }, "YeWuXX": { "XiaoXiID": "MSG-20261020-0001", "BingRenXX": { "BingRenID": "BR0002", "XingMing": "æå", "JiuZhenYWID": "MZ20261020002", "JiuZhenKH": "MZ0002", "BingAnHao": "BA20261020002", "ZhengJianHM": "330102198505051234", "XingBieDM": "2", "ChuShengRQ": "1985-05-05 10:00:00", "LianXiDH": "13700000000" }, "JiuZhenXX": { "JiuZhenKSID": "D002", "JiuZhenKSMC": "å¦ç§", "JiuZhenRQ": "2026-10-20 10:30:00", "sfrq": "2026-11-20 00:00:00" }, "ZhenDuanList": [ { "ZhenDuanYSID": "D1002", "ZhenDuanYSXM": "èµµå»ç", "ZhenDuanID": "O20.0", "ZhenDuanMC": "å å æµäº§", "ZhenDuanLBDM": "1", "ZhenDuanLBMC": "ä¸»è¯æ", "Icd10": "O20.0" } ], "WenZhenList": [ { "WenZhenLXMC": "主è¯", "NeiRong": "åç»50天ï¼é´éæµè¡1天" }, { "WenZhenLXMC": "ç°ç å²", "NeiRong": "æ£è åç»50天ï¼1天ååºç°é´éæµè¡â¦â¦" }, { "WenZhenLXMC": "é访天æ°", "NeiRong": "30" }, { "WenZhenLXMC": "é访天æ°åä½", "NeiRong": "天" } ] } } ``` ## ä¸ãä¸å¡å段说æ ### 3.1 `BingRenXX` æ£è åºæ¬ä¿¡æ¯ > æºæ ID ä¼è¢«æ¶æ¯å¤´ `FaSongJGID` è¦çã | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | ZuZhiJGID | String | æ¯ | ç»ç»æºæ IDï¼åå ¥ `orgid`ï¼ | | ZuZhiJGMC | String | å¦ | ç»ç»æºæåç§° | | BingRenID | String | æ¯ | ç 人 IDï¼åå ¥ `patid_his/patno` | | XingMing | String | æ¯ | æ£è å§å | | JiuZhenYWID | String | æ¯ | å°±è¯ä¸å¡ IDï¼ä¸ `BingAnHao` å ±åå®ä½ä½é¢/é¨è¯è®°å½ | | JiuZhenKH | String | å¦ | å°±è¯å¡å·ï¼è¯ä»¶å·ç 为空æ¶ä½ä¸ºæ£è æ¡£æ¡å¯ä¸æ è¯ | | BingAnHao | String | æ¯ | ç æ¡å·ï¼ä»£ç æç æ¡å·å¹é ï¼ä¸ä½¿ç¨ä½é¢å·ï¼ | | ZhengJianLXMC | String | å¦ | è¯ä»¶ç±»ååç§°ï¼åå ¥æ¡£æ¡ `idcardtype` | | ZhengJianHM | String | æ¯ï¼å»ºè®®ï¼ | è¯ä»¶å·ç ï¼æ£è æ¡£æ¡å¯ä¸æ è¯ï¼ä¸ºç©ºæ¶ä½¿ç¨ `JiuZhenKH` | | XingBieDM | String | å¦ | æ§å«ä»£ç ï¼å¿ 须为æ°åå符串ï¼å¦ `1`/`2`ï¼ï¼ä»£ç æ§è¡ `Long.valueOf` | | ChuShengRQ | String | æ¯ï¼å»ºè®®ï¼ | åºçæ¥æï¼ä»£ç æ `yyyy-MM-dd hh:mm:ss` è§£æï¼å»ºè®®ä¼ 宿´æ¶é´ | | DangQianKSID | String | æ¯ | å½åç§å®¤ IDï¼åå ¥ä½é¢/åºé¢ç§å®¤ | | DangQianKSMC | String | æ¯ | å½åç§å®¤åç§° | | DangQianBQID | String | æ¯ | å½åç åº ID | | DangQianBQMC | String | æ¯ | å½åç åºåç§° | | DangQianCWMC | String | å¦ | åºä½åç§°ï¼åå ¥ä½é¢ `bedNo` | | RuYuanSJ | Date | æ¯ï¼å ¥é¢/å ¥ç§ï¼ | å ¥é¢æ¶é´ï¼æ ¼å¼ `yyyy-MM-dd HH:mm:ss` | | LianXiDH | String | æ¯ï¼å»ºè®®ï¼ | èç³»çµè¯ï¼åå ¥æ£è æ¡£æ¡ææºå· | | LianXiRDH | String | å¦ | è系人çµè¯ï¼`LianXiDH` 为空æ¶ä½ä¸ºæ£è ææºå· | | GuoJiMC | String | å¦ | å½ç±åç§°ï¼åå ¥æ¡£æ¡ `nativePlace` | | MinZuMC | String | å¦ | æ°æåç§°ï¼åå ¥æ¡£æ¡ `nation` | | XianZhuZXX | String | å¦ | ç°ä½åï¼ä¼å äº `DiZhiXXList` åå ¥æ¡£æ¡ | | CaoZuoRID | String | å¦ | æä½äºº ID | | CaoZuoRXM | String | å¦ | æä½äººå§å | | ZeRenHSID | String | å¦ | 责任æ¤å£« ID | | ZeRenHSXM | String | å¦ | 责任æ¤å£«å§å | | ZhuZhiYSID | String | å¦ | 主治å»ç ID | | ZhuZhiYSXM | String | å¦ | 主治å»çå§å | | JingGuanYSID | String | å¦ | ç»ç®¡å»ç ID | | JingGuanYSXM | String | å¦ | ç»ç®¡å»çå§å | | DuanHaoXX | String | å¦ | çå·ä¿¡æ¯ | | BingRenLXDM | String | å¦ | ç 人类å代ç ï¼ææ¯è®°å½åå ¥ `inhospstate` | ### 3.2 `JiuZhenXX` å°±è¯ä¿¡æ¯ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | JiuZhenKSID | String | æ¯ | å°±è¯ç§å®¤ ID | | JiuZhenKSMC | String | æ¯ | å°±è¯ç§å®¤åç§° | | JiuZhenRQ | Date | æ¯ | å°±è¯æ¥æï¼`yyyy-MM-dd HH:mm:ss`ï¼åå ¥é¨è¯ `admitdate` | | sfrq | Date | å¦ | éè®¿æ¥æï¼åå ¥é¨è¯ `fudate` | | CaoZuoRID | String | å¦ | æä½äºº ID | | CaoZuoRXM | String | å¦ | æä½äººå§å | ### 3.3 `ZhenDuanList` è¯æå表 > `ZhenDuanLBMC=ä¸»è¯æ` çè®°å½ç¨äºé¨è¯ä¸»è¯æã | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | ZhenDuanYSID | String | å¦ | è¯æå»ç ID | | ZhenDuanYSXM | String | å¦ | è¯æå»çå§å | | ZhenDuanID | String | å¦ | è¯æ ID | | ZhenDuanMC | String | æ¯ | è¯æåç§° | | ZhenDuanLBDM | String | å¦ | è¯æç±»å«ä»£ç | | ZhenDuanLBMC | String | æ¯ | è¯æç±»å«åç§°ï¼çäº `ä¸»è¯æ` æ¶åå ¥é¨è¯ä¸»è¯æ | | Icd10 | String | æ¯ï¼å»ºè®®ï¼ | ICD10 ç¼ç | ### 3.4 `WenZhenList` é®è¯å表 > ç¨äºç°ç å²ã主è¯ãé访天æ°ååä½ã | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | WenZhenLXMC | String | æ¯ï¼è¥ä¼ ï¼ | é®è¯ç±»ååç§°ï¼`ç°ç å²`ã`主è¯`ã`é访天æ°`ã`é访天æ°åä½` | | NeiRong | String | æ¯ï¼è¥ä¼ ï¼ | é®è¯å 容ï¼`é访天æ°` å¿ é¡»ä¸ºæ´æ°ï¼å使¯æ `天`/`å¨`/`æ`/`å¹´` | ## åãå¤çé»è¾ 1. è¯»åæ£è ãå°±è¯ãè¯æãé®è¯ä¿¡æ¯ã 2. ä½¿ç¨ `FaSongJGID` ä½ä¸ºæºæ IDï¼æ°å¢/æ´æ°æ£è æ¡£æ¡ã 3. æ `BingAnHao + JiuZhenYWID` æ¥è¯¢é¨è¯è®°å½ï¼åå¨åæ´æ°ï¼ä¸åå¨åæ°å¢ã 4. ä¸»è¯æåå ¥è¯æåç§°ãå»çãICD10ï¼å¹¶ç½® `fuflag=1`ã 5. `ç°ç å²` åå ¥ `hpi`ï¼`主è¯` åå ¥ `mainsuit`ã 6. è¥ä¼ äº `é访天æ°` ä¸ `fuflag=1`ï¼æå¤©/å¨/æ/å¹´æ¢ç®åçæé访任å¡ã 7. 丽水å¸å¦å¹¼ä¿å¥é¢ï¼`orgid = 47226079133110211G1001`ï¼å®ææ¥è¯åï¼æ `pat_specific_archive_generate_config` é ç½®çæå¦ç§/å¿ç§ä¸ç§æ¡£æ¡ï¼å ¶ä»æºæä¸çæãè¯¦è§ `doc/api/å¦å¹¼ä¸ç§æ¡£æ¡çææ¥å£ææ¡£_20261104.md`ã ## äºãååºè¯´æ æåååºï¼ ```json { "Code": "0", "Message": "success", "Data": { "XiaoXiID": "MSG-20261020-0001", "ChuangJianSJ": 1760928000000 } } ``` 失败ååºï¼ä¸å¡è¿å `false` æå¤çå¼å¸¸ï¼ï¼ ```json { "Code": "500", "Message": "error", "Data": { "XiaoXiID": "MSG-20261020-0001", "ChuangJianSJ": 1760928000000 } } ``` | åæ®µ | ç±»å | 说æ | | --- | --- | --- | | Code | String | `"0"` æåï¼`"500"` 失败 | | Message | String | `success` / `error` | | Data.XiaoXiID | String | åæ ·è¿åè¯·æ± `YeWuXX.XiaoXiID` | | Data.ChuangJianSJ | long | æå¡å¨å½åæ¶é´ï¼æ¯«ç§æ¶é´æ³ï¼ | ## å ãæ³¨æäºé¡¹ - `ZhenDuanList`ã`WenZhenList` ä»£ç æªåç©ºå¤æï¼ç¼ºå¤±ä¼æ¥éã - `é访天æ°` å¿ é¡»æ¯æ´æ°ï¼`é访天æ°åä½` æ¯æ `天`ã`å¨`ã`æ`ã`å¹´`ã - é¨è¯è®°å½å¹é é®ä¸º `BingAnHao + JiuZhenYWID`ã - æ¥æç¼ºå° `XiaoXiTou`ã`XiaoXiLX`ã`YeWuXX` æ¶å¯è½å¨ååºç»è£ é¶æ®µç´æ¥æå¼å¸¸ï¼è¿å HTTP 500ã - æ¥ææ¶é´é¤ç¹å«è¯´æå¤ç»ä¸ä½¿ç¨ `yyyy-MM-dd HH:mm:ss`ã --- æ¬ææ¡£æ ¹æ®å½å代ç çæï¼è¥å端é»è¾è°æ´ï¼è¯·åæ¥æ´æ°ææ¡£ã doc/api/generalInterface½Ó¿ÚÎĵµ.md
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,1146 @@ # `/smartor/serviceExternal/generalInterface` éç¨æ¥å£ææ¡£ > çææ¥æï¼2026-10-20 > 对åºä»£ç ï¼`ServiceExternalController#generalInterface`ã`ServiceExternalServiceImpl#generalInterface/getType` ååä¸å¡å¤çæ¹æ³ > 说æï¼æ¬ææ¡£æå½å代ç å®é è§£æçåæ®µæ´çï¼å段ååºå大å°åï¼è¯·ä¸¥æ ¼æææ¡£ä¸çæ¼é³å段åä¼ åã > ææ¶æ¯ç±»åæåçç¬ç«ææ¡£è§ï¼`doc/api/generalInterface/00_æ¥å£ææ¡£ç´¢å¼.md`ï¼å«åå PDFï¼ã --- ## ä¸ãæ¥å£åºæ¬ä¿¡æ¯ | é¡¹ç® | å 容 | | --- | --- | | æ¥å£å°å | `/smartor/serviceExternal/generalInterface` | | è¯·æ±æ¹å¼ | `POST` | | Content-Type | `application/json;charset=UTF-8` | | è®¤è¯æ¹å¼ | æ éç»å½ï¼`SecurityConfig` ä¸ `/smartor/serviceExternal/**` å·²é ç½® `permitAll`ï¼ | | 请æ±ä½ | å个 JSON 对象ï¼ç± `XiaoXiTou`ï¼æ¶æ¯å¤´ï¼+ `YeWuXX`ï¼ä¸å¡ä¿¡æ¯ï¼ç»æ | | ååºä½ | åºå®ç»æï¼`Code`ã`Message`ã`Data` | | ä¸å¡åååæ®µ | `XiaoXiTou.XiaoXiLX`ï¼æ¶æ¯ç±»åï¼ | | æå¡å°åç¤ºä¾ | `http://æå¡IP:端å£/smartor/serviceExternal/generalInterface` | ### 1.1 æ¥å£å®ä½ 该æ¥å£æ¯ HIS/ç¬¬ä¸æ¹ç³»ç»åéè®¿ç³»ç»æ¨éæ°æ®ç**ç»ä¸å ¥å£**ï¼éè¿ `XiaoXiTou.XiaoXiLX` åºå 41 ç§ä¸å¡æ¶æ¯ï¼åå«å¤çï¼ - æºæãç§å®¤ãç¨æ·ãç§å®¤ç¨æ·ãç åºï¼`JG_*`ï¼ - æ£è æ¡£æ¡ãä½é¢ç»è®°ãå ¥ç§ãåºé¢ãåºé¢è®°å½ãé¢åºé¢ãåæ¶å ¥é¢/åºé¢ã离æ¢ï¼`BR_DA_*`ã`JZ_ZY_*`ã`BL_JL_*`ï¼ - 鍿¥è¯å®ææ¥è¯ï¼`JZ_MZ_WanChengJZ`ï¼ - æ£æ¥/æ£éªç³è¯·ãä¿®æ¹ãæ¥åï¼`JC_*`ã`JY_*`ï¼ - ææ¯ç³è¯·ãæ¤éï¼`SM_*`ï¼ - ç¾ç ç®å½ï¼`GY_ZD_JiBingML`ï¼ - é访任å¡ï¼`fu_task`ï¼ å ¶ä¸ 22 ç§æ¶æ¯ä¼å®é è½åºï¼å¦å¤ 19 ç§æ¶æ¯å½åä¸è½åºï¼å¤æ°ä» è®°å½æ¥å¿åç´æ¥è¿åæåï¼è§ç¬¬ä¸ç« ï¼ã --- ## äºãè¯·æ±æ¥æç»æ ### 2.1 é¡¶å±ç»æ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | XiaoXiTou | object | æ¯ | æ¶æ¯å¤´ï¼ç¼ºå¤±æ¶æ¥å£æ¥é | | YeWuXX | object | æ¯ | ä¸å¡ä¿¡æ¯ï¼ç¼ºå¤±æ¶ååºç»è£ é¶æ®µæ¥éï¼**å¿ é¡»å å« `XiaoXiID`** | ```json { "XiaoXiTou": { "FaSongJGID": "47255004333112711A1001", "FaSongJGMC": "丽水å¸ä¸å»é¢", "FaSongSJ": "2026-10-20 10:00:00", "XiaoXiLX": "JZ_ZY_RuYuanDJ", "XiaoXiID": "5FA92AFB-9833-4608-87C7-F56A654AC171" }, "YeWuXX": { "XiaoXiID": "5FA92AFB-9833-4608-87C7-F56A654AC171" } } ``` ### 2.2 æ¶æ¯å¤´ `XiaoXiTou` | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | FaSongFCSJC | String | å¦ | åéæ¹ç¨åºç®ç§°ï¼é»è®¤ `ZJHES` | | FaSongJGID | String | æ¯ | åéæºæ IDï¼å¯¹åºç³»ç» `orgid`ï¼é¨åæ¶æ¯ç±»åç¨å®è¦çä¸å¡ä¸çæºæ ID | | FaSongJGMC | String | å¦ | åéæºæåç§° | | FaSongSJ | String | å¦ | åéæ¶é´ï¼å»ºè®® `yyyy-MM-dd HH:mm:ss` | | FaSongXTJC | String | å¦ | åéç³»ç»ç®ç§°ï¼é»è®¤ `SUIFANGXT` | | FaSongXTMC | String | å¦ | åéç³»ç»åç§°ï¼é»è®¤ `é访系ç»` | | XiaoXiID | String | å¦ | æ¶æ¯ IDï¼**该æ¥å£çååºåæ¾åçæ¯ `YeWuXX.XiaoXiID`ï¼ä¸æ¯æ¤å段** | | XiaoXiLX | String | æ¯ | æ¶æ¯ç±»åï¼å³å®ä¸å¡åæ¯ï¼ç¼ºå¤±æä¸ºç©ºæ¶æ¥å£æ¥é | | XiaoXiMC | String | å¦ | æ¶æ¯åç§° | | ZuHuID | String | å¦ | å»é¢ ID | | ZuHuMC | String | å¦ | å»é¢åç§° | ### 2.3 ä¸å¡ä¿¡æ¯ `YeWuXX` å ¬å ±åæ®µ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | XiaoXiID | String | æ¯ï¼å»ºè®®ï¼ | æ¶æ¯ IDï¼åæ ·æ¾å ¥ååº `Data.XiaoXiID`ï¼ç¼ºå¤±æ¶è¿å `null` | | BingRenXX | object | è§æ¶æ¯ç±»å | æ£è åºæ¬ä¿¡æ¯ï¼è§ 4.1 | | DiZhiXXList | array | è§æ¶æ¯ç±»å | æ£è å°åå表ï¼è§ 4.2 | | LianXiRList | array | è§æ¶æ¯ç±»å | æ£è è系人å表ï¼è§ 4.3 | | ZhenDuanList | array | è§æ¶æ¯ç±»å | è¯æå表ï¼è§ 4.4 | | JiuZhenXX | object | è§æ¶æ¯ç±»å | å°±è¯/ä½é¢è¿ç¨ä¿¡æ¯ï¼è§ 4.5 | | RuKeXX | object | ä» å ¥ç§ | å ¥ç§ä¿¡æ¯ï¼è§ 4.6 | | ChuYuanJL | object | è§æ¶æ¯ç±»å | åºé¢è®°å½ï¼å é¨ä½¿ç¨ `SuiFangJH`ï¼è§ 4.7 | | BingRenKZXXList | array | å¦ | æ£è æ©å±ä¿¡æ¯ï¼çå·ï¼ï¼è§ 4.8 | | WenZhenList | array | ä» å®ææ¥è¯ | é®è¯ä¿¡æ¯ï¼è§ 4.9 | | å ¶ä»ä¸å¡å¯¹è±¡ | object/array | è§æ¶æ¯ç±»å | `KeShiXX`ã`YongHuXX`ã`ZuZhiJGXX`ã`BingQuXX`ã`JiBingMLXX`ã`JianChaSQ`ã`JianChaBG`ã`ShouShuSQ`ã`ShouShuCX` çï¼è§ç¬¬äºç« | --- ## ä¸ãæ¶æ¯ç±»åï¼`XiaoXiLX`ï¼æ»è¡¨ | åºå· | XiaoXiLX | ä¸å¡å«ä¹ | å¤çæ¹æ³ | æ¯å¦è½åº | | --- | --- | --- | --- | --- | | 1 | `BR_DA_DangAnJL` | æ£è æ¡£æ¡å»ºç« | ä» è®°å½æ¥å¿ | å¦ï¼ç´æ¥è¿åæåï¼ | | 2 | `BR_DA_DangAnXG` | æ£è æ¡£æ¡ä¿®æ¹ | ä» è®°å½æ¥å¿ | å¦ï¼ç´æ¥è¿åæåï¼ | | 3 | `JZ_MZ_ZhenDuanXXLR` | é¨è¯è¯æä¿¡æ¯å½å ¥ | ä» è®°å½æ¥å¿ | å¦ï¼ç´æ¥è¿åæåï¼ | | 4 | `JZ_ZY_ZhenDuanXXLR` | ä½é¢è¯æä¿¡æ¯å½å ¥ | ä» è®°å½æ¥å¿ | å¦ï¼ç´æ¥è¿åæåï¼ | | 5 | `YZ_MZ_YiZhuSQ` | é¨è¯å»å±ç³è¯· | ä» è®°å½æ¥å¿ | å¦ï¼ç´æ¥è¿åæåï¼ | | 6 | `YZ_ZY_YiZhuZX` | ä½é¢å»å±æ§è¡ | ä» è®°å½æ¥å¿ | å¦ï¼ç´æ¥è¿åæåï¼ | | 7 | `YZ_MZ_YiZhuXG` | é¨è¯å»å±ä¿®æ¹ | ä» è®°å½æ¥å¿ | å¦ï¼ç´æ¥è¿åæåï¼ | | 8 | `YZ_MZ_YiZhuCX` | é¨è¯å»å±æ¤é | ä» è®°å½æ¥å¿ | å¦ï¼ç´æ¥è¿åæåï¼ | | 9 | `YZ_MZ_YiZhuCS` | é¨è¯å»å±å é¤ | ä» è®°å½æ¥å¿ | å¦ï¼ç´æ¥è¿åæåï¼ | | 10 | `JC_SQ_ShenQing` | æ£æ¥ç³è¯· | `addInspectService` | æ¯ï¼æ£æ¥ä¸»è¡¨ï¼ | | 11 | `JC_SQ_XiuGai` | æ£æ¥ç³è¯·ä¿®æ¹ | `addInspectService` | æ¯ï¼æ£æ¥ä¸»è¡¨ï¼ | | 12 | `JC_SQ_CheXiao` | æ£æ¥æ¤é | ä» è®°å½æ¥å¿ | å¦ï¼ç´æ¥è¿åæåï¼ | | 13 | `JC_BG_BaoGao` | æ£æ¥æ¥å | `addInspectBGService` | æ¯ï¼æ£æ¥æ¥åæç»ï¼ | | 14 | `JY_SQ_ShenQing` | æ£éªç³è¯· | `addInspectService` | æ¯ï¼æ£æ¥ä¸»è¡¨ï¼projecttype=1ï¼ | | 15 | `JY_SQ_CheXiao` | æ£éªæ¤é | ä» è®°å½æ¥å¿ | å¦ï¼ç´æ¥è¿åæåï¼ | | 16 | `JY_SQ_XiuGai` | æ£éªç³è¯·ä¿®æ¹ | `addInspectService` | æ¯ï¼æ£æ¥ä¸»è¡¨ï¼ | | 17 | `JY_SQ_BiaoBenCJ` | æ£éªæ æ¬éé | ä» è®°å½æ¥å¿ | å¦ï¼ç´æ¥è¿åæåï¼ | | 18 | `JY_SQ_QuXiaoBBCJ` | åæ¶æ£éªæ æ¬éé | ä» è®°å½æ¥å¿ | å¦ï¼ç´æ¥è¿åæåï¼ | | 19 | `SM_SQ_ShenQing` | ææ¯ç³è¯· | `addOperationInfo` | æ¯ï¼ææ¯ä¸»è¡¨+æç»ï¼ | | 20 | `SM_SQ_ShouShuAP` | ææ¯å®æ | ä» è®°å½æ¥å¿ | å¦ï¼ç´æ¥è¿åæåï¼ | | 21 | `SM_SQ_CheXiao` | ææ¯æ¤é | `cancelOperationInfo` | æ¯ï¼è½¯å 餿æ¯åä»»å¡ï¼ | | 22 | `TJ_YW_BaoGaoXX` | 使£æ¥å | ä» è®°å½æ¥å¿ | å¦ï¼ç´æ¥è¿åæåï¼ | | 23 | `TJ_YW_QuXiaoBG` | 忶使£æ¥å | ä» è®°å½æ¥å¿ | å¦ï¼ç´æ¥è¿åæåï¼ | | 24 | `JG_ZZ_JiGou` | ç»ç»æºæ | `addOrganInfo` | æ¯ï¼`base_organization`ï¼ | | 25 | `JG_ZZ_KeShi` | ç§å®¤ | `addDeptInfo` | æ¯ï¼`sys_dept`ï¼ | | 26 | `JG_YH_JiBenXX` | ç¨æ·åºæ¬ä¿¡æ¯ | `addUserInfo` | æ¯ï¼`sys_user`ï¼ | | 27 | `JG_YH_KeShiYH` | ç§å®¤ç¨æ·å ³ç³» | `addUserDeptInfo` | æ¯ï¼`sys_user_dept`ï¼ | | 28 | `fu_task` | éè®¿ä»»å¡ | `addTaskInfo` | å¦ï¼å½å为空å®ç°ï¼ | | 29 | `GY_ZD_JiBingML` | ç¾ç ç®å½ | `addDiseaseInfo` | æ¯ï¼`icd10`ï¼ | | 30 | `YP_ZD_YaoPinCDJG` | è¯å产å°ä»·æ ¼ | ä» è®°å½æ¥å¿ | å¦ï¼ç´æ¥è¿åæåï¼ | | 31 | `JZ_MZ_WanChengJZ` | 鍿¥è¯å®ææ¥è¯ | `addFinshJZInfo` | æ¯ï¼é¨è¯å°±è¯+ä»»å¡ï¼ | | 32 | `JZ_ZY_RuYuanDJ` | å ¥é¢ç»è®° | `addInHospInfo` | æ¯ï¼æ¡£æ¡+ä½é¢è®°å½ï¼ | | 33 | `JZ_ZY_QuXiaoRY` | åæ¶å ¥é¢ç»è®° | `cancelInHospInfo` | æ¯ï¼ä½é¢è®°å½ç½®å é¤ï¼ | | 34 | `JZ_ZY_ChuYuan` | æ£è åºé¢ | `addOutHospInfo` | æ¯ï¼ä½é¢è®°å½+åºé¢ä¿¡æ¯ï¼ | | 35 | `BL_JL_ChuYuanJL` | æ£è åºé¢è®°å½ | `addOutHospJLInfo` | æ¯ï¼ä½é¢è®°å½+åºé¢ä¿¡æ¯ï¼ | | 36 | `JZ_ZY_QuXiaoCY` | åæ¶åºé¢ | `cancelOutHospInfo` | æ¯ï¼åéå¨é¢ç¶æå¹¶æ¸ ä»»å¡ï¼ | | 37 | `JZ_ZY_YuChuYuan` | æ£è é¢åºé¢ | `addPreOutHospInfo` | æ¯ï¼ä½é¢è®°å½é¢åºé¢ç¶æï¼ | | 38 | `JZ_ZY_LiQiang` | æ£è ç¦»æ¢ | `editRescueFinishedOutHospInfo` | æ¯ï¼åå¡«åºé¢æ¶é´/æ»äº¡å¤çï¼ | | 39 | `JG_ZZ_BingQu` | ç åº | `addWardAreaInfo` | æ¯ï¼`sys_dept`ï¼deptType=2ï¼ | | 40 | `JG_ZZ_YiLiaoZYS` | å»çç»å»ç | `addMedicalTeam` | å¦ï¼å½å为空å®ç°ï¼ | | 41 | `JZ_ZY_RuKe` | å ¥ç§ | `addInDeptInfo` | æ¯ï¼æ¡£æ¡+ä½é¢è®°å½ï¼ | > æªå¨ `switch` ä¸å¹é å°ç `XiaoXiLX` ä¼èµ°é»è®¤åæ¯ï¼ç´æ¥è¿åæåï¼`Code=0`ï¼ï¼ä¸äº§ç任使°æ®åæ´ã请è°ç¨æ¹ç¡®ä¿ç±»åæ¼åå®å ¨ä¸è´ã --- ## åãå ¬å ±ä¸å¡å¯¹è±¡ ### 4.1 `BingRenXX` æ£è åºæ¬ä¿¡æ¯ å¯¹åº `ExternalInHospPatientInfo`ãä½é¢ãæ¥è¯ãæ£æ¥ãææ¯ç±»æ¶æ¯å使ç¨è¯¥å¯¹è±¡ã | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | ZuZhiJGID | String | æ¯ | ç»ç»æºæ IDï¼åå ¥ `orgid`ï¼ï¼`JZ_MZ_WanChengJZ` 伿¹ç¨æ¶æ¯å¤´ `FaSongJGID` | | ZuZhiJGMC | String | å¦ | ç»ç»æºæåç§° | | MPI | String | å¦ | å± æ°ä¸»ç´¢å¼ | | BingRenID | String | æ¯ | ç 人 IDï¼åå ¥ `patid_his/patno`ï¼æ¯æ£è å¹é 便®ä¹ä¸ | | XingMing | String | æ¯ | æ£è å§å | | XingMingQP | String | å¦ | å§åå ¨æ¼ | | JiuZhenYWLX | String | å¦ | å°±è¯ä¸å¡ç±»å | | JiuZhenYWID | String | æ¯ | å°±è¯ä¸å¡ IDï¼ä¸ `BingAnHao` å ±åå®ä½ä½é¢/é¨è¯è®°å½ | | JiuZhenKH | String | å¦ | å°±è¯å¡å·ï¼è¯ä»¶å·ç 为空æ¶ä½ä¸ºæ£è æ¡£æ¡å¯ä¸æ è¯ | | ZhuYuanHao | String | å¦ | ä½é¢å· | | BingAnHao | String | æ¯ | ç æ¡å·ï¼ä»£ç 注éæç¡®ä½¿ç¨ç æ¡å·ï¼ä¸ä½¿ç¨ä½é¢å·ï¼ | | ZhengJianLXDM | String | å¦ | è¯ä»¶ç±»å代ç | | ZhengJianLXMC | String | å¦ | è¯ä»¶ç±»ååç§°ï¼åå ¥æ¡£æ¡ `idcardtype` | | ZhengJianHM | String | æ¯ï¼å»ºè®®ï¼ | è¯ä»¶å·ç ï¼æ£è æ¡£æ¡å¯ä¸æ è¯ï¼ä¸ºç©ºæ¶ä½¿ç¨ `JiuZhenKH` | | XingBieDM | String | å¦ | æ§å«ä»£ç ï¼**å¿ é¡»ä¸ºæ°åå符串**ï¼å¦ `1`/`2`ï¼ï¼ä»£ç æ§è¡ `Long.valueOf` | | XingBieMC | String | å¦ | æ§å«åç§° | | ChuShengRQ | String | æ¯ï¼å»ºè®®ï¼ | åºçæ¥æï¼æ ¼å¼ `yyyy-MM-dd hh:mm:ss`ï¼ä»£ç å®é è§£ææ ¼å¼ï¼å»ºè®®ä¸å¹¶ä¼ æ¶é´ï¼ | | NianLing | String | å¦ | å¹´é¾ï¼ä»£ç ä¸ä½¿ç¨ï¼å¹´é¾ç±åºçæ¥æè®¡ç® | | NianLingDW | String | å¦ | å¹´é¾åä½ï¼ä»£ç ä¸ä½¿ç¨ | | DangQianKSID | String | æ¯ | å½åç§å®¤ IDï¼åå ¥ä½é¢/åºé¢ç§å®¤ | | DangQianKSMC | String | æ¯ | å½åç§å®¤åç§° | | DangQianBQID | String | æ¯ | å½åç åº IDï¼åå ¥ä½é¢ç åº | | DangQianBQMC | String | æ¯ | å½åç åºåç§° | | DangQianCWID | String | å¦ | å½ååºä½ ID | | DangQianCWMC | String | å¦ | å½ååºä½åç§°ï¼åå ¥ä½é¢ `bedNo` | | ZhuYuanCS | Long | å¦ | ä½é¢æ¬¡æ° | | RuYuanSJ | Date | æ¯ï¼å ¥é¢/å ¥ç§ï¼ | å ¥é¢æ¶é´ï¼åå ¥ä½é¢ `starttime`ï¼æ ¼å¼ `yyyy-MM-dd HH:mm:ss` | | FeiYongLBID | String | å¦ | è´¹ç¨ç±»å« ID | | FeiYongLBMC | String | å¦ | è´¹ç¨ç±»å«åç§° | | FeiYongXZID | String | å¦ | è´¹ç¨æ§è´¨ ID | | FeiYongXZMC | String | å¦ | è´¹ç¨æ§è´¨åç§° | | LianXiDH | String | æ¯ï¼å»ºè®®ï¼ | èç³»çµè¯ï¼åå ¥æ£è æ¡£æ¡ææºå· | | LianXiRDH | String | å¦ | è系人çµè¯ï¼`LianXiDH` 为空æ¶ä½ä¸ºæ£è ææºå· | | DanWeiDH | String | å¦ | åä½çµè¯ | | DanWeiMC | String | å¦ | åä½åç§° | | HunYinDM | String | å¦ | å©å§»ä»£ç | | HunYinMC | String | å¦ | å©å§»åç§° | | ZhiYeDM | String | å¦ | èä¸ä»£ç | | ZhiYeMC | String | å¦ | èä¸åç§° | | GuoJiDM | String | å¦ | å½ç±ä»£ç | | GuoJiMC | String | å¦ | å½ç±åç§°ï¼åå ¥æ¡£æ¡ `nativePlace` | | MinZuDM | String | å¦ | æ°æä»£ç | | MinZuMC | String | å¦ | æ°æåç§°ï¼åå ¥æ¡£æ¡ `nation` | | CaoZuoRID | String | å¦ | æä½äºº IDï¼å ¥é¢ç»è®° `operatorId`ï¼ | | CaoZuoRXM | String | å¦ | æä½äººå§åï¼å ¥é¢ç»è®° `operator`ï¼ | | YingErBZ | String | å¦ | å©´å¿æ å¿ | | MuQinZYJZID | String | å¦ | æ¯äº²å°±è¯ ID | | ChanFuBZ | String | å¦ | äº§å¦æ å¿ | | XianZhuZXX | String | å¦ | ç°ä½åï¼**ä¼å äº `DiZhiXXList`** åå ¥æ¡£æ¡ç°ä½å | | ZeRenHSID | String | å¦ | 责任æ¤å£« ID | | ZeRenHSXM | String | å¦ | 责任æ¤å£«å§å | | ZhuZhiYSID | String | å¦ | 主治å»ç ID | | ZhuZhiYSXM | String | å¦ | 主治å»çå§å | | JingGuanYSID | String | å¦ | ç»ç®¡å»ç ID | | JingGuanYSXM | String | å¦ | ç»ç®¡å»çå§å | | DuanHaoXX | String | å¦ | çå·ä¿¡æ¯ï¼åºé¢æ¶å¯ç± `BingRenKZXXList` è¦ç | | BingRenLXDM | String | å¦ | ç 人类å代ç ï¼ææ¯è®°å½åå ¥ `inhospstate` | | BingRenLXMC | String | å¦ | ç 人类ååç§° | > `externalInHospPatientLiaisonInfos` åæ®µä¸ä¼ä»æ¥æè¯»åï¼èç³»äººè¯·ä½¿ç¨ `YeWuXX.LianXiRList`ã ### 4.2 `DiZhiXXList` æ£è å°åä¿¡æ¯ å¯¹åº `ExternalInHospPatientAddrInfo`ï¼åç¬¬ä¸æ¡ä½ä¸ºæ£è ç°ä½åï¼`XianZhuZXX` 为空æ¶ï¼ã | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | DiZhiLX | String | å¦ | å°åç±»å | | DiZhiXX | String | å¦ | å°åä¿¡æ¯ï¼æå¼æ¶ç´æ¥ä½ä¸ºç°ä½åï¼å¦åç±ç/å¸/åº/乡é/æ/å ¶ä»æ¼æ¥ | | ShengFenDM | String | å¦ | ç份代ç | | ShengFenMC | String | å¦ | ç份åç§° | | ShiDiQDM | String | å¦ | å¸å°åºä»£ç | | ShiDiQMC | String | å¦ | å¸å°åºåç§° | | XianQuDM | String | å¦ | å¿åºä»£ç | | XianQuMC | String | å¦ | å¿åºåç§° | | XiangZhenDM | String | å¦ | 乡é代ç | | XiangZhenMC | String | å¦ | 乡éåç§° | | CunJiDM | String | å¦ | æçº§ä»£ç | | CunJiMC | String | å¦ | æçº§åç§° | | QiTaXX | String | å¦ | å ¶ä»ä¿¡æ¯ | | YouBian | String | å¦ | é®ç¼ | ### 4.3 `LianXiRList` æ£è èç³»äººä¿¡æ¯ å¯¹åº `ExternalInHospPatientLiaisonInfo`ï¼åå ¥ `pat_archivecontact`ã | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | LianXiRXM | String | å¦ | è系人å§å | | LianXiRDH | String | å¦ | è系人çµè¯ | | GuanXiDM | String | å¦ | å ³ç³»ä»£ç | | GuanXiMC | String | å¦ | å ³ç³»åç§°ï¼åå ¥è系人 `relation` | ### 4.4 `ZhenDuanList` è¯æä¿¡æ¯ ä¸åæ¶æ¯ç±»ååæ®µä¸åï¼æä¸è¡¨ä¼ éã **ï¼1ï¼ä½é¢ç±»ï¼å ¥é¢ç»è®°ãåºé¢ãåºé¢è®°å½ãé¢åºé¢ï¼** | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | ZhenDuanID | String | å¦ | è¯æ ID | | ZhenDuanMC | String | æ¯ | è¯æåç§° | | Icd10 | String | æ¯ï¼å»ºè®®ï¼ | ICD10 ç¼ç ï¼åºé¢æ¶åå ¥ `leaveicd10code` | **ï¼2ï¼é¨æ¥è¯å®ææ¥è¯ï¼`JZ_MZ_WanChengJZ`ï¼** | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | ZhenDuanYSID | String | å¦ | è¯æå»ç ID | | ZhenDuanYSXM | String | å¦ | è¯æå»çå§å | | ZhenDuanID | String | å¦ | è¯æ ID | | ZhenDuanMC | String | æ¯ | è¯æåç§° | | ZhenDuanLBDM | String | å¦ | è¯æç±»å«ä»£ç | | ZhenDuanLBMC | String | æ¯ | è¯æç±»å«åç§°ï¼çäº `ä¸»è¯æ` æ¶åå ¥é¨è¯ä¸»è¯æãå»çãICD10 | | Icd10 | String | æ¯ï¼å»ºè®®ï¼ | ICD10 ç¼ç | **ï¼3ï¼æ£æ¥/æ£éªç³è¯·ï¼`JianChaSQ.ZhenDuanList`ï¼** | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | ZhenDuanID | String | å¦ | è¯æ ID | | ZhenDuanMC | String | å¦ | è¯æåç§° | ### 4.5 `JiuZhenXX` å°±è¯/ä½é¢è¿ç¨ä¿¡æ¯ ä¸åæ¶æ¯ç±»åæéååæ®µï¼æªè¢«ä½¿ç¨çåæ®µå¯å¿½ç¥ã | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | JiuZhenKSID | String | æ¥è¯å¿ å¡« | å°±è¯ç§å®¤ ID | | JiuZhenKSMC | String | æ¥è¯å¿ å¡« | å°±è¯ç§å®¤åç§° | | JiuZhenYSID | String | å¦ | å°±è¯å»ç IDï¼å½åä»£ç æªè½åºï¼ | | JiuZhenYSMC | String | å¦ | å°±è¯å»çåç§°ï¼å½åä»£ç æªè½åºï¼ | | JiuZhenRQ | Date | æ¥è¯å¿ å¡« | å°±è¯æ¥æï¼åå ¥é¨è¯ `admitdate`ï¼æ ¼å¼ `yyyy-MM-dd HH:mm:ss` | | sfrq | Date | å¦ | éè®¿æ¥æï¼åå ¥é¨è¯ `fudate`ï¼ä»£ç 夿³¨åæ®µå¾ HIS ç¡®è®¤ï¼ | | HuanZheQXDM | String | å¦ | æ£è å»å代ç | | HuanZheQXMC | String | å¦ | æ£è å»ååç§° | | ChuYuanSJ | String | åºé¢å¿ å¡« | åºé¢æ¶é´ï¼æ ¼å¼ `yyyy-MM-dd HH:mm:ss` | | YuChuYSJ | String | é¢åºé¢å¿ å¡« | é¢åºé¢æ¶é´ï¼æ ¼å¼ `yyyy-MM-dd HH:mm:ss` | | LiQiangSJ | String | 离æ¢å»ºè®®å¿ å¡« | ç¦»æ¢æ¶é´ï¼æ ¼å¼ `yyyy-MM-dd HH:mm:ss`ï¼ç¼ºå¤±æ¶åªåæ»äº¡æ è®°å¤ç | | LiYuanQXDM | String | é¢åºé¢å¿ å¡« | ç¦»é¢æ¹å¼ä»£ç ï¼`5` 表示æ»äº¡ï¼è§¦åæ»äº¡æ£è å¤ç | | CaoZuoRID | String | å¦ | æä½äºº ID | | CaoZuoRXM | String | å¦ | æä½äººå§å | | ZhuZhiYSID | String | å¦ | 主治å»ç IDï¼åå ¥ `drcode`ï¼ | | ZhuZhiYSXM | String | å¦ | 主治å»çå§åï¼åå ¥ `drname`ï¼ | | ZeRenHSID | String | å¦ | 责任æ¤å£« ID | | ZeRenHSXM | String | å¦ | 责任æ¤å£«å§å | | DangQianCWMC | String | å¦ | åºä½åç§°ï¼åå ¥ `bedNo`ï¼ | | JingGuanYSID | String | å¦ | ç»ç®¡å»ç ID | | JingGuanYSXM | String | å¦ | ç»ç®¡å»çå§å | > ç¦»é¢æ¹å¼ä»£ç 说æï¼`1` å»å±ç¦»é¢ã`2` å»å±è½¬é¢ã`3` å»å±è½¬ç¤¾åºå«çæå¡æºæ/乡éå«çé¢ã`4` éå»å±ç¦»é¢ã`5` æ»äº¡ã`9` å ¶ä»ã`10` ä»å ¥å®¤ã`20` ææ¯å®¤ã ### 4.6 `RuKeXX` å ¥ç§ä¿¡æ¯ ä» `JZ_ZY_RuKe` 使ç¨ï¼å¯¹åº `ExternalInDeptPatientInfo`ã | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | CaoZuoRID | String | å¦ | æä½äºº ID | | CaoZuoRXM | String | å¦ | æä½äººå§å | | RuKeSJ | String | å¦ | å ¥ç§æ¶é´ | | RuYuanSJ | Date | å¦ | å ¥é¢æ¶é´ï¼è¦ç `BingRenXX.RuYuanSJ` | | YiLiaoZID | String | å¦ | å»çç» ID | | YiLiaoZMC | String | å¦ | å»çç»åç§° | | ZhuZhiYSID | String | å¦ | 主治å»ç ID | | ZhuZhiYSXM | String | å¦ | 主治å»çå§å | | ZeRenHSID | String | å¦ | 责任æ¤å£« ID | | ZeRenHSXM | String | å¦ | 责任æ¤å£«å§å | | HuShiZID | String | å¦ | æ¤å£«ä¸» ID | | HuShiZXM | String | å¦ | æ¤å£«ä¸»å§å | | JingGuanYSID | String | å¦ | ç»ç®¡å»ç ID | | JingGuanYSXM | String | å¦ | ç»ç®¡å»çå§å | ### 4.7 `ChuYuanJL.SuiFangJH` é访计å åºé¢ãåºé¢è®°å½ãé¢åºé¢æ¶æ¯ä½¿ç¨ï¼ç¨äºçæ/æ´æ°é访计åã | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | SuiFangBS | String | å¦ | é访æ è¯ï¼`0` ä¸éè¦é访ã`1` éè¦ï¼é»è®¤ `1` | | SuiFangRQ | String | å¦ | éè®¿æ¥æï¼æ ¼å¼ `yyyy-MM-dd HH:mm:ss` | | SuiFangZQJY | String | å¦ | éè®¿å¨æå»ºè®® | | SuiFangFSDM | String | å¦ | é访æ¹å¼ä»£ç | | SuiFangFSMC | String | å¦ | é访æ¹å¼åç§° | | FuZhenZD | String | å¦ | å¤è¯æå¯¼ | | QiTaZKJBSF | String | å¦ | å ¶ä»ä¸ç§ç¦è¡¥é访说æ | ### 4.8 `BingRenKZXXList` æ£è æ©å±ä¿¡æ¯ åºé¢ï¼`JZ_ZY_ChuYuan`ï¼ä½¿ç¨ï¼ç¨äºæåçå·ã | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | XiangMuDM | String | æ¯ï¼è¥ä¼ ï¼ | 项ç®ä»£ç ï¼çäº `DuanHaoXX` æ¶å `XiangMuZMC` ä½ä¸ºçå· | | XiangMuZMC | String | æ¯ï¼è¥ä¼ ï¼ | 项ç®å¼ | 示ä¾ï¼ ```json "BingRenKZXXList": [ { "XiangMuDM": "DuanHaoXX", "XiangMuZMC": "669999" } ] ``` ### 4.9 `WenZhenList` é®è¯ä¿¡æ¯ ä» `JZ_MZ_WanChengJZ` 使ç¨ãä»£ç æ `WenZhenLXMC` å¹é 以ä¸åç±»ï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | WenZhenLXMC | String | æ¯ï¼è¥ä¼ ï¼ | é®è¯ç±»ååç§°ï¼`ç°ç å²`ã`主è¯`ã`é访天æ°`ã`é访天æ°åä½` | | NeiRong | String | æ¯ï¼è¥ä¼ ï¼ | é®è¯å 容ï¼`é访天æ°` å¿ é¡»ä¸ºæ´æ°ï¼`é访天æ°åä½` æ¯æ `天`/`å¨`/`æ`/`å¹´` | > å ¶ä»å段ï¼`WenZhenLXDM`ã`WenZhenSJ`ã`WenZhenYSID`ã`WenZhenYSXM`ã`WenZhenKSID`ã`WenZhenKSMC`ï¼å½åä¸åä¸ä¸å¡å¤çã --- ## äºãåæ¶æ¯ç±»åçä¸å¡æ¥æ > 以ä¸ä» ååº `YeWuXX` ä¸è¯¥æ¶æ¯ç±»åå®é 使ç¨çé®ï¼æªååºçé®ä¼è¢«å¿½ç¥ã ### 5.1 æºæãç§å®¤ãç¨æ·ãç åº #### 5.1.1 `JG_ZZ_JiGou` ç»ç»æºæ `YeWuXX` ç»æï¼`{ "XiaoXiID": "...", "ZuZhiJGXX": { ... } }` `ZuZhiJGXX` åæ®µï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | ZuZhiJGID | String | æ¯ | æºæ IDï¼åæ¶åå ¥ `orgid` | | ZuZhiJGMC | String | æ¯ | æºæåç§° | | ShiJianDM | String | æ¯ | äºä»¶ä»£ç ï¼`1` æ°å¢ï¼å ¶ä»å¼æ´æ°ï¼`3` ä½åºå½åä¹èµ°æ´æ°ï¼ | | ShiJianMC | String | å¦ | äºä»¶åç§° | | ShuRuMa1 | String | å¦ | è¾å ¥ç 1 | | ShuRuMa2 | String | å¦ | è¾å ¥ç 2 | | ShuRuMa3 | String | å¦ | è¾å ¥ç 3 | | createBy | String | å¦ | åå»ºäººï¼æ¥èª BaseEntityï¼å®é çæï¼ | | createTime | Date | å¦ | å建æ¶é´ï¼`yyyy-MM-dd HH:mm:ss` | | updateBy | String | å¦ | ä¿®æ¹äººï¼å®é çæï¼ | | updateTime | Date | å¦ | ä¿®æ¹æ¶é´ï¼`yyyy-MM-dd HH:mm:ss` | #### 5.1.2 `JG_ZZ_KeShi` ç§å®¤ `YeWuXX.KeShiXX`ï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | ZuZhiJGID | String | æ¯ | æºæ ID | | KeShiID | String | æ¯ | ç§å®¤ IDï¼åå ¥ `his_dept_id` / `dept_code` | | KeShiMC | String | æ¯ | ç§å®¤åç§° | | FuKeSID | String | å¦ | ç¶ç§å®¤ IDï¼ç¨äºæ¥æ¾å¹¶å¡«å `parentId` | | KeShiLBDM | String | å¦ | ç§å®¤ç±»å«ä»£ç ï¼åå ¥ `type` | | ShiJianDM | String | æ¯ | `1` æ°å¢ï¼`3` ä½åºï¼`status=1`ï¼ï¼å ¶ä»å¼ä¿®æ¹ | | ShiJianMC | String | å¦ | äºä»¶åç§° | | KeShiLBMC | String | å¦ | ç§å®¤ç±»å«åç§° | | FuKeSMC | String | å¦ | ç¶ç§å®¤åç§° | | MoJiBZ | Integer | å¦ | æ«çº§æ å¿ | | ShuRuMa1/2/3 | String | å¦ | è¾å ¥ç | | createBy | String | å¦ | å建人ï¼å®é çæï¼ | | createTime | Date | å¦ | å建æ¶é´ï¼å®é çæï¼ | | updateBy | String | å¦ | ä¿®æ¹äººï¼å®é çæï¼ | | updateTime | Date | å¦ | ä¿®æ¹æ¶é´ï¼å®é çæï¼ | #### 5.1.3 `JG_YH_JiBenXX` ç¨æ·åºæ¬ä¿¡æ¯ `YeWuXX.YongHuXX`ï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | ZuZhiJGID | String | æ¯ | æºæ IDï¼ä¸ºç©ºæ¶ç´æ¥è¿å失败 | | YongHuDLM | String | æ¯ | ç¨æ·ç»å½åï¼ä¸ºç©ºæ¶ç´æ¥è¿å失败 | | YongHuID | String | æ¯ï¼å»ºè®®ï¼ | HIS ç¨æ· IDï¼åå ¥ `his_user_id`ï¼åç»ç§å®¤ç¨æ·å ³ç³»ææ¤å¹é | | YongHuXM | String | æ¯ï¼å»ºè®®ï¼ | ç¨æ·å§åï¼åå ¥ `nick_name` | | LianXiDH | String | å¦ | èç³»çµè¯ | | GongZuoDH | String | å¦ | å·¥ä½çµè¯ | | XingBieDM | String | å¦ | æ§å«ä»£ç ï¼åå ¥ `sex` | | ChuShengRQ | Date | å¦ | åºçæ¥æï¼`yyyy-MM-dd HH:mm:ss` | | ShiJianDM | String | æ¯ | `3` ä½åºï¼`status=1`ï¼ï¼å ¶ä»å¼æç¨æ·å+æºæå¤ææ°å¢ææ´æ° | | ShiJianMC | String | å¦ | äºä»¶åç§° | | ShenFenZH | String | å¦ | 身份è¯å·ï¼å½åæªè½åºï¼ | | ChuangJianRXM | String | å¦ | å建人å§å | | ChuangJianSJ | Date | å¦ | å建æ¶é´ | | XiuGaiRXM | String | å¦ | ä¿®æ¹äººå§å | | XiuGaiSJ | Date | å¦ | ä¿®æ¹æ¶é´ | > æ°å¢ç¨æ·æ¶å¯ç 使ç¨ç³»ç»é»è®¤å¯ç `defaultPwd` å å¯ååå ¥ã #### 5.1.4 `JG_YH_KeShiYH` ç§å®¤ç¨æ·å ³ç³» `YeWuXX.KeShiYH`ï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | ZuZhiJGID | String | æ¯ | æºæ ID | | YongHuID | String | æ¯ | ç¨æ· IDï¼ç¨äºæ¥æ¾ `sys_user` | | KeShiID | String | æ¯ | ç§å®¤ IDï¼ç¨äºæ¥æ¾ `sys_dept` | | ShiJianDM | String | æ¯ | `3` ä½åºï¼`del_flag=1`ï¼ï¼å ¶ä»å¼æ°å¢ææ´æ°å ³ç³» | | ShiJianMC | String | å¦ | äºä»¶åç§° | | KeShiYHDZID | String | å¦ | ç§å®¤ç¨æ·å°å IDï¼æªè½åºï¼ | | YongHuXM | String | å¦ | ç¨æ·å§åï¼æªè½åºï¼ | | KeShiMC | String | å¦ | ç§å®¤åç§°ï¼æªè½åºï¼ | | ZhiGongID | String | å¦ | èå·¥ IDï¼æªè½åºï¼ | | YongHuDLM | String | å¦ | ç¨æ·ç»å½åï¼ä» æ¥å¿ï¼ | | ChuangJianRXM | String | å¦ | å建人å§å | | ChuangJianSJ | Date | å¦ | å建æ¶é´ | | XiuGaiRXM | String | å¦ | ä¿®æ¹äººå§å | | XiuGaiSJ | Date | å¦ | ä¿®æ¹æ¶é´ | > ç¨æ·æç§å®¤æ¾ä¸å°æ¶è¿å `Code=500`ï¼`false`ï¼ã #### 5.1.5 `JG_ZZ_BingQu` ç åº `YeWuXX.BingQuXX`ï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | ZuZhiJGID | String | æ¯ | æºæ ID | | BingQuID | String | æ¯ | ç åº IDï¼åå ¥ `his_dept_id` / `dept_code` | | BingQuMC | String | æ¯ | ç åºåç§° | | BingQuLXDM | String | å¦ | ç åºç±»å代ç ï¼åå ¥ `type` | | ShiJianDM | String | æ¯ | `1` æ°å¢ï¼`3` ä½åºï¼`status=1`ï¼ï¼å ¶ä»å¼ä¿®æ¹ | | ShiJianMC | String | å¦ | äºä»¶åç§° | | BingQuLXMC | String | å¦ | ç åºç±»ååç§°ï¼æªè½åºï¼ | | ShuRuMa1/2/3 | String | å¦ | è¾å ¥ç | | ChuangJianRXM | String | å¦ | å建人å§åï¼å®é çæï¼ | | createTime | Date | å¦ | å建æ¶é´ï¼`yyyy-MM-dd HH:mm:ss`ï¼å®é çæï¼ | | updateBy | String | å¦ | ä¿®æ¹äººï¼å®é çæï¼ | | updateTime | Date | å¦ | ä¿®æ¹æ¶é´ï¼å®é çæï¼ | > ç åºè®°å½ `deptType=2`ï¼ä¸ç§å®¤ï¼`deptType=1`ï¼åºåã ### 5.2 `GY_ZD_JiBingML` ç¾ç ç®å½ `YeWuXX.JiBingMLXX`ï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | ZuZhiJGID | String | æ¯ | æºæ ID | | JiBingID | String | æ¯ | ç¾ç IDï¼åå ¥ `his_icdid` | | JiBingMC | String | æ¯ | ç¾ç åç§°ï¼åå ¥ `icdname` | | IcD10 | String | æ¯ | ICD10 ç¼ç ï¼ä½ä¸ºæ°å¢/æ´æ°å¹é æ¡ä»¶ | | MOJIBZ | String | å¦ | æ«çº§æ å¿ï¼åå ¥ `lastflag` | | ZhongYiZDBZ | Long | å¦ | ä¸å»è¯ææ å¿ï¼åå ¥ `chimedflag` | | ShiJianDM | String | å¦ | äºä»¶ä»£ç ï¼å½åæªåä¸å¤æï¼åå¨å³æ´æ°ãä¸åå¨å³æ°å¢ï¼ | | å ¶ä»å段 | - | å¦ | å½åæªä½¿ç¨ | > ç¼ç ä¸åºåæ°å¢/ä¿®æ¹ï¼æ `IcD10 + æºæ` æ¥è¯¢ï¼åå¨åæ´æ°ï¼ä¸åå¨åæ°å¢ã ### 5.3 å ¥é¢ãå ¥ç§ãåæ¶å ¥é¢ #### 5.3.1 `JZ_ZY_RuYuanDJ` å ¥é¢ç»è®° `YeWuXX` ç»æï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | XiaoXiID | String | æ¯ï¼å»ºè®®ï¼ | ååºåæ¾ | | BingRenXX | object | æ¯ | æ£è ä¿¡æ¯ï¼è§ 4.1 | | DiZhiXXList | array | æ¯ | å°åå表ï¼**ä»£ç æªåç©ºå¤æï¼ä¸è½ä¸ºç©º** | | LianXiRList | array | æ¯ | è系人å表ï¼**ä¸è½ä¸ºç©º** | | ZhenDuanList | array | æ¯ | è¯æå表ï¼**ä¸è½ä¸ºç©º**ï¼åç¬¬ä¸æ¡åå ¥å ¥é¢è¯æ | å¤çç»æï¼ - æè¯ä»¶å·ï¼æå°±è¯å¡å·ï¼æ°å¢/æ´æ°æ£è æ¡£æ¡ `pat_archive`ï¼ - æ `BingAnHao + JiuZhenYWID` æ°å¢/æ´æ°ä½é¢è®°å½ `pat_med_inhosp`ï¼ - ä½é¢ç¶æ `inhospstate=0`ï¼å¨é¢ï¼ã 请æ±ç¤ºä¾ï¼ ```json { "XiaoXiTou": { "FaSongJGID": "47255004333112711A1001", "FaSongJGMC": "丽水å¸ä¸å»é¢", "FaSongSJ": "2026-10-20 10:00:00", "XiaoXiLX": "JZ_ZY_RuYuanDJ", "XiaoXiID": "MSG-20261020-0001" }, "YeWuXX": { "XiaoXiID": "MSG-20261020-0001", "BingRenXX": { "ZuZhiJGID": "47255004333112711A1001", "ZuZhiJGMC": "丽水å¸ä¸å»é¢", "BingRenID": "BR0001", "XingMing": "å¼ ä¸", "JiuZhenYWID": "JZ20261020001", "JiuZhenKH": "MZ0001", "BingAnHao": "BA20261020001", "ZhengJianLXMC": "å± æ°èº«ä»½è¯", "ZhengJianHM": "330102199001011234", "XingBieDM": "1", "XingBieMC": "ç·", "ChuShengRQ": "1990-01-01 08:00:00", "DangQianKSID": "D001", "DangQianKSMC": "å¿è¡ç®¡å ç§", "DangQianBQID": "B001", "DangQianBQMC": "å¿å ç§ç åº", "DangQianCWMC": "12åº", "RuYuanSJ": "2026-10-20 09:30:00", "LianXiDH": "13800000000", "CaoZuoRID": "U001", "CaoZuoRXM": "æå»ç", "ZhuZhiYSID": "D1001", "ZhuZhiYSXM": "çå»ç" }, "DiZhiXXList": [ { "DiZhiLX": "1", "DiZhiXX": "æµæ±ç丽水å¸è²é½åºXXè·¯1å·", "ShengFenMC": "æµæ±ç", "ShiDiQMC": "丽水å¸", "XianQuMC": "è²é½åº" } ], "LianXiRList": [ { "LianXiRXM": "æå", "LianXiRDH": "13900000000", "GuanXiMC": "é å¶" } ], "ZhenDuanList": [ { "ZhenDuanID": "I10", "ZhenDuanMC": "ååæ§é«è¡å", "Icd10": "I10" } ] } } ``` #### 5.3.2 `JZ_ZY_RuKe` å ¥ç§ `YeWuXX` ç»æï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | XiaoXiID | String | æ¯ï¼å»ºè®®ï¼ | ååºåæ¾ | | BingRenXX | object | æ¯ | æ£è ä¿¡æ¯ï¼å ¶ä¸ `DiZhiXXList` **ä¸è½ä¸ºç©º** | | RuKeXX | object | æ¯ | å ¥ç§ä¿¡æ¯ï¼è§ 4.6 | | JiuZhenXX | object | å¦ | 代ç 读å使ªä½¿ç¨ï¼å¯å¿½ç¥ | å¤çç»æï¼ç¨ `RuKeXX` ä¸ç主治å»çã责任æ¤å£«ãå ¥é¢æ¶é´è¦çæ£è ä¿¡æ¯ï¼ç¶åæ°å¢/æ´æ°æ¡£æ¡ä¸ä½é¢è®°å½ã #### 5.3.3 `JZ_ZY_QuXiaoRY` åæ¶å ¥é¢ç»è®° `YeWuXX` ç»æï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | XiaoXiID | String | æ¯ï¼å»ºè®®ï¼ | ååºåæ¾ | | BingRenXX | object | æ¯ | è³å°å å« `BingAnHao`ã`JiuZhenYWID` | | JiuZhenXX | object | å¦ | å `CaoZuoRID`ã`CaoZuoRXM` è®°å½æä½äºº | å¤çç»æï¼æ `BingAnHao + JiuZhenYWID` æ¾å°ä½é¢è®°å½ï¼ç½® `schemestatus=3`ã`del_flag=1`ã ### 5.4 åºé¢ãåºé¢è®°å½ãé¢åºé¢ãåæ¶åºé¢ãç¦»æ¢ #### 5.4.1 `JZ_ZY_ChuYuan` æ£è åºé¢ `YeWuXX` ç»æï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | XiaoXiID | String | æ¯ï¼å»ºè®®ï¼ | ååºåæ¾ | | BingRenXX | object | æ¯ | æ£è ä¿¡æ¯ï¼è§ 4.1 | | JiuZhenXX | object | æ¯ | **å¿ é¡»å å« `ChuYuanSJ`**ï¼åºé¢æ¶é´ï¼ï¼å¦åæä½äººã主治å»çã责任æ¤å£«ãåºä½ãç»ç®¡å»çã`LiYuanQXDM` | | DiZhiXXList | array | å¦ | å°åå表ï¼ä¸ºç©ºä¸æ¥é | | LianXiRList | array | å¦ | è系人å表ï¼ä¸ºç©ºä¸æ¥é | | ChuYuanJL | object | å¦ | åºé¢è®°å½ï¼å `SuiFangJH` é访计å | | BingRenKZXXList | array | å¦ | æ£è æ©å±ä¿¡æ¯ï¼`XiangMuDM=DuanHaoXX` æ¶è¦ççå· | | ZhenDuanList | array | å¦ | è¯æå表ï¼åç¬¬ä¸æ¡åå ¥åºé¢è¯æãICD10 | å¤çç»æï¼ - æ `BingAnHao + JiuZhenYWID` æ¥æ¾ä½é¢è®°å½ï¼åå¨åæ´æ°ï¼ä¸åå¨åæ°å¢ï¼ - `schemestatus=2`ã`inhospstate=1`ï¼åºé¢ï¼ï¼ - åå ¥åºé¢æ¶é´ãåºé¢ç§å®¤/ç åºãåºé¢è¯æï¼ - `LiYuanQXDM=5`ï¼æ»äº¡ï¼æ¶ï¼`fuflag=0`ï¼æ£è æ¡£æ¡æ è®° `notrequiredFlag=1`ãåå âæ£è 已离ä¸âï¼å¹¶ç»æ¢å·²çæçé访任å¡ï¼`sendstate=4`ï¼ï¼ - æºæå¨ `noLongTask` é ç½®ä¸æ¶ï¼`fuflag=0`ï¼ä¸åé¿æé访ï¼ã #### 5.4.2 `BL_JL_ChuYuanJL` æ£è åºé¢è®°å½ `YeWuXX` ç»æï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | XiaoXiID | String | æ¯ï¼å»ºè®®ï¼ | ååºåæ¾ | | BingRenXX | object | æ¯ | æ£è ä¿¡æ¯ï¼è§ 4.1 | | ChuYuanJL | object | æ¯ï¼å»ºè®®ï¼ | å `SuiFangJH` é访计å | | DiZhiXXList | array | å¦ | å°åå表 | | LianXiRList | array | å¦ | è系人å表 | | ZhenDuanList | array | å¦ | è¯æå表ï¼åç¬¬ä¸æ¡åå ¥åºé¢è¯æãICD10 | å¤çç»æä¸ `JZ_ZY_ChuYuan` 类似ï¼ä½**ä¸è¯»å `JiuZhenXX`**ãä¸ä¿®æ¹å¨é¢ç¶æãä¹ä¸åæ»äº¡æ è®°å¤çï¼ä» æ´æ°ä½é¢è®°å½çåºé¢ä¿¡æ¯ï¼`schemestatus=2`ï¼ä¸é访计åã #### 5.4.3 `JZ_ZY_YuChuYuan` æ£è é¢åºé¢ `YeWuXX` ç»æï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | XiaoXiID | String | æ¯ï¼å»ºè®®ï¼ | ååºåæ¾ | | BingRenXX | object | æ¯ | æ£è ä¿¡æ¯ï¼è§ 4.1 | | JiuZhenXX | object | æ¯ | **å¿ é¡»å å« `YuChuYSJ`ã`LiYuanQXDM`**ï¼ä»£ç æªåç©ºå¤æï¼ | | ChuYuanJL | object | å¦ | å `SuiFangJH` é访计å | | DiZhiXXList | array | å¦ | å°åå表 | | LianXiRList | array | å¦ | è系人å表 | | ZhenDuanList | array | å¦ | è¯æå表 | å¤çç»æï¼`schemestatus=2`ã`inhospstate=3`ï¼é¢åºé¢ï¼ï¼åå ¥é¢åºé¢æ¶é´ãè¯æãé访计åï¼`LiYuanQXDM=5` æ¶æ§è¡æ»äº¡æ£è å¤çã #### 5.4.4 `JZ_ZY_QuXiaoCY` åæ¶åºé¢ `YeWuXX` ç»æï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | XiaoXiID | String | æ¯ï¼å»ºè®®ï¼ | ååºåæ¾ | | BingRenXX | object | æ¯ | è³å°å å« `BingAnHao`ã`JiuZhenYWID` | | JiuZhenXX | object | å¦ | å `CaoZuoRID`ã`CaoZuoRXM` | å¤çç»æï¼ - ä½é¢è®°å½ `schemestatus=4`ã`inhospstate=0`ï¼æ¢å¤å¨é¢ï¼ï¼ - å é¤è¯¥æ£è `sendstate=1/2` çé访åä»»å¡ï¼å¹¶æ¸ ç Redis ç¼åä¸çä»»å¡ IDã #### 5.4.5 `JZ_ZY_LiQiang` æ£è ç¦»æ¢ `YeWuXX` ç»æï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | XiaoXiID | String | æ¯ï¼å»ºè®®ï¼ | ååºåæ¾ | | BingRenXX | object | æ¯ | è³å°å å« `BingAnHao`ã`JiuZhenYWID` | | JiuZhenXX | object | æ¯ | å `LiQiangSJ`ï¼ç¦»æ¢æ¶é´ï¼ã`LiYuanQXDM` | å¤çç»æï¼æ `LiQiangSJ` åå¡«å°ä½é¢è®°å½åºé¢æ¶é´ï¼`inhospstate=1`ï¼`LiYuanQXDM=5` æ¶æ§è¡æ»äº¡æ£è å¤çãæ¾ä¸å°ä½é¢è®°å½æ¶è¿å失败ã ### 5.5 `JZ_MZ_WanChengJZ` 鍿¥è¯å®ææ¥è¯ `YeWuXX` ç»æï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | XiaoXiID | String | æ¯ï¼å»ºè®®ï¼ | ååºåæ¾ | | BingRenXX | object | æ¯ | æ£è ä¿¡æ¯ï¼`ZuZhiJGID` å¯çç¥ï¼ä»£ç ä½¿ç¨æ¶æ¯å¤´ `FaSongJGID` | | JiuZhenXX | object | æ¯ | è³å°å å« `JiuZhenKSID`ã`JiuZhenKSMC`ã`JiuZhenRQ` | | ZhenDuanList | array | æ¯ | **ä¸è½ä¸ºç©º**ï¼`ZhenDuanLBMC=ä¸»è¯æ` çè®°å½ç¨äºä¸»è¯æ | | WenZhenList | array | æ¯ | **ä¸è½ä¸ºç©º**ï¼ç¨äºç°ç å²ã主è¯ãé访天æ°ãé访天æ°åä½ | å¤çç»æï¼ - æ°å¢/æ´æ°æ£è æ¡£æ¡ï¼ - æ `BingAnHao + JiuZhenYWID` æ°å¢/æ´æ°é¨è¯å°±è¯è®°å½ `pat_med_outhosp`ï¼`admitdate` å `JiuZhenRQ`ï¼ - ä¸»è¯æè®°å½åå ¥ `diagname`ã`drcode`ã`drname`ã`icd10code`ï¼å¹¶ç½® `fuflag=1`ï¼ - `WenZhenList` ä¸ `ç°ç å²`â`hpi`ã`主è¯`â`mainsuit`ï¼ - è¥ä¼ äº `é访天æ°`ï¼ä¸åä½ä¸ºå¤©/å¨/æ/å¹´ï¼å¹¶ä¸ `fuflag=1`ï¼èªå¨çæ/å¤çé访任å¡ï¼ - 丽水å¸å¦å¹¼ä¿å¥é¢ï¼`orgid = 47226079133110211G1001`ï¼å®ææ¥è¯åï¼æ `pat_specific_archive_generate_config` é ç½®çæå¦ç§/å¿ç§ä¸ç§æ¡£æ¡ï¼å ¶ä»æºæä¸çæãè¯¦è§ `doc/api/å¦å¹¼ä¸ç§æ¡£æ¡çææ¥å£ææ¡£_20261104.md`ã 请æ±ç¤ºä¾ï¼ ```json { "XiaoXiTou": { "FaSongJGID": "47255004333112711A1001", "FaSongJGMC": "丽水å¸ä¸å»é¢", "FaSongSJ": "2026-10-20 11:00:00", "XiaoXiLX": "JZ_MZ_WanChengJZ", "XiaoXiID": "MSG-20261020-0002" }, "YeWuXX": { "XiaoXiID": "MSG-20261020-0002", "BingRenXX": { "BingRenID": "BR0002", "XingMing": "æå", "JiuZhenYWID": "MZ20261020002", "JiuZhenKH": "MZ0002", "BingAnHao": "BA20261020002", "ZhengJianHM": "330102198505051234", "XingBieDM": "2", "ChuShengRQ": "1985-05-05 10:00:00", "LianXiDH": "13700000000" }, "JiuZhenXX": { "JiuZhenKSID": "D002", "JiuZhenKSMC": "å¦ç§", "JiuZhenRQ": "2026-10-20 10:30:00", "sfrq": "2026-11-20 00:00:00" }, "ZhenDuanList": [ { "ZhenDuanYSID": "D1002", "ZhenDuanYSXM": "èµµå»ç", "ZhenDuanID": "O20.0", "ZhenDuanMC": "å å æµäº§", "ZhenDuanLBDM": "1", "ZhenDuanLBMC": "ä¸»è¯æ", "Icd10": "O20.0" } ], "WenZhenList": [ { "WenZhenLXMC": "主è¯", "NeiRong": "åç»50天ï¼é´éæµè¡1天" }, { "WenZhenLXMC": "ç°ç å²", "NeiRong": "æ£è åç»50天â¦â¦" }, { "WenZhenLXMC": "é访天æ°", "NeiRong": "30" }, { "WenZhenLXMC": "é访天æ°åä½", "NeiRong": "天" } ] } } ``` ### 5.6 æ£æ¥/æ£éªç³è¯·ä¸ä¿®æ¹ éç¨ç±»åï¼`JC_SQ_ShenQing`ã`JC_SQ_XiuGai`ã`JY_SQ_ShenQing`ã`JY_SQ_XiuGai`ã `YeWuXX` ç»æï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | XiaoXiID | String | æ¯ï¼å»ºè®®ï¼ | ååºåæ¾ | | BingRenXX | object | æ¯ | æ£è ä¿¡æ¯ï¼`ZuZhiJGID` ä¼è¢«æ¶æ¯å¤´ `FaSongJGID` è¦ç | | JianChaSQ | object | æ¯ | æ£æ¥/æ£éªç³è¯·ä¿¡æ¯ï¼è§ä¸è¡¨ | | JianChaBG | object | å¦ | æ¥åä¿¡æ¯ï¼æ¤å¤ä» ä½¿ç¨ `ShenQingDID` åå¡«ç³è¯·åå· | `JianChaSQ` åæ®µï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | YiZhuID | String | æ¯ | å»å± IDï¼ä»£ç æ§è¡ `Long.valueOf`ï¼å¿ 须为æ°å | | ShenQingDID | String | æ¯ | ç³è¯·å IDï¼ä½ä¸ºæ£æ¥è®°å½å¹é é® | | YouXianJi | String | å¦ | ä¼å 级 | | KaiDanRID | String | å¦ | å¼å人 ID | | KaiDanRXM | String | å¦ | å¼å人å§å | | KaiDanKSID | String | å¦ | å¼åç§å®¤ ID | | KaiDanKSMC | String | å¦ | å¼åç§å®¤åç§° | | KaiDanSJ | String | å¦ | å¼åæ¶é´ï¼`yyyy-MM-dd HH:mm:ss` | | ShenHeRID | String | å¦ | å®¡æ ¸äºº ID | | ShenHeRXM | String | å¦ | å®¡æ ¸äººå§å | | ShenHeSJ | String | å¦ | å®¡æ ¸æ¶é´ï¼`yyyy-MM-dd HH:mm:ss` | | ZhiXingSJ | String | å¦ | æ§è¡æ¶é´ï¼`yyyy-MM-dd HH:mm:ss` | | JianChaLXID | String | å¦ | æ£æ¥ç±»å ID | | JianChaLXMC | String | å¦ | æ£æ¥ç±»ååç§° | | JinE | String | æ¯ | éé¢ï¼ä»£ç æ§è¡ `Float.valueOf`ï¼å¿ 须为æ°å | | JiaoPianFBZ | String | æ¯ | 交çè´¹æ å¿ï¼`0/1`ï¼ä»£ç æ§è¡ `Integer.valueOf` | | ChuangBianBZ | String | æ¯ | åºè¾¹æ å¿ï¼`0/1` | | TuiChuangBZ | String | æ¯ | æ¨åºæ å¿ï¼`0/1` | | JiaJiBZ | String | æ¯ | å æ¥æ å¿ï¼`0/1` | | WeiShouXZXBZ | String | æ¯ | æªæ¶å æ§è¡æ å¿ï¼`0/1` | | JianChaBWList | array | å¦ | æ£æ¥é¨ä½å表ï¼ä¸ºç©ºåä¸å项ç®/é¨ä½ | | ZhenDuanList | array | å¦ | è¯æå表ï¼åç¬¬ä¸æ¡åå ¥è¯æ ID/åç§° | `JianChaBWList` å ç´ ï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | JianChaXMID | String | å¦ | æ£æ¥é¡¹ç® ID | | JianChaXMMC | String | å¦ | æ£æ¥é¡¹ç®åç§° | | JianChaBWID | String | å¦ | æ£æ¥é¨ä½ ID | | JianChaBWMC | String | å¦ | æ£æ¥é¨ä½åç§° | `ZhenDuanList` å ç´ ï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | ZhenDuanID | String | å¦ | è¯æ ID | | ZhenDuanMC | String | å¦ | è¯æåç§° | å¤çç»æï¼ - æ `ShenQingDID`ï¼`appliyid`ï¼æ¥è¯¢æ£æ¥è®°å½ï¼åå¨åæ´æ°ï¼ä¸åå¨åæ°å¢ï¼ - æ£æ¥é¡¹ç®ãé¨ä½å `JianChaBWList` ç¬¬ä¸æ¡ï¼ - `JY_SQ_*` ä¸ `JC_SQ_*` å ±ç¨åä¸å¼ 表ï¼ä» ç±»åä¸åã 请æ±ç¤ºä¾ï¼ ```json { "XiaoXiTou": { "FaSongJGID": "47255004333112711A1001", "FaSongJGMC": "丽水å¸ä¸å»é¢", "FaSongSJ": "2026-10-20 12:00:00", "XiaoXiLX": "JC_SQ_ShenQing", "XiaoXiID": "MSG-20261020-0003" }, "YeWuXX": { "XiaoXiID": "MSG-20261020-0003", "BingRenXX": { "ZuZhiJGID": "47255004333112711A1001", "BingRenID": "BR0001", "XingMing": "å¼ ä¸", "JiuZhenYWID": "JZ20261020001", "BingAnHao": "BA20261020001", "ZhengJianHM": "330102199001011234", "LianXiDH": "13800000000" }, "JianChaSQ": { "YiZhuID": "100001", "ShenQingDID": "SQ20261020001", "YouXianJi": "1", "KaiDanRID": "D1001", "KaiDanRXM": "çå»ç", "KaiDanKSID": "D001", "KaiDanKSMC": "å¿è¡ç®¡å ç§", "KaiDanSJ": "2026-10-20 11:30:00", "ShenHeRID": "D1002", "ShenHeRXM": "èµµå»ç", "ShenHeSJ": "2026-10-20 11:40:00", "ZhiXingSJ": "2026-10-20 13:00:00", "JianChaLXID": "CT", "JianChaLXMC": "CTæ£æ¥", "JinE": "280.00", "JiaoPianFBZ": "0", "ChuangBianBZ": "0", "TuiChuangBZ": "0", "JiaJiBZ": "0", "WeiShouXZXBZ": "0", "JianChaBWList": [ { "JianChaXMID": "CT001", "JianChaXMMC": "è¸é¨CT", "JianChaBWID": "BW001", "JianChaBWMC": "è¸é¨" } ], "ZhenDuanList": [ { "ZhenDuanID": "I10", "ZhenDuanMC": "ååæ§é«è¡å" } ] } } } ``` ### 5.7 `JC_BG_BaoGao` æ£æ¥æ¥å `YeWuXX` ç»æï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | XiaoXiID | String | æ¯ï¼å»ºè®®ï¼ | ååºåæ¾ | | BingRenXX | object | æ¯ | è³å°å å« `ZuZhiJGID`ã`BingAnHao`ã`BingRenID`ã`XingMing` | | JianChaBG | object | æ¯ | æ£æ¥æ¥åä¿¡æ¯ï¼è§ä¸è¡¨ | `JianChaBG` åæ®µï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | ShenQingDID | String | æ¯ | ç³è¯·å IDï¼ç¨äºæ¥æ¾æ£æ¥è®°å½ï¼æ¾ä¸å°æ¶ä¼å è°ç¨ç³è¯·é»è¾è¡¥å»º | | JianChaHao | String | æ¯ | æ£æ¥å·ï¼åå ¥ `inspection_name` | | DangQianZTDM | String | æ¯ | å½åç¶æä»£ç | | DangQianZTMC | String | æ¯ | å½åç¶æåç§° | | BaoGaoRID | String | æ¯ | æ¥å人 IDï¼æ³¨æä»£ç æç»æå®åå ¥ `reportid` | | BaoGaoRXM | String | æ¯ | æ¥å人å§å | | BaoGaoSJ | String | å¦ | æ¥åæ¶é´ï¼`yyyy-MM-dd HH:mm:ss` | | ZhenDuanYX | String | æ¯ | è¯æå°è±¡ | | ZhenDuanSJ | String | æ¯ | è¯ææè§ | | ZhenDuanJY | String | æ¯ | è¯æå»ºè®® | | BaoGaoYXDZ | String | æ¯ | æ¥åå½±åå°å | | WeiJiZBZ | String | æ¯ | 屿¥å¼æ å¿ï¼å¿ 须为æ°å | | WeiJiZNR | String | æ¯ | 屿¥å¼å 容 | | BaoGaoKSID | String | æ¯ | æ¥åç§å®¤ ID | | BaoGaoKSMC | String | æ¯ | æ¥åç§å®¤åç§° | | JianChaJGDM | String | æ¯ | æ£æ¥ç»æä»£ç | | JianChaJGMC | String | æ¯ | æ£æ¥ç»æåç§° | > 代ç 对ä¸è¿°åç¬¦ä¸²åæ®µå¤§éç´æ¥è°ç¨ `.toString()`ï¼ç¼ºå¤±ä¼æç©ºæé导è´è¿å失败ï¼è¯·å¡å¿ ä¼ é½ã å¤çç»æï¼æ `ShenQingDID` æ¾å°æ£æ¥ä¸»è®°å½ï¼æ°å¢ææ´æ° `pat_med_inspection_item` æ¥åæç»ã ### 5.8 ææ¯ç³è¯·ãæ¤é #### 5.8.1 `SM_SQ_ShenQing` ææ¯ç³è¯· `YeWuXX` ç»æï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | XiaoXiID | String | æ¯ï¼å»ºè®®ï¼ | ååºåæ¾ | | BingRenXX | object | æ¯ | æ£è ä¿¡æ¯ï¼è§ 4.1 | | ShouShuSQ | object | æ¯ | ææ¯ç³è¯·ä¿¡æ¯ï¼è§ä¸è¡¨ | `ShouShuSQ` åæ®µï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | ShenQingDID | String | æ¯ | ç³è¯·å IDï¼åå ¥ `opreqcode`ï¼ä½ä¸ºææ¯è®°å½å¹é é® | | ShouShuLBDM | String | å¦ | ææ¯ç±»å«ä»£ç ï¼åå ¥ `optypecode` | | ShouShuLBMC | String | å¦ | ææ¯ç±»å«åç§°ï¼åå ¥ `optypename` | | YaoQiuSJ | Date | å¦ | è¦æ±æ¶é´ï¼åå ¥ `operatortime` | | ShenQingSJ | Date | å¦ | ç³è¯·æ¶é´ï¼åå ¥ `opreqtime` | | ShenQingYSID | String | å¦ | ç³è¯·å»ç ID | | ShenQingYSXM | String | å¦ | ç³è¯·å»çå§å | | ShenQingKSID | String | å¦ | ç³è¯·ç§å®¤ ID | | ShenQingKSMC | String | å¦ | ç³è¯·ç§å®¤åç§° | | ShouShuKSID | String | å¦ | ææ¯ç§å®¤ ID | | ShouShuKSMC | String | å¦ | ææ¯ç§å®¤åç§° | | ZhuDaoYSID | String | å¦ | 主åå»ç ID | | ZhuDaoYSXM | String | å¦ | 主åå»çå§å | | YiZhuID | String | å¦ | å»å± IDï¼ä»£ç æ å°å° `firasscode`ï¼ | | YiZhuMC | String | å¦ | å»å±åç§°ï¼ä»£ç æ å°å° `firassname`ï¼ | | ErZhuYSID | String | å¦ | äºå©å»ç ID | | ErZhuYSXM | String | å¦ | äºå©å»çå§å | | SanZhuYSID | String | å¦ | ä¸å©å»ç ID | | SanZhuYSXM | String | å¦ | ä¸å©å»çå§å | | ShouShuMXList | array | æ¯ | ææ¯æç»ï¼**ä»£ç æªåç©ºå¤æ**ï¼è§ä¸è¡¨ | `ShouShuMXList` å ç´ ï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | ShouShuMCID | String | å¦ | ææ¯åç§° ID | | ShouShuMC | String | å¦ | ææ¯åç§° | | ZhuShouSBZ | String | æ¯ | ä¸»ææ¯æ å¿ï¼`1` è¡¨ç¤ºä¸»ææ¯ï¼ä»£ç ç´æ¥è°ç¨ `.equals`ï¼**ä¸è½ä¸ºç©º** | | QieKouLBDM | String | å¦ | åå£ç±»å«ä»£ç | | QieKouLBMC | String | å¦ | åå£ç±»å«åç§° | | ShouShuJBDM | String | å¦ | ææ¯çº§å«ä»£ç | | ShouShuJBMC | String | å¦ | ææ¯çº§å«åç§° | | ShouShuBW | String | å¦ | ææ¯é¨ä½ | | BiaoZhunBM | String | å¦ | æ åç¼ç | | ShouShuMCQZ | String | å¦ | ææ¯åç§°åç¼ | | ShouShuMCHZ | String | å¦ | ææ¯åç§°åç¼ | å¤çç»æï¼ - æ `patid + ShenQingDID` æ¥è¯¢ææ¯è®°å½ï¼åå¨åæ´æ°ï¼ä¸åå¨åæ°å¢ï¼ - ä¸»ææ¯ï¼`ZhuShouSBZ=1`ï¼ä¿¡æ¯ååææ¯ä¸»è¡¨ï¼å ¶ä½åå ¥ `pat_med_operation_item`ï¼ - å·²åå¨çææ¯ä¼å ç©çå 餿§æç»åé建ã 请æ±ç¤ºä¾ï¼ ```json { "XiaoXiTou": { "FaSongJGID": "47255004333112711A1001", "FaSongJGMC": "丽水å¸ä¸å»é¢", "FaSongSJ": "2026-10-20 14:00:00", "XiaoXiLX": "SM_SQ_ShenQing", "XiaoXiID": "MSG-20261020-0004" }, "YeWuXX": { "XiaoXiID": "MSG-20261020-0004", "BingRenXX": { "ZuZhiJGID": "47255004333112711A1001", "BingRenID": "BR0001", "XingMing": "å¼ ä¸", "JiuZhenYWID": "JZ20261020001", "BingAnHao": "BA20261020001", "DangQianKSID": "D001", "DangQianKSMC": "å¿è¡ç®¡å ç§", "DangQianBQID": "B001", "DangQianBQMC": "å¿å ç§ç åº" }, "ShouShuSQ": { "ShenQingDID": "SS20261020001", "ShouShuLBDM": "1", "ShouShuLBMC": "æ©æææ¯", "YaoQiuSJ": "2026-10-21 09:00:00", "ShenQingSJ": "2026-10-20 13:30:00", "ShenQingYSID": "D1001", "ShenQingYSXM": "çå»ç", "ShenQingKSID": "D001", "ShenQingKSMC": "å¿è¡ç®¡å ç§", "ShouShuKSID": "D003", "ShouShuKSMC": "ææ¯å®¤", "ZhuDaoYSID": "D1001", "ZhuDaoYSXM": "çå»ç", "ShouShuMXList": [ { "ShouShuMCID": "OP001", "ShouShuMC": "å ç¶å¨èé å½±æ¯", "ZhuShouSBZ": "1", "QieKouLBDM": "1", "QieKouLBMC": "â ç±»åå£", "ShouShuJBDM": "3", "ShouShuJBMC": "ä¸çº§ææ¯", "ShouShuBW": "å¿è" } ] } } } ``` #### 5.8.2 `SM_SQ_CheXiao` ææ¯æ¤é `YeWuXX` ç»æï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | XiaoXiID | String | æ¯ï¼å»ºè®®ï¼ | ååºåæ¾ | | BingRenXX | object | æ¯ | è³å°å å« `BingAnHao`ã`JiuZhenYWID` | | ShouShuCX | object | æ¯ | æ¤éä¿¡æ¯ï¼**è³å°å å« `ShenQingDID`**ï¼å ¶ä½å段å½åæªä½¿ç¨ | å¤çç»æï¼ - æ `patid + ShenQingDID` æ¾å°ææ¯è®°å½ï¼ç½® `checkFlag=1`ã`delFlag=1`ï¼ - 软å é¤ææ¯æç»ï¼ - ç»æ¢è¯¥ææ¯å ³èçé访åä»»å¡ï¼`sendstate=4`ï¼å¤æ³¨âææ¯æ¤éâï¼å¹¶æ¸ ç Redis ç¼åã > `ShouShuGX`ï¼ææ¯æ´æ°ï¼è½å¨ `addOperationInfo` ä¸é¢çï¼ä½å½å没æ `XiaoXiLX` è·¯ç±å°è¯¥åæ¯ï¼å®é ä¸ä¼çæã --- ## å ãååºè¯´æ ### 6.1 æåååº ```json { "Code": "0", "Message": "success", "Data": { "XiaoXiID": "MSG-20261020-0001", "ChuangJianSJ": 1760928000000 } } ``` | åæ®µ | ç±»å | 说æ | | --- | --- | --- | | Code | String | `"0"` æåï¼`"500"` 失败 | | Message | String | `success` / `error` | | Data.XiaoXiID | String | åæ ·è¿åè¯·æ± `YeWuXX.XiaoXiID` | | Data.ChuangJianSJ | long | æå¡å¨å½åæ¶é´ï¼JSON åºååä¸ºæ¯«ç§æ¶é´æ³ï¼ | ### 6.2 失败ååº ```json { "Code": "500", "Message": "error", "Data": { "XiaoXiID": "MSG-20261020-0001", "ChuangJianSJ": 1760928000000 } } ``` ### 6.3 失败å¤å®è§å - ä¸å¡æ¹æ³è¿å `false`ï¼å¦æ¾ä¸å°å¯¹åºä½é¢è®°å½ãç¨æ·/ç§å®¤ä¸åå¨ãæ°æ®åºæä½å½±åè¡æ°ä¸ä¸º 1ï¼â `Code="500"`ï¼ - ä¸å¡æ¹æ³æåºå¼å¸¸ï¼å段缺失ãç±»å转æ¢å¤±è´¥ã空æéçï¼â æ§å¶å¨æè·å¹¶è®°å½æ¥å¿ï¼è¿å `Code="500"`ï¼ - `XiaoXiTou` 缺失ã`XiaoXiLX` 为空ã`YeWuXX` ç¼ºå¤±çæ¥æçº§é误ï¼å¯è½å¨ååºç»è£ é¶æ®µç´æ¥æå¼å¸¸ï¼è¿å HTTP 500ã建议è°ç¨æ¹ä¸¥æ ¼ææ¬ææ¡£ç»è£ æ¥æã --- ## ä¸ãè°ç¨æ³¨æäºé¡¹ 1. **åæ®µå大å°åææ**ï¼ææå段å为æ¼é³é¦åæ¯å¤§åæ ¼å¼ï¼å¦ `BingRenXX`ã`JiuZhenYWID`ï¼ä¸è½åæä¸å线æå ¨å°åã 2. **å¯ä¸ä¸å¡é®**ï¼ - ä½é¢ç±»æ¶æ¯ä½¿ç¨ `BingAnHao + JiuZhenYWID` å®ä½ä½é¢è®°å½ï¼ - é¨è¯æ¥è¯ä½¿ç¨ `BingAnHao + JiuZhenYWID` å®ä½é¨è¯è®°å½ï¼ - æ£è æ¡£æ¡ä½¿ç¨ `ZhengJianHM`ï¼ä¸ºç©ºæ¶ç¨ `JiuZhenKH`ï¼+ æºæå®ä½ï¼ - æ£æ¥ä½¿ç¨ `ShenQingDID`ï¼ - ææ¯ä½¿ç¨ `ShenQingDID`ï¼ - æºæ/ç§å®¤/ç¨æ·/ç åºä½¿ç¨åèª ID + æºæã 3. **é夿¨é**ï¼ä»£ç æä¸è¿°ä¸å¡é®æ¥è¯¢åæ§è¡âåå¨åæ´æ°ãä¸åå¨åæ°å¢âï¼é夿¨éä¸è¬ä¸ä¼éå¤æå ¥ï¼ä½è¥ä¸å¡é®ååï¼ä¼äº§çæ°è®°å½ã 4. **å¿ ä¼ å表**ï¼ä»¥ä¸æ¶æ¯å¯¹åè¡¨åæ®µæ²¡æç©ºå¤æï¼ç¼ºå¤±ä¼ç´æ¥æ¥éï¼ - `JZ_ZY_RuYuanDJ`ï¼`DiZhiXXList`ã`LianXiRList`ã`ZhenDuanList`ï¼ - `JZ_ZY_RuKe`ï¼`BingRenXX.DiZhiXXList`ï¼ - `JZ_MZ_WanChengJZ`ï¼`ZhenDuanList`ã`WenZhenList`ï¼ - `SM_SQ_ShenQing`ï¼`ShouShuSQ.ShouShuMXList`ï¼ä¸æ¯æ¡æç» `ZhuShouSBZ` ä¸è½ä¸ºç©ºã 5. **æ¥ææ ¼å¼**ï¼é¤ç¹å«è¯´æå¤ï¼æ¥ææ¶é´ç»ä¸ä½¿ç¨ `yyyy-MM-dd HH:mm:ss`ï¼`BingRenXX.ChuShengRQ` 代ç å é¨ä½¿ç¨ `yyyy-MM-dd hh:mm:ss` è§£æï¼å»ºè®®åæ ·ä¼ å®æ´æ¶é´ï¼ä¸å°½éä½¿ç¨ `08:00:00` è¿ç±» 12 å°æ¶å¶å¯è§£æçæ¶é´ã 6. **æ°ååæ®µ**ï¼`BingRenXX.XingBieDM`ã`JianChaSQ.YiZhuID`ã`JinE`ãåç±» `*BZ` æ å¿ã`JC_BG_BaoGao.WeiJiZBZ` çä¼è¢«ç´æ¥è½¬æ¢ä¸º Long/Float/Integerï¼å¿ é¡»ä¼ æ°åå符串ã 7. **æºæä¸é¢åº**ï¼ - `FaSongJGID` æ¯æºæè¿æ»¤ä¸è½åº `orgid` çä¸»è¦æ¥æºï¼ - é¢åºå段å½åç»ä¸åæ»ä¸º `"1"`ï¼ä¸½æ°´æ é¢åºæ¦å¿µï¼ï¼ - `JZ_MZ_WanChengJZ` ä½¿ç¨ `FaSongJGID` è¦çæ£è ä¿¡æ¯ä¸çæºæ IDã 8. **æ»äº¡æ£è å¤ç**ï¼`LiYuanQXDM=5` æ¶ï¼ç³»ç»ä¼åæ¶æ£è åç»é访ï¼`fuflag=0`ï¼ãæ è®°æ¡£æ¡æ éé访ãç»æ¢å·²çæä»»å¡ï¼è¯·ç¡®ä¿ç¦»é¢æ¹å¼ä»£ç åç¡®ã 9. **ä¸éè®¿æºæ**ï¼é 置项 `noLongTask` ä¸çæºæï¼åºé¢/æ¥è¯æ¶ `fuflag` ä¼è¢«ç½®ä¸º `0`ã 10. **æ¶æ¯ç±»åç½åå**ï¼æªå¨ç¬¬ä¸ç« ååºç `XiaoXiLX` ä¼ç´æ¥è¿åæåä½ä¸åä»»ä½å¤çï¼èè°æ¶è¯·å æ ¸å¯¹ç±»åæ¼åã 11. **æ¥å£æ é´æ**ï¼è¯¥å°å对å¤ç½å¼æ¾æ¶å卿°æ®åå ¥é£é©ï¼å»ºè®®éè¿ç½å ³/é²ç«å¢éå¶æ¥æº IPï¼æå¨ç½å ³å±å¢å ç¾åæ ¡éªã --- ## å «ãå¿«éææ¥ | ç°è±¡ | å¯è½åå | | --- | --- | | è¿å `Code=500` 䏿¥å¿æç¤ºç©ºæé | ç¼ºå° `XiaoXiTou`ã`XiaoXiLX`ã`BingRenXX`ã`JiuZhenXX` æå¿ ä¼ å表 | | è¿å `Code=500` 䏿¥å¿æç¤º `NumberFormatException` | `XingBieDM`ã`YiZhuID`ã`JinE`ã`*BZ` çåæ®µä¼ äºéæ°å | | è¿å `Code=500` 䏿¥å¿æç¤º `ParseException` | æ¥æä¸æ¯ `yyyy-MM-dd HH:mm:ss` | | è¿åæå使°æ®æªæ´æ° | `XiaoXiLX` æ¼åé误ï¼èµ°äºé»è®¤åæ¯ï¼æä¸å¡é®ï¼ç æ¡å·/å°±è¯ä¸å¡ ID/ç³è¯·å IDï¼ä¸å¹é | | æ£è æ¡£æ¡éå¤ | `ZhengJianHM`ã`JiuZhenKH` ä¸ºç©ºï¼æä¸åæºæä¸éå¤å»ºæ¡£ | | ä½é¢è®°å½éå¤ | `BingAnHao` æ `JiuZhenYWID` åçåå | | åºé¢åä»å¨é¢ | æªä¼ `JiuZhenXX.ChuYuanSJ`ï¼æ `LiYuanQXDM` éæ³ | | éè®¿ä»»å¡æªçæ | `SuiFangJH.SuiFangBS=0`ãæºæå¨ `noLongTask` ä¸ã`fuflag=0`ï¼æ `JZ_MZ_WanChengJZ` æªä¼ éè®¿å¤©æ° | doc/api/¸¾Ó×ר¿Æµµ°¸Éú³É½Ó¿ÚÎĵµ_20261104.md
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,342 @@ # å¦å¹¼ä¸ç§æ¡£æ¡çææ¥å£ææ¡£ | é¡¹ç® | å 容 | | --- | --- | | 模å | æºè½é访ï¼smartorï¼ | | åè½ | é¨è¯æ¥è¯å®æè®°å½çæå¦ç§/å¿ç§ä¸ç§æ¡£æ¡ | | éç¨æºæ | `orgid = 47226079133110211G1001`ï¼ä¸½æ°´å¸å¦å¹¼ä¿å¥é¢ï¼ | | å ³è表 | `pat_med_outhosp`ã`pat_specific_archive_generate_config`ã`pat_maternity_archive(_detail)`ã`pat_child_archive(_detail)` | | ç¼åæ¥æ | 2026-11-04 | --- ## ä¸ãåè½è¯´æ 1. HIS è°ç¨å®ææ¥è¯æ¥å£ `JZ_MZ_WanChengJZ` åï¼ç³»ç»åå ¥é¨è¯è®°å½ `pat_med_outhosp`ã 2. ç³»ç»è¯»å `pat_specific_archive_generate_config` ä¸ä¸½æ°´å¸å¦å¹¼ä¿å¥é¢çé ç½®ã 3. æé ç½®å¹é é¨è¯è®°å½çç§å®¤ Code æä¸»è¯æ ICD10 Codeï¼ - å½ä¸å¦ç§é ç½®ï¼åå ¥ `pat_maternity_archive` / `pat_maternity_archive_detail`ï¼ - å½ä¸å¿ç§é ç½®ï¼åå ¥ `pat_child_archive` / `pat_child_archive_detail`ã 4. é¤å®æ¶åè°å¤ï¼è¿æä¾æå¨è¡¥éæ¥å£å宿¶ä»»å¡å ¥å£ã > ä» `orgid = 47226079133110211G1001` çæï¼å ¶ä»æºæè°ç¨å®ææ¥è¯æ¥å£ä¸ä¼çæå¦å¹¼ä¸ç§æ¡£æ¡ã --- ## äºã宿æ¥è¯åè°æ¥å£ ### 2.1 åºæ¬ä¿¡æ¯ | é¡¹ç® | å 容 | | --- | --- | | æ¥å£å°å | `/smartor/serviceExternal/generalInterface` | | è¯·æ±æ¹å¼ | `POST` | | Content-Type | `application/json;charset=UTF-8` | | è®¤è¯æ¹å¼ | æ éç»å½ï¼`/smartor/serviceExternal/**` å·²æ¾è¡ï¼ | | æ¶æ¯ç±»å | `JZ_MZ_WanChengJZ` | | ä¸å¡å«ä¹ | 鍿¥è¯å®ææ¥è¯ | | å¤çå ¥å£ | `ServiceExternalServiceImpl.addFinshJZInfo` | ### 2.2 æ¶æ¯å¤´ `XiaoXiTou` | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | `XiaoXiLX` | String | æ¯ | åºå®ä¼ `JZ_MZ_WanChengJZ` | | `XiaoXiID` | String | 建议 | æ¶æ¯ IDï¼ååºåæ ·è¿å | | `FaSongJGID` | String | æ¯ | æºæ IDï¼åå ¥ `orgid`ï¼çææ¡£æ¡æ¶å¿ é¡»æ¯ `47226079133110211G1001` | | `FaSongJGMC` | String | å¦ | æºæåç§° | | `FaSongSJ` | String | å¦ | åéæ¶é´ï¼`yyyy-MM-dd HH:mm:ss` | ### 2.3 ä¸å¡ä¿¡æ¯ `YeWuXX` #### 2.3.1 æ£è ä¿¡æ¯ `BingRenXX` | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | `XingMing` | String | æ¯ | æ£è å§åï¼ç¨äºæ£è æ¡£æ¡ä¸ä¸ç§æ¡£æ¡ | | `BingAnHao` | String | æ¯ | ç æ¡å·ï¼åå ¥é¨è¯è®°å½ `outhospno`ï¼æ¡£æ¡å¹çé®ä¹ä¸ | | `JiuZhenYWID` | String | æ¯ | å°±è¯ä¸å¡ IDï¼åå ¥é¨è¯è®°å½ `serialnum` | | `JiuZhenKH` | String | å¦ | å°±è¯å¡å· | | `ZhengJianHM` | String | 建议 | è¯ä»¶å·ç ï¼ç¨äºæ£è æ¡£æ¡å¹é | | `XingBieDM` | String | å¦ | æ§å«ä»£ç ï¼æ°åå符串 | | `ChuShengRQ` | String | 建议 | åºçæ¥æï¼`yyyy-MM-dd HH:mm:ss` | | `LianXiDH` | String | 建议 | èç³»çµè¯ | | `XianZhuZXX` | String | å¦ | ç°ä½å | > 代ç ä½¿ç¨ `XingMing` åå§åï¼å ¥åä¸ç `BingRenXM` ä¸åä¸è¯¥å段èµå¼ï¼ä½æ ·ä¾åæ¶ä¼ äº `XingMing`ã #### 2.3.2 å°±è¯ä¿¡æ¯ `JiuZhenXX` | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | `JiuZhenKSID` | String | æ¯ | å°±è¯ç§å®¤ IDï¼åå ¥ `deptcode`ï¼ç¨äºç§å®¤å¹é | | `JiuZhenKSMC` | String | æ¯ | å°±è¯ç§å®¤åç§°ï¼åå ¥ `deptname` | | `JiuZhenRQ` | String | æ¯ | å°±è¯æ¥æï¼`yyyy-MM-dd HH:mm:ss`ï¼åå ¥ `admitdate`ãæ¡£æ¡ `diagTime` | | `ChuZhenBZ` | Integer | å¦ | åè¯æ å¿ï¼ä¸å䏿¡£æ¡çæ | #### 2.3.3 è¯æå表 `ZhenDuanList` | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | `ZhenDuanLBMC` | String | æ¯ | è¯æç±»å«åç§°ï¼çäº `ä¸»è¯æ` çè®°å½åå ¥é¨è¯ä¸»è¯æåæ¡£æ¡è¯æ | | `ZhenDuanMC` | String | æ¯ | è¯æåç§° | | `Icd10` | String | æ¯ | ICD10 ç¼ç ï¼ç¨äºè¯æå¹é ï¼åå ¥ `icd10code` | | `ZhenDuanYSID` | String | å¦ | è¯æå»ç ID | | `ZhenDuanYSXM` | String | å¦ | è¯æå»çå§å | > æ¡£æ¡çæåªä½¿ç¨ `ZhenDuanLBMC = ä¸»è¯æ` çé£ä¸æ¡è¯æãåè¯æä¸åä¸å¹é ã #### 2.3.4 é®è¯å表 `WenZhenList` | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | `WenZhenLXMC` | String | å¦ | `主è¯`ã`ç°ç å²`ã`é访天æ°`ã`é访天æ°åä½` ç | | `NeiRong` | String | å¦ | é®è¯å 容 | > é®è¯ä¿¡æ¯ç¨äºé¨è¯è®°å½ç主è¯ãç°ç å²åé访任å¡ï¼ä¸å½±åä¸ç§æ¡£æ¡çæã ### 2.4 请æ±ç¤ºä¾ 以ä¸ä¸ºâå¦ç§-æ©åå ³ç±âæ ·ä¾ï¼å®æ´æ¥æè§ `D:\OneDrive\Desktop\ç§»åº\å¦å¹¼\å¦ç§-æ©åå ³ç±.txt`ï¼ï¼ ```json { "XiaoXiTou": { "XiaoXiLX": "JZ_MZ_WanChengJZ", "XiaoXiMC": "宿æ¥è¯", "XiaoXiID": "109b22c7-d6c6-49c3-adb1-cf0e6af9e9ef", "FaSongSJ": "2026-11-04 09:44:37", "FaSongJGID": "47226079133110211G1001", "FaSongJGMC": "丽水å¸å¦å¹¼ä¿å¥é¢" }, "YeWuXX": { "BingRenXX": { "BingRenID": "1000000002032043552", "XingMing": "å¼ æ¦", "JiuZhenYWID": "1659700037955006464", "BingAnHao": "202637799", "ZhengJianHM": "332501200108221226", "XingBieDM": "2", "ChuShengRQ": "2001-08-22 00:00:00", "LianXiDH": "15857816735", "ZuZhiJGID": "47226079133110211G1001" }, "JiuZhenXX": { "JiuZhenKSID": "010104010601", "JiuZhenKSMC": "æ©åå ³ç±é¨è¯", "JiuZhenRQ": "2026-11-04 09:44:36" }, "ZhenDuanList": [ { "ZhenDuanLBDM": "0", "ZhenDuanLBMC": "ä¸»è¯æ", "ZhenDuanID": "22965", "ZhenDuanMC": "å19å¨", "ZhenDuanYSID": "1551507108942479360", "ZhenDuanYSXM": "è°¢å¦å¦", "Icd10": "O26.900x206" } ], "WenZhenList": [ { "WenZhenLXDM": "1", "WenZhenLXMC": "主è¯", "NeiRong": "åç»19+3 å¨ï¼äº§æ£ã" }, { "WenZhenLXDM": "2", "WenZhenLXMC": "ç°ç å²", "NeiRong": "å 19+3å¨ï¼å·²å»ºåï¼å®æäº§æ£ï¼ç°æ è ¹çï¼æ é´éæµè¡æµæ¶²çå¼å¸¸" } ] } } ``` ### 2.5 ååºè¯´æ æåååºï¼ ```json { "Code": "0", "Message": "success", "Data": { "XiaoXiID": "109b22c7-d6c6-49c3-adb1-cf0e6af9e9ef", "ChuangJianSJ": 1793756677000 } } ``` 失败ååºï¼ ```json { "Code": "500", "Message": "error", "Data": { "XiaoXiID": "109b22c7-d6c6-49c3-adb1-cf0e6af9e9ef", "ChuangJianSJ": 1793756677000 } } ``` | åæ®µ | ç±»å | 说æ | | --- | --- | --- | | `Code` | String | `"0"` æåï¼`"500"` 失败 | | `Message` | String | `success` / `error` | | `Data.XiaoXiID` | String | åæ ·è¿å `YeWuXX.XiaoXiID`ï¼ä¸å卿¶å `XiaoXiTou.XiaoXiID` | | `Data.ChuangJianSJ` | long | æå¡å¨å½åæ¶é´æ³ï¼æ¯«ç§ï¼ | > æ¡£æ¡çæå¤±è´¥å·²å¨ `genePatSpecificArchive` å æè·å¹¶è®°å½æ¥å¿ï¼ä¸ä¼å¯¼è´å®ææ¥è¯æ¥å£è¿å失败ã --- ## ä¸ãäºä¸ªæ ·ä¾çæ¡£æ¡çææ å° | æ ·ä¾æä»¶ | æ£è | é¨è¯ç¼å· `outhospno` | æµæ°´å· `serialnum` | ç§å®¤ `deptcode` | ç§å®¤åç§° | ä¸»è¯æ ICD10 | ç®æ æ¡£æ¡è¡¨ | `archiveType` | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | å¦ç§-æ©åå ³ç±.txt | å¼ æ¦ | 202637799 | 1659700037955006464 | 010104010601 | æ©åå ³ç±é¨è¯ | O26.900x206 | `pat_maternity_archive` | 1 | | å¦ç§-å´ç»ç»æMHI.txt | å¼ ç¥ | 202620972 | 1656887374212886528 | 010102010207 | å¦ç§å åæ³ï¼éæ¥æãæ´å¹´æï¼é¨è¯ | N95.900 | `pat_maternity_archive` | 2 | | å¿ç§-è¥å »æ§ç¾ç .txt | ææ² å | 202651402 | 1659715824983924736 | 010104010403 | å¿ç«¥å¿ç/è¯è¨/è¡ä¸ºåè²é¨è¯ | E46.x00x003 | `pat_child_archive` | 1 | | å¿ç§-å¦ä¹ å°é¾.txt | å½é çª | 202647368 | 1658992475891146752 | 010104010401 | å¿ç«¥ä¿å¥é¨è¯ | F81.900 | `pat_child_archive` | 2 | | å¿ç§-é«å±å¿ä¸æ¡.txt | çåæ | 202607546 | 1659487324381261824 | 010104010405 | æ©äº§å¿/é«å±å¿é¨è¯ | P96.800x904 | `pat_child_archive` | 3 | ### 3.1 é 置说æ é 置表ï¼`pat_specific_archive_generate_config`ã | åæ®µ | 说æ | | --- | --- | | `dept_type` | `1` ç§å®¤ï¼`2` ç åºï¼é¨è¯è®°å½æ `1` å¹é | | `dept_category` | `1` å¦ç§ï¼`2` å¿ç§ | | `archive_type` | å¦ç§ï¼`1` æ©åå ³ç±ã`2` å´ç»ç»æMHIï¼å¿ç§ï¼`1` è¥å »æ§ç¾ç ã`2` å¦ä¹ å°é¾ã`3` é«å±å¿ä¸æ¡ | | `dept_codes` | ç§å®¤ Code JSON æ°ç»å符串 | | `icd10_codes` | è¯æ Code JSON æ°ç»å符串 | | `orgid` | æºæ ID | | `campusid` | é¢åº ID | | `del_flag` | `0` ææï¼`1` å é¤ | å¹é è§åï¼ 1. ä» æ¥è¯¢ `del_flag = '0'` çé ç½®ã 2. æºæé ç½®ä¼å ï¼è¯¥æºææ²¡æé ç½®æ¶æä½¿ç¨å ¨å±é ç½®ã 3. `campusid` 为空ä¸éå¶ï¼ä¸ä¸ºç©ºæ¶å¿ é¡»ä¸è®°å½çé¢åºä¸è´ã 4. é¨é¨æ¡ä»¶ä¸è¯ææ¡ä»¶ä¸º **OR**ï¼ä»»ä¸å½ä¸å³çæã 5. åä¸é¨è¯è®°å½ãåä¸é¨é¨åç±»ãå䏿¡£æ¡ç±»ååªçæä¸æ¡æ¡£æ¡ã 6. æªé ç½®ãæªå½ä¸æçæå¼å¸¸åä¸é»æå®ææ¥è¯ä¸»æµç¨ã åå§åèæ¬ï¼ ```text sql/pat_specific_archive_generate_config_lishui_mch_20261104.sql ``` --- ## åãæå¨è¡¥éæ¥å£ ### 4.1 åºæ¬ä¿¡æ¯ | é¡¹ç® | å 容 | | --- | --- | | æ¥å£å°å | `/monitor/his/collectMchArchive` | | è¯·æ±æ¹å¼ | `POST` | | Content-Type | `application/json` | | è®¤è¯æ¹å¼ | éç»å½ï¼è¯·æ±å¤´æºå¸¦ `Authorization: Bearer {token}` | | åè½ | ä» HIS é¨è¯è§å¾æå°±è¯æ¥æè¡¥é丽水å¦å¹¼é¨è¯æ¥è¯å®æè®°å½ï¼å¹¶çæä¸ç§æ¡£æ¡ | ### 4.2 请æ±åæ° | åæ®µ | ç±»å | å¿ å¡« | 说æ | | --- | --- | --- | --- | | `startTime` | Date | å¦ | å°±è¯å¼å§æ¥æï¼æ ¼å¼ `yyyy-MM-dd`ï¼ä¸ä¼ é»è®¤æ¨å¤© | | `endTime` | Date | å¦ | å°±è¯ç»ææ¥æï¼æ ¼å¼ `yyyy-MM-dd`ï¼ä¸ä¼ é»è®¤ä»å¤©ï¼ä¼ æ¥ææ¶èªå¨è¡¥é½å°å½å¤© `23:59:59` | 请æ±ç¤ºä¾ï¼ ```json { "startTime": "2026-11-03", "endTime": "2026-11-03" } ``` ### 4.3 ååºè¯´æ ```json { "code": 200, "msg": "æä½æå", "data": 25 } ``` | åæ®µ | ç±»å | 说æ | | --- | --- | --- | | `code` | int | `200` æåï¼`500` 失败 | | `msg` | String | æç¤ºä¿¡æ¯ | | `data` | Integer | æ¬æ¬¡å¤çå½±åè¡æ°ï¼æ£è æ¡£æ¡ãé¨è¯è®°å½åå ¥/æ´æ°è¡æ°ï¼ä¸çåäºæ¡£æ¡æ¡æ°ï¼ | > 该æ¥å£å 鍿 ¡éª `orgid = 47226079133110211G1001`ï¼å ¶ä»æºæç´æ¥è¿å 0ã --- ## äºã宿¶ä»»å¡ | é¡¹ç® | å 容 | | --- | --- | | 任塿¹æ³ | `ryTask.collectMchArchive()` | | åæ° | æ | | é»è®¤æ¶é´èå´ | æ¨å¤© `00:00:00` ~ ä»å¤© `00:00:00` | | åè½ | éé丽水å¦å¹¼é¨è¯æ¥è¯å®æè®°å½å¹¶çæä¸ç§æ¡£æ¡ | `sys_job` é 置示ä¾ï¼ | åæ®µ | 示ä¾å¼ | | --- | --- | | ä»»å¡åç§° | 丽水å¦å¹¼é¨è¯ä¸ç§æ¡£æ¡çæ | | è°ç¨ç®æ å符串 | `ryTask.collectMchArchive()` | | cron è¡¨è¾¾å¼ | `0 30 1 * * ?` | | ç¶æ | æ£å¸¸ | --- ## å ãæ¡£æ¡æ¥è¯¢æ¥å£ æ¡£æ¡æ¥è¯¢ã详æ ãå 餿¥å£æ²¿ç¨ç°æå¦å¹¼æ¡£æ¡æ¥å£ï¼è¯¦è§ `doc/api/å¦ä¿æ¥å£ææ¡£.md`ã | åè½ | æ¥å£ | | --- | --- | | æ¥è¯¢å¦ç§æ¡£æ¡å表 | `POST /smartor/maternityArchive/selectPatMaternityArchiveList` | | è·åå¦ç§æ¡£æ¡è¯¦æ | `GET /smartor/maternityArchiveDetail/getInfo/{archiveid}` | | æ¥è¯¢å¿ç§æ¡£æ¡å表 | `POST /smartor/childArchive/selectPatChildArchiveList` | | è·åå¿ç§æ¡£æ¡è¯¦æ | `GET /smartor/childArchiveDetail/getInfo/{archiveid}` | å表æ¥è¯¢å¯æ `outhospno`ã`archiveType`ã`patname`ã`deptcode`ã`icd10code` çæ¡ä»¶æ ¸å¯¹çæç»æã --- ## ä¸ãå¼å¸¸ä¸è¾¹çåºæ¯ | åºæ¯ | å¤çæ¹å¼ | | --- | --- | | æºæä¸æ¯ä¸½æ°´å¦å¹¼ | ä¸çææ¡£æ¡ï¼å®ææ¥è¯æ¥å£æ£å¸¸è¿å | | æªé ç½®è§åæé 置已å é¤ | ä¸çææ¡£æ¡ï¼ä¸æ¥é | | é ç½® `dept_codes`ã`icd10_codes` é½ä¸ºç©º | é ç½®è§ä¸ºæ æï¼è·³è¿ | | `dept_type = 2`ï¼ç åºï¼ | é¨è¯è®°å½æ²¡æç åºå段ï¼ä¸åä¸é¨è¯å¹é | | è¯æ Code 为空 | ä» æç§å®¤æ¡ä»¶å¹é ï¼è¥é ç½®åªæè¯ææ¡ä»¶åä¸å½ä¸ | | é¨è¯ç¼å· `outhospno` 为空 | è·³è¿è¯¥è®°å½ï¼è®°å½åè¦æ¥å¿ | | æ£è æ¡£æ¡ä¸åå¨ | ææ£è ç¼å·/è¯ä»¶å·åæ¥ä»æ¾ä¸å°æ¶è·³è¿ | | éå¤åè° | æä¸å¡é®æ´æ°å·²ææ¡£æ¡ï¼ä¸éå¤æå ¥ | | 䏿¡è®°å½å½ä¸å¤æ¡é ç½® | æä¸å `dept_category + archive_type` åå«çæ | | é ç½® JSON æ ¼å¼å¼å¸¸ | è®°å½åè¦æ¥å¿ï¼æéå·åéå åºè§£æ | | æ¡£æ¡çæå¼å¸¸ | æè·å¼å¸¸å¹¶è®°å½æ¥å¿ï¼ä¸å½±å宿æ¥è¯ååº | --- ## å «ãåæ´è®°å½ | æ¥æ | å 容 | | --- | --- | | 2026-11-04 | æ°å¢ä¸½æ°´å¸å¦å¹¼ä¿å¥é¢é¨è¯æ¥è¯å®æè®°å½çæå¦ç§/å¿ç§æ¡£æ¡è¯´æ | docs/¸¾Ó×ר¿Æµµ°¸Éú³É²âÊÔ±¨¸æ_20261104.md
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,307 @@ # å¦å¹¼ä¸ç§æ¡£æ¡çææµè¯æ¥å | é¡¹ç® | å 容 | | --- | --- | | 模å | æºè½é访ï¼smartorï¼ | | åè½ | é¨è¯æ¥è¯å®æè®°å½çæå¦ç§/å¿ç§ä¸ç§æ¡£æ¡ | | éç¨æºæ | `orgid = 47226079133110211G1001`ï¼ä¸½æ°´å¸å¦å¹¼ä¿å¥é¢ï¼ | | æµè¯ç±»å | å¼åèªæµï¼éæéªè¯ + èè°ç¨ä¾è®¾è®¡ï¼ | | æµè¯æ¥æ | 2026-11-04 | | å ³èææ¡£ | `doc/api/å¦å¹¼ä¸ç§æ¡£æ¡çææ¥å£ææ¡£_20261104.md` | --- ## 1. æµè¯æ¦è¿° ### 1.1 æµè¯ç®æ éªè¯ä»¥ä¸è½åï¼ 1. `JZ_MZ_WanChengJZ` 宿æ¥è¯æ¥æåå ¥é¨è¯è®°å½åï¼è½æé ç½®çæå¦ç§/å¿ç§æ¡£æ¡ã 2. äºä¸ªåèæ ·ä¾åå«çææ£ç¡®æ¡£æ¡ç±»åã 3. ä» `orgid = 47226079133110211G1001` çæï¼å ¶ä»æºæä¸çæã 4. éå¤åè°ãæ é ç½®ãé ç½®åç¨çåºæ¯ä¸å½±å宿æ¥è¯ä¸»æµç¨ã 5. æå¨è¡¥éæ¥å£å宿¶ä»»å¡å ¥å£å¯ç¨ã ### 1.2 æµè¯èå´ | èå´ | 说æ | | --- | --- | | 宿æ¥è¯åè° | `/smartor/serviceExternal/generalInterface`ï¼æ¶æ¯ç±»å `JZ_MZ_WanChengJZ` | | æå¨è¡¥éæ¥å£ | `/monitor/his/collectMchArchive` | | 宿¶ä»»å¡ | `ryTask.collectMchArchive()` | | æ¡£æ¡çææå¡ | `PatSpecificArchiveGenerateServiceImpl` | | é ç½®æ¥è¯¢ | `pat_specific_archive_generate_config` | | æ¡£æ¡è½åº | `pat_maternity_archive(_detail)`ã`pat_child_archive(_detail)` | ### 1.3 ä¸å¨æ¬æ¬¡èå´ - å¦ç§/å¿ç§æ¡£æ¡é¡µé¢ UI äº¤äºæµè¯ã - é访任å¡çæãçä¿¡/微信åéæµè¯ã - HIS ä¾§ç½ç»ãé²ç«å¢ãæ¥å£èè°ç¯å¢å¯ç¨æ§ã --- ## 2. æµè¯ç¯å¢ | é¡¹ç® | å 容 | | --- | --- | | 代ç 忝 | æ¬å° `master` å·¥ä½åº | | JDK | 21.0.12 | | Maven | 3.9.9 | | åºç¨ç«¯å£ | 8095ï¼é ç½®å¼ï¼ | | ä¸»åº | MySQLï¼åºå `smartor-lisui` 对åºç¯å¢ | | HIS æ¥æº | `healthy_outhosp` é¨è¯è§å¾ / `JZ_MZ_WanChengJZ` 宿¶æ¥æ | | æ¥å£å·¥å · | curl / Postmanï¼èè°æ¶ä½¿ç¨ï¼ | > æ¬æ¬¡æªè¿æ¥å®é ä¸å¡æ°æ®åºæ§è¡è½åºç¨ä¾ï¼æ°æ®åºç¸å ³ç¨ä¾æ 记为âå¾ èè°æ§è¡âã --- ## 3. æµè¯æ°æ® æµè¯æ°æ®ç®å½ï¼ ```text D:\OneDrive\Desktop\ç§»åº\å¦å¹¼ ``` | åºå· | æä»¶ | æ£è | é¨è¯ç¼å· | æµæ°´å· | ç§å®¤ Code | ä¸»è¯æ ICD10 | æææ¡£æ¡ | | --- | --- | --- | --- | --- | --- | --- | --- | | 1 | å¦ç§-æ©åå ³ç±.txt | å¼ æ¦ | 202637799 | 1659700037955006464 | 010104010601 | O26.900x206 | å¦ç§æ¡£æ¡ï¼`archiveType=1` | | 2 | å¦ç§-å´ç»ç»æMHI.txt | å¼ ç¥ | 202620972 | 1656887374212886528 | 010102010207 | N95.900 | å¦ç§æ¡£æ¡ï¼`archiveType=2` | | 3 | å¿ç§-è¥å »æ§ç¾ç .txt | ææ² å | 202651402 | 1659715824983924736 | 010104010403 | E46.x00x003 | å¿ç§æ¡£æ¡ï¼`archiveType=1` | | 4 | å¿ç§-å¦ä¹ å°é¾.txt | å½é çª | 202647368 | 1658992475891146752 | 010104010401 | F81.900 | å¿ç§æ¡£æ¡ï¼`archiveType=2` | | 5 | å¿ç§-é«å±å¿ä¸æ¡.txt | çåæ | 202607546 | 1659487324381261824 | 010104010405 | P96.800x904 | å¿ç§æ¡£æ¡ï¼`archiveType=3` | é ç½®æä»¶ï¼ ```text sql/pat_specific_archive_generate_config_lishui_mch_20261104.sql ``` --- ## 4. æµè¯æ§è¡æ±æ» | ç±»å« | ç¨ä¾æ° | éè¿ | 失败 | å¾ æ§è¡ | | --- | ---: | ---: | ---: | ---: | | éæéªè¯ | 3 | 3 | 0 | 0 | | è§åå¹é 模æ | 5 | 5 | 0 | 0 | | æ°æ®åºè½åºèè° | 16 | 0 | 0 | 16 | | å计 | 24 | 8 | 0 | 16 | > éæéªè¯åè§åå¹é 模æå·²å®é æ§è¡ï¼æ°æ®åºè½åºç±»ç¨ä¾éå¨èè°ç¯å¢æ§è¡ã --- ## 5. å·²æ§è¡ç¨ä¾åç»æ ### 5.1 ST-01 代ç ç¼è¯ æ§è¡å½ä»¤ï¼ ```bash mvn -pl smartor,ruoyi-quartz -am -DskipTests -Dmaven.test.skip=true compile mvn -pl ruoyi-admin -am -DskipTests -Dmaven.test.skip=true compile ``` æ§è¡ç»æï¼ ```text BUILD SUCCESS ``` ç»è®ºï¼éè¿ã ### 5.2 ST-02 äºä¸ªå ¥å JSON æ ¼å¼æ ¡éª ä½¿ç¨ Node.js 对äºä¸ª txt æä»¶æ§è¡ `JSON.parse`ã æ§è¡ç»æï¼ ```text OK å¿ç§-å¦ä¹ å°é¾.txt OK å¿ç§-è¥å »æ§ç¾ç .txt OK å¿ç§-é«å±å¿ä¸æ¡.txt OK å¦ç§-å´ç»ç»æMHI.txt OK å¦ç§-æ©åå ³ç±.txt ``` ç»è®ºï¼5/5 éè¿ã ### 5.3 ST-03 é ç½®è§åå¹é æ¨¡æ æ `sql/pat_specific_archive_generate_config_lishui_mch_20261104.sql` ä¸ç 5 æ¡è§åï¼å¯¹äºä¸ªå ¥åç `JiuZhenKSID` åä¸»è¯æ `Icd10` å OR å¹é 模æã æ§è¡ç»æï¼ | æä»¶ | ç§å®¤ Code | ä¸»è¯æ ICD10 | å½ä¸è§å | ç»æ | | --- | --- | --- | --- | --- | | å¦ç§-æ©åå ³ç±.txt | 010104010601 | O26.900x206 | æ©åå ³ç± / å¦ç§ / `archiveType=1` | PASS | | å¦ç§-å´ç»ç»æMHI.txt | 010102010207 | N95.900 | å´ç»ç»æMHI / å¦ç§ / `archiveType=2` | PASS | | å¿ç§-è¥å »æ§ç¾ç .txt | 010104010403 | E46.x00x003 | è¥å »æ§ç¾ç / å¿ç§ / `archiveType=1` | PASS | | å¿ç§-å¦ä¹ å°é¾.txt | 010104010401 | F81.900 | å¦ä¹ å°é¾ / å¿ç§ / `archiveType=2` | PASS | | å¿ç§-é«å±å¿ä¸æ¡.txt | 010104010405 | P96.800x904 | é«å±å¿ä¸æ¡ / å¿ç§ / `archiveType=3` | PASS | æ±æ»ï¼ ```text SUMMARY 5/5 ``` ç»è®ºï¼äºä¸ªæ ·ä¾åå¯ä¸å½ä¸é¢æè§åï¼æªåºç°äº¤åå½ä¸ã --- ## 6. èè°ç¨ä¾ï¼å¾ æ§è¡ï¼ > 以ä¸ç¨ä¾éå¨å ·å¤ MySQLãHIS è§å¾å宿´åºç¨ç¯å¢çèè°ç¯å¢æ§è¡ã ### 6.1 é ç½®åå§å | ç¨ä¾ç¼å· | æ¥éª¤ | é¢æç»æ | | --- | --- | --- | | TC-00 | æ§è¡ `sql/pat_specific_archive_generate_config_lishui_mch_20261104.sql` | èæ¬æ«å°¾æ ¸éª SQL è¿å 5 æ¡é ç½®ï¼`orgid` å为 `47226079133110211G1001` | ### 6.2 äºä¸ªæ ·ä¾çæ | ç¨ä¾ç¼å· | å ¥å | æ¥éª¤ | é¢æç»æ | | --- | --- | --- | --- | | TC-01 | å¦ç§-æ©åå ³ç±.txt | POST `/smartor/serviceExternal/generalInterface`ï¼ç¶åæ¥è¯¢ `pat_maternity_archive` | æ°å¢ 1 æ¡ `archive_type='1'`ã`outhospno='202637799'`ã`patname='å¼ æ¦'` çå¦ç§æ¡£æ¡ï¼è¯¦æ è¡¨åæ¥ 1 æ¡ | | TC-02 | å¦ç§-å´ç»ç»æMHI.txt | åä¸ | æ°å¢ 1 æ¡ `archive_type='2'`ã`outhospno='202620972'`ã`patname='å¼ ç¥'` çå¦ç§æ¡£æ¡ | | TC-03 | å¿ç§-è¥å »æ§ç¾ç .txt | åä¸ï¼æ¥è¯¢ `pat_child_archive` | æ°å¢ 1 æ¡ `archive_type='1'`ã`outhospno='202651402'`ã`patname='ææ² å'` çå¿ç§æ¡£æ¡ | | TC-04 | å¿ç§-å¦ä¹ å°é¾.txt | åä¸ | æ°å¢ 1 æ¡ `archive_type='2'`ã`outhospno='202647368'`ã`patname='å½é çª'` çå¿ç§æ¡£æ¡ | | TC-05 | å¿ç§-é«å±å¿ä¸æ¡.txt | åä¸ | æ°å¢ 1 æ¡ `archive_type='3'`ã`outhospno='202607546'`ã`patname='çåæ'` çå¿ç§æ¡£æ¡ | ### 6.3 åæ®µå®æ´æ§ | ç¨ä¾ç¼å· | æ£æ¥é¡¹ | é¢æç»æ | | --- | --- | --- | | TC-06 | å¦ç§æ¡£æ¡å段 | `patid`ã`patname`ã`birthdate`ã`phone`ã`deptcode`ã`deptname`ã`icd10code`ã`diagname`ã`diag_time`ã`archive_time`ã`orgid`ã`campusid` æå¼ï¼`source_type='1'` | | TC-07 | å¿ç§æ¡£æ¡å段 | é¤ä¸è¿°å ¬å ±å段å¤ï¼`parent_phone`ã`parent_address` å°½éæå¼ï¼è¥å »æ§ç¾ç æ¡£æ¡ `nutrition_icd10_code`ã`nutrition_diag_name` ä¸ä¸»è¯æä¸è´ | ### 6.4 å¹çä¸é离 | ç¨ä¾ç¼å· | åºæ¯ | é¢æç»æ | | --- | --- | --- | | TC-08 | åä¸å ¥åè¿ç» POST 2 次 | 主表ä»åªæ 1 æ¡ï¼è¯¦æ 表ä»åªæ 1 æ¡ï¼å å®¹æ´æ°ä¸ºæå䏿¬¡ | | TC-09 | å° `FaSongJGID` æ¹ä¸ºå ¶ä»æºæå POST | ä¸çæå¦å¹¼ä¸ç§æ¡£æ¡ï¼å®ææ¥è¯æ¥å£æ£å¸¸è¿å `Code=0` | | TC-10 | å°å¯¹åºé ç½® `del_flag` æ¹ä¸º `1` å POST | ä¸çææ¡£æ¡ï¼æ¥å£æ£å¸¸è¿å | | TC-11 | é ç½® `dept_type='2'`ï¼ç åºï¼ï¼é¨è¯è®°å½æ ç åºå段 | ç§å®¤æ¡ä»¶ä¸å½ä¸ï¼ä» è¯ææ¡ä»¶å¯å½ä¸ | | TC-12 | åä¸è®°å½å½ä¸ä¸¤æ¡ä¸å `archiveType` é ç½® | åå«çæä¸¤æ¡ä¸åæ¡£æ¡ç±»åçæ¡£æ¡ | ### 6.5 æå¨è¡¥éä¸å®æ¶ä»»å¡ | ç¨ä¾ç¼å· | åºæ¯ | é¢æç»æ | | --- | --- | --- | | TC-13 | POST `/monitor/his/collectMchArchive`ï¼ä¼ `startTime`ã`endTime` | æå°±è¯æ¥æè¡¥éæå®æºæè®°å½ï¼å¹¶è§¦åæ¡£æ¡çæï¼è¿å `code=200`ã`data` 为å¤çè¡æ° | | TC-14 | ä¸ä¼ 请æ±ä½è°ç¨æå¨è¡¥éæ¥å£ | é»è®¤ééæ¨å¤©æ°æ® | | TC-15 | é 置并æ§è¡ `ryTask.collectMchArchive()` | ééæ¨å¤©ä¸½æ°´å¦å¹¼é¨è¯è®°å½å¹¶çææ¡£æ¡ï¼æ¥å¿æ å¼å¸¸ | --- ## 7. æ°æ®åºæ ¸éª SQL ### 7.1 é ç½®æ ¸éª ```sql SELECT id, dept_type, dept_category, archive_type, dept_codes, icd10_codes, orgid, campusid, del_flag FROM pat_specific_archive_generate_config WHERE orgid = '47226079133110211G1001' AND del_flag = '0' ORDER BY dept_category, archive_type; ``` 颿ï¼5 æ¡ææé ç½®ã ### 7.2 å¦ç§æ¡£æ¡æ ¸éª ```sql SELECT id, archive_type, outhospno, serialnum, patid, patname, deptcode, deptname, icd10code, diagname, orgid, campusid, create_time FROM pat_maternity_archive WHERE outhospno IN ('202637799', '202620972') AND del_flag = '0' ORDER BY outhospno; ``` é¢æï¼ | outhospno | archive_type | patname | | --- | --- | --- | | 202620972 | 2 | å¼ ç¥ | | 202637799 | 1 | å¼ æ¦ | ### 7.3 å¿ç§æ¡£æ¡æ ¸éª ```sql SELECT id, archive_type, outhospno, serialnum, patid, patname, deptcode, deptname, icd10code, diagname, orgid, campusid, create_time FROM pat_child_archive WHERE outhospno IN ('202651402', '202647368', '202607546') AND del_flag = '0' ORDER BY outhospno; ``` é¢æï¼ | outhospno | archive_type | patname | | --- | --- | --- | | 202607546 | 3 | çåæ | | 202647368 | 2 | å½é çª | | 202651402 | 1 | ææ² å | ### 7.4 详æ è¡¨æ ¸éª ```sql SELECT d.id, d.archiveid, d.archive_type, d.source_type, d.outhospno, d.patid, d.patname, d.deptcode, d.icd10code, d.diagname, d.orgid, d.campusid FROM pat_maternity_archive_detail d WHERE d.outhospno IN ('202637799', '202620972') AND d.del_flag = '0'; ``` ```sql SELECT d.id, d.archiveid, d.archive_type, d.source_type, d.outhospno, d.patid, d.patname, d.deptcode, d.icd10code, d.diagname, d.orgid, d.campusid FROM pat_child_archive_detail d WHERE d.outhospno IN ('202651402', '202647368', '202607546') AND d.del_flag = '0'; ``` é¢æï¼æ¯ä¸ªé¨è¯ç¼å·å¯¹åº 1 æ¡è¯¦æ ï¼`source_type='1'`ï¼`archiveid` ä¸ä¸»è¡¨ä¸è´ã --- ## 8. é£é©ä¸éçé®é¢ | åºå· | é£é©/é®é¢ | 说æ | 建议 | | --- | --- | --- | --- | | 1 | é 置表ä¾èµ | æªæ§è¡é ç½®èæ¬æé 置被å 餿¶ä¸çææ¡£æ¡ | ä¸çº¿å确认 5 æ¡é 置已è½åº | | 2 | è¯æç¼ç 精确å¹é | å½åæå ¥åä¸çä¸»è¯æ `Icd10` 精确å¹é ï¼ç¼ç å级/åä½å¯è½ä¸å½ä¸ | èè°æ¶ç¡®è®¤æ¯å¦éè¦æ©å±ä¸ºåç¼æç¼ç éåå¹é | | 3 | ç§å®¤ä¸è¯æ OR å¹é | é ç½®åæ¶å¡«å `dept_codes` å `icd10_codes` æ¶ä»»ä¸å½ä¸å³çæ | 对ç§å®¤åºå度ä½çè§åï¼å»ºè®®åªé ç½®è¯æ Code | | 4 | å¿ç§è¥å »/å¦ä¹ æ ·ä¾ç§å®¤åºååº¦ä½ | ä¸¤ä¸ªæ ·ä¾ç§å®¤åç§°ä¸æ¡£æ¡ç±»åå¹¶éä¸ä¸å¯¹åº | å·²æè¯æ Code é ç½®ï¼é¿å æç§å®¤è¯¯çæ | | 5 | é¨è¯è®°å½å表 | `pat_med_outhosp` å¯è½å·²å表ï¼ç´æ¥ SQL æ¥è¯¢å¯è½æ¥ä¸å° | ä½¿ç¨ `sp_query_outhosp` ææ¥è¯¢å¯¹åºå表 | | 6 | è¿è¡ç¯å¢ | æ¬æ¬¡æªè¿æ¥å®é æ°æ®åºæ§è¡è½åºéªè¯ | èè°ç¯å¢æ§è¡ç¬¬ 6 èç¨ä¾ååå¤å®ä¸çº¿ | --- ## 9. æµè¯ç»è®º 1. 代ç ç¼è¯éè¿ï¼äºä¸ªåèå ¥å JSON æ ¼å¼åæ³ï¼è§åå¹é 模æ 5/5 éè¿ã 2. äºä¸ªæ ·ä¾åå¯ä¸å½ä¸é¢ææ¡£æ¡ç±»åï¼æªåç°è§å交åã 3. æ°æ®åºè½åºãå¹çãæºæé离ç 16 个èè°ç¨ä¾å·²è®¾è®¡ï¼å¾ èè°ç¯å¢æ§è¡ã 4. å½åç»è®ºï¼**å ·å¤èè°æ¡ä»¶ï¼èè°éè¿åå¯ä¸çº¿**ã --- ## 10. éå½ï¼èè°æ§è¡é¡ºåº 1. æ§è¡é ç½®èæ¬ `sql/pat_specific_archive_generate_config_lishui_mch_20261104.sql`ã 2. 确认é ç½®æ¥è¯¢è¿å 5 æ¡ã 3. 便¬¡ POST äºä¸ªå ¥åæä»¶å° `/smartor/serviceExternal/generalInterface`ã 4. æç¬¬ 7 è SQL æ ¸å¯¹ `pat_maternity_archive`ã`pat_child_archive` å详æ 表ã 5. æ§è¡éå¤ POSTãå ¶ä»æºæãåç¨é ç½®çé离ç¨ä¾ã 6. è°ç¨ `/monitor/his/collectMchArchive` éªè¯æå¨è¡¥éã 7. é ç½® `ryTask.collectMchArchive()` 宿¶ä»»å¡å¹¶è§å¯æ¥å¿ã pom.xml
@@ -24,6 +24,8 @@ <kaptcha.version>2.3.3</kaptcha.version> <pagehelper.boot.version>1.4.6</pagehelper.boot.version> <fastjson.version>2.0.23</fastjson.version> <!-- Lombok 1.18.22 is incompatible with JDK 21+ (JCTree$JCImport.qualid removed) --> <lombok.version>1.18.36</lombok.version> <oshi.version>6.4.0</oshi.version> <commons.io.version>2.11.0</commons.io.version> <commons.fileupload.version>1.4</commons.fileupload.version> @@ -31,6 +33,10 @@ <poi.version>4.1.2</poi.version> <velocity.version>2.3</velocity.version> <jwt.version>0.9.1</jwt.version> <jws.version>1.1</jws.version> <jaxws.version>2.3.1</jaxws.version> <jaxb.impl.version>2.3.0</jaxb.impl.version> <javassist.version>3.28.0-GA</javassist.version> </properties> <!-- ä¾èµå£°æ --> @@ -46,6 +52,44 @@ <scope>import</scope> </dependency> <!-- è¦ç Spring Boot BOM ä¸ç Lombok çæ¬ï¼å ¼å®¹ JDK 21+ --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </dependency> <!-- JDK 11+ å·²ç§»é¤ Java EE 模åï¼æ¾å¼ç®¡ç JAX-WS/JWS API çæ¬ --> <dependency> <groupId>javax.jws</groupId> <artifactId>javax.jws-api</artifactId> <version>${jws.version}</version> </dependency> <dependency> <groupId>javax.xml.ws</groupId> <artifactId>jaxws-api</artifactId> <version>${jaxws.version}</version> </dependency> <!-- ç»ä¸ JAXB çæ¬ï¼é¿å CXF 3.1.6 å¼å ¥å¨ JDK 9+ ä¸ POM éæ³ç 2.2.11 --> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>${jaxb.impl.version}</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-core</artifactId> <version>${jaxb.impl.version}</version> </dependency> <!-- ç»ä¸ Javassist çæ¬ï¼3.20.0-GA ç tools.jar systemPath å¨ JDK 9+ ä¸ä¼å¯¼è´ POM æ æ --> <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>${javassist.version}</version> </dependency> <!-- é¿éæ°æ®åºè¿æ¥æ± --> <dependency> <groupId>com.alibaba</groupId> ruoyi-admin/pom.xml
@@ -173,6 +173,16 @@ <artifactId>spring-boot-starter-web-services</artifactId> </dependency> <!-- JDK 11+ å·²ç§»é¤ Java EE 模åï¼æ¬æ¨¡åç WebService ç´æ¥ä½¿ç¨ JAX-WS/JWS API --> <dependency> <groupId>javax.jws</groupId> <artifactId>javax.jws-api</artifactId> </dependency> <dependency> <groupId>javax.xml.ws</groupId> <artifactId>jaxws-api</artifactId> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> @@ -249,17 +259,17 @@ <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc8</artifactId> <version>19.3.0.0</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.6.0</version> <!-- è¯·æ ¹æ®éè¦éæ©ææ°çæ¬ --> </dependency> <!--oracle--> <!-- éç¨å·¥å ·ï¼æ¬æ¨¡åç´æ¥ä½¿ç¨ ruoyi-common ä¸çç±»ï¼ --> <dependency> <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc8</artifactId> <scope>runtime</scope> <groupId>com.ruoyi</groupId> <artifactId>ruoyi-common</artifactId> </dependency> </dependencies> <build> @@ -300,10 +310,6 @@ <repository> <id>aliyun</id> <url>https://maven.aliyun.com/repository/public</url> </repository> <repository> <id>jcenter</id> <url>https://jcenter.bintray.com/</url> </repository> </repositories> </project> ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceOutPathController.java
@@ -94,15 +94,14 @@ serviceOutPath1.setOrgname(orgname); } } if(StringUtils.isNotEmpty(serviceOutPath1.getParam2())){ RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); Long patId = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceOutPath1.getParam2(), pri_key)); if(patId != null){ PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(patId); serviceOutPath1.setPatArchive(patArchive); } } // if(StringUtils.isNotEmpty(serviceOutPath1.getParam2())){ // RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); // Long patId = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceOutPath1.getParam2(), pri_key)); // if(patId != null){ // PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(patId); // serviceOutPath1.setPatArchive(patArchive); // } // } return success(serviceOutPath1); } return success(null); ruoyi-common/pom.xml
@@ -168,6 +168,16 @@ <artifactId>javax.servlet-api</artifactId> </dependency> <!-- JDK 11+ å·²ç§»é¤ Java EE 模åï¼è¿éæ¾å¼å¼å ¥ JAX-WS/JWS API --> <dependency> <groupId>javax.jws</groupId> <artifactId>javax.jws-api</artifactId> </dependency> <dependency> <groupId>javax.xml.ws</groupId> <artifactId>jaxws-api</artifactId> </dependency> <!-- AOPæ¯æ --> <dependency> <groupId>org.springframework.boot</groupId> @@ -176,7 +186,6 @@ <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.34</version> </dependency> <dependency> <groupId>com.squareup.okhttp3</groupId> ruoyi-patarchive/src/main/java/com/ruoyi/patarchive/mapper/PatSpecificArchiveGenerateConfigMapper.java
@@ -2,6 +2,7 @@ import com.ruoyi.patarchive.domain.PatSpecificArchiveGenerateConfig; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,6 +19,17 @@ public List<PatSpecificArchiveGenerateConfig> selectPatSpecificArchiveGenerateConfigList(PatSpecificArchiveGenerateConfig patSpecificArchiveGenerateConfig); /** * æ¥è¯¢æºæ/é¢åºå¯ç¨çä¸ç§æ¡£æ¡çæé ç½®ã * æºæé ç½®ä¼å ï¼æ²¡ææºæé ç½®æ¶æè¿åå ¨å±é ç½®ã * * @param orgid æºæID * @param campusid é¢åºID * @return é ç½®éå */ public List<PatSpecificArchiveGenerateConfig> selectEffectivePatSpecificArchiveGenerateConfigList(@Param("orgid") String orgid, @Param("campusid") String campusid); public int insertPatSpecificArchiveGenerateConfig(PatSpecificArchiveGenerateConfig patSpecificArchiveGenerateConfig); public int updatePatSpecificArchiveGenerateConfig(PatSpecificArchiveGenerateConfig patSpecificArchiveGenerateConfig); ruoyi-patarchive/src/main/java/com/ruoyi/patarchive/service/IPatSpecificArchiveGenerateConfigService.java
@@ -16,6 +16,15 @@ public List<PatSpecificArchiveGenerateConfig> selectPatSpecificArchiveGenerateConfigList(PatSpecificArchiveGenerateConfig patSpecificArchiveGenerateConfig); /** * æ¥è¯¢æºæ/é¢åºå¯ç¨çé ç½®ãæºæé ç½®ä¼å ï¼æºææ²¡æé ç½®æ¶è¿åå ¨å±é ç½®ã * * @param orgid æºæID * @param campusid é¢åºID * @return å¯ç¨é ç½®éå */ public List<PatSpecificArchiveGenerateConfig> selectEffectiveConfigList(String orgid, String campusid); public int insertPatSpecificArchiveGenerateConfig(PatSpecificArchiveGenerateConfig patSpecificArchiveGenerateConfig); public int updatePatSpecificArchiveGenerateConfig(PatSpecificArchiveGenerateConfig patSpecificArchiveGenerateConfig); ruoyi-patarchive/src/main/java/com/ruoyi/patarchive/service/impl/PatSpecificArchiveGenerateConfigServiceImpl.java
@@ -5,10 +5,13 @@ import com.ruoyi.patarchive.domain.PatSpecificArchiveGenerateConfig; import com.ruoyi.patarchive.mapper.PatSpecificArchiveGenerateConfigMapper; import com.ruoyi.patarchive.service.IPatSpecificArchiveGenerateConfigService; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; /** * ä¸ç§æ¡£æ¡çæé ç½®Serviceä¸å¡å±å¤ç @@ -35,6 +38,33 @@ } @Override public List<PatSpecificArchiveGenerateConfig> selectEffectiveConfigList(String orgid, String campusid) { List<PatSpecificArchiveGenerateConfig> configs = patSpecificArchiveGenerateConfigMapper.selectEffectivePatSpecificArchiveGenerateConfigList(orgid, campusid); if (CollectionUtils.isEmpty(configs)) { return Collections.emptyList(); } // æºæé ç½®ä¼å ï¼å卿ºæé ç½®æ¶ï¼ä¸å使ç¨å ¨å±é ç½®ï¼é¿å è§åéå¤å½ä¸ if (StringUtils.isNotEmpty(orgid)) { List<PatSpecificArchiveGenerateConfig> orgConfigs = configs.stream() .filter(config -> orgid.equals(config.getOrgid())) .collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(orgConfigs)) { return orgConfigs; } } return configs.stream() .filter(config -> StringUtils.isEmpty(config.getOrgid())) .collect(Collectors.toList()); } @Override public int insertPatSpecificArchiveGenerateConfig(PatSpecificArchiveGenerateConfig patSpecificArchiveGenerateConfig) { patSpecificArchiveGenerateConfig.setCreateTime(DateUtils.getNowDate()); ruoyi-patarchive/src/main/resources/mapper/patarchive/PatSpecificArchiveGenerateConfigMapper.xml
@@ -57,6 +57,14 @@ </if> </select> <select id="selectEffectivePatSpecificArchiveGenerateConfigList" resultMap="PatSpecificArchiveGenerateConfigResult"> <include refid="selectPatSpecificArchiveGenerateConfigVo"/> where del_flag = '0' and (orgid = #{orgid} or orgid is null or orgid = '') and (campusid is null or campusid = '' or campusid = #{campusid}) order by case when orgid = #{orgid} then 0 else 1 end, id asc </select> <select id="selectPatSpecificArchiveGenerateConfigById" parameterType="Long" resultMap="PatSpecificArchiveGenerateConfigResult"> <include refid="selectPatSpecificArchiveGenerateConfigVo"/> where id = #{id} ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/CollectHISController.java
@@ -8,6 +8,7 @@ import com.ruoyi.datacollection.domain.HnDataGatherVO; import com.ruoyi.common.core.domain.entity.Icd10; import com.ruoyi.datacollection.service.IHNGatherPatArchiveService; import com.smartor.common.SpecificArchiveConstants; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -41,6 +42,24 @@ } /** * éé丽水å¸å¦å¹¼ä¿å¥é¢é¨è¯æ¥è¯å®æè®°å½ï¼å¹¶çæå¦ç§/å¿ç§æ¡£æ¡ã * 请æ±ä½å¯ä¼ startTimeãendTimeï¼yyyy-MM-dd æ yyyy-MM-dd HH:mm:ssï¼ï¼ä¸ä¼ é»è®¤é鿍天ã */ @PostMapping("/collectMchArchive") @ApiOperation("éé丽水å¦å¹¼é¨è¯æ¥è¯å®æè®°å½å¹¶çæä¸ç§æ¡£æ¡") public AjaxResult collectMchArchive(@RequestBody(required = false) HnDataGatherVO hnDataGatherVO) { try { HnDataGatherVO request = hnDataGatherVO != null ? hnDataGatherVO : new HnDataGatherVO(); Integer count = ichService.collectMchOuthospAndGenerateArchive( SpecificArchiveConstants.LISHUI_MCH_ORG_ID, request.getStartTime(), request.getEndTime()); return AjaxResult.success(count); } catch (Exception ex) { log.error("éé丽水å¦å¹¼é¨è¯æ¥è¯å®æè®°å½å¤±è´¥", ex); return AjaxResult.error(ex.getMessage()); } } /** * æ¥è¯¢ç¾ç åè¡¨æ°æ®éé */ @PostMapping("/collectIcd10") ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ICollectHISService.java
@@ -6,6 +6,7 @@ import com.ruoyi.outpatientvisit.domain.PatMedOuthosp; import com.ruoyi.inhospvisit.domain.PatMedInhosp; import java.util.Date; import java.util.List; import com.ruoyi.common.core.domain.entity.PatArchive; import com.ruoyi.common.core.domain.entity.Icd10; @@ -96,4 +97,15 @@ * å¸ä¸åæ¥ */ public Integer syncOper(String startTime, String endTime); /** * ééæå®æºæçé¨è¯æ¥è¯å®æè®°å½ï¼å¹¶æé ç½®çæå¦ç§/å¿ç§æ¡£æ¡ã * å½åä» æ¯æä¸½æ°´å¸å¦å¹¼ä¿å¥é¢ï¼orgid = 47226079133110211G1001ï¼ã * * @param orgid æºæID * @param startTime å°±è¯å¼å§æ¶é´ï¼ä¸ºç©ºæ¶é»è®¤æ¨å¤© 00:00:00 * @param endTime å°±è¯ç»ææ¶é´ï¼ä¸ºç©ºæ¶é»è®¤ä»å¤© 00:00:00 * @return ééå¹¶å¤ççè®°å½æ° */ public Integer collectMchOuthospAndGenerateArchive(String orgid, Date startTime, Date endTime); } ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
@@ -11,9 +11,11 @@ import com.ruoyi.common.utils.StringUtils; import com.ruoyi.quartz.mapper.CollectHISMapper; import com.ruoyi.quartz.service.ICollectHISService; import com.smartor.common.SpecificArchiveConstants; import com.smartor.domain.*; import com.smartor.mapper.*; import com.smartor.service.IPatMedOuthospService; import com.smartor.service.IPatSpecificArchiveGenerateService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ArrayUtils; @@ -23,6 +25,7 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; @@ -35,6 +38,7 @@ import com.ruoyi.outpatientvisit.mapper.PatMedOuthospMapper; import com.ruoyi.othervisit.domain.PatMedOperation; import com.ruoyi.outpatientvisit.domain.PatMedOuthosp; import com.ruoyi.outpatientvisit.domain.PatMedOuthospQueryReq; import com.ruoyi.inhospvisit.domain.PatMedInhosp; import com.ruoyi.common.core.domain.entity.PatArchive; import com.ruoyi.task.domain.entity.ServiceSubtaskEntity; @@ -65,6 +69,9 @@ @Autowired private IPatMedOuthospService patMedOuthospService; @Autowired private IPatSpecificArchiveGenerateService patSpecificArchiveGenerateService; @Autowired private SysDept2Mapper sysDept2Mapper; @@ -297,13 +304,36 @@ * @return */ private Integer syncOuthosp(String startTime, String endTime) { return syncOuthosp(startTime, endTime, null, false); } /** * 忥é¨è¯ä¿¡æ¯ã * * @param startTime å¼å§æ¶é´ * @param endTime ç»ææ¶é´ * @param orgid æºæIDï¼ä¸ºç©ºæ¶åæ¥å ¨é¨æºæ * @param byAdmitDate true=æå°±è¯æ¥æè¿æ»¤ï¼è¡¥éï¼ï¼false=ææåæ´æ°æ¶é´å¢é忥 */ private Integer syncOuthosp(String startTime, String endTime, String orgid, boolean byAdmitDate) { Integer count = 0; PatMedOuthosp patMedOuthosp = new PatMedOuthosp(); patMedOuthosp.setLastStartTime(startTime); patMedOuthosp.setLastEndTime(endTime); if (byAdmitDate) { patMedOuthosp.setBeginTime(parseDateTime(startTime)); patMedOuthosp.setEndTime(parseDateTime(endTime)); } else { patMedOuthosp.setLastStartTime(startTime); patMedOuthosp.setLastEndTime(endTime); } patMedOuthosp.setOrgid(orgid); List<PatMedOuthosp> patMedOuthosps = chMapper.selectPatMedOuthospList(patMedOuthosp); log.info("忥é¨è¯ä¿¡æ¯æ°é" + patMedOuthosps.size()); log.info("忥é¨è¯ä¿¡æ¯æ°éï¼{}ï¼orgid={}ï¼byAdmitDate={}", patMedOuthosps.size(), orgid, byAdmitDate); for (PatMedOuthosp patMedOuthosp1 : patMedOuthosps) { // ææºæè¡¥éæ¶ï¼HIS è§å¾æªè¿å orgid çè®°å½è¡¥ä¸æ¥è¯¢æ¡ä»¶ä¸çæºæ if (StringUtils.isEmpty(patMedOuthosp1.getOrgid()) && StringUtils.isNotEmpty(orgid)) { patMedOuthosp1.setOrgid(orgid); } PatArchive localArchive = null; try { //æ£è åºæ¬ä¿¡æ¯ PatArchive patArchive = new PatArchive(); @@ -314,26 +344,47 @@ pa1.setPatientno(patMedOuthosp1.getPatno()); List<PatArchive> patArchives1 = patArchiveMapper.selectPatArchiveList(pa1); if (CollectionUtils.isNotEmpty(patArchives1)) { patArchives.get(0).setId(patArchives1.get(0).getId()); localArchive = patArchives1.get(0); patArchives.get(0).setId(localArchive.getId()); patArchives.get(0).setUpdateTime(new Date()); count += patArchiveMapper.updatePatArchive(patArchives.get(0)); } else { patArchives.get(0).setCreateTime(new Date()); count += patArchiveMapper.insertPatArchiveSingle(patArchives.get(0)); localArchive = patArchives.get(0); } } } catch (Exception ex) { log.info("忣è åºæ¬ä¿¡æ¯:" + ex.getMessage()); } // HIS æ£è ä¿¡æ¯ç¼ºå¤±æ¶ï¼ä»ææ£è ç¼å·åæ¥æ¬å°æ¡£æ¡ if (localArchive == null && StringUtils.isNotEmpty(patMedOuthosp1.getPatno())) { try { PatArchive localQuery = new PatArchive(); localQuery.setPatientno(patMedOuthosp1.getPatno()); List<PatArchive> localArchives = patArchiveMapper.selectPatArchiveList(localQuery); if (CollectionUtils.isNotEmpty(localArchives)) { localArchive = localArchives.get(0); } } catch (Exception ex) { log.info("忥æ¬å°æ£è æ¡£æ¡å¤±è´¥:" + ex.getMessage()); } } try { PatMedOuthosp patMedOuthospTemp = new PatMedOuthosp(); patMedOuthospTemp.setSerialnum(patMedOuthosp1.getSerialnum()); List<PatMedOuthosp> patMedOuthospsTemp = chMapper.selectPatMedOuthospList(patMedOuthosp); if (patMedOuthospsTemp.size() > 0) { if (localArchive != null && localArchive.getId() != null) { patMedOuthosp1.setPatid(localArchive.getId()); } PatMedOuthosp localOuthosp = null; try { localOuthosp = findLocalOuthosp(patMedOuthosp1); } catch (Exception e) { log.warn("忥æ¬å°é¨è¯è®°å½å¤±è´¥ï¼ææ°å¢å¤çï¼serialnum={}", patMedOuthosp1.getSerialnum(), e); } if (localOuthosp != null) { patMedOuthosp1.setUpdateTime(new Date()); patMedOuthosp1.setId(patMedOuthospsTemp.get(0).getId()); patMedOuthosp1.setId(localOuthosp.getId()); //å¸ä¸ é¢åºid对åºorgidï¼æºæid为é»è®¤ç1 if(active.equals("hzszlyy")) { patMedOuthosp1.setCampusid(patMedOuthosp1.getOrgid()); @@ -349,14 +400,95 @@ } count += patMedOuthospService.insertPatMedOuthosp(patMedOuthosp1); } generateSpecificArchive(patMedOuthosp1, localArchive); } catch (Exception ex) { log.info("忥åºå ¥é¢:" + ex.getMessage()); log.info("忥é¨è¯ä¿¡æ¯:" + ex.getMessage()); } } return count; } /** * 忥æ¬å°é¨è¯è®°å½ï¼é¿å éå¤ééæ¶æå ¥é夿°æ®ã */ private PatMedOuthosp findLocalOuthosp(PatMedOuthosp record) { if (StringUtils.isEmpty(record.getSerialnum()) && StringUtils.isEmpty(record.getOuthospno())) { return null; } PatMedOuthospQueryReq req = new PatMedOuthospQueryReq(); req.setSerialnum(record.getSerialnum()); req.setOuthospno(record.getOuthospno()); req.setOrgid(record.getOrgid()); List<PatMedOuthosp> localList = patMedOuthospMapper.callSpQueryOuthosp(req); return CollectionUtils.isNotEmpty(localList) ? localList.get(0) : null; } /** * é¨è¯æ¥è¯å®æè®°å½ééåçæä¸ç§æ¡£æ¡ï¼ä» 丽水å¸å¦å¹¼ä¿å¥é¢çæï¼ã */ private void generateSpecificArchive(PatMedOuthosp patMedOuthosp, PatArchive patArchive) { if (!SpecificArchiveConstants.LISHUI_MCH_ORG_ID.equals(patMedOuthosp.getOrgid())) { return; } 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); } } private Date parseDateTime(String value) { if (StringUtils.isEmpty(value)) { return null; } try { return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(value); } catch (Exception e) { try { return new SimpleDateFormat("yyyy-MM-dd").parse(value); } catch (Exception ex) { log.warn("è§£æé¨è¯ééæ¶é´å¤±è´¥ï¼{}", value); return null; } } } /** * å端/宿¶ä»»å¡ä¼ å ¥ yyyy-MM-dd æ¶ï¼ç»ææ¶é´è¡¥é½å°å½å¤© 23:59:59ï¼é¿å æ¼æå½å¤©æ°æ®ã */ private Date normalizeEndTime(Date endTime) { Calendar calendar = Calendar.getInstance(); calendar.setTime(endTime); if (calendar.get(Calendar.HOUR_OF_DAY) == 0 && calendar.get(Calendar.MINUTE) == 0 && calendar.get(Calendar.SECOND) == 0 && calendar.get(Calendar.MILLISECOND) == 0) { calendar.add(Calendar.DAY_OF_MONTH, 1); calendar.add(Calendar.SECOND, -1); return calendar.getTime(); } return endTime; } @Override public Integer collectMchOuthospAndGenerateArchive(String orgid, Date startTime, Date endTime) { if (!SpecificArchiveConstants.LISHUI_MCH_ORG_ID.equals(orgid)) { log.warn("ééé¨è¯æ¥è¯å®æè®°å½ä» æ¯æä¸½æ°´å¸å¦å¹¼ä¿å¥é¢ï¼orgid={}", orgid); return 0; } Date end = endTime != null ? normalizeEndTime(endTime) : new Date(); Date start = startTime != null ? startTime : new Date(end.getTime() - 24 * 60 * 60 * 1000L); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); log.info("å¼å§éé丽水å¦å¹¼é¨è¯æ¥è¯å®æè®°å½ï¼æ¶é´èå´ï¼{} ~ {}", sdf.format(start), sdf.format(end)); int count = syncOuthosp(sdf.format(start), sdf.format(end), orgid, true); log.info("丽水å¦å¹¼é¨è¯æ¥è¯å®æè®°å½ééå®æï¼æ¶é´èå´ï¼{} ~ {}ï¼å¤çæ°éï¼{}", sdf.format(start), sdf.format(end), count); return count; } /** * åæ¥ææ¯ä¿¡æ¯ * * @param ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -33,6 +33,7 @@ import com.ruoyi.system.service.ISysUserService; import com.ruoyi.message.sms.provider.sltd.ws.MessageSend; import com.smartor.common.QwenLLMUtil; import com.smartor.common.SpecificArchiveConstants; import com.smartor.domain.*; import com.ruoyi.task.domain.VO.ServiceSubtaskDetailTraceVO; import com.smartor.mapper.*; @@ -1168,6 +1169,25 @@ Optional<Long> currentSort = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getSort).findFirst(); Optional<Long> id = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getId).findFirst(); if (currentSort.isPresent()) { // æ¹æ¡Bï¼åªå¤çå½ååä»»å¡ââå ¬ä¼å·å·²é¢å(service_subtask.sendstate=1 + current_preachform=5) // 䏿ªå¡«åæ¶ï¼æé»è®¤é项宿ï¼é¿å è¿å ¥ä¸ä¸ç§å鿹弿æå䏿¥è¶ æ¶ã // å ç¨å ååæ®µå¿«éè¿æ»¤ï¼å ¶ä»å»é¢/ä»»å¡/åéæ¹å¼ä¸ä¼è¿å ¥ä¸é¢çé»è®¤å®æé»è¾ã if (IServiceSubtaskService.WECHAT_DEFAULT_COMPLETE_ORGID.equals(serviceSubtask.getOrgid()) && "2".equals(serviceSubtask.getType()) && "5".equals(serviceSubtask.getCurrentPreachform()) && Long.valueOf(1L).equals(serviceSubtask.getSendstate()) && !Long.valueOf(1L).equals(serviceSubtask.getSubmit())) { try { if (iServiceSubtaskService.completeWechatClaimedByDefault(serviceSubtask)) { log.info("ãcompensateTaskãsubidï¼{}ï¼å¾®ä¿¡å ¬ä¼å·å·²é¢åæªå¡«åï¼æé»è®¤é项宿", serviceSubtask.getId()); continue; } } catch (Exception e) { // å个åä»»å¡å¤±è´¥ä¸å½±åå ¶ä»ä»»å¡ï¼åæ»åç»§ç»åè¡¥å¿æµç¨ log.error("ãcompensateTaskãå¾®ä¿¡å ¬ä¼å·é»è®¤å®æå¤±è´¥ï¼subidï¼{}ï¼ç»§ç»åè¡¥å¿æµç¨", serviceSubtask.getId(), e); } } //1å æ£æ¥ä¸ä¸ï¼æ¯ä¸æ¯ææ§è¡ç¶ææ¯å®æçï¼æä¹åå·²ç»æå®çäºï¼æ²¡æå°servuce_subtaskçç¶ææ¹æåï¼è¿é忣æ¥ä¸ä¸ï¼ boolean finishState = serviceSubtaskPreachforms.stream().allMatch(item -> item.getSendstate().equals("9")); if (finishState) { @@ -1780,6 +1800,25 @@ } } /** * éé丽水å¸å¦å¹¼ä¿å¥é¢é¨è¯æ¥è¯å®æè®°å½ï¼å¹¶æé ç½®çæå¦ç§/å¿ç§æ¡£æ¡ã * 宿¶ä»»å¡é»è®¤é鿍天 00:00:00 ~ ä»å¤© 00:00:00ã */ public void collectMchArchive() { try { LocalDateTime todayZero = LocalDateTime.now().with(LocalTime.MIN); LocalDateTime yesterdayZero = todayZero.minusDays(1); Date startTime = Date.from(yesterdayZero.atZone(ZoneId.systemDefault()).toInstant()); Date endTime = Date.from(todayZero.atZone(ZoneId.systemDefault()).toInstant()); log.info("ãcollectMchArchiveãå¼å§éé丽水å¦å¹¼é¨è¯æ¥è¯å®æè®°å½"); ichService.collectMchOuthospAndGenerateArchive( SpecificArchiveConstants.LISHUI_MCH_ORG_ID, startTime, endTime); log.info("ãcollectMchArchiveã丽水å¦å¹¼é¨è¯æ¥è¯å®æè®°å½ééç»æ"); } catch (Exception e) { log.error("ãcollectMchArchiveã丽水å¦å¹¼é¨è¯æ¥è¯å®æè®°å½ééå¼å¸¸", e); } } public void collectHISYesterday() { try { // è·åæ¨å¤©0ç¹å°ä»å¤©0ç¹çæ¶é´èå´ ruoyi-task/src/main/java/com/ruoyi/task/controller/ServiceSubtaskController.java
@@ -854,26 +854,35 @@ @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid") @PostMapping("/getSfStatisticsCountDetailsHyperLink") public AjaxResult getSfStatisticsCountDetailsHyperLink(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) { Integer statisticaltype = serviceSubtaskCountReq.getStatisticaltype(); if (statisticaltype != null && statisticaltype != 1 && statisticaltype != 2 && statisticaltype != 3) { return error("ç»è®¡ç»´åº¦statisticaltypeä» æ¯æï¼1-æç åº 2-æç§å®¤ 3-ætaskid"); } if (serviceSubtaskCountReq.getScriptid() == null && StringUtils.isEmpty(serviceSubtaskCountReq.getScriptContent())) { return error("é®é¢ID(scriptid)ä¸è½ä¸ºç©º"); } if (serviceSubtaskCountReq.getOptionText() == null) { return error("é®é¢é项(optionText)ä¸è½ä¸ºç©º"); } LoginUser loginUser = getLoginUser(); String orgid = loginUser.getUser().getOrgid(); serviceSubtaskCountReq.setOrgid(orgid); // ä¸ getSfStatisticsCountDetails ä¿æç¸åçé ç½®çéå£å¾ String configKey = serviceSubtaskCountReq.getConfigKey(); if (StringUtils.isNotEmpty(configKey)) { String configValue = sysConfigService.selectConfigByKey(configKey, orgid); serviceSubtaskCountReq.setConfigValue(configValue); if (StringUtils.isEmpty(configValue)) { String logInfo = "getSfStatisticsCount-åæ° " + configKey + " æªé ç½®, 请é 置好åéè¯"; String logInfo = "getSfStatisticsCountDetailsHyperLink-åæ° " + configKey + " æªé ç½®, 请é 置好åéè¯"; log.error(logInfo); return error(logInfo); } } String followUpCountStyle = sysConfigService.selectConfigByKey("followUpCountStyle", orgid); if (ObjectUtils.isNotEmpty(followUpCountStyle)) { serviceSubtaskCountReq.setFollowUpCountStyle(followUpCountStyle); } else { serviceSubtaskCountReq.setFollowUpCountStyle("1"); } return success(serviceSubtaskService.getSfStatisticsHyperlink(serviceSubtaskCountReq)); return success(serviceSubtaskService.getSfStatisticsScriptDetailsHyperlink(serviceSubtaskCountReq)); } /** * åéçä¿¡æ¨¡æ¿ ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceSubtaskCountReq.java
@@ -1,6 +1,7 @@ package com.ruoyi.task.domain; import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.annotations.ApiModel; @@ -79,7 +80,8 @@ @ApiModelProperty(value = "åä»»å¡Idéå") private List<Long> subTaskIds; @ApiModelProperty(value = "ç§å®¤ç åºï¼1ï¼ç åºç»è®¡ 2ï¼ç§å®¤ç»è®¡ 3. ç ç§ç»è®¡") @ApiModelProperty(value = "ç»è®¡ç»´åº¦ï¼1-æç åº(leavehospitaldistrictcode) 2-æç§å®¤(deptcode) 3-ætaskid") @JsonAlias("statisticalType") private Integer statisticaltype; private String visitDeptCode; @@ -139,6 +141,7 @@ private String scriptids; /** /** * æ scriptidsï¼éå·åéçé®é¢IDå符串ï¼ä¸¥æ ¼è§£æä¸º Long éåï¼ä» ä¾ SQL ç foreach é¢ç¼è¯ä½¿ç¨ã * <p> * åªä¿ç纯æ°å项ï¼å ¶ä½å 容ä¸å¾ä¸¢å¼ï¼è¿å null 表示âä¸è¿æ»¤âã @@ -158,6 +161,33 @@ } return scriptidList.isEmpty() ? null : scriptidList; } /** * é®é¢IDï¼é¢ç®æç»è¡è¿åç scriptidï¼ï¼ç¨äºé项æ°åä¸é» */ @ApiModelProperty(value = "é®é¢ID") @JsonAlias("scriptId") private Long scriptid; /** * é®é¢å 容ãä¼ å ¥åæé¢ç®å 容å¹é ï¼å ¼å®¹åä¸éé¢è¢«å¤å¶å°å¤ä¸ªä»»å¡æ¨¡æ¿çåºæ¯ */ @ApiModelProperty(value = "é®é¢å 容") private String scriptContent; /** * éé¡¹ææ¬ï¼é¢ç®æç»è¡è¿åç optionTextï¼ */ @ApiModelProperty(value = "éé¡¹ææ¬") @JsonAlias({"optiontext", "option", "optionContent"}) private String optionText; /** * é¢ç®æç»ä¸çä»»å¡ç±»åï¼subtaskTypeï¼ï¼ç¨äºä¸é»æ¶åºåè¯é³/é®å· */ @ApiModelProperty(value = "ä»»å¡ç±»åï¼é¢ç®æç»ä¸ç subtaskTypeï¼") @JsonAlias("subTaskType") private String subtaskType; /** * åç»ç±»å drCode, deptCode, leaveHospitalDistrictCode @@ -280,6 +310,7 @@ private String hyperLinkInfoType; @ApiModelProperty(value = "ä»»å¡ID", required = true) @JsonAlias("taskid") private Long taskId; @ApiModelProperty(value = "taskIdséå") ruoyi-task/src/main/java/com/ruoyi/task/mapper/ServiceSubtaskMapper.java
@@ -158,6 +158,14 @@ public Boolean updateServiceSubtaskByCondition(ServiceSubtask ServiceSubtask); /** * å¾®ä¿¡å ¬ä¼å·å·²é¢åæªå¡«åæé»è®¤é项宿ï¼åªæ´æ°å½ååä»»å¡ï¼ä¸åªå 许 sendstate=1ãæªæäº¤çæ°æ®ã * * @param serviceSubtask å¿ å¡« idãfinishtimeãresultãremark * @return å½±åè¡æ° */ public int updateWechatDefaultComplete(ServiceSubtask serviceSubtask); public Boolean updateServiceSubtaskByTaskGuid(ServiceSubtask ServiceSubtask); /** @@ -255,6 +263,14 @@ */ public List<ServiceSubtaskScriptCount> getSfStatisticsScriptItemDetails(ServiceSubtaskCountReq serviceSubtaskCountReq); /** * é®é¢é项æ°åä¸é»ï¼æ¥è¯¢éæ©äºæå®é项ç service_subtask å表 * * @param serviceSubtaskCountReq ç»è®¡ç»´åº¦ãç§å®¤/ç åºãä»»å¡ãé¢ç®åé项æ¡ä»¶ * @return service_subtask å表 */ public List<ServiceSubtask> getSfStatisticsScriptDetailsHyperlink(ServiceSubtaskCountReq serviceSubtaskCountReq); public List<PatMedRes> getDeptRanking(PatMedReq patMedReq); ruoyi-task/src/main/java/com/ruoyi/task/mapper/ServiceSubtaskPreachformMapper.java
@@ -57,6 +57,15 @@ int updateSSPByCondition(ServiceSubtaskPreachform row); /** * å¾®ä¿¡å ¬ä¼å·å·²é¢åæªå¡«åæé»è®¤é项宿æ¶ï¼å°å½ååéæ¹å¼ç½®ä¸ºå®æ(9)ã * ä» æ´æ°å½ååä»»å¡ãå½åå ¬ä¼å·è¡ï¼ä¸åªå 许ä»å·²åé(2)/å·²é¢å(3)è¿ç§»ï¼é¿å å½±åå ¶ä»ä»»å¡ã * * @param row å¿ å¡« idãsubidãpreachformãremark * @return å½±åè¡æ° */ int updateWechatPreachformComplete(ServiceSubtaskPreachform row); /** * æä¸»é®è½¯å ã */ int deleteServiceSubtaskPreachformById(Long id); ruoyi-task/src/main/java/com/ruoyi/task/service/IServiceSubtaskService.java
@@ -34,6 +34,12 @@ */ public interface IServiceSubtaskService { /** * 丽水ä¸å»é¢ orgidã * å¾®ä¿¡å ¬ä¼å·å·²é¢åæªå¡«åæé»è®¤éé¡¹å®æï¼ææ¶åªå¯¹è¯¥æºæçæï¼å ¶ä»å»é¢ä»èµ°åè¡¥å¿é»è¾ã */ String WECHAT_DEFAULT_COMPLETE_ORGID = "47231022633110211A2101"; /** * æ¥è¯¢åä¸ä»»å¡ï¼éè®¿ï¼ * * @param id åä¸ä»»å¡ï¼é访ï¼ä¸»é® @@ -183,6 +189,14 @@ public Map<String, Object> getSfStatisticsScriptDetails(ServiceSubtaskCountReq serviceSubtaskCountReq); /** * é®é¢é项æ°åä¸é»ï¼æ¥è¯¢éæ©äºæå®é项ç service_subtask å表 * * @param serviceSubtaskCountReq ç»è®¡ç»´åº¦ãç§å®¤/ç åºãä»»å¡ãé¢ç®åé项æ¡ä»¶ * @return service_subtask å表 */ public List<ServiceSubtask> getSfStatisticsScriptDetailsHyperlink(ServiceSubtaskCountReq serviceSubtaskCountReq); public List<PatArchiveSrmVO> sendMsgTemplate(List<PatArchiveSrmVO> patArchiveSrmVOS); public List<ServiceSubtaskDiagname> convertToDiagnameList(List<ServiceSubtask> subtaskList); @@ -227,6 +241,19 @@ */ public void setFailSubTaskDefalutVal(Long failDay); /** * å¾®ä¿¡å ¬ä¼å·å·²é¢åæªå¡«åï¼æé¢ç®é»è®¤é项补é½å½ååä»»å¡ï¼å¹¶å°å½ååä»»å¡å®æã * <p> * ä» å¤çä¼ å ¥çå½ååä»»å¡ï¼subidï¼ï¼åªå è®¸ï¼ * é®å·ç±»å(type=2)ãå½ååéæ¹å¼ä¸ºå ¬ä¼å·(5)ãåä»»å¡å·²é¢å(1)ãæªæäº¤(submit!=1)ã * å½åå ¬ä¼å·åéæ¹å¼ä¸ºå·²åé(2)/å·²é¢å(3) çæ°æ®ã * å ¶ä»ä»»å¡ãå ¶ä»åéæ¹å¼ãå ¶ä»åä»»å¡åä¸åå½±åã * * @param serviceSubtask å½ååä»»å¡ * @return true=å·²æé»è®¤é项宿ï¼false=䏿»¡è¶³æ¡ä»¶ææ²¡æå¯å¡«å çé»è®¤é项 */ public Boolean completeWechatClaimedByDefault(ServiceSubtask serviceSubtask); public Map<String, Object> getHeLibraryCount(@RequestBody HeLibraryCountVO heLibraryCountVO); public List<ServiceSubtask> gethelibraryCountHyperlink(@RequestBody HeLibraryCountVO heLibraryCountVO); ruoyi-task/src/main/java/com/ruoyi/task/service/impl/ServiceSubtaskServiceImpl.java
@@ -1060,10 +1060,10 @@ return "忬¡é访任å¡åå»ºå¤±è´¥ï¼æ¾ä¸å°å¯¹åºä»»å¡ taskid = " + serviceSubtask.getTaskid() + ", å请次éè¯"; } // nexttaskflag=0 表示任å¡é¾ç»æ¢ï¼ä¸å 许åçæ if ("0".equals(serviceTask.getNexttaskflag())) { log.info("æ é忬¡é访ï¼ä»»å¡å·²æ è®°æ åç»é访, taskid = {}", serviceSubtask.getTaskid()); return "æ é忬¡é访ï¼è¯¥ä»»å¡æ åç»éè®¿å®æ"; } // if ("0".equals(serviceTask.getNexttaskflag())) { // log.info("æ é忬¡é访ï¼ä»»å¡å·²æ è®°æ åç»é访, taskid = {}", serviceSubtask.getTaskid()); // return "æ é忬¡é访ï¼è¯¥ä»»å¡æ åç»éè®¿å®æ"; // } // å¹çæ ¡éªï¼åä¸åä»»å¡åªå 许çæä¸æ¡äºæ¬¡é访 ServiceSubtaskEntity againQuery = new ServiceSubtaskEntity(); againQuery.setUpid(serviceSubtask.getId().intValue()); @@ -1165,6 +1165,18 @@ return "忬¡é访任å¡åå»ºå¤±è´¥ï¼æ£è åºé¢è®°å½ä¸å®æ´æä¸ä¸ä»»å¡é ç½®å¼å¸¸, å请次éè¯"; } Date now = new Date(); applyAgainVisitTime(serviceSubtaskAgain, serviceSubtask, nextServiceTask, config, now); // å»çå¤çæè§åèªæ¬æ¬¡è¯·æ±ï¼æä¸ä¸ä»»å¡é建å任塿¶éæ¾å¼å¸¦å ¥ï¼å¦åä¸ä¼è½åº if (request != null) { serviceSubtaskAgain.setDoctorOpinion(request.getDoctorOpinion()); serviceSubtaskAgain.setRemark(request.getRemark()); serviceSubtaskAgain.setDrcode(request.getDrcode()); serviceSubtaskAgain.setDrname(request.getDrname()); serviceSubtaskAgain.setNurseId(request.getNurseId()); serviceSubtaskAgain.setNurseName(request.getNurseName()); serviceSubtaskAgain.setManagementDoctor(request.getManagementDoctor()); serviceSubtaskAgain.setManagementDoctorCode(request.getManagementDoctorCode()); } serviceSubtaskAgain.setId(null); serviceSubtaskAgain.setUpid(serviceSubtask.getId().intValue()); serviceSubtaskAgain.setVisitCount(ObjectUtils.isNotEmpty(serviceSubtask.getVisitCount()) @@ -1173,9 +1185,6 @@ serviceSubtaskAgain.setIsVisitAgain(1); serviceSubtaskAgain.setCreateTime(now); serviceSubtaskAgain.setUpdateTime(now); // äºæ¬¡é访æ¶é´ï¼ä¸æ¬¡éè®¿å®ææ¶é´ï¼æªå®æåå½åæ¶é´ï¼+ ä¸ä¸ä»»å¡åé天æ°ï¼è¿å»æ¶é´å åºä¸ºå½åæ¶é´ applyAgainVisitTime(serviceSubtaskAgain, serviceSubtask, nextServiceTask, config, now); // æ°ä»»å¡çé访æ¹å¼è®°å½æ¬æ¬¡éæ©ç忬¡é访æ¹å¼ï¼resource æ¬èº«ä¸è½åº serviceSubtaskAgain.setVisitType(resource); serviceSubtaskAgain.setVisitDeptCode(visitDeptCode); @@ -1253,6 +1262,10 @@ if (dueTime.before(now)) { dueTime = now; } if(ObjectUtils.isNotEmpty(origin.getVisitTime())){ dueTime = ObjectUtils.isNotEmpty(origin.getVisitTime()) ? origin.getVisitTime() : now; } target.setLongSendTime(dueTime); Date visitTime = dueTime; if ("3".equals(nextTask.getType())) { @@ -2448,6 +2461,9 @@ } else { groupKey = "deptcode"; } } else if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 3) { // ç ç§ç»è®¡ï¼æä»»å¡IDåç»ï¼æ¯ä¸ªä»»å¡å³ä¸ä¸ªç ç§éè®¿ä»»å¡ groupKey = "taskid"; } List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>(); // æ ¹æ®æ¡ä»¶è¿è¡åç» @@ -2473,6 +2489,9 @@ case "leavehospitaldistrictcode": collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictcode()).orElse("Unknown"))); break; case "taskid": collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getTaskid()).map(String::valueOf).orElse("Unknown"))); break; default: collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrcode()).orElse("Unknown"))); break; @@ -2485,6 +2504,9 @@ continue; } ServiceSubtaskStatistic statistic = getStatistic(serviceSubtaskList, serviceSubtaskCountReq.getFollowUpCountStyle(), serviceSubtaskCountReq.getVisitCount()); if ("taskid".equals(groupKey)) { applyTaskGroupInfo(statistic, serviceSubtaskList); } if (ObjectUtils.isNotEmpty(jsRates)) { Map<String, Object> jsRateMap = jsRates.get(collectKey); BigDecimal jsRate = new BigDecimal("0"); @@ -2573,7 +2595,16 @@ ssRate.setGroupKey(groupKey); ssRate.setGroupKeyList(groupKeyList); ssRate.setRateDay(serviceSubtaskCountReq.getRateDay()); return serviceSubtaskMapper.selectTimelyRateBatch(ssRate); Map<String, Map<String, Object>> rateResult = serviceSubtaskMapper.selectTimelyRateBatch(ssRate); if (rateResult == null || rateResult.isEmpty()) { return rateResult; } // taskid 为æ°å¼ç±»åï¼MyBatis è¿åç Map key å¯è½æ¯ Longï¼è¿éç»ä¸è½¬æ String ä¸åç» key å¯¹é½ Map<String, Map<String, Object>> jsRates = new HashMap<>(); for (Map.Entry<String, Map<String, Object>> entry : rateResult.entrySet()) { jsRates.put(String.valueOf(entry.getKey()), entry.getValue()); } return jsRates; } /** @@ -2597,6 +2628,9 @@ ServiceSubtaskStatistic totalRow = calculateTotalRow(sfStatistics); totalRow.setLeavehospitaldistrictname("æ»è®¡"); totalRow.setDeptname("æ»è®¡"); if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 3) { totalRow.setTaskName("æ»è®¡"); } sfStatistics.add(totalRow); } @@ -2693,6 +2727,22 @@ } return serviceSubtaskStatistics; } /** * ç ç§ç»è®¡ï¼æ taskid åç»ï¼æ¶è¡¥é½ä»»å¡IDãä»»å¡åç§°åç¾ç ç ç§ã * * @param statistic ç»è®¡ç»æ * @param serviceSubtaskList å½åä»»å¡åç»ä¸çåä»»å¡ */ private void applyTaskGroupInfo(ServiceSubtaskStatistic statistic, List<ServiceSubtask> serviceSubtaskList) { if (statistic == null || CollectionUtils.isEmpty(serviceSubtaskList)) { return; } ServiceSubtask first = serviceSubtaskList.get(0); statistic.setTaskId(first.getTaskid()); statistic.setTaskName(first.getTaskName()); statistic.setDiagType(first.getDiagType()); } private ServiceSubtaskStatistic getStatistic(List<ServiceSubtask> serviceSubtaskList, String followUpCountStyle, Integer visitCount) { @@ -4006,6 +4056,9 @@ } else if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 2) { // åå²å ¥åï¼2 = ç§å®¤ç»è®¡ï¼å deptcode å³ç°å¨ç离é¢ç§å®¤ leaveldeptcodeï¼ groupKey = hasDrcode ? "drcode" : "leaveldeptcode"; } else if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 3) { // ç ç§ç»è®¡ï¼æä»»å¡IDåç»ï¼æ¯ä¸ªä»»å¡å³ä¸ä¸ªç ç§éè®¿ä»»å¡ groupKey = "taskid"; } serviceSubtaskCountReq.setGroupKey(groupKey); // åç»åä¸è¿æ»¤åä¿æä¸è´ï¼ç¦»é¢ç§å®¤ leaveldeptcodeãå¨é¢ç§å®¤ deptcode @@ -4049,6 +4102,35 @@ List<ServiceSubtaskStatistic> sumStatistics = serviceSubtaskMapper.getSfStatisticsScriptSum(serviceSubtaskCountReq); if (CollectionUtils.isEmpty(sumStatistics)) { return serviceSubtaskStatistics; } /* * ç ç§ç»è®¡ï¼æ taskid åç»ï¼æ¶è¡¥é½ä»»å¡IDãä»»å¡åç§°åç¾ç ç ç§ã * èå SQL å·²è¿å taskid/task_nameï¼è¿éåè¡¥ diag_typeã */ if ("taskid".equals(groupKey)) { Map<Long, String> diagTypeCache = new HashMap<>(); for (ServiceSubtaskStatistic statistic : sumStatistics) { Long taskId = statistic.getTaskId(); if (taskId == null && StringUtils.isNotEmpty(statistic.getGroupCode())) { try { taskId = Long.valueOf(statistic.getGroupCode()); } catch (NumberFormatException ignore) { // å岿°æ®å¯è½ä¸æ¯æ°å¼ taskidï¼ä¿æååç»é®å³å¯ } } statistic.setTaskId(taskId); if (StringUtils.isEmpty(statistic.getTaskName())) { statistic.setTaskName(statistic.getGroupName()); } if (taskId != null) { if (!diagTypeCache.containsKey(taskId)) { ServiceTask task = serviceTaskService.selectServiceTaskByTaskid(taskId); diagTypeCache.put(taskId, task == null ? null : task.getDiagType()); } statistic.setDiagType(diagTypeCache.get(taskId)); } } } /* @@ -4300,6 +4382,88 @@ result.put("rows", new ArrayList<>(pageCounts)); result.put("data", pageData); return result; } /** * é®é¢é项æ°åä¸é»ï¼è¿åéæ©äºæå®é项ç service_subtask å表ã * <p> * ç»è®¡æç»ä¸çé项æ°éæ¥èª service_subtask_detail ç * IFNULL(matchedtext, asrtext)ï¼å æ¤ä¸é»å¿ 须使ç¨åä¸é¢ç®çç¸åé项è¿è¡å¹é ã * * @param serviceSubtaskCountReq ä¸é»æ¡ä»¶ * @return service_subtask å表 */ @Override public List<ServiceSubtask> getSfStatisticsScriptDetailsHyperlink(ServiceSubtaskCountReq serviceSubtaskCountReq) { log.info("getSfStatisticsScriptDetailsHyperlinkçå ¥å为ï¼{}", serviceSubtaskCountReq); if (serviceSubtaskCountReq == null) { return new ArrayList<>(); } // å ¼å®¹åç«¯ç´æ¥åä¼ ç»è®¡æç»è¡ä¸ç subtaskType if (StringUtils.isBlank(serviceSubtaskCountReq.getType()) && StringUtils.isNotBlank(serviceSubtaskCountReq.getSubtaskType())) { serviceSubtaskCountReq.setType(serviceSubtaskCountReq.getSubtaskType()); } resolveScriptContentAndType(serviceSubtaskCountReq); if (StringUtils.isBlank(serviceSubtaskCountReq.getScriptContent()) && serviceSubtaskCountReq.getScriptid() == null) { log.warn("getSfStatisticsScriptDetailsHyperlink-é¢ç®scriptidåscriptContentå为空ï¼è¿å空å表"); return new ArrayList<>(); } if (serviceSubtaskCountReq.getOptionText() == null) { log.warn("getSfStatisticsScriptDetailsHyperlink-é项optionText为空ï¼è¿å空å表"); return new ArrayList<>(); } return serviceSubtaskMapper.getSfStatisticsScriptDetailsHyperlink(serviceSubtaskCountReq); } /** * æ ¹æ® scriptid è¡¥é½é¢ç®å 容åä»»å¡ç±»åã * <p> * ç»è®¡æç»æâé¢ç®å 容 + ä»»å¡ç±»åâåå¹¶ï¼åä¸éé¢å¤å¶å°å¤ä¸ªä»»å¡æ¨¡æ¿æ¶ scriptid å¯è½ä¸åï¼ * å æ¤ä¼å æé¢ç®å 容ä¸é»ï¼åªææ¥ä¸å°é¢ç®å å®¹æ¶æéå为 scriptid 精确å¹é ã */ private void resolveScriptContentAndType(ServiceSubtaskCountReq serviceSubtaskCountReq) { if (serviceSubtaskCountReq.getScriptid() == null) { return; } // å·²æé¢ç®å 容åä»»å¡ç±»åæ¶æ éåæ¥æ¨¡æ¿é®é¢è¡¨ if (StringUtils.isNotBlank(serviceSubtaskCountReq.getScriptContent()) && StringUtils.isNotBlank(serviceSubtaskCountReq.getType())) { return; } String type = serviceSubtaskCountReq.getType(); if (StringUtils.isBlank(type) || "1".equals(type)) { IvrTaskTemplateScript ivrTaskTemplateScript = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptByID(serviceSubtaskCountReq.getScriptid()); if (ObjectUtils.isNotEmpty(ivrTaskTemplateScript)) { if (StringUtils.isBlank(serviceSubtaskCountReq.getType())) { serviceSubtaskCountReq.setType("1"); } if (StringUtils.isBlank(serviceSubtaskCountReq.getScriptContent())) { serviceSubtaskCountReq.setScriptContent(ivrTaskTemplateScript.getScriptContent()); } return; } // æç¡®æå®äºè¯é³ç±»åæ¶ä¸åå°è¯é®å·è¡¨ if (StringUtils.isNotBlank(type)) { return; } } if (StringUtils.isBlank(serviceSubtaskCountReq.getType()) || "2".equals(type)) { SvyTaskTemplateScript svyTaskTemplateScript = svyTaskTemplateScriptService.selectSvyTaskTemplateScriptByID(serviceSubtaskCountReq.getScriptid()); if (ObjectUtils.isNotEmpty(svyTaskTemplateScript)) { if (StringUtils.isBlank(serviceSubtaskCountReq.getType())) { serviceSubtaskCountReq.setType("2"); } if (StringUtils.isBlank(serviceSubtaskCountReq.getScriptContent())) { serviceSubtaskCountReq.setScriptContent(svyTaskTemplateScript.getScriptContent()); } } } } /** @@ -4709,6 +4873,184 @@ } } /** * å¾®ä¿¡å ¬ä¼å·å·²é¢åæªå¡«åï¼æé¢ç®é»è®¤é项补é½å½ååä»»å¡ï¼å¹¶å°å½ååä»»å¡å®æã * <p> * æææ¥è¯¢ãæç»åå ¥ãç¶ææ´æ°é½åªä½¿ç¨å½å subidï¼é¿å å½±åå ¶ä»ä»»å¡/åä»»å¡ã */ @Override @Transactional(rollbackFor = Exception.class) public Boolean completeWechatClaimedByDefault(ServiceSubtask serviceSubtask) { if (serviceSubtask == null || serviceSubtask.getId() == null) { return false; } // éæ°è¯»åå½ååä»»å¡ï¼ææå¤æåªé对è¿ä¸ä¸ª subid ServiceSubtask current = serviceSubtaskMapper.selectServiceSubtaskById(serviceSubtask.getId()); if (current == null) { return false; } // åªå¤çï¼ä¸½æ°´ä¸å»é¢ãé®å·ãå½åæ¹å¼å ¬ä¼å·ãå·²é¢åãæªæäº¤ // å ¶ä»å»é¢ orgid ä¸å¹é æ¶ç´æ¥è¿å falseï¼ç»§ç»èµ°åè¡¥å¿é»è¾ã if (!IServiceSubtaskService.WECHAT_DEFAULT_COMPLETE_ORGID.equals(current.getOrgid()) || !"2".equals(current.getType()) || !"5".equals(current.getCurrentPreachform()) || !Long.valueOf(1L).equals(current.getSendstate()) || Long.valueOf(1L).equals(current.getSubmit())) { return false; } // æ¥è¯¢å½ååä»»å¡èªå·±çå ¬ä¼å·åéæ¹å¼ï¼å¿ é¡»æ¯å·²åé(2)æå·²é¢å(3) ServiceSubtaskPreachform query = new ServiceSubtaskPreachform(); query.setSubid(current.getId()); query.setTaskid(current.getTaskid()); query.setPreachform("5"); List<ServiceSubtaskPreachform> preachforms = taskPreachformPort.selectServiceSubtaskPreachformList(query); if (CollectionUtils.isEmpty(preachforms)) { return false; } ServiceSubtaskPreachform currentPreachform = preachforms.stream() .filter(item -> "2".equals(item.getSendstate()) || "3".equals(item.getSendstate())) .findFirst().orElse(null); if (currentPreachform == null) { return false; } // åªç»å½å subid è¡¥é½é»è®¤é项ï¼è³å°æä¸é¢é»è®¤é项æç»§ç» int filled = fillWechatDefaultDetailForCurrentSubtask(current); if (filled <= 0) { log.info("ãå¾®ä¿¡å ¬ä¼å·é»è®¤å®æãsubidï¼{} 没æå¯å¡«å çé»è®¤é项ï¼è·³è¿", current.getId()); return false; } // å½åå ¬ä¼å·åéæ¹å¼ï¼å·²åé/å·²é¢å -> 宿(9) ServiceSubtaskPreachform updatePreachform = new ServiceSubtaskPreachform(); updatePreachform.setId(currentPreachform.getId()); updatePreachform.setSubid(current.getId()); updatePreachform.setPreachform("5"); updatePreachform.setOrgid(current.getOrgid()); updatePreachform.setRemark("å·²é¢åæªå¡«åï¼æé»è®¤é项宿"); int preachformUpdated = taskPreachformPort.updateWechatPreachformComplete(updatePreachform); if (preachformUpdated == 0) { throw new BaseException("å¾®ä¿¡å ¬ä¼å·é»è®¤å®æå¤±è´¥ï¼åéæ¹å¼ç¶æå·²ååï¼subid=" + current.getId()); } // å½ååä»»å¡ï¼å·²é¢å(1) -> 宿(6)ï¼åªæ´æ°è¿ä¸ä¸ª subid ServiceSubtask complete = new ServiceSubtask(); complete.setId(current.getId()); complete.setOrgid(current.getOrgid()); complete.setFinishtime(new Date()); complete.setResult("success"); complete.setRemark("å·²é¢åæªå¡«åï¼æé»è®¤é项宿"); int subtaskUpdated = serviceSubtaskMapper.updateWechatDefaultComplete(complete); if (subtaskUpdated == 0) { throw new BaseException("å¾®ä¿¡å ¬ä¼å·é»è®¤å®æå¤±è´¥ï¼åä»»å¡ç¶æå·²ååï¼subid=" + current.getId()); } log.info("ãå¾®ä¿¡å ¬ä¼å·é»è®¤å®æãsubidï¼{}ï¼å·²æé»è®¤é项宿ï¼å¡«å é¢ç®æ°ï¼{}", current.getId(), filled); return true; } /** * ä» ç»å½ååä»»å¡è¡¥é½é®å·åé/å¤éé¢ä¸ default_value=2 çé项ã * å·²æéç©ºçæ¡çé¢ç®è·³è¿ï¼ä¸è¦çæ£è 已填åå 容ã * * @return å®é å¡«å ï¼ææ¤åå·²ç±ç³»ç»é»è®¤å¡«å ï¼çé¢ç®æ° */ private int fillWechatDefaultDetailForCurrentSubtask(ServiceSubtask serviceSubtask) { Long templateId = serviceSubtask.getTemplateid(); ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid()); if (templateId == null && serviceTask != null) { templateId = serviceTask.getTemplateid(); } if (templateId == null) { return 0; } SvyTaskTemplateScript scriptQuery = new SvyTaskTemplateScript(); scriptQuery.setTemplateID(templateId); List<SvyTaskTemplateScript> scripts = svyTaskTemplateScriptService.selectSvyTaskTemplateScriptList(scriptQuery); if (CollectionUtils.isEmpty(scripts)) { return 0; } int filled = 0; for (SvyTaskTemplateScript script : scripts) { SvyTaskTemplateScriptVO scriptVO = DtoConversionUtils.sourceToTarget(script, SvyTaskTemplateScriptVO.class); SvyTaskTemplateScriptVO scriptWithOptions = svyTaskTemplateScriptService.selectInfoByCondition(scriptVO); if (scriptWithOptions == null || scriptWithOptions.getId() == null || CollectionUtils.isEmpty(scriptWithOptions.getSvyTaskTemplateTargetoptions()) || (!"1".equals(scriptWithOptions.getScriptType()) && !"2".equals(scriptWithOptions.getScriptType()))) { continue; } List<SvyTaskTemplateTargetoption> options = scriptWithOptions.getSvyTaskTemplateTargetoptions(); List<SvyTaskTemplateTargetoption> defaultOptions = options.stream() .filter(option -> option.getDefaultValue() != null && option.getDefaultValue() == 2L) .filter(option -> StringUtils.isNotBlank(option.getOptioncontent())) .collect(Collectors.toList()); if (CollectionUtils.isEmpty(defaultOptions)) { continue; } // å·²æéç©ºçæ¡åä¸è¦çï¼é¿å 影忣è 已填åå 容 ServiceSubtaskDetail detailQuery = new ServiceSubtaskDetail(); detailQuery.setSubId(serviceSubtask.getId()); detailQuery.setScriptid(scriptWithOptions.getId()); List<ServiceSubtaskDetail> existingDetails = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(detailQuery); ServiceSubtaskDetail existing = CollectionUtils.isNotEmpty(existingDetails) ? existingDetails.get(0) : null; if (existing != null && (StringUtils.isNotBlank(existing.getAsrtext()) || StringUtils.isNotBlank(existing.getMatchedtext()))) { // ä¹åå·²ç±ç³»ç»é»è®¤å¡«å è¿çï¼è®¡å ¥å·²å¡«å ï¼ä¿è¯éè¯å¹ç if ("DEFAULT".equals(existing.getOperate())) { filled++; } continue; } String targetValue = options.stream() .map(SvyTaskTemplateTargetoption::getOptioncontent) .filter(StringUtils::isNotBlank) .collect(Collectors.joining("&")); String defaultValue = defaultOptions.stream() .map(SvyTaskTemplateTargetoption::getOptioncontent) .collect(Collectors.joining("&")); ServiceSubtaskDetail detail = new ServiceSubtaskDetail(); detail.setSubId(serviceSubtask.getId()); detail.setTaskid(serviceSubtask.getTaskid()); detail.setPatid(serviceSubtask.getPatid()); detail.setScriptid(scriptWithOptions.getId()); detail.setTemplatequestionnum(scriptWithOptions.getId()); detail.setQuestiontext(scriptWithOptions.getScriptContent()); detail.setCategoryid(scriptWithOptions.getCategoryid()); detail.setTargetid(scriptWithOptions.getTargetid() != null ? scriptWithOptions.getTargetid().intValue() : null); detail.setValueType(scriptWithOptions.getScriptType()); detail.setTargetvalue(targetValue); detail.setAsrtext(defaultValue); detail.setMatchedtext(defaultValue); detail.setOperate("DEFAULT"); detail.setTemplateType(2); detail.setLibTemplateid(serviceSubtask.getLibtemplateid() != null ? serviceSubtask.getLibtemplateid().intValue() : null); detail.setTemplateid(templateId.toString()); detail.setGuid(scriptWithOptions.getGuid()); detail.setOrgid(StringUtils.isNotEmpty(scriptWithOptions.getOrgid()) ? scriptWithOptions.getOrgid() : (serviceTask != null ? serviceTask.getOrgid() : null)); detail.setCreateTime(new Date()); detail.setUpdateTime(new Date()); if (existing != null) { detail.setId(existing.getId()); serviceSubtaskDetailMapper.updateServiceSubtaskDetail(detail); } else { serviceSubtaskDetailMapper.insertServiceSubtaskDetail(detail); } filled++; } return filled; } @Override public Map<String, Object> getHeLibraryCount(@RequestBody HeLibraryCountVO heLibraryCountVO) { if (ObjectUtils.isEmpty(heLibraryCountVO)) { ruoyi-task/src/main/resources/mapper/task/ServiceSubtaskMapper.xml
@@ -108,6 +108,7 @@ <result property="loopCount" column="loop_count"/> <result property="isManuallyCalled" column="is_manually_called"/> <result property="campusid" column="campusid"/> <result property="diagType" column="diag_type"/> </resultMap> <resultMap type="com.ruoyi.task.domain.ServiceSubtaskCount" id="ServiceSubtaskResult2"> @@ -1418,6 +1419,25 @@ where id = #{id} </update> <!-- å¾®ä¿¡å ¬ä¼å·å·²é¢åæªå¡«åæé»è®¤é项宿ï¼åªæ´æ°å½ååä»»å¡ã æ¡ä»¶ sendstate=1 + æªæäº¤ï¼ä¿è¯åªå¤çå½å被é¢å䏿ªå¡«åçåä»»å¡ï¼ä¸æ³¢åå ¶ä»ä»»å¡ã --> <update id="updateWechatDefaultComplete" parameterType="com.ruoyi.task.domain.ServiceSubtask"> update service_subtask set sendstate = 6, finishtime = #{finishtime}, result = #{result}, remark = case when remark is null or remark = '' then #{remark} else concat(remark, ',', #{remark}) end, update_time = now(), finish_state = <include refid="finishStateExpr"/> where id = #{id} and orgid = #{orgid} and sendstate = 1 and (submit is null or submit != 1) </update> <update id="updateServiceSubtaskByPatId" parameterType="com.ruoyi.task.domain.ServiceSubtask"> update service_subtask <trim prefix="SET" suffixOverrides=","> @@ -1806,6 +1826,9 @@ nurse_name, taskid, task_name, <if test="groupKey != null and groupKey == 'taskid'"> (SELECT st.diag_type FROM service_task st WHERE st.taskid = service_subtask.taskid LIMIT 1) AS diag_type, </if> visit_time, visit_dept_code, finishtime, @@ -1854,6 +1877,13 @@ <foreach collection="deptcodes" item="deptcode" open="(" separator="," close=")"> #{deptcode} </foreach> </if> <if test="taskIds != null and taskIds.size() > 0"> AND taskid IN <foreach collection="taskIds" item="taskId" open="(" separator="," close=")"> #{taskId} </foreach> </if> <if test="serviceType != null and serviceType.size() > 0"> @@ -2100,6 +2130,13 @@ #{hospitaldeptcode} </foreach> </if> <if test="taskIds != null and taskIds.size() > 0"> AND taskid IN <foreach collection="taskIds" item="taskId" open="(" separator="," close=")"> #{taskId} </foreach> </if> <if test="serviceType != null and serviceType.size() > 0"> AND service_type IN <foreach collection="serviceType" item="serviceType" open="(" separator="," @@ -2173,6 +2210,8 @@ <resultMap type="com.ruoyi.task.domain.ServiceSubtaskStatistic" id="ServiceSubtaskScriptStatisticResult"> <result property="groupCode" column="group_code"/> <result property="groupName" column="group_name"/> <result property="taskId" column="taskid"/> <result property="taskName" column="task_name"/> <result property="dischargeCount" column="discharge_count"/> <result property="firstVisitCount" column="first_visit_count"/> <result property="againVisitCount" column="again_visit_count"/> @@ -2225,7 +2264,16 @@ <!-- åç»é®å¯¹åºçæ¾ç¤ºåï¼ç åºç»è®¡æ¶å°±æ¯è¿ä¸ç»çç åºåã 以åè¿ä¸åæ¯ MAX(hospitaldistrictname)ï¼ä¸ä¸ªç»æ··äºå¤ä¸ªç åºæ¶ä¼éæºæ¾ç¤ºå ¶ä¸ä¸ä¸ªï¼ äºæ¯åºç°âéè¡æ¶²å ç§ç åºå´æ¾ç¤ºéª¨ç§ä¸å¿ä¸ç åºâã --> MAX(IFNULL(leavehospitaldistrictname, hospitaldistrictname)) as group_name, <choose> <when test="groupKey != null and groupKey == 'taskid'"> MAX(task_name) as group_name, </when> <otherwise> MAX(IFNULL(leavehospitaldistrictname, hospitaldistrictname)) as group_name, </otherwise> </choose> MAX(taskid) as taskid, MAX(task_name) as task_name, MAX(drcode) as drcode, MAX(drname) as drname, MAX(leaveldeptcode) as deptcode, @@ -3103,6 +3151,136 @@ group by a.script_content, ss.type, IFNULL(ssd.matchedtext,ssd.asrtext) </select> <!-- é®é¢é项æ°åä¸é»ï¼è¿åéæ©äºæå®é项ç service_subtask å表ã è¿æ»¤å£å¾ä¸ getSfStatisticsScriptDetails / getSfStatisticsScriptItemDetails ä¿æä¸è´ï¼ é¢å¤æ¯æ statisticaltypeï¼1-ç åºã2-ç§å®¤ã3-ç ç§ã --> <select id="getSfStatisticsScriptDetailsHyperlink" parameterType="com.ruoyi.task.domain.ServiceSubtaskCountReq" resultMap="ServiceSubtaskResult"> SELECT ss.* FROM service_subtask ss WHERE ss.del_flag = 0 <if test="orgid != null and orgid != ''"> AND ss.orgid = #{orgid} </if> <if test="campusid != null and campusid != ''"> AND ss.campusid = #{campusid} </if> <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> AND ss.leavehospitaldistrictcode IN <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator="," close=")"> #{leavehospitaldistrictcode} </foreach> </if> <if test="deptcodes != null and deptcodes.size() > 0"> AND ss.deptcode IN <foreach collection="deptcodes" item="deptcode" open="(" separator="," close=")"> #{deptcode} </foreach> </if> <if test="serviceType != null and serviceType.size() > 0"> AND ss.service_type IN <foreach collection="serviceType" item="serviceType" open="(" separator="," close=")"> #{serviceType} </foreach> </if> <if test="startTime != null and endTime != null"> AND ss.visit_time >= DATE(#{startTime}) AND ss.visit_time < DATE_ADD(DATE(#{endTime}), INTERVAL 1 DAY) </if> <if test="type != null and type != ''"> AND ss.type = #{type} </if> <!-- ç»è®¡ç»´åº¦ï¼1-æç åº 2-æç§å®¤ 3-ætaskid --> <if test="statisticaltype != null and statisticaltype == 1"> <choose> <when test="deptcode != null and deptcode != ''"> AND ss.leavehospitaldistrictcode = #{deptcode} </when> <when test="leavehospitaldistrictcode != null and leavehospitaldistrictcode != ''"> AND ss.leavehospitaldistrictcode = #{leavehospitaldistrictcode} </when> </choose> </if> <if test="statisticaltype != null and statisticaltype == 2 and deptcode != null and deptcode != ''"> AND ss.deptcode = #{deptcode} </if> <if test="statisticaltype != null and statisticaltype == 3 and taskId != null"> AND ss.taskid = #{taskId} </if> <!-- å ¼å®¹ä¸ä¼ statisticaltype æ¶æå弿¡ä»¶è¿æ»¤ --> <if test="statisticaltype == null"> <if test="leavehospitaldistrictcode != null and leavehospitaldistrictcode != ''"> AND ss.leavehospitaldistrictcode = #{leavehospitaldistrictcode} </if> <if test="deptcode != null and deptcode != ''"> AND ss.deptcode = #{deptcode} </if> <if test="taskId != null"> AND ss.taskid = #{taskId} </if> </if> <!-- é¢ç® + é项å¹é ï¼åªä¿çåçä¸éæ©äºè¯¥é项çåä»»å¡ --> AND EXISTS ( SELECT 1 FROM service_subtask_detail ssd WHERE ssd.sub_id = ss.id AND ssd.del_flag = 0 <if test="configValue != null and configValue != ''"> AND ssd.categoryid IN (${configValue}) </if> <choose> <when test="optionText != null"> AND IFNULL(ssd.matchedtext, ssd.asrtext) = #{optionText} </when> <otherwise> AND 1 = 0 </otherwise> </choose> <choose> <!-- ä¼å æé¢ç®å 容å¹é ï¼åä¸éé¢å¤å¶å°å¤ä¸ªä»»å¡æ¨¡æ¿æ¶ scriptid ä¸åï¼ä½ script_content ç¸å --> <when test="scriptContent != null and scriptContent != ''"> AND ssd.scriptid IN ( <choose> <when test="type == '1'"> SELECT its.id FROM ivr_task_template_script its WHERE its.script_content = #{scriptContent} </when> <when test="type == '2'"> SELECT sts.id FROM svy_task_template_script sts WHERE sts.script_content = #{scriptContent} </when> <otherwise> SELECT its.id FROM ivr_task_template_script its WHERE its.script_content = #{scriptContent} UNION SELECT sts.id FROM svy_task_template_script sts WHERE sts.script_content = #{scriptContent} </otherwise> </choose> ) </when> <when test="scriptid != null"> AND ssd.scriptid = #{scriptid} </when> <otherwise> AND 1 = 0 </otherwise> </choose> ) ORDER BY ss.endtime DESC, ss.id DESC <if test="pageSize != null and pageSize > 0"> LIMIT #{pageSize} <if test="pageNum != null and pageNum >= 0"> OFFSET #{pageNum} </if> </if> </select> <select id="getDataByTime" resultMap="ServiceSubtaskResult"> select id, ruoyi-task/src/main/resources/mapper/task/ServiceSubtaskPreachformMapper.xml
@@ -299,6 +299,24 @@ </update> <!-- å deleteServiceSubtaskPreachformByIdï¼<update> ç½® del_flag=1 --> <!-- å¾®ä¿¡å ¬ä¼å·å·²é¢åæªå¡«åæé»è®¤é项宿ï¼ä» æ´æ°å½ååä»»å¡çå½åå ¬ä¼å·è¡ã åªå 许ä»å·²åé(2)/å·²é¢å(3)è¿ç§»å°å®æ(9)ï¼é¿å å¹¶åæéå¤è¡¥å¿è¦çå ¶ä»ç¶æã --> <update id="updateWechatPreachformComplete" parameterType="com.ruoyi.task.domain.ServiceSubtaskPreachform"> update service_subtask_preachform set sendstate = '9', remark = case when remark is null or remark = '' then #{remark} else concat(remark, ',', #{remark}) end, update_time = now() where id = #{id} and subid = #{subid} and orgid = #{orgid} and preachform = #{preachform} and sendstate in ('2', '3') </update> <update id="deleteServiceSubtaskPreachformById" parameterType="Long"> update service_subtask_preachform <trim prefix="SET" suffixOverrides=","> smartor/pom.xml
@@ -89,12 +89,6 @@ <artifactId>nls-sdk-recognizer</artifactId> <version>2.2.1</version> </dependency> <dependency> <groupId>com.alibaba.nls</groupId> <artifactId>nls-sdk-recognizer</artifactId> <version>2.2.1</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.alibaba.nls</groupId> smartor/src/main/java/com/smartor/common/SpecificArchiveConstants.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ package com.smartor.common; /** * ä¸ç§æ¡£æ¡çæç¸å ³å¸¸éã */ public final class SpecificArchiveConstants { /** * 丽水å¸å¦å¹¼ä¿å¥é¢æºæIDã * é¨è¯æ¥è¯å®æè®°å½ééåèªå¨çæå¦ç§/å¿ç§æ¡£æ¡ä» å¯¹è¯¥æºæçæã */ public static final String LISHUI_MCH_ORG_ID = "47226079133110211G1001"; /** * 丽水å°åºæ é¢åºæ¦å¿µï¼é»è®¤é¢åºIDã */ public static final String DEFAULT_CAMPUS_ID = "1"; private SpecificArchiveConstants() { } } smartor/src/main/java/com/smartor/service/IPatSpecificArchiveGenerateService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.smartor.service; import com.ruoyi.common.core.domain.entity.PatArchive; import com.ruoyi.outpatientvisit.domain.PatMedOuthosp; /** * ä¸ç§æ¡£æ¡çæServiceæ¥å£ã * * <p>æ ¹æ®é¨è¯æ¥è¯å®æè®°å½å {@code pat_specific_archive_generate_config} * é ç½®çæå¦ç§æ¡£æ¡æå¿ç§æ¡£æ¡ã</p> */ public interface IPatSpecificArchiveGenerateService { /** * æ ¹æ®é¨è¯è®°å½çæä¸ç§æ¡£æ¡ã * * @param patMedOuthosp é¨è¯æ¥è¯å®æè®°å½ * @param patArchive æ£è æ¡£æ¡ï¼å¯ä¸ºç©ºï¼ä¸ºç©ºæ¶æé¨è¯è®°å½ä¸çæ£è ä¿¡æ¯åæ¥ * @return æ¬æ¬¡çæ/æ´æ°çæ¡£æ¡æ°é */ int generateByOuthosp(PatMedOuthosp patMedOuthosp, PatArchive patArchive); } smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -931,6 +931,8 @@ serviceSubtask.setLeaveldeptname(patMedInhosp1.getLeaveldeptname()); serviceSubtask.setLeavehospitaldistrictcode(patMedInhosp1.getLeavehospitaldistrictcode()); serviceSubtask.setLeavehospitaldistrictname(patMedInhosp1.getLeavehospitaldistrictname()); serviceSubtask.setLeaveicd10code(patMedInhosp1.getLeaveicd10code()); serviceSubtask.setLeavediagname(patMedInhosp1.getLeavediagname()); serviceSubtask.setTemplateid(serviceTask.getTemplateid()); serviceSubtask.setTemplatename(serviceTask.getTemplatename()); smartor/src/main/java/com/smartor/service/impl/PatSpecificArchiveGenerateServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,329 @@ package com.smartor.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.ruoyi.common.core.domain.entity.PatArchive; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.outpatientvisit.domain.PatMedOuthosp; import com.ruoyi.patarchive.domain.PatSpecificArchiveGenerateConfig; import com.ruoyi.patarchive.mapper.PatArchiveMapper; import com.ruoyi.patarchive.service.IPatSpecificArchiveGenerateConfigService; import com.smartor.common.SpecificArchiveConstants; import com.smartor.domain.PatChildArchiveDetail; import com.smartor.domain.PatMaternityArchiveDetail; import com.smartor.service.IPatChildArchiveService; import com.smartor.service.IPatMaternityArchiveService; import com.smartor.service.IPatSpecificArchiveGenerateService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.stream.Collectors; /** * ä¸ç§æ¡£æ¡çæServiceä¸å¡å±å¤çã * * <p>åªå¤ç丽水å¸å¦å¹¼ä¿å¥é¢ï¼orgid = 47226079133110211G1001ï¼çé¨è¯æ¥è¯å®æè®°å½ï¼ * æ {@code pat_specific_archive_generate_config} é ç½®å¹é ç§å®¤åè¯æåï¼ * çæå¯¹åºç±»åçå¦ç§æ¡£æ¡æå¿ç§æ¡£æ¡ã</p> */ @Slf4j @Service public class PatSpecificArchiveGenerateServiceImpl implements IPatSpecificArchiveGenerateService { /** é¨é¨åç±»ï¼å¦ç§ */ private static final String DEPT_CATEGORY_GYNECOLOGY = "1"; /** é¨é¨åç±»ï¼å¿ç§ */ private static final String DEPT_CATEGORY_PEDIATRICS = "2"; /** é¨é¨ç±»åï¼ç§å®¤ */ private static final String DEPT_TYPE_DEPARTMENT = "1"; /** æ¥æºç±»åï¼é¨è¯è®°å½ */ private static final String SOURCE_TYPE_OUTHOSP = "1"; @Autowired private IPatSpecificArchiveGenerateConfigService patSpecificArchiveGenerateConfigService; @Autowired private IPatMaternityArchiveService patMaternityArchiveService; @Autowired private IPatChildArchiveService patChildArchiveService; @Autowired private PatArchiveMapper patArchiveMapper; @Override public int generateByOuthosp(PatMedOuthosp patMedOuthosp, PatArchive patArchive) { if (patMedOuthosp == null) { return 0; } // ä» ä¸½æ°´å¸å¦å¹¼ä¿å¥é¢çæï¼é¿å å½±åå ¶ä»æºæ if (!SpecificArchiveConstants.LISHUI_MCH_ORG_ID.equals(patMedOuthosp.getOrgid())) { return 0; } if (StringUtils.isBlank(patMedOuthosp.getOuthospno())) { log.warn("çæä¸ç§æ¡£æ¡è·³è¿ï¼é¨è¯ç¼å·ä¸ºç©ºï¼serialnum={}", patMedOuthosp.getSerialnum()); return 0; } PatArchive targetArchive = resolvePatArchive(patMedOuthosp, patArchive); if (targetArchive == null && patMedOuthosp.getPatid() != null) { targetArchive = patArchiveMapper.selectPatArchiveByPatid(patMedOuthosp.getPatid()); } Long patid = targetArchive != null ? targetArchive.getId() : patMedOuthosp.getPatid(); if (patid == null) { log.warn("çæä¸ç§æ¡£æ¡è·³è¿ï¼æªæ¾å°æ£è æ¡£æ¡ï¼outhospno={}ï¼patno={}", patMedOuthosp.getOuthospno(), patMedOuthosp.getPatno()); return 0; } String campusid = StringUtils.isNotBlank(patMedOuthosp.getCampusid()) ? patMedOuthosp.getCampusid() : "1"; List<PatSpecificArchiveGenerateConfig> configs = patSpecificArchiveGenerateConfigService.selectEffectiveConfigList(patMedOuthosp.getOrgid(), campusid); if (CollectionUtils.isEmpty(configs)) { log.debug("çæä¸ç§æ¡£æ¡è·³è¿ï¼æºææªé 置档æ¡çæè§åï¼orgid={}ï¼campusid={}", patMedOuthosp.getOrgid(), campusid); return 0; } // å䏿¡é¨è¯è®°å½ãåä¸é¨é¨åç±»ãå䏿¡£æ¡ç±»ååªçæä¸æ¬¡ Set<String> generatedKeys = new HashSet<>(); int generatedCount = 0; for (PatSpecificArchiveGenerateConfig config : configs) { if (!matchConfig(config, patMedOuthosp)) { continue; } String archiveType = config.getArchiveType(); String deptCategory = config.getDeptCategory(); if (StringUtils.isBlank(archiveType) || StringUtils.isBlank(deptCategory)) { log.warn("çæä¸ç§æ¡£æ¡è·³è¿ï¼é ç½®ä¸å®æ´ï¼configId={}ï¼deptCategory={}ï¼archiveType={}", config.getId(), deptCategory, archiveType); continue; } String generatedKey = deptCategory + "|" + archiveType; if (!generatedKeys.add(generatedKey)) { continue; } try { if (DEPT_CATEGORY_GYNECOLOGY.equals(deptCategory)) { PatMaternityArchiveDetail detail = buildMaternityDetail(patMedOuthosp, targetArchive, config, campusid); patMaternityArchiveService.insertOrUpdateMaternityArchive(detail); generatedCount++; } else if (DEPT_CATEGORY_PEDIATRICS.equals(deptCategory)) { PatChildArchiveDetail detail = buildChildDetail(patMedOuthosp, targetArchive, config, campusid); patChildArchiveService.insertOrUpdateChildArchive(detail); generatedCount++; } else { log.warn("çæä¸ç§æ¡£æ¡è·³è¿ï¼æªç¥é¨é¨åç±»ï¼configId={}ï¼deptCategory={}", config.getId(), deptCategory); } } catch (Exception e) { log.error("çæä¸ç§æ¡£æ¡å¤±è´¥ï¼configId={}ï¼outhospno={}ï¼deptCategory={}ï¼archiveType={}", config.getId(), patMedOuthosp.getOuthospno(), deptCategory, archiveType, e); } } return generatedCount; } /** * 夿é¨è¯è®°å½æ¯å¦å½ä¸é ç½®ã * * <p>é¨é¨æ¡ä»¶ä¸è¯ææ¡ä»¶ä¸º OR å ³ç³»ï¼ä»»ä¸æ¡ä»¶å½ä¸å³çæï¼ä¸¤ä¸ªéåé½ä¸ºç©ºæ¶é ç½®æ æã</p> */ private boolean matchConfig(PatSpecificArchiveGenerateConfig config, PatMedOuthosp patMedOuthosp) { List<String> deptCodes = parseCodes(config.getDeptCodes()); List<String> icd10Codes = parseCodes(config.getIcd10Codes()); if (CollectionUtils.isEmpty(deptCodes) && CollectionUtils.isEmpty(icd10Codes)) { return false; } boolean deptMatched = false; if (CollectionUtils.isNotEmpty(deptCodes)) { // é¨è¯è®°å½åªæç§å®¤ï¼æ²¡æç åºï¼dept_type=2ï¼ç åºï¼ä¸åä¸é¨è¯å¹é if (DEPT_TYPE_DEPARTMENT.equals(config.getDeptType())) { deptMatched = containsIgnoreCase(deptCodes, patMedOuthosp.getDeptcode()); } } boolean diagnosisMatched = false; if (CollectionUtils.isNotEmpty(icd10Codes)) { String icd10code = patMedOuthosp.getIcd10code(); String diagname = patMedOuthosp.getDiagname(); diagnosisMatched = icd10Codes.stream().anyMatch(code -> { if (equalsIgnoreCase(code, icd10code)) { return true; } // é¨å HIS æ°æ®åªæè¯æå称没æè¯æç ï¼æ¤æ¶å 许æè¯æåç§°å åºå¹é return StringUtils.isBlank(icd10code) && equalsIgnoreCase(code, diagname); }); } return deptMatched || diagnosisMatched; } private PatMaternityArchiveDetail buildMaternityDetail(PatMedOuthosp patMedOuthosp, PatArchive patArchive, PatSpecificArchiveGenerateConfig config, String campusid) { PatMaternityArchiveDetail detail = new PatMaternityArchiveDetail(); detail.setArchiveType(config.getArchiveType()); detail.setSourceType(SOURCE_TYPE_OUTHOSP); fillCommonDetail(detail, patMedOuthosp, patArchive, campusid); if (patArchive != null) { detail.setAddress(patArchive.getPlaceOfResidence()); } return detail; } private PatChildArchiveDetail buildChildDetail(PatMedOuthosp patMedOuthosp, PatArchive patArchive, PatSpecificArchiveGenerateConfig config, String campusid) { PatChildArchiveDetail detail = new PatChildArchiveDetail(); detail.setArchiveType(config.getArchiveType()); detail.setSourceType(SOURCE_TYPE_OUTHOSP); fillCommonChildDetail(detail, patMedOuthosp, patArchive, campusid); detail.setParentPhone(patArchive != null ? firstNotBlank(patArchive.getTelcode(), patMedOuthosp.getTelcode()) : patMedOuthosp.getTelcode()); if (patArchive != null) { detail.setParentAddress(patArchive.getPlaceOfResidence()); } // è¥å »æ§ç¾ç æ¡£æ¡åæ¥è¯æä¿¡æ¯ï¼æ¹ä¾¿åè¡¨ç´æ¥å±ç¤º if ("1".equals(config.getArchiveType())) { detail.setNutritionIcd10Code(patMedOuthosp.getIcd10code()); detail.setNutritionDiagName(patMedOuthosp.getDiagname()); } return detail; } private void fillCommonDetail(PatMaternityArchiveDetail detail, PatMedOuthosp patMedOuthosp, PatArchive patArchive, String campusid) { detail.setOuthospno(patMedOuthosp.getOuthospno()); detail.setSerialnum(patMedOuthosp.getSerialnum()); detail.setPatid(patArchive != null ? patArchive.getId() : patMedOuthosp.getPatid()); detail.setPatname(patArchive != null ? firstNotBlank(patArchive.getName(), patMedOuthosp.getPatname()) : patMedOuthosp.getPatname()); detail.setBirthdate(patArchive != null ? patArchive.getBirthdate() : null); detail.setIdcardno(patArchive != null ? firstNotBlank(patArchive.getIdcardno(), patMedOuthosp.getIdcardno()) : patMedOuthosp.getIdcardno()); detail.setPhone(patArchive != null ? firstNotBlank(patArchive.getTelcode(), patMedOuthosp.getTelcode()) : patMedOuthosp.getTelcode()); detail.setSex(patArchive != null && patArchive.getSex() != null ? patArchive.getSex() : patMedOuthosp.getSex()); detail.setDiagTime(patMedOuthosp.getAdmitdate()); detail.setArchiveTime(new Date()); detail.setDoctorCode(patMedOuthosp.getDrcode()); detail.setDoctorName(patMedOuthosp.getDrname()); detail.setManagementDoctorCode(patMedOuthosp.getDrcode()); detail.setManagementDoctorName(patMedOuthosp.getDrname()); detail.setFirstDoctorCode(patMedOuthosp.getDrcode()); detail.setFirstDoctorName(patMedOuthosp.getDrname()); detail.setDeptcode(patMedOuthosp.getDeptcode()); detail.setDeptname(patMedOuthosp.getDeptname()); detail.setIcd10code(patMedOuthosp.getIcd10code()); detail.setDiagname(patMedOuthosp.getDiagname()); detail.setRegisterUser(patMedOuthosp.getDrname()); detail.setOrgid(patMedOuthosp.getOrgid()); detail.setCampusid(campusid); detail.setDelFlag("0"); } private void fillCommonChildDetail(PatChildArchiveDetail detail, PatMedOuthosp patMedOuthosp, PatArchive patArchive, String campusid) { detail.setOuthospno(patMedOuthosp.getOuthospno()); detail.setSerialnum(patMedOuthosp.getSerialnum()); detail.setPatid(patArchive != null ? patArchive.getId() : patMedOuthosp.getPatid()); detail.setPatname(patArchive != null ? firstNotBlank(patArchive.getName(), patMedOuthosp.getPatname()) : patMedOuthosp.getPatname()); detail.setBirthdate(patArchive != null ? patArchive.getBirthdate() : null); detail.setIdcardno(patArchive != null ? firstNotBlank(patArchive.getIdcardno(), patMedOuthosp.getIdcardno()) : patMedOuthosp.getIdcardno()); detail.setPhone(patArchive != null ? firstNotBlank(patArchive.getTelcode(), patMedOuthosp.getTelcode()) : patMedOuthosp.getTelcode()); detail.setSex(patArchive != null && patArchive.getSex() != null ? patArchive.getSex() : patMedOuthosp.getSex()); detail.setDiagTime(patMedOuthosp.getAdmitdate()); detail.setArchiveTime(new Date()); detail.setDoctorCode(patMedOuthosp.getDrcode()); detail.setDoctorName(patMedOuthosp.getDrname()); detail.setManagementDoctorCode(patMedOuthosp.getDrcode()); detail.setManagementDoctorName(patMedOuthosp.getDrname()); detail.setDeptcode(patMedOuthosp.getDeptcode()); detail.setDeptname(patMedOuthosp.getDeptname()); detail.setIcd10code(patMedOuthosp.getIcd10code()); detail.setDiagname(patMedOuthosp.getDiagname()); detail.setRegisterUser(patMedOuthosp.getDrname()); detail.setOrgid(patMedOuthosp.getOrgid()); detail.setCampusid(campusid); detail.setDelFlag("0"); } private PatArchive resolvePatArchive(PatMedOuthosp patMedOuthosp, PatArchive patArchive) { if (patArchive != null && patArchive.getId() != null) { return patArchive; } PatArchive query = new PatArchive(); if (StringUtils.isNotBlank(patMedOuthosp.getPatno())) { query.setPatientno(patMedOuthosp.getPatno()); } else if (StringUtils.isNotBlank(patMedOuthosp.getIdcardno())) { query.setIdcardno(patMedOuthosp.getIdcardno()); } else { return null; } query.setOrgid(patMedOuthosp.getOrgid()); List<PatArchive> archives = patArchiveMapper.selectPatArchiveList(query); return CollectionUtils.isNotEmpty(archives) ? archives.get(0) : null; } private List<String> parseCodes(String raw) { if (StringUtils.isBlank(raw)) { return Collections.emptyList(); } String value = raw.trim(); try { JSONArray array = JSON.parseArray(value); if (array != null) { List<String> result = new ArrayList<>(); for (Object item : array) { if (item != null && StringUtils.isNotBlank(String.valueOf(item))) { result.add(String.valueOf(item).trim()); } } return result; } } catch (Exception e) { log.warn("è§£ææ¡£æ¡çæé ç½®éåå¤±è´¥ï¼æéå·åéå¤çï¼{}", raw); } return Arrays.stream(value.split(",")) .map(String::trim) .filter(StringUtils::isNotBlank) .collect(Collectors.toList()); } private String firstNotBlank(String first, String second) { return StringUtils.isNotBlank(first) ? first : second; } private boolean containsIgnoreCase(List<String> source, String target) { if (StringUtils.isBlank(target)) { return false; } return source.stream().anyMatch(item -> equalsIgnoreCase(item, target)); } private boolean equalsIgnoreCase(String first, String second) { return first != null && second != null && first.trim().equalsIgnoreCase(second.trim()); } } smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
@@ -19,9 +19,8 @@ import com.ruoyi.system.service.ISysConfigService; import com.smartor.domain.*; 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; @@ -69,6 +68,11 @@ @Slf4j @Service public class ServiceExternalServiceImpl implements IServiceExternalService { /** * 龿³äººæ°å»é¢æºæID */ private static final String LONGQUAN_PEOPLE_HOSPITAL_ORG_ID = "47240004533118111A1001"; @Autowired private SysDept2Mapper sysDeptMapper; @@ -100,9 +104,7 @@ @Autowired private ISysConfigService configService; @Autowired private IPatMaternityArchiveService patMaternityArchiveService; @Autowired private IPatChildArchiveService patChildArchiveService; private IPatSpecificArchiveGenerateService patSpecificArchiveGenerateService; @Autowired private PatMedOuthospMapper patMedOuthospMapper; @Autowired @@ -1842,9 +1844,66 @@ } else { patMedInhosp.setCreateTime(new Date()); i = inhospVisitFacade.insertPatMedInhosp(patMedInhosp); if (i == 1) { //龿³äººæ°å»é¢ï¼æ°å¢ä½é¢ä¿¡æ¯æ¶å¤çæ£è åå ¥é¢ stopReadmissionFollowUpTasks(patMedInhosp); } } if (i == 1) return true; return false; } /** * æ£è åå ¥é¢å¤çï¼æ£è 忬¡å ¥é¢åï¼ä¸ä¸æ¬¡åºé¢çæçå¾ æ§è¡é¿æé访任å¡ä¸åæ§è¡ã * ç®åä» å¯¹é¾æ³äººæ°å»é¢çæï¼é¿å å½±åå ¶ä»æºæã * * @param patMedInhosp æ¬æ¬¡æ°å¢çä½é¢ä¿¡æ¯ */ private void stopReadmissionFollowUpTasks(PatMedInhosp patMedInhosp) { if (!LONGQUAN_PEOPLE_HOSPITAL_ORG_ID.equals(patMedInhosp.getOrgid())) { return; } if (Objects.isNull(patMedInhosp.getPatid()) || Objects.isNull(patMedInhosp.getStarttime())) { log.warn("龿³äººæ°å»é¢æ£è åå ¥é¢å¤çè·³è¿ï¼patidæå ¥é¢æ¶é´ä¸ºç©ºï¼inhospno={}", patMedInhosp.getInhospno()); return; } try { ServiceSubtaskEntity subtask = new ServiceSubtaskEntity(); subtask.setPatid(patMedInhosp.getPatid()); subtask.setOrgid(LONGQUAN_PEOPLE_HOSPITAL_ORG_ID); subtask.setSendstate(2L); List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(subtask); if (CollectionUtils.isEmpty(serviceSubtaskList)) { return; } int stopCount = 0; for (ServiceSubtask serviceSubtask : serviceSubtaskList) { //䏿¯é¿æä»»å¡ï¼ä¸å¤ç if (Objects.isNull(serviceSubtask.getLongSendTime())) { continue; } //åºé¢æ¶é´æäºæçäºæ¬æ¬¡å ¥é¢æ¶é´çä»»å¡ï¼ä¸å±äºæ¬æ¬¡å ¥é¢åçå¾ éè®¿ä»»å¡ if (Objects.isNull(serviceSubtask.getEndtime()) || !serviceSubtask.getEndtime().before(patMedInhosp.getStarttime())) { continue; } serviceSubtask.setSendstate(4L); serviceSubtask.setIsVisitAgain(2); serviceSubtask.setResult("error"); serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + ";æ£è åå ¥é¢" : "æ£è åå ¥é¢"); serviceSubtask.setUpdateTime(new Date()); if (Boolean.TRUE.equals(serviceSubtaskMapper.updateServiceSubtask(serviceSubtask))) { stopCount++; } } log.info("龿³äººæ°å»é¢æ£è åå ¥é¢å¤ç宿ï¼patid={}ï¼æ¬æ¬¡å ¥é¢æ¶é´={}ï¼åæ¢å¾ æ§è¡é¿æä»»å¡{}æ¡", patMedInhosp.getPatid(), patMedInhosp.getStarttime(), stopCount); } catch (Exception e) { //åå ¥é¢ä»»å¡å¤ç失败ä¸å½±åæ¬æ¬¡ä½é¢ä¿¡æ¯å ¥åº log.error("龿³äººæ°å»é¢æ£è åå ¥é¢å¤çå¼å¸¸ï¼patid={}ï¼inhospno={}", patMedInhosp.getPatid(), patMedInhosp.getInhospno(), e); } } //æ°å¢é访任å¡åæ¥ @@ -2480,61 +2539,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); } } sql/pat_specific_archive_generate_config_lishui_mch_20261104.sql
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,95 @@ -- ============================================================================= -- 丽水å¸å¦å¹¼ä¿å¥é¢ ä¸ç§æ¡£æ¡çæé ç½®ï¼ä¾æ®äºä¸ªå®ææ¥è¯å ¥åï¼ -- orgid : 47226079133110211G1001 -- date : 2026-11-04 -- 说æ : -- 1. 宿æ¥è¯æ¶æ¯ JZ_MZ_WanChengJZ åå ¥ pat_med_outhosp åï¼ææ¬é ç½®çææ¡£æ¡ã -- 2. dept_codes / icd10_codes å为 JSON æ°ç»å符串ã -- 3. å¹é å ³ç³»ä¸º ORï¼é¨é¨æ¡ä»¶æè¯ææ¡ä»¶ä»»ä¸å½ä¸å³çæã -- 4. èæ¬æ remark åå¹çï¼é夿§è¡ä¸ä¼éå¤æå ¥ã -- ============================================================================= -- 1. å¦ç§-æ©åå ³ç± -- å ¥åï¼JiuZhenKSID=010104010601ï¼æ©åå ³ç±é¨è¯ï¼ï¼ä¸»è¯æ Icd10=O26.900x206ï¼å19å¨ï¼ INSERT INTO pat_specific_archive_generate_config (dept_type, dept_category, archive_type, dept_codes, icd10_codes, remark, orgid, campusid, create_by, create_time, del_flag) SELECT '1', '1', '1', '["010104010601"]', '["O26.900x206"]', '丽水å¦å¹¼-æ©åå ³ç±ï¼å®ææ¥è¯å ¥åï¼', '47226079133110211G1001', '1', 'system', NOW(), '0' FROM DUAL WHERE NOT EXISTS ( SELECT 1 FROM pat_specific_archive_generate_config WHERE orgid = '47226079133110211G1001' AND remark = '丽水å¦å¹¼-æ©åå ³ç±ï¼å®ææ¥è¯å ¥åï¼' ); -- 2. å¦ç§-å´ç»ç»æ MHI -- å ¥åï¼JiuZhenKSID=010102010207ï¼å¦ç§å åæ³é¨è¯ï¼ï¼ä¸»è¯æ Icd10=N95.900 INSERT INTO pat_specific_archive_generate_config (dept_type, dept_category, archive_type, dept_codes, icd10_codes, remark, orgid, campusid, create_by, create_time, del_flag) SELECT '1', '1', '2', '["010102010207"]', '["N95.900"]', '丽水å¦å¹¼-å´ç»ç»æMHIï¼å®ææ¥è¯å ¥åï¼', '47226079133110211G1001', '1', 'system', NOW(), '0' FROM DUAL WHERE NOT EXISTS ( SELECT 1 FROM pat_specific_archive_generate_config WHERE orgid = '47226079133110211G1001' AND remark = '丽水å¦å¹¼-å´ç»ç»æMHIï¼å®ææ¥è¯å ¥åï¼' ); -- 3. å¿ç§-è¥å »æ§ç¾ç -- å ¥åï¼ä¸»è¯æ Icd10=E46.x00x003ï¼è¥å »ä¸è¯ï¼ -- 说æï¼è¯¥æ ·ä¾ç§å®¤ä¸ºâå¿ç«¥å¿ç/è¯è¨/è¡ä¸ºåè²é¨è¯âï¼ç§å®¤ä¸å ·å¤åºå度ï¼å æ¤åªæè¯æå¹é ã INSERT INTO pat_specific_archive_generate_config (dept_type, dept_category, archive_type, dept_codes, icd10_codes, remark, orgid, campusid, create_by, create_time, del_flag) SELECT '1', '2', '1', NULL, '["E46.x00x003"]', '丽水å¦å¹¼-å¿ç§è¥å »æ§ç¾ç ï¼å®ææ¥è¯å ¥åï¼', '47226079133110211G1001', '1', 'system', NOW(), '0' FROM DUAL WHERE NOT EXISTS ( SELECT 1 FROM pat_specific_archive_generate_config WHERE orgid = '47226079133110211G1001' AND remark = '丽水å¦å¹¼-å¿ç§è¥å »æ§ç¾ç ï¼å®ææ¥è¯å ¥åï¼' ); -- 4. å¿ç§-å¦ä¹ å°é¾ -- å ¥åï¼ä¸»è¯æ Icd10=F81.900ï¼å¦ä¹ æè½åè²éç¢ï¼ï¼åè¯æå« F90.000ï¼æ´»å¨ä¸æ³¨æå¤±è°ï¼ -- 说æï¼è¯¥æ ·ä¾ç§å®¤ä¸ºâå¿ç«¥ä¿å¥é¨è¯âï¼ç§å®¤ä¸å ·å¤åºå度ï¼å æ¤åªæè¯æå¹é ã INSERT INTO pat_specific_archive_generate_config (dept_type, dept_category, archive_type, dept_codes, icd10_codes, remark, orgid, campusid, create_by, create_time, del_flag) SELECT '1', '2', '2', NULL, '["F81.900","F90.000"]', '丽水å¦å¹¼-å¿ç§å¦ä¹ å°é¾ï¼å®ææ¥è¯å ¥åï¼', '47226079133110211G1001', '1', 'system', NOW(), '0' FROM DUAL WHERE NOT EXISTS ( SELECT 1 FROM pat_specific_archive_generate_config WHERE orgid = '47226079133110211G1001' AND remark = '丽水å¦å¹¼-å¿ç§å¦ä¹ å°é¾ï¼å®ææ¥è¯å ¥åï¼' ); -- 5. å¿ç§-é«å±å¿ä¸æ¡ -- å ¥åï¼JiuZhenKSID=010104010405ï¼æ©äº§å¿/é«å±å¿é¨è¯ï¼ï¼ä¸»è¯æ Icd10=P96.800x904ï¼é«å±å¿ï¼ INSERT INTO pat_specific_archive_generate_config (dept_type, dept_category, archive_type, dept_codes, icd10_codes, remark, orgid, campusid, create_by, create_time, del_flag) SELECT '1', '2', '3', '["010104010405"]', '["P96.800x904"]', '丽水å¦å¹¼-å¿ç§é«å±å¿ä¸æ¡ï¼å®ææ¥è¯å ¥åï¼', '47226079133110211G1001', '1', 'system', NOW(), '0' FROM DUAL WHERE NOT EXISTS ( SELECT 1 FROM pat_specific_archive_generate_config WHERE orgid = '47226079133110211G1001' AND remark = '丽水å¦å¹¼-å¿ç§é«å±å¿ä¸æ¡ï¼å®ææ¥è¯å ¥åï¼' ); -- æ ¸éªï¼åºè¿å 5 æ¡é ç½® SELECT id, dept_category, archive_type, dept_codes, icd10_codes, remark FROM pat_specific_archive_generate_config WHERE orgid = '47226079133110211G1001' AND del_flag = '0' AND remark LIKE '丽水å¦å¹¼-%ï¼å®ææ¥è¯å ¥åï¼' ORDER BY dept_category, archive_type;