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` 等)为准;质量方向分析视图可 **嵌入同一语义指标** 或链接跳转,避免重复定义。