diff --git a/analytics-demo-web/public/mock/ae.json b/analytics-demo-web/public/mock/ae.json index 011c8c8..bb73367 100644 --- a/analytics-demo-web/public/mock/ae.json +++ b/analytics-demo-web/public/mock/ae.json @@ -166,7 +166,7 @@ "reviewDate": "2025-01-23", "province": "天津市", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -301,7 +301,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000017", @@ -415,7 +415,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000023", @@ -470,7 +470,7 @@ "reviewDate": "2025-10-23", "province": "广东省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -508,7 +508,7 @@ "reviewDate": "2024-04-12", "province": "山东省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -604,7 +604,7 @@ "province": "四川省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -851,7 +851,7 @@ "province": "广东省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -869,7 +869,7 @@ "reviewDate": "2025-02-07", "province": "重庆市", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -1059,7 +1059,7 @@ "reviewDate": "2024-01-02", "province": "广东省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -1080,7 +1080,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000058", @@ -1191,7 +1191,7 @@ "deviceFailure": "肝素帽旋紧后微量渗液", "reviewDate": "2025-06-23", "province": "重庆市", - "saeDeath": false, + "saeDeath": true, "saeLifeThreatening": false, "saeDisability": false, "saeHospitalization": false @@ -1384,7 +1384,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000074", @@ -1591,7 +1591,7 @@ "reviewDate": "2024-10-15", "province": "陕西省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -1707,7 +1707,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000091", @@ -1783,7 +1783,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000095", @@ -1954,7 +1954,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000104", @@ -2027,7 +2027,7 @@ "deviceFailure": "管路接头松动致滴管内进气", "reviewDate": "2024-10-11", "province": "云南省", - "saeDeath": false, + "saeDeath": true, "saeLifeThreatening": false, "saeDisability": false, "saeHospitalization": false @@ -2106,7 +2106,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000112", @@ -2275,7 +2275,7 @@ "reviewDate": "2025-03-03", "province": "江苏省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -2447,7 +2447,7 @@ "province": "广东省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -2579,7 +2579,7 @@ "reviewDate": "2023-12-22", "province": "湖南省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -2693,7 +2693,7 @@ "reviewDate": "2024-03-07", "province": "辽宁省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -2733,7 +2733,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000145", @@ -2752,7 +2752,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000146", @@ -2771,7 +2771,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000147", @@ -3072,7 +3072,7 @@ "deviceFailure": "缝针弯曲", "reviewDate": "2025-07-31", "province": "上海市", - "saeDeath": false, + "saeDeath": true, "saeLifeThreatening": false, "saeDisability": false, "saeHospitalization": false @@ -3226,7 +3226,7 @@ "province": "山东省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -3264,7 +3264,7 @@ "province": "湖南省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -3379,7 +3379,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000179", @@ -3472,7 +3472,7 @@ "reviewDate": "2026-03-13", "province": "福建省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -3510,7 +3510,7 @@ "reviewDate": "2023-12-18", "province": "湖北省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -3585,7 +3585,7 @@ "deviceFailure": "导管腔内回血阻力增高", "reviewDate": "2026-03-27", "province": "江苏省", - "saeDeath": false, + "saeDeath": true, "saeLifeThreatening": false, "saeDisability": false, "saeHospitalization": false @@ -3794,7 +3794,7 @@ "deviceFailure": "滴速过快相关不适", "reviewDate": "2025-09-26", "province": "江苏省", - "saeDeath": false, + "saeDeath": true, "saeLifeThreatening": false, "saeDisability": false, "saeHospitalization": false @@ -3815,7 +3815,7 @@ "province": "天津市", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -3928,7 +3928,7 @@ "reviewDate": "2024-03-28", "province": "广东省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -4120,7 +4120,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000218", @@ -4250,7 +4250,7 @@ "deviceFailure": "营养袋接口与泵管连接处渗漏", "reviewDate": "2025-04-04", "province": "天津市", - "saeDeath": false, + "saeDeath": true, "saeLifeThreatening": false, "saeDisability": false, "saeHospitalization": false @@ -4500,7 +4500,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000238", @@ -4557,7 +4557,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000241", @@ -4652,7 +4652,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000246", @@ -4823,7 +4823,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000255", @@ -4859,7 +4859,7 @@ "reviewDate": "2025-02-14", "province": "湖南省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -4899,7 +4899,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000259", @@ -5334,7 +5334,7 @@ "reviewDate": "2025-08-29", "province": "湖北省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -5487,7 +5487,7 @@ "province": "山东省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -5963,7 +5963,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000315", @@ -5980,7 +5980,7 @@ "reviewDate": "2024-11-11", "province": "辽宁省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -6039,7 +6039,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000319", @@ -6228,7 +6228,7 @@ "province": "浙江省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -6493,7 +6493,7 @@ "reviewDate": "2025-03-12", "province": "广东省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -6552,7 +6552,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000346", @@ -6664,7 +6664,7 @@ "reviewDate": "2026-02-19", "province": "江苏省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -6818,7 +6818,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000360", @@ -6931,7 +6931,7 @@ "province": "山东省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -7008,7 +7008,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000370", @@ -7083,7 +7083,7 @@ "province": "辽宁省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -7254,7 +7254,7 @@ "province": "上海市", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -7331,7 +7331,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000387", @@ -7786,7 +7786,7 @@ "province": "陕西省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -7918,7 +7918,7 @@ "reviewDate": "2024-06-17", "province": "四川省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -7956,7 +7956,7 @@ "reviewDate": "2024-03-01", "province": "湖南省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -8451,7 +8451,7 @@ "province": "福建省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -8564,7 +8564,7 @@ "reviewDate": "2026-02-20", "province": "重庆市", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -8585,7 +8585,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000453", @@ -8737,7 +8737,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000461", @@ -9135,7 +9135,7 @@ "province": "福建省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -9210,7 +9210,7 @@ "reviewDate": "2025-05-08", "province": "浙江省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -9589,7 +9589,7 @@ "deviceFailure": "透析液侧压力传感器报警", "reviewDate": "2024-05-21", "province": "浙江省", - "saeDeath": false, + "saeDeath": true, "saeLifeThreatening": false, "saeDisability": false, "saeHospitalization": false @@ -9971,7 +9971,7 @@ "province": "山东省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -9989,7 +9989,7 @@ "reviewDate": "2025-11-07", "province": "湖南省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -10086,7 +10086,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000532", @@ -10503,7 +10503,7 @@ "province": "辽宁省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -10656,7 +10656,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000562", @@ -10862,7 +10862,7 @@ "deviceFailure": "刻度印刷模糊", "reviewDate": "2024-04-16", "province": "山东省", - "saeDeath": false, + "saeDeath": true, "saeLifeThreatening": false, "saeDisability": false, "saeHospitalization": false @@ -10900,7 +10900,7 @@ "deviceFailure": "回血观察窗模糊影响血流判断", "reviewDate": "2025-10-28", "province": "陕西省", - "saeDeath": false, + "saeDeath": true, "saeLifeThreatening": false, "saeDisability": false, "saeHospitalization": false @@ -10938,7 +10938,7 @@ "deviceFailure": "浓缩液桶盖密封条变形渗漏", "reviewDate": "2024-05-28", "province": "陕西省", - "saeDeath": false, + "saeDeath": true, "saeLifeThreatening": false, "saeDisability": false, "saeHospitalization": false @@ -10997,7 +10997,7 @@ "province": "上海市", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -11188,7 +11188,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000590", @@ -11245,7 +11245,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000593", @@ -11492,7 +11492,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000606", @@ -11662,7 +11662,7 @@ "province": "辽宁省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -11910,7 +11910,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000628", @@ -12059,7 +12059,7 @@ "deviceFailure": "线结切割组织", "reviewDate": "2025-12-12", "province": "湖南省", - "saeDeath": false, + "saeDeath": true, "saeLifeThreatening": false, "saeDisability": false, "saeHospitalization": false @@ -12193,7 +12193,7 @@ "reviewDate": "2024-01-29", "province": "重庆市", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -12213,7 +12213,7 @@ "province": "上海市", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -12270,7 +12270,7 @@ "province": "山东省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -12288,7 +12288,7 @@ "reviewDate": "2025-12-02", "province": "辽宁省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -12442,7 +12442,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000656", @@ -12515,7 +12515,7 @@ "deviceFailure": "螺旋接口与泵管不匹配", "reviewDate": "2024-07-31", "province": "福建省", - "saeDeath": false, + "saeDeath": true, "saeLifeThreatening": false, "saeDisability": false, "saeHospitalization": false @@ -12572,7 +12572,7 @@ "deviceFailure": "肝素化不足标本凝固需重新采血", "reviewDate": "2025-06-23", "province": "河南省", - "saeDeath": false, + "saeDeath": true, "saeLifeThreatening": false, "saeDisability": false, "saeHospitalization": false @@ -12594,7 +12594,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000664", @@ -12803,7 +12803,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000675", @@ -13126,7 +13126,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000692", @@ -13296,7 +13296,7 @@ "province": "四川省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -13335,7 +13335,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000703", @@ -13352,7 +13352,7 @@ "reviewDate": "2024-10-01", "province": "湖南省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -13410,7 +13410,7 @@ "province": "辽宁省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -13449,7 +13449,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000709", @@ -13466,7 +13466,7 @@ "reviewDate": "2025-01-10", "province": "广东省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -13581,7 +13581,7 @@ "province": "陕西省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -13715,7 +13715,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000723", @@ -13829,7 +13829,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000729", @@ -13885,7 +13885,7 @@ "province": "浙江省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -14247,7 +14247,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000751", @@ -14283,7 +14283,7 @@ "reviewDate": "2024-10-23", "province": "山东省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -14511,7 +14511,7 @@ "reviewDate": "2024-05-17", "province": "云南省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -14606,7 +14606,7 @@ "reviewDate": "2024-11-15", "province": "山东省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -14662,7 +14662,7 @@ "deviceFailure": "接口渗液", "reviewDate": "2024-07-23", "province": "浙江省", - "saeDeath": false, + "saeDeath": true, "saeLifeThreatening": false, "saeDisability": false, "saeHospitalization": false @@ -14891,7 +14891,7 @@ "reviewDate": "2026-04-07", "province": "广东省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -14930,7 +14930,7 @@ "province": "广东省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -14988,7 +14988,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000790", @@ -15005,7 +15005,7 @@ "reviewDate": "2024-11-05", "province": "辽宁省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -15083,7 +15083,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000795", @@ -15235,7 +15235,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000803", @@ -15254,7 +15254,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000804", @@ -15330,7 +15330,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000808", @@ -15367,7 +15367,7 @@ "province": "江苏省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -15386,7 +15386,7 @@ "province": "上海市", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -15444,7 +15444,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000814", @@ -15596,7 +15596,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000822", @@ -15976,7 +15976,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000842", @@ -16011,7 +16011,7 @@ "deviceFailure": "螺旋接口与泵管不匹配", "reviewDate": "2025-09-17", "province": "河南省", - "saeDeath": false, + "saeDeath": true, "saeLifeThreatening": false, "saeDisability": false, "saeHospitalization": false @@ -16049,7 +16049,7 @@ "deviceFailure": "延长管打折致滴速下降", "reviewDate": "2024-02-16", "province": "重庆市", - "saeDeath": false, + "saeDeath": true, "saeLifeThreatening": false, "saeDisability": false, "saeHospitalization": false @@ -16088,7 +16088,7 @@ "reviewDate": "2025-07-04", "province": "上海市", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -16470,7 +16470,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000868", @@ -16546,7 +16546,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000872", @@ -16695,7 +16695,7 @@ "deviceFailure": "粘性不足边缘翘起", "reviewDate": "2025-02-13", "province": "广东省", - "saeDeath": false, + "saeDeath": true, "saeLifeThreatening": false, "saeDisability": false, "saeHospitalization": false @@ -16717,7 +16717,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000881", @@ -16735,7 +16735,7 @@ "province": "福建省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -16793,7 +16793,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000885", @@ -16944,7 +16944,7 @@ "province": "湖南省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -16963,7 +16963,7 @@ "province": "福建省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -17040,7 +17040,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000898", @@ -17287,7 +17287,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000911", @@ -17629,7 +17629,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000929", @@ -17855,7 +17855,7 @@ "reviewDate": "2026-01-15", "province": "重庆市", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -17914,7 +17914,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000944", @@ -18045,7 +18045,7 @@ "reviewDate": "2024-06-03", "province": "湖南省", "saeDeath": false, - "saeLifeThreatening": false, + "saeLifeThreatening": true, "saeDisability": false, "saeHospitalization": false }, @@ -18160,7 +18160,7 @@ "province": "湖南省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -18255,7 +18255,7 @@ "province": "江苏省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -18408,7 +18408,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000970", @@ -18673,7 +18673,7 @@ "province": "上海市", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { @@ -18769,7 +18769,7 @@ "saeDeath": false, "saeLifeThreatening": false, "saeDisability": false, - "saeHospitalization": false + "saeHospitalization": true }, { "reportCode": "SIM-2024-000989", @@ -18977,7 +18977,7 @@ "province": "云南省", "saeDeath": false, "saeLifeThreatening": false, - "saeDisability": false, + "saeDisability": true, "saeHospitalization": false }, { diff --git a/analytics-demo-web/public/mock/complaint.json b/analytics-demo-web/public/mock/complaint.json index fe1f7c0..9db9468 100644 --- a/analytics-demo-web/public/mock/complaint.json +++ b/analytics-demo-web/public/mock/complaint.json @@ -6,7 +6,7 @@ "registrationNo": "国械注进2016421013", "productName": "血液透析管路", "hospitalName": "南京鼓楼医院", - "faultType": "渗漏", + "faultType": "运输损伤", "registerDate": "2024-12-11", "isAe": false, "conclusion": "资料不足", @@ -20,7 +20,7 @@ "registrationNo": "国械注进2026157995", "productName": "可吸收性外科缝线", "hospitalName": "中南大学湘雅医院", - "faultType": "断裂", + "faultType": "灭菌标识异常", "registerDate": "2025-07-11", "isAe": false, "conclusion": "未复现", @@ -34,7 +34,7 @@ "registrationNo": "国械注进2020836091", "productName": "一次性使用输液器", "hospitalName": "上海市第一人民医院", - "faultType": "流速异常", + "faultType": "材料异物", "registerDate": "2024-03-19", "isAe": false, "conclusion": "未复现", @@ -104,7 +104,7 @@ "registrationNo": "国械注进2024648043", "productName": "可吸收性外科缝线", "hospitalName": "西安交通大学第一附属医院", - "faultType": "包装破损", + "faultType": "运输损伤", "registerDate": "2024-06-04", "isAe": false, "conclusion": "运输损伤", @@ -118,7 +118,7 @@ "registrationNo": "国械注进2017524868", "productName": "一次性使用静脉留置针", "hospitalName": "福建省立医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2024-06-24", "isAe": false, "conclusion": "产品缺陷成立", @@ -132,7 +132,7 @@ "registrationNo": "国械注进2022782044", "productName": "可吸收性外科缝线", "hospitalName": "中南大学湘雅医院", - "faultType": "包装破损", + "faultType": "材料异物", "registerDate": "2025-10-11", "isAe": false, "conclusion": "未复现", @@ -202,7 +202,7 @@ "registrationNo": "国械注进2024811411", "productName": "一次性使用输液器", "hospitalName": "广东省人民医院", - "faultType": "渗漏", + "faultType": "运输损伤", "registerDate": "2024-09-05", "isAe": false, "conclusion": "资料不足", @@ -216,7 +216,7 @@ "registrationNo": "国械注进2017674933", "productName": "可吸收性外科缝线", "hospitalName": "南京鼓楼医院", - "faultType": "标签不清", + "faultType": "灭菌标识异常", "registerDate": "2023-12-25", "isAe": false, "conclusion": "操作不当", @@ -230,7 +230,7 @@ "registrationNo": "国械注进2017162044", "productName": "一次性使用静脉留置针", "hospitalName": "山东大学齐鲁医院", - "faultType": "连接不牢", + "faultType": "材料异物", "registerDate": "2024-12-07", "isAe": true, "conclusion": "运输损伤", @@ -300,7 +300,7 @@ "registrationNo": "国械注进2017452903", "productName": "一次性使用静脉留置针", "hospitalName": "南京鼓楼医院", - "faultType": "流速异常", + "faultType": "运输损伤", "registerDate": "2025-10-29", "isAe": false, "conclusion": "资料不足", @@ -314,7 +314,7 @@ "registrationNo": "国械注进2016269787", "productName": "一次性使用输液器", "hospitalName": "西安交通大学第一附属医院", - "faultType": "渗漏", + "faultType": "灭菌标识异常", "registerDate": "2026-01-08", "isAe": true, "conclusion": "操作不当", @@ -328,7 +328,7 @@ "registrationNo": "国械注进2015458874", "productName": "一次性使用静脉留置针", "hospitalName": "中南大学湘雅医院", - "faultType": "流速异常", + "faultType": "材料异物", "registerDate": "2025-03-12", "isAe": false, "conclusion": "未复现", @@ -398,7 +398,7 @@ "registrationNo": "国械注进2016596818", "productName": "血液透析管路", "hospitalName": "南京鼓楼医院", - "faultType": "堵塞", + "faultType": "运输损伤", "registerDate": "2025-07-08", "isAe": false, "conclusion": "运输损伤", @@ -412,7 +412,7 @@ "registrationNo": "国械注进2022601878", "productName": "一次性使用输液器", "hospitalName": "郑州大学第一附属医院", - "faultType": "渗漏", + "faultType": "灭菌标识异常", "registerDate": "2024-07-26", "isAe": false, "conclusion": "运输损伤", @@ -426,7 +426,7 @@ "registrationNo": "国械注进2020368573", "productName": "一次性使用输液器", "hospitalName": "中南大学湘雅医院", - "faultType": "流速异常", + "faultType": "材料异物", "registerDate": "2023-10-05", "isAe": false, "conclusion": "未复现", @@ -496,7 +496,7 @@ "registrationNo": "国械注进2016581911", "productName": "一次性使用静脉留置针", "hospitalName": "西安交通大学第一附属医院", - "faultType": "包装破损", + "faultType": "运输损伤", "registerDate": "2023-08-24", "isAe": false, "conclusion": "资料不足", @@ -510,7 +510,7 @@ "registrationNo": "国械注进2019253129", "productName": "一次性使用输液器", "hospitalName": "郑州大学第一附属医院", - "faultType": "标签不清", + "faultType": "灭菌标识异常", "registerDate": "2025-06-04", "isAe": true, "conclusion": "资料不足", @@ -524,7 +524,7 @@ "registrationNo": "国械注进2021969192", "productName": "一次性使用静脉留置针", "hospitalName": "山东大学齐鲁医院", - "faultType": "连接不牢", + "faultType": "材料异物", "registerDate": "2024-10-29", "isAe": true, "conclusion": "产品缺陷成立", @@ -594,7 +594,7 @@ "registrationNo": "国械注进2025509081", "productName": "血液透析管路", "hospitalName": "西安交通大学第一附属医院", - "faultType": "堵塞", + "faultType": "运输损伤", "registerDate": "2024-07-13", "isAe": false, "conclusion": "资料不足", @@ -608,7 +608,7 @@ "registrationNo": "国械注进2018707703", "productName": "一次性使用静脉留置针", "hospitalName": "郑州大学第一附属医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2024-06-30", "isAe": false, "conclusion": "操作不当", @@ -622,7 +622,7 @@ "registrationNo": "国械注进2019994640", "productName": "一次性使用输液器", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "标签不清", + "faultType": "材料异物", "registerDate": "2024-04-19", "isAe": false, "conclusion": "产品缺陷成立", @@ -692,7 +692,7 @@ "registrationNo": "国械注进2023161798", "productName": "血液透析器", "hospitalName": "广东省人民医院", - "faultType": "流速异常", + "faultType": "运输损伤", "registerDate": "2023-10-12", "isAe": false, "conclusion": "未复现", @@ -706,7 +706,7 @@ "registrationNo": "国械注进2015498773", "productName": "血液透析管路", "hospitalName": "西安交通大学第一附属医院", - "faultType": "堵塞", + "faultType": "灭菌标识异常", "registerDate": "2023-11-04", "isAe": false, "conclusion": "运输损伤", @@ -720,7 +720,7 @@ "registrationNo": "国械注进2022205919", "productName": "可吸收性外科缝线", "hospitalName": "南京鼓楼医院", - "faultType": "包装破损", + "faultType": "材料异物", "registerDate": "2024-04-01", "isAe": true, "conclusion": "操作不当", @@ -790,7 +790,7 @@ "registrationNo": "国械注进2023617215", "productName": "一次性使用输液器", "hospitalName": "山东大学齐鲁医院", - "faultType": "堵塞", + "faultType": "运输损伤", "registerDate": "2025-07-02", "isAe": true, "conclusion": "产品缺陷成立", @@ -804,7 +804,7 @@ "registrationNo": "国械注进2015950001", "productName": "一次性使用静脉留置针", "hospitalName": "中南大学湘雅医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2024-01-26", "isAe": true, "conclusion": "未复现", @@ -818,7 +818,7 @@ "registrationNo": "国械注进2022863396", "productName": "血液透析器", "hospitalName": "郑州大学第一附属医院", - "faultType": "连接不牢", + "faultType": "材料异物", "registerDate": "2023-12-01", "isAe": false, "conclusion": "运输损伤", @@ -888,7 +888,7 @@ "registrationNo": "国械注进2022570959", "productName": "一次性使用静脉留置针", "hospitalName": "四川大学华西医院", - "faultType": "流速异常", + "faultType": "运输损伤", "registerDate": "2025-07-07", "isAe": true, "conclusion": "未复现", @@ -902,7 +902,7 @@ "registrationNo": "国械注进2024519719", "productName": "血液透析器", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "连接不牢", + "faultType": "灭菌标识异常", "registerDate": "2025-05-10", "isAe": false, "conclusion": "操作不当", @@ -916,7 +916,7 @@ "registrationNo": "国械注进2017414432", "productName": "一次性使用输液器", "hospitalName": "福建省立医院", - "faultType": "流速异常", + "faultType": "材料异物", "registerDate": "2025-04-03", "isAe": false, "conclusion": "未复现", @@ -986,7 +986,7 @@ "registrationNo": "国械注进2020661075", "productName": "一次性使用输液器", "hospitalName": "郑州大学第一附属医院", - "faultType": "流速异常", + "faultType": "运输损伤", "registerDate": "2026-01-11", "isAe": false, "conclusion": "未复现", @@ -1000,7 +1000,7 @@ "registrationNo": "国械注进2021520030", "productName": "一次性使用静脉留置针", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2024-12-02", "isAe": true, "conclusion": "运输损伤", @@ -1014,7 +1014,7 @@ "registrationNo": "国械注进2015868364", "productName": "血液透析管路", "hospitalName": "西安交通大学第一附属医院", - "faultType": "连接不牢", + "faultType": "材料异物", "registerDate": "2024-05-10", "isAe": true, "conclusion": "运输损伤", @@ -1084,7 +1084,7 @@ "registrationNo": "国械注进2018457631", "productName": "可吸收性外科缝线", "hospitalName": "中南大学湘雅医院", - "faultType": "标签不清", + "faultType": "运输损伤", "registerDate": "2025-02-21", "isAe": false, "conclusion": "产品缺陷成立", @@ -1098,7 +1098,7 @@ "registrationNo": "国械注进2023679069", "productName": "血液透析管路", "hospitalName": "四川大学华西医院", - "faultType": "渗漏", + "faultType": "灭菌标识异常", "registerDate": "2023-10-14", "isAe": false, "conclusion": "资料不足", @@ -1112,7 +1112,7 @@ "registrationNo": "国械注进2026354277", "productName": "可吸收性外科缝线", "hospitalName": "福建省立医院", - "faultType": "标签不清", + "faultType": "材料异物", "registerDate": "2025-01-18", "isAe": false, "conclusion": "产品缺陷成立", @@ -1182,7 +1182,7 @@ "registrationNo": "国械注进2025915861", "productName": "可吸收性外科缝线", "hospitalName": "四川大学华西医院", - "faultType": "包装破损", + "faultType": "运输损伤", "registerDate": "2025-06-06", "isAe": false, "conclusion": "资料不足", @@ -1196,7 +1196,7 @@ "registrationNo": "国械注进2021832850", "productName": "可吸收性外科缝线", "hospitalName": "山东大学齐鲁医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2024-07-05", "isAe": true, "conclusion": "操作不当", @@ -1210,7 +1210,7 @@ "registrationNo": "国械注进2019627144", "productName": "一次性使用输液器", "hospitalName": "西安交通大学第一附属医院", - "faultType": "流速异常", + "faultType": "材料异物", "registerDate": "2025-06-28", "isAe": false, "conclusion": "产品缺陷成立", @@ -1280,7 +1280,7 @@ "registrationNo": "国械注进2024894957", "productName": "血液透析器", "hospitalName": "山东大学齐鲁医院", - "faultType": "包装破损", + "faultType": "运输损伤", "registerDate": "2024-05-15", "isAe": false, "conclusion": "操作不当", @@ -1294,7 +1294,7 @@ "registrationNo": "国械注进2016905840", "productName": "血液透析器", "hospitalName": "福建省立医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2024-08-25", "isAe": false, "conclusion": "操作不当", @@ -1308,7 +1308,7 @@ "registrationNo": "国械注进2020923191", "productName": "血液透析管路", "hospitalName": "西安交通大学第一附属医院", - "faultType": "连接不牢", + "faultType": "材料异物", "registerDate": "2023-08-26", "isAe": false, "conclusion": "未复现", @@ -1378,7 +1378,7 @@ "registrationNo": "国械注进2024704541", "productName": "一次性使用输液器", "hospitalName": "山东大学齐鲁医院", - "faultType": "标签不清", + "faultType": "运输损伤", "registerDate": "2026-02-19", "isAe": true, "conclusion": "未复现", @@ -1392,7 +1392,7 @@ "registrationNo": "国械注进2015146565", "productName": "一次性使用输液器", "hospitalName": "四川大学华西医院", - "faultType": "渗漏", + "faultType": "灭菌标识异常", "registerDate": "2024-02-10", "isAe": true, "conclusion": "资料不足", @@ -1406,7 +1406,7 @@ "registrationNo": "国械注进2026639679", "productName": "血液透析器", "hospitalName": "山东大学齐鲁医院", - "faultType": "流速异常", + "faultType": "材料异物", "registerDate": "2024-04-08", "isAe": true, "conclusion": "运输损伤", @@ -1476,7 +1476,7 @@ "registrationNo": "国械注进2016791529", "productName": "血液透析器", "hospitalName": "中南大学湘雅医院", - "faultType": "断裂", + "faultType": "运输损伤", "registerDate": "2024-10-07", "isAe": false, "conclusion": "资料不足", @@ -1490,7 +1490,7 @@ "registrationNo": "国械注进2019244917", "productName": "血液透析管路", "hospitalName": "南京鼓楼医院", - "faultType": "渗漏", + "faultType": "灭菌标识异常", "registerDate": "2026-01-09", "isAe": false, "conclusion": "运输损伤", @@ -1504,7 +1504,7 @@ "registrationNo": "国械注进2024279252", "productName": "可吸收性外科缝线", "hospitalName": "福建省立医院", - "faultType": "包装破损", + "faultType": "材料异物", "registerDate": "2025-04-07", "isAe": false, "conclusion": "资料不足", @@ -1574,7 +1574,7 @@ "registrationNo": "国械注进2019341453", "productName": "一次性使用静脉留置针", "hospitalName": "西安交通大学第一附属医院", - "faultType": "流速异常", + "faultType": "运输损伤", "registerDate": "2025-10-23", "isAe": false, "conclusion": "资料不足", @@ -1588,7 +1588,7 @@ "registrationNo": "国械注进2024588088", "productName": "可吸收性外科缝线", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "标签不清", + "faultType": "灭菌标识异常", "registerDate": "2023-11-06", "isAe": true, "conclusion": "运输损伤", @@ -1602,7 +1602,7 @@ "registrationNo": "国械注进2016723678", "productName": "可吸收性外科缝线", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "标签不清", + "faultType": "材料异物", "registerDate": "2025-01-23", "isAe": false, "conclusion": "运输损伤", @@ -1672,7 +1672,7 @@ "registrationNo": "国械注进2026313703", "productName": "可吸收性外科缝线", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "断裂", + "faultType": "运输损伤", "registerDate": "2025-01-17", "isAe": false, "conclusion": "运输损伤", @@ -1686,7 +1686,7 @@ "registrationNo": "国械注进2017843762", "productName": "血液透析管路", "hospitalName": "山东大学齐鲁医院", - "faultType": "连接不牢", + "faultType": "灭菌标识异常", "registerDate": "2024-08-07", "isAe": false, "conclusion": "操作不当", @@ -1700,7 +1700,7 @@ "registrationNo": "国械注进2020182029", "productName": "可吸收性外科缝线", "hospitalName": "西安交通大学第一附属医院", - "faultType": "包装破损", + "faultType": "材料异物", "registerDate": "2024-05-03", "isAe": false, "conclusion": "未复现", @@ -1770,7 +1770,7 @@ "registrationNo": "国械注进2023444087", "productName": "血液透析器", "hospitalName": "福建省立医院", - "faultType": "断裂", + "faultType": "运输损伤", "registerDate": "2024-03-07", "isAe": false, "conclusion": "运输损伤", @@ -1784,7 +1784,7 @@ "registrationNo": "国械注进2015311146", "productName": "可吸收性外科缝线", "hospitalName": "山东大学齐鲁医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2024-01-26", "isAe": false, "conclusion": "未复现", @@ -1798,7 +1798,7 @@ "registrationNo": "国械注进2020829671", "productName": "一次性使用静脉留置针", "hospitalName": "四川大学华西医院", - "faultType": "包装破损", + "faultType": "材料异物", "registerDate": "2023-09-23", "isAe": true, "conclusion": "产品缺陷成立", @@ -1868,7 +1868,7 @@ "registrationNo": "国械注进2024834083", "productName": "可吸收性外科缝线", "hospitalName": "南京鼓楼医院", - "faultType": "包装破损", + "faultType": "运输损伤", "registerDate": "2026-02-28", "isAe": false, "conclusion": "操作不当", @@ -1882,7 +1882,7 @@ "registrationNo": "国械注进2026952080", "productName": "血液透析器", "hospitalName": "四川大学华西医院", - "faultType": "流速异常", + "faultType": "灭菌标识异常", "registerDate": "2025-06-08", "isAe": true, "conclusion": "操作不当", @@ -1896,7 +1896,7 @@ "registrationNo": "国械注进2024558979", "productName": "血液透析器", "hospitalName": "南京鼓楼医院", - "faultType": "连接不牢", + "faultType": "材料异物", "registerDate": "2024-01-23", "isAe": false, "conclusion": "运输损伤", @@ -1966,7 +1966,7 @@ "registrationNo": "国械注进2025420920", "productName": "血液透析器", "hospitalName": "南京鼓楼医院", - "faultType": "流速异常", + "faultType": "运输损伤", "registerDate": "2023-10-03", "isAe": false, "conclusion": "未复现", @@ -1980,7 +1980,7 @@ "registrationNo": "国械注进2019704302", "productName": "一次性使用静脉留置针", "hospitalName": "郑州大学第一附属医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2023-10-07", "isAe": false, "conclusion": "运输损伤", @@ -1994,7 +1994,7 @@ "registrationNo": "国械注进2025963235", "productName": "血液透析管路", "hospitalName": "四川大学华西医院", - "faultType": "堵塞", + "faultType": "材料异物", "registerDate": "2025-02-14", "isAe": false, "conclusion": "未复现", @@ -2064,7 +2064,7 @@ "registrationNo": "国械注进2024156773", "productName": "血液透析器", "hospitalName": "西安交通大学第一附属医院", - "faultType": "流速异常", + "faultType": "运输损伤", "registerDate": "2024-07-20", "isAe": false, "conclusion": "资料不足", @@ -2078,7 +2078,7 @@ "registrationNo": "国械注进2023847651", "productName": "血液透析器", "hospitalName": "山东大学齐鲁医院", - "faultType": "流速异常", + "faultType": "灭菌标识异常", "registerDate": "2024-03-29", "isAe": true, "conclusion": "操作不当", @@ -2092,7 +2092,7 @@ "registrationNo": "国械注进2020612187", "productName": "一次性使用输液器", "hospitalName": "南京鼓楼医院", - "faultType": "标签不清", + "faultType": "材料异物", "registerDate": "2025-03-02", "isAe": false, "conclusion": "资料不足", @@ -2162,7 +2162,7 @@ "registrationNo": "国械注进2018867902", "productName": "一次性使用静脉留置针", "hospitalName": "山东大学齐鲁医院", - "faultType": "渗漏", + "faultType": "运输损伤", "registerDate": "2025-02-13", "isAe": false, "conclusion": "产品缺陷成立", @@ -2176,7 +2176,7 @@ "registrationNo": "国械注进2024680080", "productName": "一次性使用静脉留置针", "hospitalName": "郑州大学第一附属医院", - "faultType": "连接不牢", + "faultType": "灭菌标识异常", "registerDate": "2025-05-07", "isAe": false, "conclusion": "产品缺陷成立", @@ -2190,7 +2190,7 @@ "registrationNo": "国械注进2023989271", "productName": "可吸收性外科缝线", "hospitalName": "西安交通大学第一附属医院", - "faultType": "包装破损", + "faultType": "材料异物", "registerDate": "2024-09-01", "isAe": false, "conclusion": "操作不当", @@ -2260,7 +2260,7 @@ "registrationNo": "国械注进2019920638", "productName": "血液透析管路", "hospitalName": "郑州大学第一附属医院", - "faultType": "堵塞", + "faultType": "运输损伤", "registerDate": "2025-07-18", "isAe": false, "conclusion": "运输损伤", @@ -2274,7 +2274,7 @@ "registrationNo": "国械注进2023589963", "productName": "一次性使用静脉留置针", "hospitalName": "中南大学湘雅医院", - "faultType": "流速异常", + "faultType": "灭菌标识异常", "registerDate": "2023-12-31", "isAe": false, "conclusion": "未复现", @@ -2288,7 +2288,7 @@ "registrationNo": "国械注进2022247742", "productName": "一次性使用静脉留置针", "hospitalName": "山东大学齐鲁医院", - "faultType": "包装破损", + "faultType": "材料异物", "registerDate": "2023-09-11", "isAe": false, "conclusion": "未复现", @@ -2358,7 +2358,7 @@ "registrationNo": "国械注进2023768298", "productName": "血液透析器", "hospitalName": "西安交通大学第一附属医院", - "faultType": "流速异常", + "faultType": "运输损伤", "registerDate": "2025-07-24", "isAe": false, "conclusion": "运输损伤", @@ -2372,7 +2372,7 @@ "registrationNo": "国械注进2025588097", "productName": "一次性使用输液器", "hospitalName": "山东大学齐鲁医院", - "faultType": "标签不清", + "faultType": "灭菌标识异常", "registerDate": "2023-10-19", "isAe": false, "conclusion": "资料不足", @@ -2386,7 +2386,7 @@ "registrationNo": "国械注进2026879177", "productName": "一次性使用输液器", "hospitalName": "山东大学齐鲁医院", - "faultType": "堵塞", + "faultType": "材料异物", "registerDate": "2024-09-03", "isAe": false, "conclusion": "运输损伤", @@ -2456,7 +2456,7 @@ "registrationNo": "国械注进2020366216", "productName": "可吸收性外科缝线", "hospitalName": "中南大学湘雅医院", - "faultType": "断裂", + "faultType": "运输损伤", "registerDate": "2024-10-10", "isAe": false, "conclusion": "资料不足", @@ -2470,7 +2470,7 @@ "registrationNo": "国械注进2015501278", "productName": "血液透析器", "hospitalName": "山东大学齐鲁医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2026-01-14", "isAe": false, "conclusion": "未复现", @@ -2484,7 +2484,7 @@ "registrationNo": "国械注进2022170927", "productName": "可吸收性外科缝线", "hospitalName": "广东省人民医院", - "faultType": "标签不清", + "faultType": "材料异物", "registerDate": "2024-10-12", "isAe": false, "conclusion": "操作不当", @@ -2554,7 +2554,7 @@ "registrationNo": "国械注进2016201424", "productName": "可吸收性外科缝线", "hospitalName": "广东省人民医院", - "faultType": "断裂", + "faultType": "运输损伤", "registerDate": "2023-10-03", "isAe": true, "conclusion": "操作不当", @@ -2568,7 +2568,7 @@ "registrationNo": "国械注进2024371931", "productName": "一次性使用输液器", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "渗漏", + "faultType": "灭菌标识异常", "registerDate": "2025-10-08", "isAe": false, "conclusion": "资料不足", @@ -2582,7 +2582,7 @@ "registrationNo": "国械注进2016556066", "productName": "一次性使用输液器", "hospitalName": "上海市第一人民医院", - "faultType": "标签不清", + "faultType": "材料异物", "registerDate": "2024-09-06", "isAe": false, "conclusion": "操作不当", @@ -2652,7 +2652,7 @@ "registrationNo": "国械注进2022572607", "productName": "一次性使用静脉留置针", "hospitalName": "四川大学华西医院", - "faultType": "渗漏", + "faultType": "运输损伤", "registerDate": "2026-04-13", "isAe": false, "conclusion": "资料不足", @@ -2666,7 +2666,7 @@ "registrationNo": "国械注进2025862509", "productName": "血液透析器", "hospitalName": "广东省人民医院", - "faultType": "流速异常", + "faultType": "灭菌标识异常", "registerDate": "2025-05-07", "isAe": false, "conclusion": "资料不足", @@ -2680,7 +2680,7 @@ "registrationNo": "国械注进2017687315", "productName": "可吸收性外科缝线", "hospitalName": "广东省人民医院", - "faultType": "标签不清", + "faultType": "材料异物", "registerDate": "2025-01-06", "isAe": true, "conclusion": "操作不当", @@ -2750,7 +2750,7 @@ "registrationNo": "国械注进2015915782", "productName": "可吸收性外科缝线", "hospitalName": "南京鼓楼医院", - "faultType": "包装破损", + "faultType": "运输损伤", "registerDate": "2026-02-04", "isAe": false, "conclusion": "运输损伤", @@ -2764,7 +2764,7 @@ "registrationNo": "国械注进2022820557", "productName": "血液透析管路", "hospitalName": "西安交通大学第一附属医院", - "faultType": "渗漏", + "faultType": "灭菌标识异常", "registerDate": "2024-07-03", "isAe": false, "conclusion": "未复现", @@ -2778,7 +2778,7 @@ "registrationNo": "国械注进2018892258", "productName": "血液透析器", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "连接不牢", + "faultType": "材料异物", "registerDate": "2024-08-24", "isAe": false, "conclusion": "运输损伤", @@ -2848,7 +2848,7 @@ "registrationNo": "国械注进2016719990", "productName": "血液透析器", "hospitalName": "山东大学齐鲁医院", - "faultType": "连接不牢", + "faultType": "运输损伤", "registerDate": "2025-09-24", "isAe": true, "conclusion": "资料不足", @@ -2862,7 +2862,7 @@ "registrationNo": "国械注进2023648184", "productName": "血液透析器", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2024-12-22", "isAe": false, "conclusion": "操作不当", @@ -2876,7 +2876,7 @@ "registrationNo": "国械注进2023410719", "productName": "可吸收性外科缝线", "hospitalName": "上海市第一人民医院", - "faultType": "断裂", + "faultType": "材料异物", "registerDate": "2025-10-14", "isAe": true, "conclusion": "操作不当", @@ -2946,7 +2946,7 @@ "registrationNo": "国械注进2018761437", "productName": "一次性使用静脉留置针", "hospitalName": "上海市第一人民医院", - "faultType": "渗漏", + "faultType": "运输损伤", "registerDate": "2024-03-14", "isAe": false, "conclusion": "资料不足", @@ -2960,7 +2960,7 @@ "registrationNo": "国械注进2016532487", "productName": "一次性使用静脉留置针", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "流速异常", + "faultType": "灭菌标识异常", "registerDate": "2024-10-21", "isAe": true, "conclusion": "资料不足", @@ -2974,7 +2974,7 @@ "registrationNo": "国械注进2024885072", "productName": "血液透析器", "hospitalName": "郑州大学第一附属医院", - "faultType": "连接不牢", + "faultType": "材料异物", "registerDate": "2026-01-10", "isAe": false, "conclusion": "运输损伤", @@ -3044,7 +3044,7 @@ "registrationNo": "国械注进2019867821", "productName": "血液透析管路", "hospitalName": "福建省立医院", - "faultType": "堵塞", + "faultType": "运输损伤", "registerDate": "2024-12-03", "isAe": false, "conclusion": "未复现", @@ -3058,7 +3058,7 @@ "registrationNo": "国械注进2016209770", "productName": "血液透析管路", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "渗漏", + "faultType": "灭菌标识异常", "registerDate": "2024-01-04", "isAe": true, "conclusion": "运输损伤", @@ -3072,7 +3072,7 @@ "registrationNo": "国械注进2019156496", "productName": "一次性使用静脉留置针", "hospitalName": "中南大学湘雅医院", - "faultType": "流速异常", + "faultType": "材料异物", "registerDate": "2025-06-02", "isAe": false, "conclusion": "运输损伤", @@ -3142,7 +3142,7 @@ "registrationNo": "国械注进2026966656", "productName": "血液透析器", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "流速异常", + "faultType": "运输损伤", "registerDate": "2025-08-15", "isAe": false, "conclusion": "产品缺陷成立", @@ -3156,7 +3156,7 @@ "registrationNo": "国械注进2019908858", "productName": "可吸收性外科缝线", "hospitalName": "上海市第一人民医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2023-10-15", "isAe": true, "conclusion": "运输损伤", @@ -3170,7 +3170,7 @@ "registrationNo": "国械注进2016322374", "productName": "一次性使用静脉留置针", "hospitalName": "上海市第一人民医院", - "faultType": "包装破损", + "faultType": "材料异物", "registerDate": "2026-01-27", "isAe": false, "conclusion": "未复现", @@ -3240,7 +3240,7 @@ "registrationNo": "国械注进2021113526", "productName": "血液透析器", "hospitalName": "山东大学齐鲁医院", - "faultType": "包装破损", + "faultType": "运输损伤", "registerDate": "2024-11-06", "isAe": false, "conclusion": "资料不足", @@ -3254,7 +3254,7 @@ "registrationNo": "国械注进2017297053", "productName": "血液透析器", "hospitalName": "南京鼓楼医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2025-04-27", "isAe": false, "conclusion": "运输损伤", @@ -3268,7 +3268,7 @@ "registrationNo": "国械注进2019886565", "productName": "一次性使用输液器", "hospitalName": "福建省立医院", - "faultType": "流速异常", + "faultType": "材料异物", "registerDate": "2026-02-02", "isAe": false, "conclusion": "产品缺陷成立", @@ -3338,7 +3338,7 @@ "registrationNo": "国械注进2018571535", "productName": "一次性使用静脉留置针", "hospitalName": "西安交通大学第一附属医院", - "faultType": "包装破损", + "faultType": "运输损伤", "registerDate": "2023-09-01", "isAe": false, "conclusion": "资料不足", @@ -3352,7 +3352,7 @@ "registrationNo": "国械注进2025502244", "productName": "可吸收性外科缝线", "hospitalName": "福建省立医院", - "faultType": "断裂", + "faultType": "灭菌标识异常", "registerDate": "2025-03-25", "isAe": false, "conclusion": "资料不足", @@ -3366,7 +3366,7 @@ "registrationNo": "国械注进2020530717", "productName": "一次性使用输液器", "hospitalName": "郑州大学第一附属医院", - "faultType": "流速异常", + "faultType": "材料异物", "registerDate": "2026-01-21", "isAe": false, "conclusion": "未复现", @@ -3436,7 +3436,7 @@ "registrationNo": "国械注进2016722738", "productName": "一次性使用静脉留置针", "hospitalName": "中南大学湘雅医院", - "faultType": "流速异常", + "faultType": "运输损伤", "registerDate": "2025-09-05", "isAe": false, "conclusion": "未复现", @@ -3450,7 +3450,7 @@ "registrationNo": "国械注进2019887159", "productName": "血液透析器", "hospitalName": "广东省人民医院", - "faultType": "流速异常", + "faultType": "灭菌标识异常", "registerDate": "2024-10-14", "isAe": true, "conclusion": "操作不当", @@ -3464,7 +3464,7 @@ "registrationNo": "国械注进2026961479", "productName": "血液透析管路", "hospitalName": "福建省立医院", - "faultType": "渗漏", + "faultType": "材料异物", "registerDate": "2025-11-08", "isAe": false, "conclusion": "未复现", @@ -3534,7 +3534,7 @@ "registrationNo": "国械注进2016839373", "productName": "血液透析管路", "hospitalName": "上海市第一人民医院", - "faultType": "连接不牢", + "faultType": "运输损伤", "registerDate": "2026-04-11", "isAe": false, "conclusion": "操作不当", @@ -3548,7 +3548,7 @@ "registrationNo": "国械注进2019878163", "productName": "血液透析管路", "hospitalName": "中南大学湘雅医院", - "faultType": "渗漏", + "faultType": "灭菌标识异常", "registerDate": "2023-11-30", "isAe": true, "conclusion": "未复现", @@ -3562,7 +3562,7 @@ "registrationNo": "国械注进2026100623", "productName": "可吸收性外科缝线", "hospitalName": "郑州大学第一附属医院", - "faultType": "标签不清", + "faultType": "材料异物", "registerDate": "2025-01-11", "isAe": false, "conclusion": "操作不当", @@ -3632,7 +3632,7 @@ "registrationNo": "国械注进2024811323", "productName": "一次性使用静脉留置针", "hospitalName": "郑州大学第一附属医院", - "faultType": "连接不牢", + "faultType": "运输损伤", "registerDate": "2026-01-04", "isAe": false, "conclusion": "资料不足", @@ -3646,7 +3646,7 @@ "registrationNo": "国械注进2018874362", "productName": "可吸收性外科缝线", "hospitalName": "郑州大学第一附属医院", - "faultType": "断裂", + "faultType": "灭菌标识异常", "registerDate": "2025-01-22", "isAe": false, "conclusion": "资料不足", @@ -3660,7 +3660,7 @@ "registrationNo": "国械注进2015671816", "productName": "可吸收性外科缝线", "hospitalName": "南京鼓楼医院", - "faultType": "标签不清", + "faultType": "材料异物", "registerDate": "2024-08-16", "isAe": false, "conclusion": "产品缺陷成立", @@ -3730,7 +3730,7 @@ "registrationNo": "国械注进2023817570", "productName": "血液透析管路", "hospitalName": "山东大学齐鲁医院", - "faultType": "堵塞", + "faultType": "运输损伤", "registerDate": "2024-02-05", "isAe": false, "conclusion": "产品缺陷成立", @@ -3744,7 +3744,7 @@ "registrationNo": "国械注进2026981147", "productName": "一次性使用输液器", "hospitalName": "山东大学齐鲁医院", - "faultType": "标签不清", + "faultType": "灭菌标识异常", "registerDate": "2025-06-14", "isAe": false, "conclusion": "操作不当", @@ -3758,7 +3758,7 @@ "registrationNo": "国械注进2026147270", "productName": "血液透析器", "hospitalName": "广东省人民医院", - "faultType": "流速异常", + "faultType": "材料异物", "registerDate": "2023-11-03", "isAe": false, "conclusion": "未复现", @@ -3828,7 +3828,7 @@ "registrationNo": "国械注进2016268469", "productName": "血液透析管路", "hospitalName": "中南大学湘雅医院", - "faultType": "堵塞", + "faultType": "运输损伤", "registerDate": "2025-01-02", "isAe": false, "conclusion": "产品缺陷成立", @@ -3842,7 +3842,7 @@ "registrationNo": "国械注进2017488303", "productName": "血液透析管路", "hospitalName": "南京鼓楼医院", - "faultType": "连接不牢", + "faultType": "灭菌标识异常", "registerDate": "2025-08-10", "isAe": false, "conclusion": "操作不当", @@ -3856,7 +3856,7 @@ "registrationNo": "国械注进2021902638", "productName": "血液透析管路", "hospitalName": "山东大学齐鲁医院", - "faultType": "堵塞", + "faultType": "材料异物", "registerDate": "2024-05-03", "isAe": false, "conclusion": "产品缺陷成立", @@ -3926,7 +3926,7 @@ "registrationNo": "国械注进2022850711", "productName": "血液透析器", "hospitalName": "郑州大学第一附属医院", - "faultType": "连接不牢", + "faultType": "运输损伤", "registerDate": "2025-12-05", "isAe": false, "conclusion": "操作不当", @@ -3940,7 +3940,7 @@ "registrationNo": "国械注进2018660291", "productName": "血液透析器", "hospitalName": "四川大学华西医院", - "faultType": "流速异常", + "faultType": "灭菌标识异常", "registerDate": "2025-08-08", "isAe": false, "conclusion": "运输损伤", @@ -3954,7 +3954,7 @@ "registrationNo": "国械注进2022800165", "productName": "可吸收性外科缝线", "hospitalName": "山东大学齐鲁医院", - "faultType": "标签不清", + "faultType": "材料异物", "registerDate": "2025-02-14", "isAe": false, "conclusion": "产品缺陷成立", @@ -4024,7 +4024,7 @@ "registrationNo": "国械注进2018481641", "productName": "一次性使用输液器", "hospitalName": "中南大学湘雅医院", - "faultType": "堵塞", + "faultType": "运输损伤", "registerDate": "2024-10-11", "isAe": false, "conclusion": "未复现", @@ -4038,7 +4038,7 @@ "registrationNo": "国械注进2017842302", "productName": "一次性使用静脉留置针", "hospitalName": "山东大学齐鲁医院", - "faultType": "渗漏", + "faultType": "灭菌标识异常", "registerDate": "2025-11-28", "isAe": false, "conclusion": "操作不当", @@ -4052,7 +4052,7 @@ "registrationNo": "国械注进2024334631", "productName": "血液透析器", "hospitalName": "郑州大学第一附属医院", - "faultType": "断裂", + "faultType": "材料异物", "registerDate": "2024-04-21", "isAe": false, "conclusion": "操作不当", @@ -4122,7 +4122,7 @@ "registrationNo": "国械注进2025142289", "productName": "血液透析管路", "hospitalName": "山东大学齐鲁医院", - "faultType": "渗漏", + "faultType": "运输损伤", "registerDate": "2024-03-22", "isAe": false, "conclusion": "操作不当", @@ -4136,7 +4136,7 @@ "registrationNo": "国械注进2023252220", "productName": "一次性使用静脉留置针", "hospitalName": "山东大学齐鲁医院", - "faultType": "连接不牢", + "faultType": "灭菌标识异常", "registerDate": "2025-10-25", "isAe": false, "conclusion": "运输损伤", @@ -4150,7 +4150,7 @@ "registrationNo": "国械注进2026435237", "productName": "一次性使用静脉留置针", "hospitalName": "广东省人民医院", - "faultType": "连接不牢", + "faultType": "材料异物", "registerDate": "2024-11-01", "isAe": true, "conclusion": "操作不当", @@ -4220,7 +4220,7 @@ "registrationNo": "国械注进2018714081", "productName": "一次性使用输液器", "hospitalName": "四川大学华西医院", - "faultType": "堵塞", + "faultType": "运输损伤", "registerDate": "2023-11-01", "isAe": false, "conclusion": "产品缺陷成立", @@ -4234,7 +4234,7 @@ "registrationNo": "国械注进2015700779", "productName": "可吸收性外科缝线", "hospitalName": "山东大学齐鲁医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2025-12-01", "isAe": false, "conclusion": "资料不足", @@ -4248,7 +4248,7 @@ "registrationNo": "国械注进2022915261", "productName": "可吸收性外科缝线", "hospitalName": "郑州大学第一附属医院", - "faultType": "标签不清", + "faultType": "材料异物", "registerDate": "2025-08-14", "isAe": false, "conclusion": "未复现", @@ -4318,7 +4318,7 @@ "registrationNo": "国械注进2015199890", "productName": "血液透析器", "hospitalName": "中南大学湘雅医院", - "faultType": "断裂", + "faultType": "运输损伤", "registerDate": "2024-04-19", "isAe": true, "conclusion": "产品缺陷成立", @@ -4332,7 +4332,7 @@ "registrationNo": "国械注进2022665938", "productName": "血液透析管路", "hospitalName": "福建省立医院", - "faultType": "渗漏", + "faultType": "灭菌标识异常", "registerDate": "2024-10-27", "isAe": true, "conclusion": "资料不足", @@ -4346,7 +4346,7 @@ "registrationNo": "国械注进2020707553", "productName": "一次性使用输液器", "hospitalName": "四川大学华西医院", - "faultType": "渗漏", + "faultType": "材料异物", "registerDate": "2025-09-26", "isAe": false, "conclusion": "运输损伤", @@ -4416,7 +4416,7 @@ "registrationNo": "国械注进2015296071", "productName": "可吸收性外科缝线", "hospitalName": "中南大学湘雅医院", - "faultType": "标签不清", + "faultType": "运输损伤", "registerDate": "2024-09-20", "isAe": false, "conclusion": "运输损伤", @@ -4430,7 +4430,7 @@ "registrationNo": "国械注进2023592063", "productName": "一次性使用输液器", "hospitalName": "中南大学湘雅医院", - "faultType": "标签不清", + "faultType": "灭菌标识异常", "registerDate": "2025-05-08", "isAe": false, "conclusion": "未复现", @@ -4444,7 +4444,7 @@ "registrationNo": "国械注进2019735568", "productName": "可吸收性外科缝线", "hospitalName": "南京鼓楼医院", - "faultType": "标签不清", + "faultType": "材料异物", "registerDate": "2025-06-06", "isAe": false, "conclusion": "运输损伤", @@ -4514,7 +4514,7 @@ "registrationNo": "国械注进2016372685", "productName": "血液透析器", "hospitalName": "南京鼓楼医院", - "faultType": "包装破损", + "faultType": "运输损伤", "registerDate": "2026-03-27", "isAe": false, "conclusion": "未复现", @@ -4528,7 +4528,7 @@ "registrationNo": "国械注进2021482465", "productName": "血液透析器", "hospitalName": "山东大学齐鲁医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2024-12-13", "isAe": true, "conclusion": "未复现", @@ -4542,7 +4542,7 @@ "registrationNo": "国械注进2024168674", "productName": "血液透析管路", "hospitalName": "上海市第一人民医院", - "faultType": "连接不牢", + "faultType": "材料异物", "registerDate": "2024-04-13", "isAe": true, "conclusion": "未复现", @@ -4612,7 +4612,7 @@ "registrationNo": "国械注进2016601717", "productName": "一次性使用静脉留置针", "hospitalName": "广东省人民医院", - "faultType": "连接不牢", + "faultType": "运输损伤", "registerDate": "2023-12-20", "isAe": true, "conclusion": "未复现", @@ -4626,7 +4626,7 @@ "registrationNo": "国械注进2025541887", "productName": "血液透析管路", "hospitalName": "南京鼓楼医院", - "faultType": "连接不牢", + "faultType": "灭菌标识异常", "registerDate": "2024-11-07", "isAe": false, "conclusion": "未复现", @@ -4640,7 +4640,7 @@ "registrationNo": "国械注进2024366905", "productName": "血液透析管路", "hospitalName": "四川大学华西医院", - "faultType": "渗漏", + "faultType": "材料异物", "registerDate": "2024-04-24", "isAe": true, "conclusion": "资料不足", @@ -4710,7 +4710,7 @@ "registrationNo": "国械注进2024619527", "productName": "可吸收性外科缝线", "hospitalName": "郑州大学第一附属医院", - "faultType": "断裂", + "faultType": "运输损伤", "registerDate": "2024-07-16", "isAe": false, "conclusion": "产品缺陷成立", @@ -4724,7 +4724,7 @@ "registrationNo": "国械注进2021880760", "productName": "可吸收性外科缝线", "hospitalName": "上海市第一人民医院", - "faultType": "标签不清", + "faultType": "灭菌标识异常", "registerDate": "2024-01-15", "isAe": true, "conclusion": "运输损伤", @@ -4738,7 +4738,7 @@ "registrationNo": "国械注进2022629211", "productName": "一次性使用输液器", "hospitalName": "中南大学湘雅医院", - "faultType": "渗漏", + "faultType": "材料异物", "registerDate": "2025-08-31", "isAe": false, "conclusion": "运输损伤", @@ -4808,7 +4808,7 @@ "registrationNo": "国械注进2015412802", "productName": "血液透析器", "hospitalName": "福建省立医院", - "faultType": "流速异常", + "faultType": "运输损伤", "registerDate": "2024-09-30", "isAe": false, "conclusion": "产品缺陷成立", @@ -4822,7 +4822,7 @@ "registrationNo": "国械注进2026813101", "productName": "血液透析管路", "hospitalName": "上海市第一人民医院", - "faultType": "渗漏", + "faultType": "灭菌标识异常", "registerDate": "2025-02-21", "isAe": false, "conclusion": "未复现", @@ -4836,7 +4836,7 @@ "registrationNo": "国械注进2024266208", "productName": "一次性使用静脉留置针", "hospitalName": "郑州大学第一附属医院", - "faultType": "连接不牢", + "faultType": "材料异物", "registerDate": "2026-03-28", "isAe": false, "conclusion": "产品缺陷成立", @@ -4906,7 +4906,7 @@ "registrationNo": "国械注进2024303692", "productName": "血液透析管路", "hospitalName": "西安交通大学第一附属医院", - "faultType": "连接不牢", + "faultType": "运输损伤", "registerDate": "2024-09-30", "isAe": true, "conclusion": "操作不当", @@ -4920,7 +4920,7 @@ "registrationNo": "国械注进2019333441", "productName": "血液透析管路", "hospitalName": "广东省人民医院", - "faultType": "堵塞", + "faultType": "灭菌标识异常", "registerDate": "2023-08-11", "isAe": false, "conclusion": "运输损伤", @@ -4934,7 +4934,7 @@ "registrationNo": "国械注进2025274785", "productName": "一次性使用输液器", "hospitalName": "山东大学齐鲁医院", - "faultType": "堵塞", + "faultType": "材料异物", "registerDate": "2025-10-10", "isAe": false, "conclusion": "产品缺陷成立", @@ -5004,7 +5004,7 @@ "registrationNo": "国械注进2026273878", "productName": "一次性使用静脉留置针", "hospitalName": "南京鼓楼医院", - "faultType": "渗漏", + "faultType": "运输损伤", "registerDate": "2024-11-09", "isAe": true, "conclusion": "操作不当", @@ -5018,7 +5018,7 @@ "registrationNo": "国械注进2022783821", "productName": "一次性使用输液器", "hospitalName": "四川大学华西医院", - "faultType": "标签不清", + "faultType": "灭菌标识异常", "registerDate": "2024-02-08", "isAe": true, "conclusion": "产品缺陷成立", @@ -5032,7 +5032,7 @@ "registrationNo": "国械注进2020684559", "productName": "一次性使用静脉留置针", "hospitalName": "郑州大学第一附属医院", - "faultType": "流速异常", + "faultType": "材料异物", "registerDate": "2024-03-04", "isAe": false, "conclusion": "运输损伤", @@ -5102,7 +5102,7 @@ "registrationNo": "国械注进2020703062", "productName": "一次性使用输液器", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "堵塞", + "faultType": "运输损伤", "registerDate": "2023-12-25", "isAe": false, "conclusion": "产品缺陷成立", @@ -5116,7 +5116,7 @@ "registrationNo": "国械注进2015206840", "productName": "血液透析管路", "hospitalName": "西安交通大学第一附属医院", - "faultType": "堵塞", + "faultType": "灭菌标识异常", "registerDate": "2023-12-04", "isAe": false, "conclusion": "运输损伤", @@ -5130,7 +5130,7 @@ "registrationNo": "国械注进2025559674", "productName": "一次性使用静脉留置针", "hospitalName": "中南大学湘雅医院", - "faultType": "包装破损", + "faultType": "材料异物", "registerDate": "2025-12-04", "isAe": false, "conclusion": "产品缺陷成立", @@ -5200,7 +5200,7 @@ "registrationNo": "国械注进2018805446", "productName": "一次性使用输液器", "hospitalName": "广东省人民医院", - "faultType": "标签不清", + "faultType": "运输损伤", "registerDate": "2025-11-16", "isAe": true, "conclusion": "操作不当", @@ -5214,7 +5214,7 @@ "registrationNo": "国械注进2020921637", "productName": "一次性使用输液器", "hospitalName": "福建省立医院", - "faultType": "堵塞", + "faultType": "灭菌标识异常", "registerDate": "2025-03-08", "isAe": false, "conclusion": "产品缺陷成立", @@ -5228,7 +5228,7 @@ "registrationNo": "国械注进2017544120", "productName": "血液透析管路", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "渗漏", + "faultType": "材料异物", "registerDate": "2025-04-29", "isAe": true, "conclusion": "未复现", @@ -5298,7 +5298,7 @@ "registrationNo": "国械注进2023859934", "productName": "血液透析管路", "hospitalName": "西安交通大学第一附属医院", - "faultType": "连接不牢", + "faultType": "运输损伤", "registerDate": "2025-06-10", "isAe": false, "conclusion": "运输损伤", @@ -5312,7 +5312,7 @@ "registrationNo": "国械注进2021635371", "productName": "一次性使用输液器", "hospitalName": "福建省立医院", - "faultType": "流速异常", + "faultType": "灭菌标识异常", "registerDate": "2024-12-14", "isAe": false, "conclusion": "未复现", @@ -5326,7 +5326,7 @@ "registrationNo": "国械注进2022398768", "productName": "一次性使用静脉留置针", "hospitalName": "西安交通大学第一附属医院", - "faultType": "包装破损", + "faultType": "材料异物", "registerDate": "2025-02-18", "isAe": false, "conclusion": "运输损伤", @@ -5396,7 +5396,7 @@ "registrationNo": "国械注进2025630686", "productName": "一次性使用输液器", "hospitalName": "山东大学齐鲁医院", - "faultType": "流速异常", + "faultType": "运输损伤", "registerDate": "2023-12-10", "isAe": true, "conclusion": "未复现", @@ -5410,7 +5410,7 @@ "registrationNo": "国械注进2019352985", "productName": "一次性使用输液器", "hospitalName": "广东省人民医院", - "faultType": "标签不清", + "faultType": "灭菌标识异常", "registerDate": "2023-12-12", "isAe": true, "conclusion": "产品缺陷成立", @@ -5424,7 +5424,7 @@ "registrationNo": "国械注进2024670092", "productName": "血液透析器", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "包装破损", + "faultType": "材料异物", "registerDate": "2025-11-01", "isAe": false, "conclusion": "运输损伤", @@ -5494,7 +5494,7 @@ "registrationNo": "国械注进2018697613", "productName": "一次性使用输液器", "hospitalName": "四川大学华西医院", - "faultType": "流速异常", + "faultType": "运输损伤", "registerDate": "2024-06-19", "isAe": false, "conclusion": "产品缺陷成立", @@ -5508,7 +5508,7 @@ "registrationNo": "国械注进2022315182", "productName": "可吸收性外科缝线", "hospitalName": "上海市第一人民医院", - "faultType": "断裂", + "faultType": "灭菌标识异常", "registerDate": "2026-03-18", "isAe": true, "conclusion": "运输损伤", @@ -5522,7 +5522,7 @@ "registrationNo": "国械注进2025598557", "productName": "血液透析管路", "hospitalName": "四川大学华西医院", - "faultType": "堵塞", + "faultType": "材料异物", "registerDate": "2023-11-13", "isAe": false, "conclusion": "资料不足", @@ -5592,7 +5592,7 @@ "registrationNo": "国械注进2016507315", "productName": "血液透析器", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "包装破损", + "faultType": "运输损伤", "registerDate": "2025-04-30", "isAe": true, "conclusion": "资料不足", @@ -5606,7 +5606,7 @@ "registrationNo": "国械注进2024145697", "productName": "一次性使用静脉留置针", "hospitalName": "中南大学湘雅医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2025-12-16", "isAe": false, "conclusion": "运输损伤", @@ -5620,7 +5620,7 @@ "registrationNo": "国械注进2016412030", "productName": "可吸收性外科缝线", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "标签不清", + "faultType": "材料异物", "registerDate": "2026-02-03", "isAe": false, "conclusion": "产品缺陷成立", @@ -5690,7 +5690,7 @@ "registrationNo": "国械注进2020514830", "productName": "血液透析管路", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "堵塞", + "faultType": "运输损伤", "registerDate": "2025-02-05", "isAe": false, "conclusion": "资料不足", @@ -5704,7 +5704,7 @@ "registrationNo": "国械注进2015330016", "productName": "血液透析器", "hospitalName": "郑州大学第一附属医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2025-04-14", "isAe": false, "conclusion": "资料不足", @@ -5718,7 +5718,7 @@ "registrationNo": "国械注进2020485747", "productName": "血液透析器", "hospitalName": "广东省人民医院", - "faultType": "连接不牢", + "faultType": "材料异物", "registerDate": "2025-11-05", "isAe": false, "conclusion": "未复现", @@ -5788,7 +5788,7 @@ "registrationNo": "国械注进2026227516", "productName": "血液透析器", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "连接不牢", + "faultType": "运输损伤", "registerDate": "2025-01-06", "isAe": false, "conclusion": "产品缺陷成立", @@ -5802,7 +5802,7 @@ "registrationNo": "国械注进2022558584", "productName": "一次性使用输液器", "hospitalName": "西安交通大学第一附属医院", - "faultType": "标签不清", + "faultType": "灭菌标识异常", "registerDate": "2025-08-02", "isAe": false, "conclusion": "产品缺陷成立", @@ -5816,7 +5816,7 @@ "registrationNo": "国械注进2018904755", "productName": "可吸收性外科缝线", "hospitalName": "中南大学湘雅医院", - "faultType": "标签不清", + "faultType": "材料异物", "registerDate": "2026-02-03", "isAe": false, "conclusion": "产品缺陷成立", @@ -5886,7 +5886,7 @@ "registrationNo": "国械注进2022778627", "productName": "血液透析管路", "hospitalName": "西安交通大学第一附属医院", - "faultType": "堵塞", + "faultType": "运输损伤", "registerDate": "2025-01-20", "isAe": false, "conclusion": "运输损伤", @@ -5900,7 +5900,7 @@ "registrationNo": "国械注进2018144401", "productName": "可吸收性外科缝线", "hospitalName": "广东省人民医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2023-10-08", "isAe": false, "conclusion": "产品缺陷成立", @@ -5914,7 +5914,7 @@ "registrationNo": "国械注进2026520307", "productName": "血液透析器", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "断裂", + "faultType": "材料异物", "registerDate": "2025-12-03", "isAe": false, "conclusion": "资料不足", @@ -5984,7 +5984,7 @@ "registrationNo": "国械注进2022800409", "productName": "一次性使用输液器", "hospitalName": "中南大学湘雅医院", - "faultType": "堵塞", + "faultType": "运输损伤", "registerDate": "2024-03-07", "isAe": false, "conclusion": "产品缺陷成立", @@ -5998,7 +5998,7 @@ "registrationNo": "国械注进2025543048", "productName": "可吸收性外科缝线", "hospitalName": "南京鼓楼医院", - "faultType": "标签不清", + "faultType": "灭菌标识异常", "registerDate": "2025-08-03", "isAe": true, "conclusion": "资料不足", @@ -6012,7 +6012,7 @@ "registrationNo": "国械注进2026450828", "productName": "血液透析器", "hospitalName": "西安交通大学第一附属医院", - "faultType": "包装破损", + "faultType": "材料异物", "registerDate": "2026-03-27", "isAe": false, "conclusion": "操作不当", @@ -6082,7 +6082,7 @@ "registrationNo": "国械注进2022609059", "productName": "一次性使用静脉留置针", "hospitalName": "上海市第一人民医院", - "faultType": "渗漏", + "faultType": "运输损伤", "registerDate": "2026-03-28", "isAe": false, "conclusion": "运输损伤", @@ -6096,7 +6096,7 @@ "registrationNo": "国械注进2018683197", "productName": "血液透析管路", "hospitalName": "山东大学齐鲁医院", - "faultType": "堵塞", + "faultType": "灭菌标识异常", "registerDate": "2025-01-02", "isAe": false, "conclusion": "未复现", @@ -6110,7 +6110,7 @@ "registrationNo": "国械注进2015585787", "productName": "一次性使用输液器", "hospitalName": "郑州大学第一附属医院", - "faultType": "流速异常", + "faultType": "材料异物", "registerDate": "2023-10-08", "isAe": false, "conclusion": "操作不当", @@ -6180,7 +6180,7 @@ "registrationNo": "国械注进2023412078", "productName": "可吸收性外科缝线", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "包装破损", + "faultType": "运输损伤", "registerDate": "2025-07-23", "isAe": false, "conclusion": "产品缺陷成立", @@ -6194,7 +6194,7 @@ "registrationNo": "国械注进2017691904", "productName": "一次性使用输液器", "hospitalName": "上海市第一人民医院", - "faultType": "标签不清", + "faultType": "灭菌标识异常", "registerDate": "2023-11-22", "isAe": false, "conclusion": "未复现", @@ -6208,7 +6208,7 @@ "registrationNo": "国械注进2022534579", "productName": "血液透析器", "hospitalName": "四川大学华西医院", - "faultType": "连接不牢", + "faultType": "材料异物", "registerDate": "2025-02-07", "isAe": true, "conclusion": "资料不足", @@ -6278,7 +6278,7 @@ "registrationNo": "国械注进2025993044", "productName": "一次性使用输液器", "hospitalName": "中南大学湘雅医院", - "faultType": "堵塞", + "faultType": "运输损伤", "registerDate": "2024-08-01", "isAe": false, "conclusion": "产品缺陷成立", @@ -6292,7 +6292,7 @@ "registrationNo": "国械注进2019718030", "productName": "一次性使用输液器", "hospitalName": "郑州大学第一附属医院", - "faultType": "流速异常", + "faultType": "灭菌标识异常", "registerDate": "2024-10-06", "isAe": false, "conclusion": "未复现", @@ -6306,7 +6306,7 @@ "registrationNo": "国械注进2021960757", "productName": "可吸收性外科缝线", "hospitalName": "南京鼓楼医院", - "faultType": "包装破损", + "faultType": "材料异物", "registerDate": "2024-08-21", "isAe": true, "conclusion": "操作不当", @@ -6376,7 +6376,7 @@ "registrationNo": "国械注进2015826435", "productName": "一次性使用输液器", "hospitalName": "中南大学湘雅医院", - "faultType": "流速异常", + "faultType": "运输损伤", "registerDate": "2025-09-26", "isAe": false, "conclusion": "资料不足", @@ -6390,7 +6390,7 @@ "registrationNo": "国械注进2019975000", "productName": "血液透析器", "hospitalName": "中南大学湘雅医院", - "faultType": "断裂", + "faultType": "灭菌标识异常", "registerDate": "2025-03-24", "isAe": false, "conclusion": "产品缺陷成立", @@ -6404,7 +6404,7 @@ "registrationNo": "国械注进2015729505", "productName": "血液透析管路", "hospitalName": "郑州大学第一附属医院", - "faultType": "连接不牢", + "faultType": "材料异物", "registerDate": "2023-12-20", "isAe": false, "conclusion": "运输损伤", @@ -6474,7 +6474,7 @@ "registrationNo": "国械注进2016121832", "productName": "一次性使用输液器", "hospitalName": "上海市第一人民医院", - "faultType": "流速异常", + "faultType": "运输损伤", "registerDate": "2025-04-20", "isAe": false, "conclusion": "运输损伤", @@ -6488,7 +6488,7 @@ "registrationNo": "国械注进2021355083", "productName": "一次性使用静脉留置针", "hospitalName": "中南大学湘雅医院", - "faultType": "渗漏", + "faultType": "灭菌标识异常", "registerDate": "2025-12-17", "isAe": false, "conclusion": "运输损伤", @@ -6502,7 +6502,7 @@ "registrationNo": "国械注进2023316190", "productName": "可吸收性外科缝线", "hospitalName": "南京鼓楼医院", - "faultType": "断裂", + "faultType": "材料异物", "registerDate": "2026-03-15", "isAe": false, "conclusion": "操作不当", @@ -6572,7 +6572,7 @@ "registrationNo": "国械注进2021742635", "productName": "血液透析器", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "流速异常", + "faultType": "运输损伤", "registerDate": "2023-09-07", "isAe": false, "conclusion": "未复现", @@ -6586,7 +6586,7 @@ "registrationNo": "国械注进2026953620", "productName": "可吸收性外科缝线", "hospitalName": "广东省人民医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2026-01-07", "isAe": true, "conclusion": "产品缺陷成立", @@ -6600,7 +6600,7 @@ "registrationNo": "国械注进2025844558", "productName": "血液透析器", "hospitalName": "郑州大学第一附属医院", - "faultType": "流速异常", + "faultType": "材料异物", "registerDate": "2026-03-07", "isAe": false, "conclusion": "产品缺陷成立", @@ -6670,7 +6670,7 @@ "registrationNo": "国械注进2021888897", "productName": "一次性使用输液器", "hospitalName": "西安交通大学第一附属医院", - "faultType": "堵塞", + "faultType": "运输损伤", "registerDate": "2024-06-23", "isAe": true, "conclusion": "操作不当", @@ -6684,7 +6684,7 @@ "registrationNo": "国械注进2025192174", "productName": "可吸收性外科缝线", "hospitalName": "福建省立医院", - "faultType": "断裂", + "faultType": "灭菌标识异常", "registerDate": "2024-07-25", "isAe": false, "conclusion": "未复现", @@ -6698,7 +6698,7 @@ "registrationNo": "国械注进2016442016", "productName": "血液透析管路", "hospitalName": "郑州大学第一附属医院", - "faultType": "堵塞", + "faultType": "材料异物", "registerDate": "2023-12-30", "isAe": false, "conclusion": "运输损伤", @@ -6768,7 +6768,7 @@ "registrationNo": "国械注进2022562218", "productName": "一次性使用输液器", "hospitalName": "四川大学华西医院", - "faultType": "堵塞", + "faultType": "运输损伤", "registerDate": "2025-08-18", "isAe": false, "conclusion": "操作不当", @@ -6782,7 +6782,7 @@ "registrationNo": "国械注进2024252075", "productName": "血液透析管路", "hospitalName": "上海市第一人民医院", - "faultType": "连接不牢", + "faultType": "灭菌标识异常", "registerDate": "2023-09-22", "isAe": false, "conclusion": "操作不当", @@ -6796,7 +6796,7 @@ "registrationNo": "国械注进2025598322", "productName": "血液透析管路", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "连接不牢", + "faultType": "材料异物", "registerDate": "2025-07-21", "isAe": false, "conclusion": "产品缺陷成立", @@ -6866,7 +6866,7 @@ "registrationNo": "国械注进2024875617", "productName": "血液透析器", "hospitalName": "南京鼓楼医院", - "faultType": "连接不牢", + "faultType": "运输损伤", "registerDate": "2025-07-14", "isAe": false, "conclusion": "产品缺陷成立", @@ -6880,7 +6880,7 @@ "registrationNo": "国械注进2015263092", "productName": "可吸收性外科缝线", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2023-09-21", "isAe": false, "conclusion": "产品缺陷成立", @@ -6894,7 +6894,7 @@ "registrationNo": "国械注进2022285162", "productName": "可吸收性外科缝线", "hospitalName": "山东大学齐鲁医院", - "faultType": "断裂", + "faultType": "材料异物", "registerDate": "2024-01-04", "isAe": false, "conclusion": "资料不足", @@ -6964,7 +6964,7 @@ "registrationNo": "国械注进2018120976", "productName": "一次性使用输液器", "hospitalName": "南京鼓楼医院", - "faultType": "标签不清", + "faultType": "运输损伤", "registerDate": "2025-10-29", "isAe": true, "conclusion": "未复现", @@ -6978,7 +6978,7 @@ "registrationNo": "国械注进2016631127", "productName": "一次性使用输液器", "hospitalName": "西安交通大学第一附属医院", - "faultType": "标签不清", + "faultType": "灭菌标识异常", "registerDate": "2025-10-04", "isAe": false, "conclusion": "操作不当", @@ -6992,7 +6992,7 @@ "registrationNo": "国械注进2019906947", "productName": "血液透析管路", "hospitalName": "广东省人民医院", - "faultType": "渗漏", + "faultType": "材料异物", "registerDate": "2026-02-10", "isAe": false, "conclusion": "资料不足", @@ -7062,7 +7062,7 @@ "registrationNo": "国械注进2016353395", "productName": "一次性使用静脉留置针", "hospitalName": "西安交通大学第一附属医院", - "faultType": "包装破损", + "faultType": "运输损伤", "registerDate": "2024-08-24", "isAe": true, "conclusion": "产品缺陷成立", @@ -7076,7 +7076,7 @@ "registrationNo": "国械注进2015788036", "productName": "血液透析管路", "hospitalName": "广东省人民医院", - "faultType": "连接不牢", + "faultType": "灭菌标识异常", "registerDate": "2025-03-04", "isAe": false, "conclusion": "产品缺陷成立", @@ -7090,7 +7090,7 @@ "registrationNo": "国械注进2024422436", "productName": "血液透析管路", "hospitalName": "四川大学华西医院", - "faultType": "渗漏", + "faultType": "材料异物", "registerDate": "2025-05-20", "isAe": false, "conclusion": "资料不足", @@ -7160,7 +7160,7 @@ "registrationNo": "国械注进2020905393", "productName": "一次性使用输液器", "hospitalName": "山东大学齐鲁医院", - "faultType": "渗漏", + "faultType": "运输损伤", "registerDate": "2025-06-10", "isAe": false, "conclusion": "资料不足", @@ -7174,7 +7174,7 @@ "registrationNo": "国械注进2017678447", "productName": "一次性使用输液器", "hospitalName": "郑州大学第一附属医院", - "faultType": "流速异常", + "faultType": "灭菌标识异常", "registerDate": "2025-08-10", "isAe": false, "conclusion": "运输损伤", @@ -7188,7 +7188,7 @@ "registrationNo": "国械注进2025531303", "productName": "一次性使用输液器", "hospitalName": "中南大学湘雅医院", - "faultType": "流速异常", + "faultType": "材料异物", "registerDate": "2025-10-08", "isAe": false, "conclusion": "未复现", @@ -7258,7 +7258,7 @@ "registrationNo": "国械注进2015909754", "productName": "血液透析器", "hospitalName": "广东省人民医院", - "faultType": "流速异常", + "faultType": "运输损伤", "registerDate": "2025-10-06", "isAe": true, "conclusion": "资料不足", @@ -7272,7 +7272,7 @@ "registrationNo": "国械注进2018874711", "productName": "一次性使用输液器", "hospitalName": "南京鼓楼医院", - "faultType": "渗漏", + "faultType": "灭菌标识异常", "registerDate": "2024-04-04", "isAe": false, "conclusion": "产品缺陷成立", @@ -7286,7 +7286,7 @@ "registrationNo": "国械注进2016341540", "productName": "血液透析器", "hospitalName": "南京鼓楼医院", - "faultType": "断裂", + "faultType": "材料异物", "registerDate": "2024-07-18", "isAe": true, "conclusion": "未复现", @@ -7356,7 +7356,7 @@ "registrationNo": "国械注进2018329110", "productName": "血液透析器", "hospitalName": "上海市第一人民医院", - "faultType": "断裂", + "faultType": "运输损伤", "registerDate": "2024-06-15", "isAe": false, "conclusion": "产品缺陷成立", @@ -7370,7 +7370,7 @@ "registrationNo": "国械注进2015916426", "productName": "一次性使用静脉留置针", "hospitalName": "福建省立医院", - "faultType": "连接不牢", + "faultType": "灭菌标识异常", "registerDate": "2024-06-24", "isAe": true, "conclusion": "产品缺陷成立", @@ -7384,7 +7384,7 @@ "registrationNo": "国械注进2015564065", "productName": "血液透析管路", "hospitalName": "南京鼓楼医院", - "faultType": "渗漏", + "faultType": "材料异物", "registerDate": "2023-10-15", "isAe": true, "conclusion": "操作不当", @@ -7454,7 +7454,7 @@ "registrationNo": "国械注进2025667423", "productName": "一次性使用静脉留置针", "hospitalName": "四川大学华西医院", - "faultType": "渗漏", + "faultType": "运输损伤", "registerDate": "2023-10-14", "isAe": false, "conclusion": "未复现", @@ -7468,7 +7468,7 @@ "registrationNo": "国械注进2021909321", "productName": "血液透析管路", "hospitalName": "西安交通大学第一附属医院", - "faultType": "堵塞", + "faultType": "灭菌标识异常", "registerDate": "2025-04-16", "isAe": false, "conclusion": "运输损伤", @@ -7482,7 +7482,7 @@ "registrationNo": "国械注进2022761535", "productName": "血液透析器", "hospitalName": "郑州大学第一附属医院", - "faultType": "断裂", + "faultType": "材料异物", "registerDate": "2024-09-20", "isAe": false, "conclusion": "资料不足", @@ -7552,7 +7552,7 @@ "registrationNo": "国械注进2022303339", "productName": "血液透析管路", "hospitalName": "西安交通大学第一附属医院", - "faultType": "堵塞", + "faultType": "运输损伤", "registerDate": "2024-06-23", "isAe": true, "conclusion": "资料不足", @@ -7566,7 +7566,7 @@ "registrationNo": "国械注进2018269415", "productName": "一次性使用输液器", "hospitalName": "西安交通大学第一附属医院", - "faultType": "堵塞", + "faultType": "灭菌标识异常", "registerDate": "2025-11-08", "isAe": true, "conclusion": "操作不当", @@ -7580,7 +7580,7 @@ "registrationNo": "国械注进2018433040", "productName": "一次性使用静脉留置针", "hospitalName": "西安交通大学第一附属医院", - "faultType": "包装破损", + "faultType": "材料异物", "registerDate": "2025-10-16", "isAe": false, "conclusion": "操作不当", @@ -7650,7 +7650,7 @@ "registrationNo": "国械注进2021791778", "productName": "可吸收性外科缝线", "hospitalName": "广东省人民医院", - "faultType": "断裂", + "faultType": "运输损伤", "registerDate": "2024-12-03", "isAe": false, "conclusion": "资料不足", @@ -7664,7 +7664,7 @@ "registrationNo": "国械注进2023759176", "productName": "一次性使用输液器", "hospitalName": "上海市第一人民医院", - "faultType": "流速异常", + "faultType": "灭菌标识异常", "registerDate": "2025-05-25", "isAe": true, "conclusion": "未复现", @@ -7678,7 +7678,7 @@ "registrationNo": "国械注进2024378130", "productName": "可吸收性外科缝线", "hospitalName": "四川大学华西医院", - "faultType": "标签不清", + "faultType": "材料异物", "registerDate": "2023-10-02", "isAe": false, "conclusion": "未复现", @@ -7748,7 +7748,7 @@ "registrationNo": "国械注进2024857799", "productName": "一次性使用输液器", "hospitalName": "山东大学齐鲁医院", - "faultType": "堵塞", + "faultType": "运输损伤", "registerDate": "2024-06-02", "isAe": false, "conclusion": "运输损伤", @@ -7762,7 +7762,7 @@ "registrationNo": "国械注进2022349922", "productName": "血液透析器", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "断裂", + "faultType": "灭菌标识异常", "registerDate": "2024-01-25", "isAe": false, "conclusion": "产品缺陷成立", @@ -7776,7 +7776,7 @@ "registrationNo": "国械注进2019866235", "productName": "可吸收性外科缝线", "hospitalName": "南京鼓楼医院", - "faultType": "断裂", + "faultType": "材料异物", "registerDate": "2024-09-06", "isAe": false, "conclusion": "运输损伤", @@ -7846,7 +7846,7 @@ "registrationNo": "国械注进2022718218", "productName": "血液透析器", "hospitalName": "福建省立医院", - "faultType": "流速异常", + "faultType": "运输损伤", "registerDate": "2023-12-02", "isAe": true, "conclusion": "未复现", @@ -7860,7 +7860,7 @@ "registrationNo": "国械注进2020231438", "productName": "血液透析管路", "hospitalName": "西安交通大学第一附属医院", - "faultType": "连接不牢", + "faultType": "灭菌标识异常", "registerDate": "2024-07-23", "isAe": true, "conclusion": "操作不当", @@ -7874,7 +7874,7 @@ "registrationNo": "国械注进2019473315", "productName": "可吸收性外科缝线", "hospitalName": "郑州大学第一附属医院", - "faultType": "标签不清", + "faultType": "材料异物", "registerDate": "2025-08-03", "isAe": true, "conclusion": "操作不当", @@ -7944,7 +7944,7 @@ "registrationNo": "国械注进2021887701", "productName": "一次性使用静脉留置针", "hospitalName": "南京鼓楼医院", - "faultType": "包装破损", + "faultType": "运输损伤", "registerDate": "2025-12-28", "isAe": true, "conclusion": "操作不当", @@ -7958,7 +7958,7 @@ "registrationNo": "国械注进2020537308", "productName": "一次性使用输液器", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "堵塞", + "faultType": "灭菌标识异常", "registerDate": "2025-12-20", "isAe": false, "conclusion": "操作不当", @@ -7972,7 +7972,7 @@ "registrationNo": "国械注进2020470141", "productName": "一次性使用静脉留置针", "hospitalName": "南京鼓楼医院", - "faultType": "渗漏", + "faultType": "材料异物", "registerDate": "2026-03-10", "isAe": false, "conclusion": "资料不足", @@ -8042,7 +8042,7 @@ "registrationNo": "国械注进2023736831", "productName": "一次性使用输液器", "hospitalName": "广东省人民医院", - "faultType": "流速异常", + "faultType": "运输损伤", "registerDate": "2024-11-22", "isAe": false, "conclusion": "运输损伤", @@ -8056,7 +8056,7 @@ "registrationNo": "国械注进2026858162", "productName": "可吸收性外科缝线", "hospitalName": "上海市第一人民医院", - "faultType": "标签不清", + "faultType": "灭菌标识异常", "registerDate": "2026-02-09", "isAe": false, "conclusion": "产品缺陷成立", @@ -8070,7 +8070,7 @@ "registrationNo": "国械注进2026608595", "productName": "一次性使用静脉留置针", "hospitalName": "中南大学湘雅医院", - "faultType": "流速异常", + "faultType": "材料异物", "registerDate": "2025-10-16", "isAe": true, "conclusion": "运输损伤", @@ -8140,7 +8140,7 @@ "registrationNo": "国械注进2026909137", "productName": "可吸收性外科缝线", "hospitalName": "广东省人民医院", - "faultType": "标签不清", + "faultType": "运输损伤", "registerDate": "2025-02-08", "isAe": true, "conclusion": "操作不当", @@ -8154,7 +8154,7 @@ "registrationNo": "国械注进2018722485", "productName": "一次性使用输液器", "hospitalName": "广东省人民医院", - "faultType": "堵塞", + "faultType": "灭菌标识异常", "registerDate": "2026-03-18", "isAe": false, "conclusion": "资料不足", @@ -8168,7 +8168,7 @@ "registrationNo": "国械注进2018706557", "productName": "血液透析管路", "hospitalName": "山东大学齐鲁医院", - "faultType": "渗漏", + "faultType": "材料异物", "registerDate": "2025-09-17", "isAe": true, "conclusion": "操作不当", @@ -8238,7 +8238,7 @@ "registrationNo": "国械注进2024808105", "productName": "一次性使用输液器", "hospitalName": "中南大学湘雅医院", - "faultType": "堵塞", + "faultType": "运输损伤", "registerDate": "2023-10-04", "isAe": false, "conclusion": "资料不足", @@ -8252,7 +8252,7 @@ "registrationNo": "国械注进2025192394", "productName": "一次性使用静脉留置针", "hospitalName": "四川大学华西医院", - "faultType": "连接不牢", + "faultType": "灭菌标识异常", "registerDate": "2025-01-09", "isAe": false, "conclusion": "操作不当", @@ -8266,7 +8266,7 @@ "registrationNo": "国械注进2026821511", "productName": "可吸收性外科缝线", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "包装破损", + "faultType": "材料异物", "registerDate": "2024-09-20", "isAe": false, "conclusion": "资料不足", @@ -8336,7 +8336,7 @@ "registrationNo": "国械注进2017129015", "productName": "血液透析管路", "hospitalName": "南京鼓楼医院", - "faultType": "渗漏", + "faultType": "运输损伤", "registerDate": "2026-02-09", "isAe": true, "conclusion": "操作不当", @@ -8350,7 +8350,7 @@ "registrationNo": "国械注进2026301295", "productName": "可吸收性外科缝线", "hospitalName": "山东大学齐鲁医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2024-09-30", "isAe": false, "conclusion": "操作不当", @@ -8364,7 +8364,7 @@ "registrationNo": "国械注进2021778953", "productName": "可吸收性外科缝线", "hospitalName": "四川大学华西医院", - "faultType": "标签不清", + "faultType": "材料异物", "registerDate": "2024-01-13", "isAe": true, "conclusion": "产品缺陷成立", @@ -8434,7 +8434,7 @@ "registrationNo": "国械注进2015812411", "productName": "一次性使用输液器", "hospitalName": "上海市第一人民医院", - "faultType": "标签不清", + "faultType": "运输损伤", "registerDate": "2024-10-27", "isAe": false, "conclusion": "未复现", @@ -8448,7 +8448,7 @@ "registrationNo": "国械注进2023440140", "productName": "血液透析管路", "hospitalName": "山东大学齐鲁医院", - "faultType": "渗漏", + "faultType": "灭菌标识异常", "registerDate": "2025-10-15", "isAe": false, "conclusion": "运输损伤", @@ -8462,7 +8462,7 @@ "registrationNo": "国械注进2021262299", "productName": "血液透析管路", "hospitalName": "西安交通大学第一附属医院", - "faultType": "连接不牢", + "faultType": "材料异物", "registerDate": "2023-08-24", "isAe": false, "conclusion": "产品缺陷成立", @@ -8532,7 +8532,7 @@ "registrationNo": "国械注进2026616127", "productName": "血液透析器", "hospitalName": "中南大学湘雅医院", - "faultType": "流速异常", + "faultType": "运输损伤", "registerDate": "2025-11-20", "isAe": true, "conclusion": "未复现", @@ -8546,7 +8546,7 @@ "registrationNo": "国械注进2016922125", "productName": "一次性使用静脉留置针", "hospitalName": "南京鼓楼医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2024-03-03", "isAe": false, "conclusion": "未复现", @@ -8560,7 +8560,7 @@ "registrationNo": "国械注进2017705974", "productName": "可吸收性外科缝线", "hospitalName": "广东省人民医院", - "faultType": "包装破损", + "faultType": "材料异物", "registerDate": "2025-11-02", "isAe": false, "conclusion": "运输损伤", @@ -8630,7 +8630,7 @@ "registrationNo": "国械注进2021279742", "productName": "一次性使用输液器", "hospitalName": "福建省立医院", - "faultType": "渗漏", + "faultType": "运输损伤", "registerDate": "2024-05-31", "isAe": false, "conclusion": "资料不足", @@ -8644,7 +8644,7 @@ "registrationNo": "国械注进2026710578", "productName": "一次性使用静脉留置针", "hospitalName": "南京鼓楼医院", - "faultType": "渗漏", + "faultType": "灭菌标识异常", "registerDate": "2025-06-11", "isAe": false, "conclusion": "未复现", @@ -8658,7 +8658,7 @@ "registrationNo": "国械注进2024272333", "productName": "一次性使用输液器", "hospitalName": "福建省立医院", - "faultType": "堵塞", + "faultType": "材料异物", "registerDate": "2025-11-19", "isAe": false, "conclusion": "资料不足", @@ -8728,7 +8728,7 @@ "registrationNo": "国械注进2018885561", "productName": "血液透析器", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "断裂", + "faultType": "运输损伤", "registerDate": "2025-03-15", "isAe": false, "conclusion": "产品缺陷成立", @@ -8742,7 +8742,7 @@ "registrationNo": "国械注进2026608979", "productName": "一次性使用输液器", "hospitalName": "福建省立医院", - "faultType": "流速异常", + "faultType": "灭菌标识异常", "registerDate": "2024-12-06", "isAe": true, "conclusion": "资料不足", @@ -8756,7 +8756,7 @@ "registrationNo": "国械注进2019117142", "productName": "可吸收性外科缝线", "hospitalName": "福建省立医院", - "faultType": "包装破损", + "faultType": "材料异物", "registerDate": "2024-06-20", "isAe": false, "conclusion": "资料不足", @@ -8826,7 +8826,7 @@ "registrationNo": "国械注进2025945882", "productName": "一次性使用输液器", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "标签不清", + "faultType": "运输损伤", "registerDate": "2026-04-04", "isAe": false, "conclusion": "资料不足", @@ -8840,7 +8840,7 @@ "registrationNo": "国械注进2015416071", "productName": "一次性使用输液器", "hospitalName": "南京鼓楼医院", - "faultType": "堵塞", + "faultType": "灭菌标识异常", "registerDate": "2024-05-25", "isAe": false, "conclusion": "运输损伤", @@ -8854,7 +8854,7 @@ "registrationNo": "国械注进2025770800", "productName": "血液透析管路", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "连接不牢", + "faultType": "材料异物", "registerDate": "2024-01-19", "isAe": true, "conclusion": "操作不当", @@ -8924,7 +8924,7 @@ "registrationNo": "国械注进2023572678", "productName": "血液透析管路", "hospitalName": "中南大学湘雅医院", - "faultType": "渗漏", + "faultType": "运输损伤", "registerDate": "2025-12-15", "isAe": false, "conclusion": "运输损伤", @@ -8938,7 +8938,7 @@ "registrationNo": "国械注进2022534973", "productName": "血液透析器", "hospitalName": "中南大学湘雅医院", - "faultType": "流速异常", + "faultType": "灭菌标识异常", "registerDate": "2024-09-10", "isAe": false, "conclusion": "产品缺陷成立", @@ -8952,7 +8952,7 @@ "registrationNo": "国械注进2020267108", "productName": "血液透析管路", "hospitalName": "西安交通大学第一附属医院", - "faultType": "堵塞", + "faultType": "材料异物", "registerDate": "2023-12-11", "isAe": false, "conclusion": "运输损伤", @@ -9022,7 +9022,7 @@ "registrationNo": "国械注进2019451312", "productName": "血液透析管路", "hospitalName": "南京鼓楼医院", - "faultType": "渗漏", + "faultType": "运输损伤", "registerDate": "2024-01-21", "isAe": false, "conclusion": "运输损伤", @@ -9036,7 +9036,7 @@ "registrationNo": "国械注进2018933533", "productName": "可吸收性外科缝线", "hospitalName": "中南大学湘雅医院", - "faultType": "标签不清", + "faultType": "灭菌标识异常", "registerDate": "2025-02-06", "isAe": true, "conclusion": "未复现", @@ -9050,7 +9050,7 @@ "registrationNo": "国械注进2017685481", "productName": "一次性使用静脉留置针", "hospitalName": "南京鼓楼医院", - "faultType": "流速异常", + "faultType": "材料异物", "registerDate": "2025-03-15", "isAe": true, "conclusion": "操作不当", @@ -9120,7 +9120,7 @@ "registrationNo": "国械注进2016555600", "productName": "一次性使用输液器", "hospitalName": "山东大学齐鲁医院", - "faultType": "渗漏", + "faultType": "运输损伤", "registerDate": "2025-01-11", "isAe": false, "conclusion": "未复现", @@ -9134,7 +9134,7 @@ "registrationNo": "国械注进2020753642", "productName": "可吸收性外科缝线", "hospitalName": "山东大学齐鲁医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2025-07-26", "isAe": false, "conclusion": "资料不足", @@ -9148,7 +9148,7 @@ "registrationNo": "国械注进2022233525", "productName": "血液透析器", "hospitalName": "西安交通大学第一附属医院", - "faultType": "连接不牢", + "faultType": "材料异物", "registerDate": "2023-09-08", "isAe": true, "conclusion": "未复现", @@ -9218,7 +9218,7 @@ "registrationNo": "国械注进2015686710", "productName": "一次性使用静脉留置针", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "包装破损", + "faultType": "运输损伤", "registerDate": "2025-06-19", "isAe": false, "conclusion": "未复现", @@ -9232,7 +9232,7 @@ "registrationNo": "国械注进2015584254", "productName": "一次性使用输液器", "hospitalName": "中南大学湘雅医院", - "faultType": "堵塞", + "faultType": "灭菌标识异常", "registerDate": "2024-12-10", "isAe": false, "conclusion": "运输损伤", @@ -9246,7 +9246,7 @@ "registrationNo": "国械注进2022253442", "productName": "可吸收性外科缝线", "hospitalName": "四川大学华西医院", - "faultType": "断裂", + "faultType": "材料异物", "registerDate": "2024-08-06", "isAe": false, "conclusion": "产品缺陷成立", @@ -9316,7 +9316,7 @@ "registrationNo": "国械注进2026577282", "productName": "可吸收性外科缝线", "hospitalName": "浙江大学医学院附属第二医院", - "faultType": "标签不清", + "faultType": "运输损伤", "registerDate": "2024-03-09", "isAe": false, "conclusion": "未复现", @@ -9330,7 +9330,7 @@ "registrationNo": "国械注进2024191982", "productName": "可吸收性外科缝线", "hospitalName": "中南大学湘雅医院", - "faultType": "标签不清", + "faultType": "灭菌标识异常", "registerDate": "2025-01-08", "isAe": false, "conclusion": "未复现", @@ -9344,7 +9344,7 @@ "registrationNo": "国械注进2026174385", "productName": "血液透析管路", "hospitalName": "西安交通大学第一附属医院", - "faultType": "渗漏", + "faultType": "材料异物", "registerDate": "2024-05-30", "isAe": false, "conclusion": "运输损伤", @@ -9414,7 +9414,7 @@ "registrationNo": "国械注进2015608478", "productName": "血液透析管路", "hospitalName": "上海市第一人民医院", - "faultType": "堵塞", + "faultType": "运输损伤", "registerDate": "2024-06-14", "isAe": false, "conclusion": "资料不足", @@ -9428,7 +9428,7 @@ "registrationNo": "国械注进2024766107", "productName": "血液透析管路", "hospitalName": "福建省立医院", - "faultType": "堵塞", + "faultType": "灭菌标识异常", "registerDate": "2025-02-22", "isAe": false, "conclusion": "未复现", @@ -9442,7 +9442,7 @@ "registrationNo": "国械注进2025148899", "productName": "血液透析器", "hospitalName": "中南大学湘雅医院", - "faultType": "连接不牢", + "faultType": "材料异物", "registerDate": "2025-06-05", "isAe": false, "conclusion": "操作不当", @@ -9512,7 +9512,7 @@ "registrationNo": "国械注进2026978629", "productName": "可吸收性外科缝线", "hospitalName": "南京鼓楼医院", - "faultType": "包装破损", + "faultType": "运输损伤", "registerDate": "2024-08-17", "isAe": true, "conclusion": "资料不足", @@ -9526,7 +9526,7 @@ "registrationNo": "国械注进2024727562", "productName": "血液透析管路", "hospitalName": "广东省人民医院", - "faultType": "连接不牢", + "faultType": "灭菌标识异常", "registerDate": "2026-03-31", "isAe": false, "conclusion": "运输损伤", @@ -9540,7 +9540,7 @@ "registrationNo": "国械注进2018395416", "productName": "一次性使用输液器", "hospitalName": "中南大学湘雅医院", - "faultType": "流速异常", + "faultType": "材料异物", "registerDate": "2023-12-29", "isAe": false, "conclusion": "未复现", @@ -9610,7 +9610,7 @@ "registrationNo": "国械注进2021673491", "productName": "血液透析器", "hospitalName": "西安交通大学第一附属医院", - "faultType": "连接不牢", + "faultType": "运输损伤", "registerDate": "2024-02-28", "isAe": false, "conclusion": "产品缺陷成立", @@ -9624,7 +9624,7 @@ "registrationNo": "国械注进2022235323", "productName": "血液透析器", "hospitalName": "广东省人民医院", - "faultType": "包装破损", + "faultType": "灭菌标识异常", "registerDate": "2024-07-04", "isAe": false, "conclusion": "资料不足", @@ -9638,7 +9638,7 @@ "registrationNo": "国械注进2020194618", "productName": "一次性使用静脉留置针", "hospitalName": "广东省人民医院", - "faultType": "流速异常", + "faultType": "材料异物", "registerDate": "2024-07-16", "isAe": false, "conclusion": "运输损伤", @@ -9708,7 +9708,7 @@ "registrationNo": "国械注进2019355246", "productName": "可吸收性外科缝线", "hospitalName": "西安交通大学第一附属医院", - "faultType": "断裂", + "faultType": "运输损伤", "registerDate": "2024-04-22", "isAe": true, "conclusion": "运输损伤", @@ -9722,7 +9722,7 @@ "registrationNo": "国械注进2015141886", "productName": "可吸收性外科缝线", "hospitalName": "福建省立医院", - "faultType": "标签不清", + "faultType": "灭菌标识异常", "registerDate": "2024-11-07", "isAe": false, "conclusion": "资料不足", @@ -9736,7 +9736,7 @@ "registrationNo": "国械注进2025897188", "productName": "可吸收性外科缝线", "hospitalName": "广东省人民医院", - "faultType": "标签不清", + "faultType": "材料异物", "registerDate": "2023-10-01", "isAe": false, "conclusion": "资料不足", diff --git a/analytics-demo-web/src/config/analysis-config.ts b/analytics-demo-web/src/config/analysis-config.ts index ea78744..12ac445 100644 --- a/analytics-demo-web/src/config/analysis-config.ts +++ b/analytics-demo-web/src/config/analysis-config.ts @@ -2,13 +2,14 @@ import type { EChartsOption } from 'echarts' import type { AnalysisContext, AnalysisPageDefinition, ChartDefinition } from '../types/analysis' import { buildAeMonthlyByOccurrence, + buildAeMonthlyWithYearAverage, buildComplaintPareto, buildComplianceMatching, buildGlobalMonthlyPpm, buildInjuryDeviceMatrix, + buildMonthlyProductAndAeCounts, buildProvinceAeCounts, buildPsurTopProducts, - buildReportingLagDays, buildSaeMonthlyByOccurrence, buildSaeShareMonthly, buildTopDeviceFailures, @@ -88,13 +89,29 @@ const lineOption = ( subtextStyle: { fontSize: 11, color: '#64748b' }, }, tooltip: { trigger: 'axis' }, - grid: { top: subtext ? 78 : 60, right: 24, bottom: 40, left: 40 }, - xAxis: { type: 'category', data: xAxis }, - yAxis: { type: 'value' }, + grid: { top: subtext ? 78 : 60, right: 24, bottom: 40, left: 48 }, + xAxis: { type: 'category', name: '时间(年月)', data: xAxis }, + yAxis: { type: 'value', name: seriesName }, series: [{ name: seriesName, type: 'line', smooth: true, data: seriesData }], }) -const barOption = (title: string, labels: string[], values: number[], subtext?: string): EChartsOption => ({ +type BarAxisConfig = { + xName?: string + yName?: string + bottom?: number + left?: number + rotate?: number + interval?: number + fontSize?: number +} + +const barOption = ( + title: string, + labels: string[], + values: number[], + subtext?: string, + axis?: BarAxisConfig, +): EChartsOption => ({ title: { text: title, subtext, @@ -103,10 +120,19 @@ const barOption = (title: string, labels: string[], values: number[], subtext?: subtextStyle: { fontSize: 11, color: '#64748b' }, }, tooltip: { trigger: 'axis' }, - grid: { top: subtext ? 78 : 60, right: 24, bottom: 60, left: 45 }, - xAxis: { type: 'category', data: labels, axisLabel: { rotate: 20 } }, - yAxis: { type: 'value' }, - series: [{ type: 'bar', data: values, itemStyle: { borderRadius: [4, 4, 0, 0] } }], + grid: { top: subtext ? 78 : 60, right: 24, bottom: axis?.bottom ?? 60, left: axis?.left ?? 45 }, + xAxis: { + type: 'category', + ...(axis?.xName ? { name: axis.xName } : {}), + data: labels, + axisLabel: { + rotate: axis?.rotate ?? 20, + ...(axis?.interval !== undefined ? { interval: axis.interval } : {}), + ...(axis?.fontSize !== undefined ? { fontSize: axis.fontSize } : {}), + }, + }, + yAxis: { type: 'value', name: axis?.yName ?? '条数' }, + series: [{ type: 'bar', data: values, itemStyle: { borderRadius: [4, 4, 0, 0] }, label: { show: true, position: 'top', fontSize: 11 } }], }) const injuryDeviceHeatmapOption = (saeOnly: boolean, title: string, subtext: string) => { @@ -124,8 +150,8 @@ const injuryDeviceHeatmapOption = (saeOnly: boolean, title: string, subtext: str }, tooltip: { position: 'top' }, grid: { top: 88, height: Math.max(220, injuries.length * 28), left: 80, right: 24, bottom: 48 }, - xAxis: { type: 'category', data: devices, splitArea: { show: true } }, - yAxis: { type: 'category', data: injuries, splitArea: { show: true } }, + xAxis: { type: 'category', name: '器械故障', data: devices, splitArea: { show: true } }, + yAxis: { type: 'category', name: '伤害表现', data: injuries, splitArea: { show: true } }, visualMap: { min: 0, max, @@ -149,30 +175,57 @@ const injuryDeviceHeatmapOption = (saeOnly: boolean, title: string, subtext: str } const reportingLagHistogramOption = (context: AnalysisContext): EChartsOption => { - const lags = buildReportingLagDays(context).filter((d) => d >= 0) - const bins = ['0–1', '2–3', '4–5', '6–7', '8–10', '>10'] + const m = buildComplianceMatching(context) + const lags = m.matchedLagDays + const THRESHOLD = 15 + const bins = ['0–3', '4–7', '8–15', '16–30', '31–45', '>45'] const counts = [0, 0, 0, 0, 0, 0] lags.forEach((d) => { - if (d <= 1) counts[0] += 1 - else if (d <= 3) counts[1] += 1 - else if (d <= 5) counts[2] += 1 - else if (d <= 7) counts[3] += 1 - else if (d <= 10) counts[4] += 1 + if (d <= 3) counts[0] += 1 + else if (d <= 7) counts[1] += 1 + else if (d <= THRESHOLD) counts[2] += 1 + else if (d <= 30) counts[3] += 1 + else if (d <= 45) counts[4] += 1 else counts[5] += 1 }) + const total = lags.length + const compliant = counts[0] + counts[1] + counts[2] + const overWindow = total - compliant + const complianceRate = total > 0 ? ((compliant / total) * 100).toFixed(1) : 'N/A' + const GREEN = '#22c55e' + const RED = '#ef4444' return { title: { - text: '上报滞后天数分布(审核日期 − 登记日期)', - subtext: `${COMPLIANCE_DOC_REF}|CMP-AE-701`, + text: 'CMP-AE-701 上报合规率', + subtext: `基准 ${m.flaggedTotal} 条(isAe=是)|匹配 ${m.matched} 条|可判定 ${total} 条|合规(≤${THRESHOLD}天)${compliant} 条|超窗 ${overWindow} 条|合规率 ${complianceRate}%`, left: 'center', textStyle: { fontSize: 14 }, subtextStyle: { fontSize: 11, color: '#64748b' }, }, - tooltip: { trigger: 'axis' }, - grid: { top: 88, right: 24, bottom: 40, left: 40 }, - xAxis: { type: 'category', data: bins }, - yAxis: { type: 'value', name: 'AE 条数' }, - series: [{ type: 'bar', data: counts, itemStyle: { borderRadius: [4, 4, 0, 0] } }], + tooltip: { + trigger: 'axis', + formatter: (params: any) => { + const row = Array.isArray(params) ? params[0] : params + const bin = row?.axisValue ?? '' + const val = row?.value ?? 0 + const isOver = ['16–30', '31–45', '>45'].includes(bin) + const tag = isOver ? '⚠ 超窗' : '✓ 合规' + return `${bin} 天
匹配 AE 条数:${val}
状态:${tag}` + }, + }, + grid: { top: 96, right: 24, bottom: 48, left: 48 }, + xAxis: { type: 'category', name: '滞后天数(天)', data: bins }, + yAxis: { type: 'value', name: '匹配 AE 条数(条)' }, + series: [ + { + type: 'bar', + data: counts.map((v, i) => ({ + value: v, + itemStyle: { color: i <= 2 ? GREEN : RED, borderRadius: [4, 4, 0, 0] }, + })), + label: { show: true, position: 'top', fontSize: 11 }, + }, + ], } } @@ -180,52 +233,43 @@ const complianceAuditSummaryOption = (context: AnalysisContext): EChartsOption = const m = buildComplianceMatching(context) return { title: { - text: '上报合规审计摘要', - subtext: COMPLIANCE_FOOTNOTE_AUDIT, + text: 'CMP-CV-101 上报合规审计摘要', + subtext: `基准 ${m.flaggedTotal} 条|匹配 ${m.matched} 条|疑似漏报 ${m.missed} 条|${COMPLIANCE_FOOTNOTE_AUDIT}`, left: 'center', textStyle: { fontSize: 14 }, subtextStyle: { fontSize: 11, color: '#64748b' }, }, - tooltip: { trigger: 'axis' }, + tooltip: { + trigger: 'axis', + formatter: (params: any) => { + const row = Array.isArray(params) ? params[0] : params + const name = row?.axisValue ?? '' + const val = row?.value ?? 0 + const countMap: Record = { + '漏报率': `疑似漏报 ${m.missed} / 基准 ${m.flaggedTotal} 条`, + '匹配率': `匹配成功 ${m.matched} / 基准 ${m.flaggedTotal} 条`, + '时效(登记)': `登记口径:Lag = 审核日期 − 登记日期 ≤ 15天`, + '时效(C3)': `C3口径:Lag = 审核日期 − C3登记日期 ≤ 15天`, + } + return `${name}
占比:${val}%
${countMap[name] ?? ''}` + }, + }, legend: { top: 72, data: ['占比%'] }, grid: { top: 110, right: 24, bottom: 56, left: 48 }, xAxis: { type: 'category', + name: '审计指标', data: ['漏报率', '匹配率', '时效(登记)', '时效(C3)'], axisLabel: { interval: 0, rotate: 0 }, }, - yAxis: { type: 'value', name: '%', max: 100 }, + yAxis: { type: 'value', name: '占比(%)', max: 100 }, series: [ { name: '占比%', type: 'bar', data: [m.leakRate, m.matchRate, m.timelinessFromRegistrationPct, m.timelinessFromC3Pct], itemStyle: { borderRadius: [4, 4, 0, 0] }, - }, - ], - } -} - -const complianceAuditCountsOption = (context: AnalysisContext): EChartsOption => { - const m = buildComplianceMatching(context) - return { - title: { - text: '应报样本量(投诉 isAe=是)', - subtext: `基准 ${m.flaggedTotal} 条|匹配 ${m.matched}|疑似漏报 ${m.missed}|CMP-CV-101~104`, - left: 'center', - textStyle: { fontSize: 14 }, - subtextStyle: { fontSize: 11, color: '#64748b' }, - }, - tooltip: { trigger: 'item' }, - series: [ - { - type: 'pie', - radius: ['36%', '62%'], - label: { formatter: '{b}: {c} ({d}%)' }, - data: [ - { name: '已匹配', value: m.matched }, - { name: '疑似漏报', value: m.missed }, - ], + label: { show: true, position: 'top', fontSize: 11, formatter: '{c}%' }, }, ], } @@ -234,15 +278,33 @@ const complianceAuditCountsOption = (context: AnalysisContext): EChartsOption => const paretoOption = (context: AnalysisContext): EChartsOption => { const pareto = buildComplaintPareto(context) return { - title: { text: '产品×故障 Pareto', left: 'center', textStyle: { fontSize: 14 } }, + title: { + text: 'QLT-PRD-401 产品×故障 Pareto', + subtext: QUALITY_DOC_REF, + left: 'center', + textStyle: { fontSize: 14 }, + subtextStyle: { fontSize: 11, color: '#64748b' }, + }, tooltip: { trigger: 'axis' }, - legend: { top: 30, data: ['投诉数', '累计占比%'] }, - grid: { top: 70, right: 50, bottom: 70, left: 45 }, - xAxis: { type: 'category', data: pareto.labels, axisLabel: { rotate: 25 } }, - yAxis: [{ type: 'value', name: '投诉数' }, { type: 'value', name: '累计%', max: 100 }], + legend: { top: 72, data: ['投诉数', '累计占比%'] }, + grid: { top: 100, right: 56, bottom: 100, left: 56 }, + xAxis: { + type: 'category', + name: '产品×故障组合', + data: pareto.labels, + axisLabel: { interval: 0, rotate: 32, fontSize: 10 }, + }, + yAxis: [{ type: 'value', name: '投诉条数(条)' }, { type: 'value', name: '累计占比(%)', max: 100 }], series: [ - { name: '投诉数', type: 'bar', data: pareto.bars }, - { name: '累计占比%', type: 'line', yAxisIndex: 1, smooth: true, data: pareto.line }, + { name: '投诉数', type: 'bar', data: pareto.bars, label: { show: true, position: 'top', fontSize: 10 } }, + { + name: '累计占比%', + type: 'line', + yAxisIndex: 1, + smooth: true, + data: pareto.line, + label: { show: true, position: 'top', fontSize: 9, formatter: '{c}%' }, + }, ], } } @@ -261,8 +323,8 @@ const faultSeasonalityHeatmapOption = (context: AnalysisContext): EChartsOption }, tooltip: { position: 'top' }, grid: { top: 88, height: Math.max(220, faults.length * 26), left: 100, right: 24, bottom: 48 }, - xAxis: { type: 'category', data: months, splitArea: { show: true } }, - yAxis: { type: 'category', data: faults, splitArea: { show: true } }, + xAxis: { type: 'category', name: '登记月份', data: months, splitArea: { show: true } }, + yAxis: { type: 'category', name: '故障类型', data: faults, splitArea: { show: true } }, visualMap: { min: 0, max, @@ -289,17 +351,17 @@ const closeCycleHistogramOption = (context: AnalysisContext): EChartsOption => { }) return { title: { - text: '投诉关闭周期分布', - subtext: 'QLT-RPT-802|关闭日期 − C3登记日期', + text: 'QLT-RPT-802 投诉关闭周期分布', + subtext: `${QUALITY_DOC_REF}|关闭日期 − C3登记日期`, left: 'center', textStyle: { fontSize: 14 }, subtextStyle: { fontSize: 11, color: '#64748b' }, }, tooltip: { trigger: 'axis' }, grid: { top: 80, right: 24, bottom: 40, left: 44 }, - xAxis: { type: 'category', data: bins }, - yAxis: { type: 'value', name: '投诉条数' }, - series: [{ type: 'bar', data: counts, itemStyle: { borderRadius: [4, 4, 0, 0] } }], + xAxis: { type: 'category', name: '关闭周期(天)', data: bins }, + yAxis: { type: 'value', name: '投诉条数(条)' }, + series: [{ type: 'bar', data: counts, itemStyle: { borderRadius: [4, 4, 0, 0] }, label: { show: true, position: 'top', fontSize: 11 } }], } } @@ -308,8 +370,8 @@ const hospitalAeScatterOption = (context: AnalysisContext): EChartsOption => { const data = pts.map((p) => [p.cyQty, p.aeCount, p.hospital]) return { title: { - text: '医院:AE 条数 vs 入院 cyQty 汇总', - subtext: 'QLT-AE-1003|AE 按单位名称计数;入院量按医院汇总', + text: 'QLT-AE-1003 医院:AE 条数 vs 入院 cyQty', + subtext: `${QUALITY_DOC_REF}|AE 按单位名称计数;入院量按医院汇总`, left: 'center', textStyle: { fontSize: 14 }, subtextStyle: { fontSize: 11, color: '#64748b' }, @@ -323,8 +385,8 @@ const hospitalAeScatterOption = (context: AnalysisContext): EChartsOption => { }, }, grid: { top: 88, right: 24, bottom: 44, left: 52 }, - xAxis: { type: 'value', name: 'cyQty', scale: true }, - yAxis: { type: 'value', name: 'AE 条数', scale: true }, + xAxis: { type: 'value', name: '入院量 cyQty(件)', scale: true }, + yAxis: { type: 'value', name: 'AE 条数(条)', scale: true }, series: [{ type: 'scatter', symbolSize: 12, data }], } } @@ -334,8 +396,8 @@ const hospitalComplaintQtyScatterOption = (context: AnalysisContext): EChartsOpt const data = pts.map((p) => [p.cyQty, p.complaints, p.hospital]) return { title: { - text: '医院:投诉条数 vs 入院 cyQty', - subtext: QLT_TIME_AXIS, + text: 'QLT-SAL-901 医院:投诉条数 vs 入院 cyQty', + subtext: `${QUALITY_DOC_REF}|${QLT_TIME_AXIS}`, left: 'center', textStyle: { fontSize: 14 }, subtextStyle: { fontSize: 11, color: '#64748b' }, @@ -349,8 +411,8 @@ const hospitalComplaintQtyScatterOption = (context: AnalysisContext): EChartsOpt }, }, grid: { top: 88, right: 24, bottom: 44, left: 52 }, - xAxis: { type: 'value', name: 'cyQty', scale: true }, - yAxis: { type: 'value', name: '投诉条数', scale: true }, + xAxis: { type: 'value', name: '入院量 cyQty(件)', scale: true }, + yAxis: { type: 'value', name: '投诉条数(条)', scale: true }, series: [{ type: 'scatter', symbolSize: 12, data }], } } @@ -367,7 +429,7 @@ const productHalfYearBarOption = (context: AnalysisContext): EChartsOption => { const products = [...new Set([...h1.keys(), ...h2.keys()])].sort() return { title: { - text: '产品投诉量:上半年 vs 下半年', + text: 'QLT-TRN-703 产品投诉量:上半年 vs 下半年', subtext: 'C3登记月份 1–6 vs 7–12|QLT-TRN-703 对比窗演示', left: 'center', textStyle: { fontSize: 14 }, @@ -376,11 +438,11 @@ const productHalfYearBarOption = (context: AnalysisContext): EChartsOption => { tooltip: { trigger: 'axis' }, legend: { top: 72 }, grid: { top: 100, right: 24, bottom: 56, left: 44 }, - xAxis: { type: 'category', data: products, axisLabel: { rotate: 22 } }, - yAxis: { type: 'value', name: '投诉条数' }, + xAxis: { type: 'category', name: '产品', data: products, axisLabel: { rotate: 22 } }, + yAxis: { type: 'value', name: '投诉条数(条)' }, series: [ - { name: '上半年(1–6月)', type: 'bar', data: products.map((p) => h1.get(p) ?? 0) }, - { name: '下半年(7–12月)', type: 'bar', data: products.map((p) => h2.get(p) ?? 0) }, + { name: '上半年(1–6月)', type: 'bar', data: products.map((p) => h1.get(p) ?? 0), label: { show: true, position: 'top', fontSize: 10 } }, + { name: '下半年(7–12月)', type: 'bar', data: products.map((p) => h2.get(p) ?? 0), label: { show: true, position: 'top', fontSize: 10 } }, ], } } @@ -399,7 +461,7 @@ const productGrowthAlertBarOption = (context: AnalysisContext): EChartsOption => : [...new Set(context.complaints.map((c) => c.productName))].sort() return { title: { - text: '产品投诉增速预警(下半年相对上半年 ≥20%)', + text: 'QLT-TRN-703 产品投诉增速预警(下半年相对上半年 ≥20%)', subtext: alertRows.length ? 'QLT-TRN-703' : 'QLT-TRN-703|当前样本无达阈产品,展示全产品上下半年对照', left: 'center', textStyle: { fontSize: 14 }, @@ -408,11 +470,11 @@ const productGrowthAlertBarOption = (context: AnalysisContext): EChartsOption => tooltip: { trigger: 'axis' }, legend: { top: 72 }, grid: { top: 100, right: 24, bottom: 56, left: 44 }, - xAxis: { type: 'category', data: labels, axisLabel: { rotate: 22 } }, - yAxis: { type: 'value', name: '投诉条数' }, + xAxis: { type: 'category', name: '产品', data: labels, axisLabel: { rotate: 22 } }, + yAxis: { type: 'value', name: '投诉条数(条)' }, series: [ - { name: '上半年', type: 'bar', data: labels.map((p) => h1.get(p) ?? 0) }, - { name: '下半年', type: 'bar', data: labels.map((p) => h2.get(p) ?? 0) }, + { name: '上半年', type: 'bar', data: labels.map((p) => h1.get(p) ?? 0), label: { show: true, position: 'top', fontSize: 10 } }, + { name: '下半年', type: 'bar', data: labels.map((p) => h2.get(p) ?? 0), label: { show: true, position: 'top', fontSize: 10 } }, ], } } @@ -422,20 +484,39 @@ const provinceHalfYearBarOption = (context: AnalysisContext): EChartsOption => { const labels = rows.map((r) => r.province) return { title: { - text: '省份投诉量:上半年 vs 下半年', - subtext: '医院→省映射取自入院量表众数|QLT-TRN-704', + text: 'QLT-TRN-704 省份投诉量:上半年 vs 下半年', + subtext: `${QUALITY_DOC_REF}|医院→省映射=入院量表众数|横轴=省份名称|纵轴=投诉条数(条)`, left: 'center', textStyle: { fontSize: 14 }, subtextStyle: { fontSize: 11, color: '#64748b' }, }, - tooltip: { trigger: 'axis' }, + tooltip: { + trigger: 'axis', + axisPointer: { type: 'shadow' }, + formatter: (params: unknown) => { + const list = Array.isArray(params) ? params : [params] + const first = list[0] as { axisValue?: string; marker?: string; seriesName?: string; value?: number } | undefined + const prov = first?.axisValue ?? '' + const lines = [`${prov}`] + for (const p of list) { + const row = p as { marker?: string; seriesName?: string; value?: number } + lines.push(`${row.marker ?? ''}${row.seriesName ?? ''}:${row.value ?? 0} 条`) + } + return lines.join('
') + }, + }, legend: { top: 72 }, - grid: { top: 100, right: 24, bottom: 48, left: 44 }, - xAxis: { type: 'category', data: labels }, - yAxis: { type: 'value', name: '投诉条数' }, + grid: { top: 100, right: 24, bottom: 96, left: 52 }, + xAxis: { + type: 'category', + name: '省份名称', + data: labels, + axisLabel: { interval: 0, rotate: 32, fontSize: 10 }, + }, + yAxis: { type: 'value', name: '投诉条数(条)' }, series: [ - { name: '上半年', type: 'bar', data: rows.map((r) => r.firstHalf) }, - { name: '下半年', type: 'bar', data: rows.map((r) => r.secondHalf) }, + { name: '上半年(1–6月)', type: 'bar', data: rows.map((r) => r.firstHalf), label: { show: true, position: 'top', fontSize: 10 } }, + { name: '下半年(7–12月)', type: 'bar', data: rows.map((r) => r.secondHalf), label: { show: true, position: 'top', fontSize: 10 } }, ], } } @@ -445,7 +526,7 @@ const complaintRateBarOption = (context: AnalysisContext): EChartsOption => { const labels = rows.map((r) => `${r.hospital} / ${r.product}`) return { title: { - text: '医院×产品 投诉率 Top(每千件入院量)', + text: 'QLT-SAL-901 医院×产品 投诉率Top 10(每千件入院量)', subtext: `QLT-SAL-901|${QLT_ADMISSION_DENOM}`, left: 'center', textStyle: { fontSize: 14 }, @@ -453,9 +534,9 @@ const complaintRateBarOption = (context: AnalysisContext): EChartsOption => { }, tooltip: { trigger: 'axis' }, grid: { top: 88, right: 24, bottom: 8, left: 8, containLabel: true }, - xAxis: { type: 'value', name: '件/千件' }, - yAxis: { type: 'category', data: labels, axisLabel: { fontSize: 10 } }, - series: [{ type: 'bar', data: rows.map((r) => r.ratePer1000), itemStyle: { borderRadius: [0, 4, 4, 0] } }], + xAxis: { type: 'value', name: '投诉率(件/千件)' }, + yAxis: { type: 'category', name: '医院×产品', data: labels, axisLabel: { fontSize: 10 } }, + series: [{ type: 'bar', data: rows.map((r) => r.ratePer1000), itemStyle: { borderRadius: [0, 4, 4, 0] }, label: { show: true, position: 'right', fontSize: 10 } }], } } @@ -463,17 +544,17 @@ const isAeRateBarOption = (context: AnalysisContext): EChartsOption => { const rows = buildIsAeRateByProduct(context) return { title: { - text: '按产品的投诉升级率(是否不良事件=是)', - subtext: 'QLT-AE-1001', + text: 'QLT-AE-1001 按产品的投诉升级率', + subtext: `${QUALITY_DOC_REF}|是否不良事件=是`, left: 'center', textStyle: { fontSize: 14 }, subtextStyle: { fontSize: 11, color: '#64748b' }, }, tooltip: { trigger: 'axis' }, grid: { top: 72, right: 24, bottom: 48, left: 44 }, - xAxis: { type: 'category', data: rows.map((r) => r.product), axisLabel: { rotate: 18 } }, - yAxis: { type: 'value', name: '%', max: 100 }, - series: [{ type: 'bar', data: rows.map((r) => r.ratePct), itemStyle: { borderRadius: [4, 4, 0, 0] } }], + xAxis: { type: 'category', name: '产品', data: rows.map((r) => r.product), axisLabel: { rotate: 18 } }, + yAxis: { type: 'value', name: '升级率(%)', max: 100 }, + series: [{ type: 'bar', data: rows.map((r) => r.ratePct), itemStyle: { borderRadius: [4, 4, 0, 0] }, label: { show: true, position: 'top', fontSize: 10, formatter: '{c}%' } }], } } @@ -481,8 +562,8 @@ const investigationPieOption = (context: AnalysisContext): EChartsOption => { const dist = buildInvestigationConclusionDist(context) return { title: { - text: '调查结论分布', - subtext: 'QLT-INV-501', + text: 'QLT-INV-501 调查结论分布', + subtext: QUALITY_DOC_REF, left: 'center', textStyle: { fontSize: 14 }, subtextStyle: { fontSize: 11, color: '#64748b' }, @@ -503,8 +584,8 @@ const compensationPieOption = (context: AnalysisContext): EChartsOption => { const dist = buildCompensationDist(context) return { title: { - text: '赔付结论分布', - subtext: 'QLT-CST-601', + text: 'QLT-CST-601 赔付结论分布', + subtext: QUALITY_DOC_REF, left: 'center', textStyle: { fontSize: 14 }, subtextStyle: { fontSize: 11, color: '#64748b' }, @@ -523,15 +604,23 @@ const compensationPieOption = (context: AnalysisContext): EChartsOption => { const defectProductFaultBarOption = (context: AnalysisContext): EChartsOption => { const d = buildDefectConfirmedProductFault(context) - return barOption('产品缺陷成立:产品×故障 Top', d.labels, d.values, 'QLT-INV-502') + return barOption('QLT-INV-502 产品缺陷成立:产品×故障Top 10', d.labels, d.values, `${QUALITY_DOC_REF}|子集=调查结论「产品缺陷成立」`, { + xName: '产品×故障组合', + yName: '投诉条数(条)', + bottom: 100, + left: 52, + rotate: 30, + interval: 0, + fontSize: 10, + }) } const batchComplaintAeBarOption = (context: AnalysisContext): EChartsOption => { const rows = buildBatchComplaintVsAeCounts(context).filter((r) => r.complaints + r.aeReports > 0) return { title: { - text: '批号:投诉条数 vs AE 条数', - subtext: 'QLT-BTH-104|同批号字符串对照(非逐条匹配)', + text: 'QLT-BTH-104 批号:投诉条数 vs AE 条数', + subtext: `${QUALITY_DOC_REF}|同批号字符串对照(非逐条匹配)`, left: 'center', textStyle: { fontSize: 14 }, subtextStyle: { fontSize: 11, color: '#64748b' }, @@ -539,11 +628,11 @@ const batchComplaintAeBarOption = (context: AnalysisContext): EChartsOption => { tooltip: { trigger: 'axis' }, legend: { top: 72 }, grid: { top: 100, right: 24, bottom: 48, left: 44 }, - xAxis: { type: 'category', data: rows.map((r) => r.batchNo), axisLabel: { rotate: 18 } }, - yAxis: { type: 'value', name: '条数' }, + xAxis: { type: 'category', name: '批号', data: rows.map((r) => r.batchNo), axisLabel: { rotate: 18 } }, + yAxis: { type: 'value', name: '条数(条)' }, series: [ - { name: '投诉', type: 'bar', data: rows.map((r) => r.complaints) }, - { name: 'AE', type: 'bar', data: rows.map((r) => r.aeReports) }, + { name: '投诉', type: 'bar', data: rows.map((r) => r.complaints), label: { show: true, position: 'top', fontSize: 10 } }, + { name: 'AE', type: 'bar', data: rows.map((r) => r.aeReports), label: { show: true, position: 'top', fontSize: 10 } }, ], } } @@ -570,13 +659,20 @@ const marketingHBarOption = ( tooltip: { trigger: 'axis' }, grid: { top: 88, right: 28, bottom: 12, left: 12, containLabel: true }, xAxis: { type: 'value', name: xAxisName }, - yAxis: { type: 'category', data: labels, axisLabel: { fontSize: 10 } }, - series: [{ type: 'bar', data: values, itemStyle: { borderRadius: [0, 4, 4, 0] } }], + yAxis: { type: 'category', name: '名称', data: labels, axisLabel: { fontSize: 10 } }, + series: [{ type: 'bar', data: values, itemStyle: { borderRadius: [0, 4, 4, 0] }, label: { show: true, position: 'right', fontSize: 10 } }], }) const mktOpWrongHospitalOption = (context: AnalysisContext): EChartsOption => { - const d = buildOpWrongHospitalTop(context, 14) - return barOption('操作不当投诉:医院 Top', d.labels, d.values, 'MKT-OP-101') + const d = buildOpWrongHospitalTop(context, 10) + return barOption('MKT-OP-101 操作不当投诉:医院Top 10', d.labels, d.values, `${MARKETING_DOC_REF}|子集=调查结论「操作不当」`, { + xName: '医院', + yName: '投诉条数(条)', + bottom: 96, + rotate: 28, + interval: 0, + fontSize: 10, + }) } const mktOpWrongDealerCountOption = (context: AnalysisContext): EChartsOption => { @@ -629,8 +725,15 @@ const mktDealerComplaintRateOption = (context: AnalysisContext): EChartsOption = } const mktProvinceComplaintCountOption = (context: AnalysisContext): EChartsOption => { - const d = buildProvinceComplaintCounts(context, 14) - return barOption('省级投诉条数 Top(绝对量)', d.labels, d.values, 'MKT-RG-203') + const d = buildProvinceComplaintCounts(context, 10) + return barOption('MKT-RG-203 省级投诉条数Top 10(绝对量)', d.labels, d.values, `${MARKETING_DOC_REF}|全量投诉按省计数`, { + xName: '省份', + yName: '投诉条数(条)', + bottom: 96, + rotate: 28, + interval: 0, + fontSize: 10, + }) } const configs: Record = { @@ -655,69 +758,176 @@ const configs: Record = { 'CMP-AE-101:按公历月对报告条数求和,用于 PSUR「总体趋势」与异常上升监测。', ), optionBuilder: (context) => { - const trend = buildAeMonthlyByOccurrence(context) - return lineOption( - 'CMP-AE-101 不良事件报告数', - trend.months, - trend.values, - '事件数', - `${COMPLIANCE_DOC_REF}|主时间轴=发生日期|单元=报告条数`, - ) + const trend = buildAeMonthlyWithYearAverage(context) + return { + title: { + text: 'CMP-AE-101 不良事件报告数', + subtext: `${COMPLIANCE_DOC_REF}|主时间轴=发生日期|单元=报告条数`, + left: 'center', + textStyle: { fontSize: 14 }, + subtextStyle: { fontSize: 11, color: '#64748b' }, + }, + tooltip: { trigger: 'axis' }, + legend: { top: 54, data: ['事件报告数', '年度平均数'] }, + grid: { top: 96, right: 24, bottom: 56, left: 64 }, + xAxis: { type: 'category', name: '时间(年月)', data: trend.months }, + yAxis: { type: 'value', name: '事件报告数(条)' }, + series: [ + { + name: '事件报告数', + type: 'line', + smooth: true, + data: trend.values, + itemStyle: { color: '#2563eb' }, + lineStyle: { color: '#2563eb' }, + }, + { + name: '年度平均数', + type: 'line', + smooth: true, + data: trend.yearAvg, + itemStyle: { color: '#f97316' }, + lineStyle: { color: '#f97316', type: 'dashed' }, + }, + ], + } }, }, { id: 'psur-ppm', - title: '全局月度 PPM(入院量 cyQty 分母)', + title: '产品级不良事件 PPM', description: COMPLIANCE_FOOTNOTE_PPM, chartExplain: ex( - '分子=AE 按发生月计数;分母=入院量表按业务年月汇总 cyQty(演示未按产品拆分全量暴露)。', - 'CMP-AE-201:PPM = AE数/入院量×1e6;分母为 0 时在序列中用 null 表示不可算。', + '分子=AE 按发生月计数;分母=入院量表按业务年月汇总 cyQty。统计窗口截止 2026-03。', + 'CMP-AE-201:PPM = AE数/入院量×1e6;并展示每月涉及产品数与 AE 条数。', ), optionBuilder: (context) => { const ppm = buildGlobalMonthlyPpm(context) - return lineOption( - 'CMP-AE-201 演示 PPM', - ppm.months, - ppm.ppm, - 'PPM', - `${COMPLIANCE_DOC_REF}|分母=入院量 cyQty 按年月汇总`, - ) + const monthlyCounts = buildMonthlyProductAndAeCounts(context, '2026-03') + const monthIndex = new Map(ppm.months.map((m, i) => [m, i])) + const months = monthlyCounts.months + const ppmValues = months.map((m) => ppm.ppm[monthIndex.get(m) ?? -1] ?? null) + return { + title: { + text: 'CMP-AE-201 产品级不良事件 PPM', + subtext: `${COMPLIANCE_DOC_REF}|统计窗口截止 2026-03`, + left: 'center', + textStyle: { fontSize: 14 }, + subtextStyle: { fontSize: 11, color: '#64748b' }, + }, + tooltip: { trigger: 'axis' }, + legend: { top: 54, data: ['涉及产品数(个)', '不良事件数(条)', 'PPM(百万分之)'] }, + grid: { top: 96, right: 64, bottom: 56, left: 64 }, + xAxis: { type: 'category', name: '时间(月)', data: months }, + yAxis: [ + { type: 'value', name: '数量(个/条)' }, + { type: 'value', name: 'PPM(百万分之)' }, + ], + series: [ + { + name: '涉及产品数(个)', + type: 'bar', + data: monthlyCounts.productCounts, + itemStyle: { color: '#22c55e' }, + }, + { + name: '不良事件数(条)', + type: 'bar', + data: monthlyCounts.aeCounts, + itemStyle: { color: '#2563eb' }, + }, + { + name: 'PPM(百万分之)', + type: 'line', + yAxisIndex: 1, + smooth: true, + data: ppmValues, + itemStyle: { color: '#f97316' }, + lineStyle: { color: '#f97316' }, + }, + ], + } }, }, { id: 'psur-device-top', - title: '器械故障表现 Top(占比)', + title: '器械故障Top10', description: COMPLIANCE_FOOTNOTE_SHORT, chartExplain: ex( - '不良事件表 deviceFailure 字段;全量计数。', - 'CMP-AE-301:按故障表现归类计数取 Top;tooltip 可扩展占比=该类条数/当期 AE 总数。', + '不良事件表 deviceFailure 字段;年份范围按最早年份至今整体累计。', + 'CMP-AE-301:按故障表现累计计数取 Top10,并在 tooltip 中展示该故障涉及的主要产品(高亮显示,不展示产品后缀数量)。', ), optionBuilder: (context) => { const top = buildTopDeviceFailures(context, 10) - return barOption( - 'CMP-AE-301 器械故障 Top', - top.labels, - top.values, - '条数=报告条数;占比见 tooltip', - ) + return { + title: { + text: 'CMP-AE-301 器械故障Top10', + subtext: '按最早年份至今的累计事件数取 Top10;产品信息见 tooltip(橙色高亮)', + left: 'center', + textStyle: { fontSize: 14 }, + subtextStyle: { fontSize: 11, color: '#64748b' }, + }, + tooltip: { + trigger: 'axis', + axisPointer: { type: 'shadow' }, + formatter: (params: any) => { + const row = Array.isArray(params) ? params[0] : params + const idx = Number(row?.dataIndex ?? 0) + const products = top.topProducts[idx] ?? [] + const productText = products.length + ? products.map((p) => `${p.product}`).join('、') + : '暂无产品信息' + return [ + `${row?.axisValue ?? ''}`, + `累计事件数:${row?.value ?? 0}`, + `涉及产品:${productText}`, + ].join('
') + }, + }, + grid: { top: 86, right: 24, bottom: 90, left: 45 }, + xAxis: { type: 'category', name: '器械故障表现', data: top.labels, axisLabel: { interval: 0, rotate: 30, fontSize: 11 } }, + yAxis: { type: 'value', name: '累计事件数(条)' }, + series: [{ type: 'bar', data: top.values, itemStyle: { borderRadius: [4, 4, 0, 0] } }], + } as EChartsOption }, }, { id: 'psur-product-top', - title: '产品事件 Top 分布', + title: 'CMP-AE-103 产品AE累计事件数Top 10', description: COMPLIANCE_FOOTNOTE_SHORT, - chartExplain: ex('不良事件表 productName 全量。', '按产品聚合 AE 报告条数取 Top,用于 PSUR 产品章节与管理驾驶舱分产品线视图。'), + chartExplain: ex( + '不良事件表 productName 字段;全量计数。', + 'CMP-AE-103:按产品聚合 AE 累计事件数量取 Top 10,用于 PSUR 产品章节与管理驾驶舱分产品线视图。', + ), optionBuilder: (context) => { - const top = buildPsurTopProducts(context) - return barOption('产品 AE 条数 Top', top.labels, top.values, COMPLIANCE_DOC_REF) + const top = buildPsurTopProducts(context, 10) + return { + title: { + text: 'CMP-AE-103 产品AE累计事件数Top 10', + subtext: COMPLIANCE_DOC_REF, + left: 'center', + textStyle: { fontSize: 14 }, + subtextStyle: { fontSize: 11, color: '#64748b' }, + }, + tooltip: { trigger: 'axis' }, + grid: { top: 78, right: 24, bottom: 90, left: 45 }, + xAxis: { + type: 'category', + name: '产品', + data: top.labels, + axisLabel: { interval: 0, rotate: 30, fontSize: 11 }, + }, + yAxis: { type: 'value', name: '累计事件数(条)' }, + series: [{ type: 'bar', data: top.values, itemStyle: { borderRadius: [4, 4, 0, 0] } }], + } as EChartsOption }, }, ], }, { id: 'psur-serious', - title: '严重事件、区域与上报时效', - strategyRefs: ['CMP-AE-501', 'CMP-AE-502', 'CMP-AE-601', 'CMP-AE-701'], + title: '严重事件与区域', + strategyRefs: ['CMP-AE-501', 'CMP-AE-502', 'CMP-AE-601'], charts: [ { id: 'psur-sae-monthly', @@ -729,7 +939,29 @@ const configs: Record = { ), optionBuilder: (context) => { const s = buildSaeMonthlyByOccurrence(context) - return lineOption('CMP-AE-501 SAE 条数', s.months, s.values, 'SAE 条数', COMPLIANCE_DOC_REF) + return { + title: { + text: 'CMP-AE-501 SAE 报告数(按发生月)', + subtext: COMPLIANCE_DOC_REF, + left: 'center', + textStyle: { fontSize: 14 }, + subtextStyle: { fontSize: 11, color: '#64748b' }, + }, + tooltip: { trigger: 'axis' }, + grid: { top: 78, right: 24, bottom: 40, left: 48 }, + xAxis: { type: 'category', name: '发生月', data: s.months }, + yAxis: { type: 'value', name: 'SAE 条数(条)' }, + series: [ + { + name: 'SAE 条数', + type: 'line', + smooth: true, + data: s.values, + label: { show: true, position: 'top', fontSize: 11 }, + symbolSize: 8, + }, + ], + } as EChartsOption }, }, { @@ -744,24 +976,32 @@ const configs: Record = { }, { id: 'psur-province', - title: '省级 AE 报告数', + title: 'CMP-AE-601 省级 AE 报告数', description: 'CMP-AE-601', - chartExplain: ex('不良事件表 province 字段;全期按省聚合。', 'CMP-AE-601:省级报告条数分布,用于地理聚集识别(地图可视化可后续接入)。'), + chartExplain: ex('不良事件表 province 字段;全期按省聚合。', 'CMP-AE-601:省级报告条数分布,每个柱子对应一个省份,用于地理聚集识别。'), optionBuilder: (context) => { const p = buildProvinceAeCounts(context) - return barOption('CMP-AE-601 省分布', p.labels, p.values, COMPLIANCE_DOC_REF) + return { + title: { + text: 'CMP-AE-601 省级 AE 报告数', + subtext: COMPLIANCE_DOC_REF, + left: 'center', + textStyle: { fontSize: 14 }, + subtextStyle: { fontSize: 11, color: '#64748b' }, + }, + tooltip: { trigger: 'axis' }, + grid: { top: 78, right: 24, bottom: 90, left: 48 }, + xAxis: { + type: 'category', + name: '省份', + data: p.labels, + axisLabel: { interval: 0, rotate: 40, fontSize: 10 }, + }, + yAxis: { type: 'value', name: '报告条数(条)' }, + series: [{ type: 'bar', data: p.values, itemStyle: { borderRadius: [4, 4, 0, 0] } }], + } as EChartsOption }, }, - { - id: 'psur-lag-histogram', - title: '上报滞后天数分布', - description: 'Lag = 审核日期 − 登记日期|CMP-AE-701', - chartExplain: ex( - 'AE 表 reviewDate、registrationDate 均可解析的行;Lag=审核日期−登记日期(天)。', - 'CMP-AE-701:对滞后天数做直方分箱,支撑上报时效分布与内控阈值讨论。', - ), - optionBuilder: reportingLagHistogramOption, - }, ], }, ], @@ -776,27 +1016,27 @@ const configs: Record = { { id: 'audit-core', title: '审计核心指标', - strategyRefs: ['CMP-CV-101', 'CMP-CV-104', 'CMP-AE-702'], + strategyRefs: ['CMP-CV-101', 'CMP-AE-701'], charts: [ { id: 'audit-summary-bar', - title: '漏报 / 匹配 / 时效(双口径)', + title: 'CMP-CV-101 上报合规审计摘要', description: COMPLIANCE_FOOTNOTE_AUDIT, chartExplain: ex( - '基准=投诉 isAe=true;匹配规则=医院+产品+型号一致且 AE 发生日与 C3登记日相差≤30天。', - '汇总漏报率、匹配率及匹配子集上「审核−登记」「审核−C3」≤15 天占比(演示阈值)。', + '基准=投诉 isAe=true;匹配规则=医院+产品+型号一致且 AE 发生日与 C3登记日相差≤30天。整合 CMP-CV-101~104 四项指标。', + '柱状图展示漏报率、匹配率及时效合规率(登记/C3双口径)百分比;副标题与 tooltip 呈现绝对量(基准条数、匹配条数、疑似漏报条数),用于内控季度汇报与外审抽样框架。', ), optionBuilder: complianceAuditSummaryOption, }, { - id: 'audit-counts-pie', - title: '应报样本结构', - description: '投诉 isAe=是', + id: 'audit-lag-histogram', + title: 'CMP-AE-701 上报合规率', + description: '整合 CMP-AE-701~703|Lag = 审核日期 − 登记日期|阈值 15 天', chartExplain: ex( - '同上基准集合;在可匹配与疑似漏报二分结构上展示样本量。', - '饼图用于审计抽样框说明:已匹配 vs 需人工复核的疑似漏报。', + 'AE 表 reviewDate、registrationDate 均可解析的行;Lag=审核日期−登记日期(天);合规阈值=15天。', + 'CMP-AE-701:整合滞后分布(701)、合规率(702)、超窗标记(703)为一张图;≤15天绿色合规,>15天红色超窗;副标题展示合规率与超窗条数。', ), - optionBuilder: complianceAuditCountsOption, + optionBuilder: reportingLagHistogramOption, }, ], }, @@ -816,7 +1056,7 @@ const configs: Record = { charts: [ { id: 'quality-pareto-chart', - title: '产品×故障 Pareto(二八)', + title: 'QLT-PRD-401 产品×故障 Pareto(二八)', description: 'QLT-PRD-401', chartExplain: ex( `质量投诉表;${QLT_TIME_AXIS};取 Top8 产品×故障组合。`, @@ -826,38 +1066,59 @@ const configs: Record = { }, { id: 'quality-batch-chart', - title: '批号投诉条数排名', + title: 'QLT-BTH-101 批号投诉条数Top 10', description: 'QLT-BTH-101', chartExplain: ex( '质量投诉表 batchNo 字段;空批号归入「(未填批号)」桶。', - '在统计期内按批号分组对投诉条数计数并取 Top,用于触发批次调查(问题批次识别)。', + 'QLT-BTH-101:在统计期内按批号分组对投诉条数计数并取 Top 10,用于触发批次调查(问题批次识别)。', ), optionBuilder: (context) => { - const batch = buildComplaintBatchTop(context, 8) - return barOption('批号投诉 Top', batch.labels, batch.values, QUALITY_DOC_REF) + const batch = buildComplaintBatchTop(context, 10) + return barOption('QLT-BTH-101 批号投诉Top 10', batch.labels, batch.values, QUALITY_DOC_REF, { + xName: '批号', + yName: '投诉条数(条)', + bottom: 96, + rotate: 28, + interval: 0, + fontSize: 10, + }) }, }, { id: 'quality-hospital-top', - title: '医院投诉条数 Top', + title: 'QLT-CNC-301 医院投诉条数Top 10', description: 'QLT-CNC-301', chartExplain: ex( '质量投诉表;按医院名称聚合。', - '统计各医院投诉条数并取 Top,用于识别投诉集中医院(现场调查/培训优先级)。', + 'QLT-CNC-301:统计各医院投诉条数并取 Top 10,用于识别投诉集中医院(现场调查/培训优先级)。', ), optionBuilder: (context) => { - const t = buildTopHospitalsComplaints(context, 8) - return barOption('医院投诉 Top', t.labels, t.values, QUALITY_DOC_REF) + const t = buildTopHospitalsComplaints(context, 10) + return barOption('QLT-CNC-301 医院投诉Top 10', t.labels, t.values, QUALITY_DOC_REF, { + xName: '医院', + yName: '投诉条数(条)', + bottom: 96, + rotate: 28, + interval: 0, + fontSize: 10, + }) }, }, { id: 'quality-product-fault-top', - title: '故障类型 Top', + title: 'QLT-CNC-303 故障类型Top 10', description: 'QLT-CNC-303', - chartExplain: ex('质量投诉表 faultType 字段。', '按故障类型计数取 Top,与 Pareto 组合图互补的一维缺陷雷达。'), + chartExplain: ex('质量投诉表 faultType 字段。', 'QLT-CNC-303:按故障类型计数取 Top 10,与 Pareto 组合图互补的一维缺陷雷达。'), optionBuilder: (context) => { - const t = buildTopFaultTypes(context, 8) - return barOption('故障类型 Top', t.labels, t.values, QUALITY_DOC_REF) + const t = buildTopFaultTypes(context, 10) + return barOption('QLT-CNC-303 故障类型Top 10', t.labels, t.values, QUALITY_DOC_REF, { + xName: '故障类型', + yName: '投诉条数(条)', + bottom: 96, + rotate: 28, + interval: 0, + fontSize: 10, + }) }, }, ], @@ -888,7 +1149,7 @@ const configs: Record = { }, { id: 'trend-product-half', - title: '产品:上/下半年投诉量', + title: 'QLT-TRN-703 产品:上/下半年投诉量', description: 'QLT-TRN-703', chartExplain: ex( '质量投诉表;以登记日期的月份区分上半年(1–6)与下半年(7–12)。', @@ -898,7 +1159,7 @@ const configs: Record = { }, { id: 'trend-product-alert', - title: '产品投诉增速预警', + title: 'QLT-TRN-703 产品投诉增速预警', description: 'QLT-TRN-703', chartExplain: ex( '同上、对比窗为同一公历年的上下半年。', @@ -908,11 +1169,11 @@ const configs: Record = { }, { id: 'trend-province-half', - title: '省份:上/下半年投诉量', - description: 'QLT-TRN-704', + title: 'QLT-TRN-704 省份:上/下半年投诉量', + description: 'QLT-TRN-704|横轴省份名称|纵轴投诉条数(条)', chartExplain: ex( '投诉侧按医院映射至省份:映射表由入院量数据中「医院→省」出现频次众数生成。', - '将投诉按登记月拆上下半年,在省级桶内计数,用于区域波动监测。', + 'QLT-TRN-704:分组柱状图展示各省上半年与下半年投诉条数;横轴完整展示省份名称,纵轴单位为条;tooltip 中突出省名与上下半年条数。', ), optionBuilder: provinceHalfYearBarOption, }, @@ -934,7 +1195,7 @@ const configs: Record = { charts: [ { id: 'qc-sales-scatter', - title: '医院:投诉条数 vs 入院 cyQty', + title: 'QLT-SAL-901 医院:投诉条数 vs 入院 cyQty', description: '散点', chartExplain: ex( '投诉按医院计数;入院量表按 HospitalName 汇总 cyQty(跨月相加,演示口径)。', @@ -944,7 +1205,7 @@ const configs: Record = { }, { id: 'qc-sales-rate', - title: '医院×产品 投诉率 Top(每千件)', + title: 'QLT-SAL-901 医院×产品 投诉率Top 10(每千件)', description: 'QLT-SAL-901', chartExplain: ex( `分子=统计期内医院+产品投诉条数;分母=入院量表同键 cyQty 汇总。${QLT_ADMISSION_DENOM}。`, @@ -970,7 +1231,7 @@ const configs: Record = { charts: [ { id: 'qc-inv-pie', - title: '调查结论分布', + title: 'QLT-INV-501 调查结论分布', description: 'QLT-INV-501', chartExplain: ex( '质量投诉表 conclusion(调查结论)字段全量有效行。', @@ -980,29 +1241,43 @@ const configs: Record = { }, { id: 'qc-defect-bar', - title: '产品缺陷成立:产品×故障 Top', - description: 'QLT-INV-502', + title: 'QLT-INV-502 产品缺陷成立:产品×故障Top 10', + description: 'QLT-INV-502|横轴产品×故障组合|纵轴投诉条数(条)', chartExplain: ex( '子集:调查结论=「产品缺陷成立」的投诉记录。', - '在子集内按「产品×故障」计数排序,形成已确认质量问题池,供 CAPA/设计变更引用。', + 'QLT-INV-502:柱状图横轴为「产品 / 故障」组合名称(interval=0 全量展示),纵轴为投诉条数(条),形成已确认质量问题池,供 CAPA/设计变更引用。', ), optionBuilder: defectProductFaultBarOption, }, { id: 'qc-comp-pie', - title: '赔付结论分布', + title: 'QLT-CST-601 赔付结论分布', description: 'QLT-CST-601', chartExplain: ex('质量投诉表 compensation(赔付结论)字段。', '统计各类赔付方式占比,作为质量失败外显成本(COQ)结构的入口指标。'), optionBuilder: compensationPieOption, }, { id: 'qc-product-top', - title: '产品投诉条数 Top', - description: 'QLT-CNC-302', - chartExplain: ex('质量投诉表 productName。', '按产品聚合投诉条数,与调查/赔付饼图联读以定位重点产品。'), + title: (ctx) => { + const { labels } = buildTopProductsComplaints(ctx, 10) + return `QLT-CNC-302 产品投诉条数Top ${labels.length}` + }, + description: 'QLT-CNC-302|柱数=N|上限10', + chartExplain: ex( + '质量投诉表 productName;展示上限 10,若不同产品数不足则 N=实际产品数。', + 'QLT-CNC-302:图表标题与柱数为「Top N」,N 与图中柱子数量一致;与调查/赔付饼图联读以定位重点产品。', + ), optionBuilder: (context) => { - const t = buildTopProductsComplaints(context, 8) - return barOption('产品投诉 Top', t.labels, t.values, QUALITY_DOC_REF) + const t = buildTopProductsComplaints(context, 10) + const n = t.labels.length + return barOption(`QLT-CNC-302 产品投诉条数Top ${n}`, t.labels, t.values, QUALITY_DOC_REF, { + xName: '产品名称', + yName: '投诉条数(条)', + bottom: 96, + rotate: 28, + interval: 0, + fontSize: 10, + }) }, }, ], @@ -1023,7 +1298,7 @@ const configs: Record = { charts: [ { id: 'qc-batch-ae', - title: '批号:投诉 vs AE 条数', + title: 'QLT-BTH-104 批号:投诉 vs AE 条数', description: 'QLT-BTH-104', chartExplain: ex( '投诉侧 batchNo;AE 侧 productBatch(batchNo);剔除双方均为 0 的批号。', @@ -1033,7 +1308,7 @@ const configs: Record = { }, { id: 'qc-close-cycle', - title: '投诉关闭周期分布', + title: 'QLT-RPT-802 投诉关闭周期分布', description: 'QLT-RPT-802', chartExplain: ex( '仅统计 closeDate、registerDate 均可解析且差分≥0 的投诉行。', @@ -1067,7 +1342,7 @@ const configs: Record = { charts: [ { id: 'ae-scatter-hosp', - title: '医院:AE 条数 vs 入院 cyQty', + title: 'QLT-AE-1003 医院:AE 条数 vs 入院 cyQty', description: 'QLT-AE-1003', chartExplain: ex( 'AE 表按 unitName 计数报告条数;入院表按 HospitalName 汇总 cyQty;AE 未按投诉时间轴过滤。', @@ -1077,7 +1352,7 @@ const configs: Record = { }, { id: 'ae-upgrade-rate', - title: '按产品的投诉升级率', + title: 'QLT-AE-1001 按产品的投诉升级率', description: 'QLT-AE-1001', chartExplain: ex( '质量投诉表 isAe(是否不良事件)与 productName。', @@ -1103,25 +1378,69 @@ const configs: Record = { charts: [ { id: 'ae-only-failure', - title: 'AE 器械故障表现分布', - description: '演示', + title: 'CMP-AE-301 AE 器械故障Top 10', + description: 'CMP-AE-301|横轴器械故障表现|纵轴累计事件数(条)', chartExplain: ex( '不良事件表全量;字段 deviceFailure。', - '对仅走监管通道的报告,按器械故障表现聚类,辅助理解「未并发投诉」的事件形态(主策略 §3.4.2 占位深化方向)。', + 'CMP-AE-301:横轴为各故障表现名称(全量展示),纵轴为累计 AE 事件条数;柱顶为条数;tooltip 可查看涉及产品(与 PSUR 器械故障图口径一致)。', ), optionBuilder: (context) => { - const top = buildTopDeviceFailures(context, 8) - return barOption('AE 故障 Top', top.labels, top.values, COMPLIANCE_DOC_REF) + const top = buildTopDeviceFailures(context, 10) + return { + title: { + text: 'CMP-AE-301 AE 器械故障Top 10', + subtext: `${COMPLIANCE_DOC_REF}|AE 表 deviceFailure;累计事件数取 Top10`, + left: 'center', + textStyle: { fontSize: 14 }, + subtextStyle: { fontSize: 11, color: '#64748b' }, + }, + tooltip: { + trigger: 'axis', + axisPointer: { type: 'shadow' }, + formatter: (params: any) => { + const row = Array.isArray(params) ? params[0] : params + const idx = Number(row?.dataIndex ?? 0) + const products = top.topProducts[idx] ?? [] + const productText = products.length + ? products.map((p) => `${p.product}`).join('、') + : '暂无产品信息' + return [ + `${row?.axisValue ?? ''}`, + `累计事件数:${row?.value ?? 0}`, + `涉及产品:${productText}`, + ].join('
') + }, + }, + grid: { top: 86, right: 24, bottom: 90, left: 48 }, + xAxis: { + type: 'category', + name: '器械故障表现', + data: top.labels, + axisLabel: { interval: 0, rotate: 30, fontSize: 11 }, + }, + yAxis: { type: 'value', name: '累计事件数(条)' }, + series: [ + { + type: 'bar', + data: top.values, + itemStyle: { borderRadius: [4, 4, 0, 0] }, + label: { show: true, position: 'top', fontSize: 11 }, + }, + ], + } as EChartsOption }, }, { id: 'ae-only-monthly', - title: 'AE 月度条数(发生日期)', - description: '演示', - chartExplain: ex('不良事件表 occurrenceDate 按月桶。', '与投诉月度趋势对照时须在业务上区分两条时间轴。'), + title: 'CMP-AE-101 AE月度汇总(发生日期)', + description: 'CMP-AE-101|按发生月汇总 AE 报告条数', + chartExplain: ex( + '不良事件表 occurrenceDate 按月桶;单元=报告条数。', + 'CMP-AE-101:与 PSUR「不良事件报告数」同口径(发生月);与投诉月度趋势对照时须在业务上区分两条时间轴。', + ), optionBuilder: (context) => { const t = buildAeMonthlyByOccurrence(context) - return lineOption('AE 月度', t.months, t.values, 'AE 条数', COMPLIANCE_DOC_REF) + return lineOption('CMP-AE-101 AE月度汇总', t.months, t.values, 'AE 报告条数(条)', COMPLIANCE_DOC_REF) }, }, ], @@ -1133,39 +1452,53 @@ const configs: Record = { title: '报告且投诉分析', pillar: 'diagnose', strategyRef: '3.4.3', - subtitle: '诊断层:已升级投诉(isAe=true)的故障类型分布(演示)。', + subtitle: '诊断层:QLT-AE-1004 / QLT-AE-1005|已升级投诉(isAe=true)|主策略 §3.4.3。', sections: [ { id: 'ae-with-complaint', title: '报告+投诉交集', - strategyRefs: ['3.4.3'], + strategyRefs: ['3.4.3', 'QLT-AE-1004', 'QLT-AE-1005'], charts: [ { id: 'ae-with-fault', - title: '已升级投诉的故障类型分布', - description: 'isAe=true', + title: 'QLT-AE-1004 已升级投诉故障类型分布', + description: 'QLT-AE-1004|子集 isAe=true|横轴故障类型|纵轴投诉条数(条)', chartExplain: ex( '子集:质量投诉表 isAe=true。', - '在「已升级」子集上按 faultType 计数,用于与 AE 表伤害/故障矩阵叙事衔接(细粒度匹配规则见合规审计主题)。', + 'QLT-AE-1004:柱状图横轴为故障类型名称(全量展示),纵轴为投诉条数(条);与 AE 表伤害/故障矩阵叙事衔接。', ), optionBuilder: (context) => { const sub = context.complaints.filter((c) => c.isAe) const m = new Map() - sub.forEach((c) => m.set(c.faultType, (m.get(c.faultType) ?? 0) + 1)) + sub.forEach((c) => { + const k = c.faultType?.trim() ? c.faultType : '(空)' + m.set(k, (m.get(k) ?? 0) + 1) + }) const sorted = [...m.entries()].sort((a, b) => b[1] - a[1]) return barOption( - '升级投诉故障类型', + 'QLT-AE-1004 已升级投诉故障类型分布', sorted.map((i) => i[0]), sorted.map((i) => i[1]), - QUALITY_DOC_REF, + `${QUALITY_DOC_REF}|子集 isAe=true`, + { + xName: '故障类型', + yName: '投诉条数(条)', + bottom: 96, + rotate: 28, + interval: 0, + fontSize: 10, + }, ) }, }, { id: 'ae-with-monthly', - title: '已升级投诉的登记月份趋势', - description: 'C3登记月', - chartExplain: ex('子集:isAe=true;时间字段 registerDate。', '观察升级投诉在登记时间上的分布,用于与 AE 发生月趋势对照。'), + title: 'QLT-AE-1005 已升级投诉登记月份趋势', + description: 'QLT-AE-1005|横轴登记月(yy-MM)|纵轴投诉条数(条)', + chartExplain: ex( + '子集:isAe=true;时间字段 registerDate 取年月。', + 'QLT-AE-1005:横轴简写为 yy-MM,tooltip 展示完整 YYYY-MM;纵轴为升级投诉条数;与 AE 发生月趋势对照时须脚注双时间轴。', + ), optionBuilder: (context) => { const sub = context.complaints.filter((c) => c.isAe) const counter = new Map() @@ -1173,8 +1506,54 @@ const configs: Record = { const k = c.registerDate.slice(0, 7) counter.set(k, (counter.get(k) ?? 0) + 1) }) - const months = [...counter.keys()].sort() - return lineOption('升级投诉月度', months, months.map((x) => counter.get(x) ?? 0), '条数', QUALITY_DOC_REF) + const monthsFull = [...counter.keys()].sort() + const monthLabels = monthsFull.map((m) => { + const [y, mo] = m.split('-') + return `${y.slice(2)}-${mo}` + }) + const vals = monthsFull.map((x) => counter.get(x) ?? 0) + return { + title: { + text: 'QLT-AE-1005 已升级投诉登记月份趋势', + subtext: `${QUALITY_DOC_REF}|子集 isAe=true|横轴简写 yy-MM,悬停见完整年月`, + left: 'center', + textStyle: { fontSize: 14 }, + subtextStyle: { fontSize: 11, color: '#64748b' }, + }, + tooltip: { + trigger: 'axis', + formatter: (params: unknown) => { + const list = Array.isArray(params) ? params : [params] + const first = list[0] as { dataIndex?: number; marker?: string; seriesName?: string; value?: number } + const idx = first?.dataIndex ?? 0 + const full = monthsFull[idx] ?? '' + const lines = [`C3登记月:${full}`] + for (const p of list) { + const row = p as { marker?: string; seriesName?: string; value?: number } + lines.push(`${row.marker ?? ''}${row.seriesName ?? ''}:${row.value ?? 0} 条`) + } + return lines.join('
') + }, + }, + grid: { top: 92, right: 24, bottom: 52, left: 56 }, + xAxis: { + type: 'category', + name: 'C3登记月(yy-MM)', + data: monthLabels, + axisLabel: { interval: 0, rotate: 0, fontSize: 11 }, + }, + yAxis: { type: 'value', name: '投诉条数(条)' }, + series: [ + { + name: '升级投诉条数', + type: 'line', + smooth: true, + data: vals, + label: { show: true, position: 'top', fontSize: 10 }, + symbolSize: 8, + }, + ], + } as EChartsOption }, }, ], @@ -1195,11 +1574,11 @@ const configs: Record = { charts: [ { id: 'mkt-op-hospital', - title: '操作不当投诉:医院分布', - description: 'MKT-OP-101', + title: 'MKT-OP-101 操作不当投诉:医院Top 10', + description: 'MKT-OP-101|横轴医院|纵轴投诉条数(条)', chartExplain: ex( `投诉表子集:调查结论=「操作不当」;${MKT_TIME_AXIS};全量 mock。`, - '按医院名称计数操作不当投诉条数并取 Top,用于院内培训与跟台优先级(主策略 §4.1)。', + 'MKT-OP-101:柱状图横轴为医院名称(interval=0 全量展示),纵轴为操作不当投诉条数;用于院内培训与跟台优先级(主策略 §4.1)。', ), optionBuilder: mktOpWrongHospitalOption, }, @@ -1271,11 +1650,11 @@ const configs: Record = { }, { id: 'mkt-rg-province-count', - title: '省级投诉条数 Top(绝对量)', - description: 'MKT-RG-203', + title: 'MKT-RG-203 省级投诉条数Top 10(绝对量)', + description: 'MKT-RG-203|横轴省份|纵轴投诉条数(条)', chartExplain: ex( '全量投诉按省计数,不按入院量标准化。', - '与省级投诉率对照,区分「人口/销量大省带来的绝对量大」与「相对率异常高」。', + 'MKT-RG-203:柱状图横轴为各省名称(interval=0 全量展示),纵轴为投诉条数(条);与省级投诉率对照,区分绝对量与相对率。', ), optionBuilder: mktProvinceComplaintCountOption, }, diff --git a/analytics-demo-web/src/lib/aggregate.ts b/analytics-demo-web/src/lib/aggregate.ts index e3dddf3..d3b5432 100644 --- a/analytics-demo-web/src/lib/aggregate.ts +++ b/analytics-demo-web/src/lib/aggregate.ts @@ -30,13 +30,35 @@ export function buildAeMonthlyByOccurrence(context: AnalysisContext) { } } +/** CMP-AE-101 补充:为月度序列计算对应年度平均数 */ +export function buildAeMonthlyWithYearAverage(context: AnalysisContext) { + const monthly = buildAeMonthlyByOccurrence(context) + const yearlyBucket = new Map() + monthly.months.forEach((month, idx) => { + const year = month.slice(0, 4) + const values = yearlyBucket.get(year) ?? [] + values.push(monthly.values[idx]) + yearlyBucket.set(year, values) + }) + const yearlyAvg = new Map() + yearlyBucket.forEach((values, year) => { + const avg = values.reduce((sum, val) => sum + val, 0) / values.length + yearlyAvg.set(year, Number(avg.toFixed(2))) + }) + return { + months: monthly.months, + values: monthly.values, + yearAvg: monthly.months.map((month) => yearlyAvg.get(month.slice(0, 4)) ?? 0), + } +} + /** 产品事件 Top(全期,按发生日期归属可选扩展;此处为全量计数) */ -export function buildPsurTopProducts(context: AnalysisContext) { +export function buildPsurTopProducts(context: AnalysisContext, topN = 10) { const counter = new Map() context.ae.forEach((record) => { counter.set(record.productName, (counter.get(record.productName) ?? 0) + 1) }) - const sorted = [...counter.entries()].sort((a, b) => b[1] - a[1]).slice(0, 6) + const sorted = [...counter.entries()].sort((a, b) => b[1] - a[1]).slice(0, topN) return { labels: sorted.map((item) => item[0]), values: sorted.map((item) => item[1]), @@ -75,6 +97,26 @@ export function buildGlobalMonthlyPpm(context: AnalysisContext) { return { months, ppm } } +/** CMP-AE-201 补充:月度涉及产品数与 AE 报告数(可设置截止月) */ +export function buildMonthlyProductAndAeCounts(context: AnalysisContext, endMonth = '9999-12') { + const productSets = new Map>() + const aeCount = new Map() + context.ae.forEach((record) => { + const month = monthKey(record.occurrenceDate) + if (month > endMonth) return + const products = productSets.get(month) ?? new Set() + products.add(record.productName) + productSets.set(month, products) + aeCount.set(month, (aeCount.get(month) ?? 0) + 1) + }) + const months = [...aeCount.keys()].sort() + return { + months, + productCounts: months.map((m) => productSets.get(m)?.size ?? 0), + aeCounts: months.map((m) => aeCount.get(m) ?? 0), + } +} + /** CMP-AE-501:SAE 报告条数(按发生月) */ export function buildSaeMonthlyByOccurrence(context: AnalysisContext) { const counter = new Map() @@ -134,12 +176,19 @@ export function buildReportingTimelinessRate(context: AnalysisContext, threshold return { rate: Number(((ok / denom) * 100).toFixed(1)), sample: denom } } -/** CMP-AE-301:器械故障 Top */ +/** CMP-AE-301:器械故障 Top10(含每类涉及产品信息) */ export function buildTopDeviceFailures(context: AnalysisContext, topN = 10) { const counter = new Map() + const productsByFailure = new Map>() context.ae.forEach((r) => { const k = r.deviceFailure || '(空)' counter.set(k, (counter.get(k) ?? 0) + 1) + const p = r.productName || '(空)' + if (!productsByFailure.has(k)) { + productsByFailure.set(k, new Map()) + } + const productCounter = productsByFailure.get(k)! + productCounter.set(p, (productCounter.get(p) ?? 0) + 1) }) const sorted = [...counter.entries()].sort((a, b) => b[1] - a[1]).slice(0, topN) const total = context.ae.length || 1 @@ -147,6 +196,14 @@ export function buildTopDeviceFailures(context: AnalysisContext, topN = 10) { labels: sorted.map((i) => i[0]), values: sorted.map((i) => i[1]), pct: sorted.map((i) => Number(((i[1] / total) * 100).toFixed(1))), + topProducts: sorted.map(([failure]) => { + const productCounter = productsByFailure.get(failure) + if (!productCounter) return [] + return [...productCounter.entries()] + .sort((a, b) => b[1] - a[1]) + .slice(0, 3) + .map(([product, count]) => ({ product, count })) + }), } } @@ -251,6 +308,7 @@ export function buildComplianceMatching(context: AnalysisContext) { let lagCompliantFromRegistration = 0 let lagSample = 0 let lagCompliantFromC3 = 0 + const matchedLagDays: number[] = [] for (const c of flagged) { const candidates = context.ae.filter( (a) => @@ -268,6 +326,7 @@ export function buildComplianceMatching(context: AnalysisContext) { lagSample += 1 const lagReg = daysBetween(best.reviewDate, best.registrationDate) if (lagReg >= 0 && lagReg <= 15) lagCompliantFromRegistration += 1 + if (lagReg >= 0) matchedLagDays.push(lagReg) const lagC3 = daysBetween(best.reviewDate, c.registerDate) if (lagC3 >= 0 && lagC3 <= 15) lagCompliantFromC3 += 1 } @@ -282,6 +341,7 @@ export function buildComplianceMatching(context: AnalysisContext) { lagSample > 0 ? Number(((lagCompliantFromRegistration / lagSample) * 100).toFixed(1)) : 0, timelinessFromC3Pct: lagSample > 0 ? Number(((lagCompliantFromC3 / lagSample) * 100).toFixed(1)) : 0, lagSample, + matchedLagDays, missedRows, } } diff --git a/analytics-demo-web/src/lib/comprehensive-insights.ts b/analytics-demo-web/src/lib/comprehensive-insights.ts index 52ebad5..93c7246 100644 --- a/analytics-demo-web/src/lib/comprehensive-insights.ts +++ b/analytics-demo-web/src/lib/comprehensive-insights.ts @@ -393,7 +393,7 @@ export function buildComprehensiveInsightRows(context: AnalysisContext): Insight dimension, pageTitle: def.title, chartId: chart.id, - chartTitle: chart.title, + chartTitle: typeof chart.title === 'function' ? chart.title(context) : chart.title, bullets, }) } diff --git a/analytics-demo-web/src/types/analysis.ts b/analytics-demo-web/src/types/analysis.ts index f9752f6..45dca7e 100644 --- a/analytics-demo-web/src/types/analysis.ts +++ b/analytics-demo-web/src/types/analysis.ts @@ -17,7 +17,8 @@ export interface ChartExplain { export interface ChartDefinition { id: string - title: string + /** 静态文案,或根据上下文返回动态标题(如 Top N 与柱数一致) */ + title: string | ((context: AnalysisContext) => string) /** 一句话摘要,可放在卡片标题行右侧 */ description?: string /** 取数范围与分析逻辑(与《质量方向分析》等指标文档对齐) */ diff --git a/analytics-demo-web/src/views/AnalysisView.vue b/analytics-demo-web/src/views/AnalysisView.vue index 32cd736..442613c 100644 --- a/analytics-demo-web/src/views/AnalysisView.vue +++ b/analytics-demo-web/src/views/AnalysisView.vue @@ -21,6 +21,13 @@ function resolveOption(builder?: (ctx: AnalysisContext) => EChartsOption) { return builder(context.value) } +function resolveChartTitle(chart: { title: string | ((ctx: AnalysisContext) => string) }) { + if (typeof chart.title === 'function') { + return context.value ? chart.title(context.value) : '…' + } + return chart.title +} + const pillarText: Record = { goal: '目标层', monitor: '监测层', @@ -58,7 +65,7 @@ const pillarText: Record = { T_end` 则标为数据质量异常单。 | **直方图/箱线图**:展示从获知登记到闭环的滞后分布。 | -| **CMP-AE-702** | 法规时限合规率(15 天/45 天等) | 在 CMP-AE-701 可判定集合上,按事件分类(是否适用死亡/危及生命等**更短时限**,以企业规则表配置)分别比较 `Lag ≤ T`。**合规率** = 合规条数 / 可判定条数。 | **仪表盘阈值灯**:内控与审计应答「是否满足报告时限」。 | -| **CMP-AE-703** | 超窗案例清单 | 列出 `Lag > T` 的 AE **报告**及超窗天数、责任单元(若可解析)。 | **整改任务列表**:支持 CAPA 与流程 IT 改进闭环。 | +| **CMP-AE-701** | 上报合规率 | 整合原 CMP-AE-701~703。**定义**:`Lag = T_end − 登记日期`(获知日=登记日期;`T_end`=审核日期或首次提交监管日期,企业统一配置)。仅统计两日期均非空的 AE 报告;**合规率** = `Lag ≤ 15天` 的条数 / 可判定总条数 ×100%。超窗(`Lag > 15天`)案例以红色柱标记,支撑 CAPA 与整改闭环。 | **柱状图**:图表名称为「CMP-AE-701 上报合规率」,横坐标为滞后天数分段(天),纵坐标为 AE 条数(条);≤15天合规区间以绿色显示,>15天超窗区间以红色显示;副标题呈现可判定总条数、合规条数、合规率及超窗条数。 | *注:「15/45 天」是否顺延节假日可作为**可配置策略**,须在报表脚注固定输出;**与投诉 C3 登记的跨表时效**见 **CMP-CV-104**。* @@ -184,10 +183,7 @@ | 指标编码 | 指标名称 | 计算逻辑与方法 | 页面呈现用途 | |----------|----------|----------------|--------------| -| **CMP-CV-101** | 疑似漏报条数 | 基准集合中,**无任何**满足匹配规则的 AE 记录的投诉条数。 | **审计高亮列表**:逐条进入调查与补报流程。 | -| **CMP-CV-102** | 漏报率 | `疑似漏报条数 / 基准集合总条数 ×100%`。 | **合规 KPI 卡片**:季度汇报内控与管理层。 | -| **CMP-CV-103** | 匹配成功条数 | 基准集合中存在 ≥1 条 AE 匹配的投诉数。 | **过程能力参考**:与漏报率互补,用于评估匹配规则是否过严。 | -| **CMP-CV-104** | 上报时效合规率(投诉-AE 配对子集) | 在匹配成功子集上:**优先**对 AE 使用 **CMP-AE-701/702**(`Lag = T_end − 登记日期`)计算合规率;若业务需展示「投诉通道起点」则并列计算 `Lag₂ = T_end − 投诉.C3登记日期` 的合规率并在 UI 标注双口径。 | **联接视图**:同时看「有没有报」与「报得是否及时」,并区分获知登记 vs 投诉登记起点。 | +| **CMP-CV-101** | 上报合规审计摘要 | 将 CMP-CV-101~104 四项指标整合为一张图表。**漏报率**(CMP-CV-102)= 疑似漏报条数 / 基准集合总条数 ×100%;**匹配率**(CMP-CV-103)= 匹配成功条数 / 基准集合总条数 ×100%;**时效合规率(登记口径)**(CMP-CV-104)= 匹配子集中 `Lag = T_end − 登记日期 ≤ 15天` 的占比;**时效合规率(C3口径)** = `Lag₂ = T_end − 投诉.C3登记日期 ≤ 15天` 的占比。副标题展示基准样本量、匹配条数及疑似漏报条数(绝对值)。 | **柱状图**:图表名称为「CMP-CV-101 上报合规审计摘要」,四个审计指标分柱展示百分比,副标题呈现绝对量(基准总条数、匹配条数、疑似漏报条数),用于内控季度汇报与外审抽样框架说明。 | **页面呈现用途(主题级)**:本分析模块整体用于回应《医疗器械不良事件监测和再评价管理办法》等法规中的**上报义务**内控证据,并可作为外审时的抽样框架说明。 diff --git a/分析策略/营销方向分析.md b/分析策略/营销方向分析.md index b487699..d3ef162 100644 --- a/分析策略/营销方向分析.md +++ b/分析策略/营销方向分析.md @@ -45,7 +45,7 @@ | 指标编码 | 指标名称 | 计算逻辑与方法 | 页面呈现用途 | |----------|----------|----------------|--------------| -| **MKT-OP-101** | 操作不当投诉医院 TopN | 子集:`调查结论 = 操作不当`;按 **`医院名称`** 计数投诉条数,降序取 TopN。 | **条形图**:培训现场名单与院内教育优先级。 | +| **MKT-OP-101** | 操作不当投诉:医院Top 10 | 子集:`调查结论 = 操作不当`;按 **`医院名称`** 计数投诉条数,降序取 Top 10。 | **柱状图**:图表名称为「操作不当投诉:医院Top 10」,培训现场名单与院内教育优先级。 | | **MKT-OP-102** | 操作不当投诉经销商分布(条数) | 同上子集;每条投诉经 **`医院名称` → 入院量众数 DealerName`** 归入经销商后计数。 | **条形图**:渠道侧辅导与考核对象排序。 | | **MKT-OP-103** | 经销商操作不当率(入院量分母) | 子集同上;**分子**=该经销商名下医院映射后的操作不当条数;**分母**=入院量表 **`DealerName`** 等于该经销商的 **CY Qty 汇总**;**率** = 分子/分母×1000(件/千件,与质量 QLT-SAL-901 量级一致便于对照)。 | **排序条形图**:识别「相对销量操作不当偏多」的经销商。 | | **MKT-OP-104** | 产品操作不当占比 | 按 **`产品名称`**:`操作不当条数 / 该产品全部投诉条数 ×100%`;可设最小投诉量阈值再展示避免小样本。 | **条形图**:说明书/视频/数字化指导优先级。 | @@ -61,7 +61,7 @@ |----------|----------|----------------|--------------| | **MKT-RG-201** | 省级投诉率(入院量分母) | **分子**:投诉经医院→**省**映射后的条数(可全量投诉或限定时间窗)。**分母**:入院量表同一 **Province** 的 **CY Qty** 汇总。**率** = 分子/分母×1000。 | **省级排名条形图/地图**:区域资源与活动排期。 | | **MKT-RG-202** | 经销商投诉率(入院量分母) | **分子**:投诉经医院→**DealerName(众数)** 归类计数。**分母**:入院量表 **DealerName** 维度 **CY Qty** 汇总。**率** = 分子/分母×1000。 | **经销商排名**:辅导、仓储、配送假设的优先验证名单。 | -| **MKT-RG-203**(可选) | 省级投诉条数(不分母) | 仅计数,用于与 MKT-RG-201 对照区分「绝对量大」与「相对率高」。 | **并列卡片或表**:避免人口大省误判。 | +| **MKT-RG-203** | 省级投诉条数Top 10(绝对量) | 按省计数投诉条数,降序取 Top 10,不做入院量标准化,用于与 MKT-RG-201 对照区分「绝对量大」与「相对率高」。 | **柱状图**:图表名称为「省级投诉条数Top 10(绝对量)」,避免人口大省误判。 | **实现注意**:同一医院在多经销商、多 BU 行中共存时,**众数规则**可能随月份切片变化,须在数据字典中固定;与质量方向 **医院×产品** 对齐键若不一致,应在页面脚注声明。 diff --git a/分析策略/质量方向分析.md b/分析策略/质量方向分析.md index 8876d40..2a04d7b 100644 --- a/分析策略/质量方向分析.md +++ b/分析策略/质量方向分析.md @@ -51,7 +51,7 @@ | 指标编码 | 指标名称 | 计算逻辑与方法 | 页面呈现用途 | |----------|----------|----------------|--------------| -| **QLT-BTH-101** | 批号投诉条数排名 | 按 **`批号`**(投诉表)分组,在 **`C3登记日期`** 落入统计期的集合内对 **投诉条数** 计数,降序取 TopN。空批号可单列「未填批号」桶。 | **条形图 + 下钻清单**:快速锁定高频问题批,触发批次调查流程。 | +| **QLT-BTH-101** | 批号投诉条数Top 10 | 按 **`批号`**(投诉表)分组,在 **`C3登记日期`** 落入统计期的集合内对 **投诉条数** 计数,降序取 Top 10。空批号可单列「未填批号」桶。 | **柱状图**:图表名称为「批号投诉条数Top 10」,快速锁定高频问题批,触发批次调查流程。 | | **QLT-BTH-102** | 单批重复投诉率 | 对每条非空批号:`该批投诉条数 / 该批涉及医院去重数` 或 `该批投诉条数 / 该批产品入院量(若可对齐)`;二选一全司固化。**简单版**:批内投诉条数 ≥2 记为「重复投诉批次」并列表。 | **批次风险标签**:区分「单次孤立」与「同批多点爆发」。 | | **QLT-BTH-103** | 问题批次故障结构 | 在 QLT-BTH-101 选中的批号子集上,对 **`故障类型`** 计数及占比。 | **堆叠条或饼图**:支撑根因假设(工艺 vs 运输 vs 原料)。 | | **QLT-BTH-104** | 投诉批号 × AE 产品批号双计数 | 同一统计期内:投诉侧按 **`批号`** 计数;AE 侧按 **`产品批号`** 计数。通过 **产品名称(及可选型号)** 弱关联后并列展示(不要求逐条匹配)。 | **对照表**:质量与 PV 共看「同一产品批是否双通道上升」。 | @@ -74,9 +74,9 @@ | 指标编码 | 指标名称 | 计算逻辑与方法 | 页面呈现用途 | |----------|----------|----------------|--------------| -| **QLT-CNC-301** | 医院投诉集中度(HHI 或 TopN 占比) | 按 **`医院名称`** 计数投诉条数;可计算 **HHI** = Σ(份额²) 或 **Top5 医院占比**。时间过滤:**`C3登记日期`**。 | **地图/条形图**:识别「单点高压」医院,安排现场或培训。 | -| **QLT-CNC-302** | 产品投诉集中度 | 按 **`产品名称`**(或映射到 **MaterialDesc**)计数;可叠加 **BU** 分层。 | **Pareto 条形图**:与 QLT-PRD 系列共用产品排序逻辑。 | -| **QLT-CNC-303** | 事件/故障类型集中度 | 按 **`故障类型`** 或从 **`投诉详情`** 抽取的事件标签(若后续有 NLP)计数;Top10 及累计占比达 80% 的截断线(Pareto)。 | **全局缺陷雷达**:与 §3.2 主题 E 的「产品×故障」互补(一维 vs 二维)。 | +| **QLT-CNC-301** | 医院投诉条数Top 10 | 按 **`医院名称`** 计数投诉条数,降序取 Top 10。时间过滤:**`C3登记日期`**。 | **柱状图**:图表名称为「医院投诉条数Top 10」,识别「单点高压」医院,安排现场或培训。 | +| **QLT-CNC-302** | 产品投诉条数Top N | 按 **`产品名称`**(或映射到 **MaterialDesc**)计数,降序取前 **N** 条(**N** 为统计期内不同产品数与展示上限中的较小值,演示默认上限 10);可叠加 **BU** 分层。 | **柱状图**:图表名称动态为「QLT-CNC-302 产品投诉条数Top **N**」,**N** 与图中实际柱数一致;与调查/赔付饼图联读以定位重点产品。 | +| **QLT-CNC-303** | 故障类型Top 10 | 按 **`故障类型`** 计数,降序取 Top 10;可扩展累计占比达 80% 的截断线(Pareto)。 | **柱状图**:图表名称为「故障类型Top 10」,与 Pareto 组合图互补的一维缺陷雷达。 | --- @@ -87,7 +87,7 @@ | **QLT-PRD-401** | 组合键投诉条数 | 维度 = **`产品名称` × `故障类型`**,统计期内对 **投诉条数** 求和;按条数降序。 | **Pareto 图(横轴为组合)**:展示「80% 投诉由哪些组合贡献」。 | | **QLT-PRD-402** | 各产品 Top3 故障类型及占比 | 在每个 **`产品名称`** 内,对 **`故障类型`** 取 Top3,占比 = 该类型条数 / 该产品总投诉条数。 | **产品卡片矩阵**:研发与工程按产品认领改进项。 | | **QLT-PRD-403** | 高频故障聚焦清单 | 在全局或 BU 子集上,筛选 **`故障类型`** ∈ {渗漏, 断裂, 流速异常, …}(码表可配置)且条数超阈值的组合。 | **CAPA 输入池**:与主策略 §3.1 e 示例故障对齐。 | - +QLT-PRD-401 --- ### 3.3 主题 E:调查结论与质量改进项池 @@ -95,7 +95,7 @@ | 指标编码 | 指标名称 | 计算逻辑与方法 | 页面呈现用途 | |----------|----------|----------------|--------------| | **QLT-INV-501** | 调查结论分布 | 对 **`调查结论(处理结果)`** 计数及占比(产品缺陷成立 / 未复现 / 操作不当 / 运输损伤 / 资料不足等)。时间:**`C3登记日期`** 或 **`调查报告完成日期`**(二选一做「调查产出」视图时固定)。 | **堆叠柱(按时间)**:看结论结构是否恶化(如「产品缺陷成立」上升)。 | -| **QLT-INV-502** | 「产品缺陷成立」× 产品 × 故障 | 子集:`调查结论` = **产品缺陷成立**;按 **产品 × 故障类型** 计数。 | **已确认质量问题池**:DFMEA/PFMEA 与设计变更的输入。 | +| **QLT-INV-502** | 产品缺陷成立:产品×故障Top 10 | 子集:`调查结论` = **产品缺陷成立**;按 **产品 × 故障类型** 计数,降序取 Top 10。 | **柱状图**:图表名称含 **QLT-INV-502**;横轴为 **产品×故障组合**(每个柱子下方完整展示组合名称,形如「产品 / 故障」);纵轴为 **投诉条数(条)**;用于已确认质量问题池,作为 DFMEA/PFMEA 与设计变更的输入。 | | **QLT-INV-503** | 「操作不当」× 医院 / 产品 | 子集:`调查结论` = **操作不当**;按医院或产品聚合。 | **培训需求清单**:与营销 §4.1 可共用数据,页面受众不同。 | | **QLT-INV-504** | 「运输损伤」× 经销商(若可关联) | 子集:`调查结论` = **运输损伤**;通过入院量 **`DealerName`** 与投诉医院映射后聚合。 | **物流薄弱环节看板**:与主策略 §3.3 n 一致方向。 | | **QLT-INV-505** | 「资料不足」字段缺失模式 | 统计「资料不足」子集中 **`有样品返回`**、附件、关键文本为空等模式(字段可用时)。 | **流程 IT 改进**:减少反复补件。 | @@ -121,7 +121,7 @@ | **QLT-TRN-701** | 首次出现投诉的医院 | 对每个 **`医院名称`**,取 **最小 `C3登记日期`** 落在统计期内且该医院历史(全量或滚动三年)此前无投诉则标记「首诉医院」。 | **新风险点清单**:客户成功或质量拜访优先级。 | | **QLT-TRN-702** | 首次出现投诉的产品 | 同理对 **`产品名称`**(或物料)判定「首诉产品」。 | **新产品/新适应症暴露** 监测。 | | **QLT-TRN-703** | 产品投诉量环比增长超 20% | 产品维度下对比 **等长两窗** 投诉条数,增速公式见 §1.4;输出超阈产品列表。 | **趋势预警表**:与主策略 §3.2 c 一致。 | -| **QLT-TRN-704** | 区域(省)投诉量环比增长超 20% | 投诉经医院映射 **`Province`**(入院量)后聚合;环比同 §1.4。 | **区域热力 + 列表**:供应链或渠道协同。 | +| **QLT-TRN-704** | 区域(省)投诉量环比增长超 20% | 投诉经医院映射 **`Province`**(入院量表 **医院→省** 众数)后聚合;按 **`C3登记日期`** 月份拆 **上半年(1–6月)** 与 **下半年(7–12月)** 分别计数 **投诉条数**;环比增速公式见 §1.4(前端演示图为各省上下半年对照,可与增速阈值列表联读)。 | **分组柱状图**:图表名称含 **QLT-TRN-704**;横轴为 **省份名称**,每个分组下方完整展示对应省名;横轴名称标注为省份维度,纵轴为 **投诉条数(条)**;用于区域波动监测与供应链/渠道协同。 | --- @@ -138,7 +138,7 @@ | 指标编码 | 指标名称 | 计算逻辑与方法 | 页面呈现用途 | |----------|----------|----------------|--------------| -| **QLT-SAL-901** | 医院×产品投诉率 | **分子**:统计期内该 **医院+产品** 投诉条数(**`C3登记日期`**)。**分母**:同期入院量 **CY Qty**(或 Amt)在相同对齐键上汇总。无分母时灰显。 | **散点或四象限**:识别「低销量高投诉」异常点。 | +| **QLT-SAL-901** | 医院×产品 投诉率Top 10 | **分子**:统计期内该 **医院+产品** 投诉条数(**`C3登记日期`**)。**分母**:同期入院量 **CY Qty**(或 Amt)在相同对齐键上汇总。无分母时灰显。降序取 Top 10。 | **柱状图**:图表名称为「医院×产品 投诉率Top 10(每千件入院量)」,突出相对暴露下的高频组合。 | | **QLT-SAL-902** | 新入院组合投诉率 vs 存量 | 新入院定义见 §1.4;分别计算新入院组合与存量的 **投诉率**(分子分母同 QLT-SAL-901)。 | **新市场磨合风险**:与主策略 §3.3 b 营销价值并列展示时脚注受众。 | | **QLT-SAL-903** | 新入院后首诉时间 | 对每个新入院组合,首条投诉的 **`C3登记日期`** 与入院首月的间隔分布。 | **入院后 30/60/90 天** 关怀与巡检依据。 | @@ -151,6 +151,8 @@ | **QLT-AE-1001** | 投诉合并为不良事件比例(升级率) | **`是否不良事件 = 是`** 的投诉条数 / 总投诉条数(时间窗内);可按 **BU** 分层。 | **升级文化/流程** 对比:各事业线是否愿报、敢报。 | | **QLT-AE-1002** | 样品返回与调查结论关系 | 交叉 **`有样品返回`** / **`上报坏品数量`** 与 **`调查结论`**(卡方或简单占比表)。 | **证据链完整性**:与主策略 §3.4.1 g 一致。 | | **QLT-AE-1003** | 医院 AE 报告量 vs 入院量 | AE 按 **`单位名称`** 与 **发生日期**(合规口径)计数;入院量同院同期分母;散点。**注意**:与投诉率时间轴不同,页面须双脚注。 | **报告行为异常点**(非直接质量结论):识别需复核的报送模式。 | +| **QLT-AE-1004** | 已升级投诉故障类型分布 | 子集 **`是否不良事件 = 是`**;按 **`故障类型`** 计数;时间过滤默认 **`C3登记日期`**。 | **柱状图**:编号 QLT-AE-1004;横轴故障类型、纵轴投诉条数(条);与主策略 §3.4.3「报告且投诉」叙事衔接。 | +| **QLT-AE-1005** | 已升级投诉登记月份趋势 | 同上子集;按 **`C3登记日期`** 公历年月桶对投诉条数求和。 | **折线图**:编号 QLT-AE-1005;横轴为登记月(可简写为 yy-MM),纵轴条数;与 AE 发生月趋势对照时须脚注双时间轴。 | **漏报与上报时效**:严格合规 KPI 仍以 [合规方向分析.md](./合规方向分析.md) **§3.1**(`CMP-CV-101`~`104` 等)为准;质量方向分析视图可 **嵌入同一语义指标** 或链接跳转,避免重复定义。