-- ===========================================================================
-- 医保影像云图像质控规范 - CT检查部位质控标准 (第4批)
-- 基于《医保影像云图像质控规范 (YXY-QC-2025-A1)》
-- 
-- 本文件包含以下部位的CT质控标准：
--   - 5.4.7 上腹部、下腹部、盆腔 (2个检查项目)
--   - 5.4.8 上腹部、下腹部 (2个检查项目)
--   - 5.4.9 上腹部 (12个检查项目)
--   - 5.4.10 盆腔 (4个检查项目)
--   - 5.4.11 其他 (5个检查项目)
-- 
-- 检查项目总数: 25
-- 质控因子总数: 175
-- 
-- 创建时间: 2026-01-13
-- ===========================================================================

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOPELV_5_4_7_1_1', 'CT_ABDOPELV_5_4_7_1_1', '检查范围', 3, 'boolean',
'检查范围从膈顶至耻骨联合',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "上腹部、下腹部、盆腔", "checkCoverage": true}, "isVeto": false, "description": "检查范围从膈顶至耻骨联合"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOPELV_5_4_7_1_2', 'CT_ABDOPELV_5_4_7_1_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOPELV_5_4_7_1_3', 'CT_ABDOPELV_5_4_7_1_3', '重建参数', 3, 'boolean',
'厚层≤5.0mm，薄层≤2.0mm，DFOV：32cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 5.0, "thickIntervalMax": 5.0, "thinSliceMax": 2.0, "thinIntervalMax": 2.0, "dfov": 32, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤5.0mm，薄层≤2.0mm，DFOV：32cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOPELV_5_4_7_1_4', 'CT_ABDOPELV_5_4_7_1_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽350HU，窗位40HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 350, "max": 350}, "windowCenter": {"min": 40, "max": 40}}}, "isVeto": true, "description": "软组织窗：窗宽350HU，窗位40HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOPELV_5_4_7_1_5', 'CT_ABDOPELV_5_4_7_1_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOPELV_5_4_7_1_6', 'CT_ABDOPELV_5_4_7_1_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOPELV_5_4_7_1_7', 'CT_ABDOPELV_5_4_7_1_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOPELV_5_4_7_1_8', 'CT_ABDOPELV_5_4_7_1_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_7_1', 'CT_5_4_7_1', '腹盆腔CT平扫质控标准', 'CT', '上腹部、下腹部、盆腔', '平扫', '腹盆腔CT平扫', 80,
'腹盆腔CT平扫质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_7_1_1', 'STD_CT_5_4_7_1', 'CT_ABDOPELV_5_4_7_1_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_7_1_2', 'STD_CT_5_4_7_1', 'CT_ABDOPELV_5_4_7_1_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_7_1_3', 'STD_CT_5_4_7_1', 'CT_ABDOPELV_5_4_7_1_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_7_1_4', 'STD_CT_5_4_7_1', 'CT_ABDOPELV_5_4_7_1_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_7_1_5', 'STD_CT_5_4_7_1', 'CT_ABDOPELV_5_4_7_1_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_7_1_6', 'STD_CT_5_4_7_1', 'CT_ABDOPELV_5_4_7_1_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_7_1_7', 'STD_CT_5_4_7_1', 'CT_ABDOPELV_5_4_7_1_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_7_1_8', 'STD_CT_5_4_7_1', 'CT_ABDOPELV_5_4_7_1_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOPELV_5_4_7_2_1', 'CT_ABDOPELV_5_4_7_2_1', '检查范围', 3, 'boolean',
'检查范围从膈顶至耻骨联合',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "上腹部、下腹部、盆腔", "checkCoverage": true}, "isVeto": false, "description": "检查范围从膈顶至耻骨联合"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOPELV_5_4_7_2_2', 'CT_ABDOPELV_5_4_7_2_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOPELV_5_4_7_2_3', 'CT_ABDOPELV_5_4_7_2_3', '重建参数', 3, 'boolean',
'厚层≤5.0mm，薄层≤2.0mm，DFOV：32cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 5.0, "thickIntervalMax": 5.0, "thinSliceMax": 2.0, "thinIntervalMax": 2.0, "dfov": 32, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤5.0mm，薄层≤2.0mm，DFOV：32cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOPELV_5_4_7_2_4', 'CT_ABDOPELV_5_4_7_2_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽350HU，窗位40HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 350, "max": 350}, "windowCenter": {"min": 40, "max": 40}}}, "isVeto": true, "description": "软组织窗：窗宽350HU，窗位40HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOPELV_5_4_7_2_5', 'CT_ABDOPELV_5_4_7_2_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOPELV_5_4_7_2_6', 'CT_ABDOPELV_5_4_7_2_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOPELV_5_4_7_2_7', 'CT_ABDOPELV_5_4_7_2_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOPELV_5_4_7_2_8', 'CT_ABDOPELV_5_4_7_2_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_7_2', 'CT_5_4_7_2', '腹盆腔CT增强质控标准', 'CT', '上腹部、下腹部、盆腔', '增强', '腹盆腔CT增强', 80,
'腹盆腔CT增强质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_7_2_1', 'STD_CT_5_4_7_2', 'CT_ABDOPELV_5_4_7_2_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_7_2_2', 'STD_CT_5_4_7_2', 'CT_ABDOPELV_5_4_7_2_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_7_2_3', 'STD_CT_5_4_7_2', 'CT_ABDOPELV_5_4_7_2_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_7_2_4', 'STD_CT_5_4_7_2', 'CT_ABDOPELV_5_4_7_2_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_7_2_5', 'STD_CT_5_4_7_2', 'CT_ABDOPELV_5_4_7_2_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_7_2_6', 'STD_CT_5_4_7_2', 'CT_ABDOPELV_5_4_7_2_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_7_2_7', 'STD_CT_5_4_7_2', 'CT_ABDOPELV_5_4_7_2_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_7_2_8', 'STD_CT_5_4_7_2', 'CT_ABDOPELV_5_4_7_2_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOMEN_5_4_8_1_1', 'CT_ABDOMEN_5_4_8_1_1', '检查范围', 3, 'boolean',
'检查范围从膈顶至髋关节',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "上腹部、下腹部", "checkCoverage": true}, "isVeto": false, "description": "检查范围从膈顶至髋关节"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOMEN_5_4_8_1_2', 'CT_ABDOMEN_5_4_8_1_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOMEN_5_4_8_1_3', 'CT_ABDOMEN_5_4_8_1_3', '重建参数', 3, 'boolean',
'厚层≤5.0mm，薄层≤2.0mm，DFOV：32cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 5.0, "thickIntervalMax": 5.0, "thinSliceMax": 2.0, "thinIntervalMax": 2.0, "dfov": 32, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤5.0mm，薄层≤2.0mm，DFOV：32cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOMEN_5_4_8_1_4', 'CT_ABDOMEN_5_4_8_1_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽350HU，窗位40HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 350, "max": 350}, "windowCenter": {"min": 40, "max": 40}}}, "isVeto": true, "description": "软组织窗：窗宽350HU，窗位40HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOMEN_5_4_8_1_5', 'CT_ABDOMEN_5_4_8_1_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOMEN_5_4_8_1_6', 'CT_ABDOMEN_5_4_8_1_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOMEN_5_4_8_1_7', 'CT_ABDOMEN_5_4_8_1_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOMEN_5_4_8_1_8', 'CT_ABDOMEN_5_4_8_1_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_8_1', 'CT_5_4_8_1', '腹部CT平扫质控标准', 'CT', '上腹部、下腹部', '平扫', '腹部CT平扫', 80,
'腹部CT平扫质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_8_1_1', 'STD_CT_5_4_8_1', 'CT_ABDOMEN_5_4_8_1_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_8_1_2', 'STD_CT_5_4_8_1', 'CT_ABDOMEN_5_4_8_1_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_8_1_3', 'STD_CT_5_4_8_1', 'CT_ABDOMEN_5_4_8_1_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_8_1_4', 'STD_CT_5_4_8_1', 'CT_ABDOMEN_5_4_8_1_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_8_1_5', 'STD_CT_5_4_8_1', 'CT_ABDOMEN_5_4_8_1_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_8_1_6', 'STD_CT_5_4_8_1', 'CT_ABDOMEN_5_4_8_1_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_8_1_7', 'STD_CT_5_4_8_1', 'CT_ABDOMEN_5_4_8_1_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_8_1_8', 'STD_CT_5_4_8_1', 'CT_ABDOMEN_5_4_8_1_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOMEN_5_4_8_2_1', 'CT_ABDOMEN_5_4_8_2_1', '检查范围', 3, 'boolean',
'检查范围从膈顶至髋关节',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "上腹部、下腹部", "checkCoverage": true}, "isVeto": false, "description": "检查范围从膈顶至髋关节"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOMEN_5_4_8_2_2', 'CT_ABDOMEN_5_4_8_2_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOMEN_5_4_8_2_3', 'CT_ABDOMEN_5_4_8_2_3', '重建参数', 3, 'boolean',
'厚层≤5.0mm，薄层≤2.0mm，DFOV：32cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 5.0, "thickIntervalMax": 5.0, "thinSliceMax": 2.0, "thinIntervalMax": 2.0, "dfov": 32, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤5.0mm，薄层≤2.0mm，DFOV：32cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOMEN_5_4_8_2_4', 'CT_ABDOMEN_5_4_8_2_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽350HU，窗位40HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 350, "max": 350}, "windowCenter": {"min": 40, "max": 40}}}, "isVeto": true, "description": "软组织窗：窗宽350HU，窗位40HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOMEN_5_4_8_2_5', 'CT_ABDOMEN_5_4_8_2_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOMEN_5_4_8_2_6', 'CT_ABDOMEN_5_4_8_2_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOMEN_5_4_8_2_7', 'CT_ABDOMEN_5_4_8_2_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ABDOMEN_5_4_8_2_8', 'CT_ABDOMEN_5_4_8_2_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_8_2', 'CT_5_4_8_2', '腹部CT增强质控标准', 'CT', '上腹部、下腹部', '增强', '腹部CT增强', 80,
'腹部CT增强质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_8_2_1', 'STD_CT_5_4_8_2', 'CT_ABDOMEN_5_4_8_2_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_8_2_2', 'STD_CT_5_4_8_2', 'CT_ABDOMEN_5_4_8_2_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_8_2_3', 'STD_CT_5_4_8_2', 'CT_ABDOMEN_5_4_8_2_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_8_2_4', 'STD_CT_5_4_8_2', 'CT_ABDOMEN_5_4_8_2_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_8_2_5', 'STD_CT_5_4_8_2', 'CT_ABDOMEN_5_4_8_2_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_8_2_6', 'STD_CT_5_4_8_2', 'CT_ABDOMEN_5_4_8_2_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_8_2_7', 'STD_CT_5_4_8_2', 'CT_ABDOMEN_5_4_8_2_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_8_2_8', 'STD_CT_5_4_8_2', 'CT_ABDOMEN_5_4_8_2_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_UPABD_5_4_9_1_1', 'CT_UPABD_5_4_9_1_1', '检查范围', 3, 'boolean',
'检查范围从膈顶至髂嵴',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "上腹部", "checkCoverage": true}, "isVeto": false, "description": "检查范围从膈顶至髂嵴"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_UPABD_5_4_9_1_2', 'CT_UPABD_5_4_9_1_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_UPABD_5_4_9_1_3', 'CT_UPABD_5_4_9_1_3', '重建参数', 3, 'boolean',
'厚层≤5.0mm，薄层≤2.0mm，DFOV：32cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 5.0, "thickIntervalMax": 5.0, "thinSliceMax": 2.0, "thinIntervalMax": 2.0, "dfov": 32, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤5.0mm，薄层≤2.0mm，DFOV：32cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_UPABD_5_4_9_1_4', 'CT_UPABD_5_4_9_1_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽350HU，窗位40HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 350, "max": 350}, "windowCenter": {"min": 40, "max": 40}}}, "isVeto": true, "description": "软组织窗：窗宽350HU，窗位40HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_UPABD_5_4_9_1_5', 'CT_UPABD_5_4_9_1_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_UPABD_5_4_9_1_6', 'CT_UPABD_5_4_9_1_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_UPABD_5_4_9_1_7', 'CT_UPABD_5_4_9_1_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_UPABD_5_4_9_1_8', 'CT_UPABD_5_4_9_1_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_9_1', 'CT_5_4_9_1', '上腹部CT平扫质控标准', 'CT', '上腹部', '平扫', '上腹部CT平扫', 80,
'上腹部CT平扫质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_9_1_1', 'STD_CT_5_4_9_1', 'CT_UPABD_5_4_9_1_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_9_1_2', 'STD_CT_5_4_9_1', 'CT_UPABD_5_4_9_1_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_9_1_3', 'STD_CT_5_4_9_1', 'CT_UPABD_5_4_9_1_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_9_1_4', 'STD_CT_5_4_9_1', 'CT_UPABD_5_4_9_1_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_9_1_5', 'STD_CT_5_4_9_1', 'CT_UPABD_5_4_9_1_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_9_1_6', 'STD_CT_5_4_9_1', 'CT_UPABD_5_4_9_1_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_9_1_7', 'STD_CT_5_4_9_1', 'CT_UPABD_5_4_9_1_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_9_1_8', 'STD_CT_5_4_9_1', 'CT_UPABD_5_4_9_1_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_UPABD_5_4_9_2_1', 'CT_UPABD_5_4_9_2_1', '检查范围', 3, 'boolean',
'检查范围从膈顶至髂嵴',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "上腹部", "checkCoverage": true}, "isVeto": false, "description": "检查范围从膈顶至髂嵴"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_UPABD_5_4_9_2_2', 'CT_UPABD_5_4_9_2_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_UPABD_5_4_9_2_3', 'CT_UPABD_5_4_9_2_3', '重建参数', 3, 'boolean',
'厚层≤5.0mm，薄层≤2.0mm，DFOV：32cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 5.0, "thickIntervalMax": 5.0, "thinSliceMax": 2.0, "thinIntervalMax": 2.0, "dfov": 32, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤5.0mm，薄层≤2.0mm，DFOV：32cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_UPABD_5_4_9_2_4', 'CT_UPABD_5_4_9_2_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽350HU，窗位40HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 350, "max": 350}, "windowCenter": {"min": 40, "max": 40}}}, "isVeto": true, "description": "软组织窗：窗宽350HU，窗位40HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_UPABD_5_4_9_2_5', 'CT_UPABD_5_4_9_2_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_UPABD_5_4_9_2_6', 'CT_UPABD_5_4_9_2_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_UPABD_5_4_9_2_7', 'CT_UPABD_5_4_9_2_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_UPABD_5_4_9_2_8', 'CT_UPABD_5_4_9_2_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_9_2', 'CT_5_4_9_2', '上腹部CT增强质控标准', 'CT', '上腹部', '增强', '上腹部CT增强', 80,
'上腹部CT增强质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_9_2_1', 'STD_CT_5_4_9_2', 'CT_UPABD_5_4_9_2_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_9_2_2', 'STD_CT_5_4_9_2', 'CT_UPABD_5_4_9_2_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_9_2_3', 'STD_CT_5_4_9_2', 'CT_UPABD_5_4_9_2_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_9_2_4', 'STD_CT_5_4_9_2', 'CT_UPABD_5_4_9_2_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_9_2_5', 'STD_CT_5_4_9_2', 'CT_UPABD_5_4_9_2_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_9_2_6', 'STD_CT_5_4_9_2', 'CT_UPABD_5_4_9_2_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_9_2_7', 'STD_CT_5_4_9_2', 'CT_UPABD_5_4_9_2_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_9_2_8', 'STD_CT_5_4_9_2', 'CT_UPABD_5_4_9_2_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PANCREAS_5_4_9_3_1', 'CT_PANCREAS_5_4_9_3_1', '检查范围', 3, 'boolean',
'检查范围从横膈顶至第四腰椎上缘',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "上腹部", "checkCoverage": true}, "isVeto": false, "description": "检查范围从横膈顶至第四腰椎上缘"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PANCREAS_5_4_9_3_2', 'CT_PANCREAS_5_4_9_3_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PANCREAS_5_4_9_3_3', 'CT_PANCREAS_5_4_9_3_3', '重建参数', 3, 'boolean',
'厚层≤3.0mm，薄层≤1.25mm，DFOV：40cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 3.0, "thickIntervalMax": 3.0, "thinSliceMax": 1.25, "thinIntervalMax": 1.25, "dfov": 40, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤3.0mm，薄层≤1.25mm，DFOV：40cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PANCREAS_5_4_9_3_4', 'CT_PANCREAS_5_4_9_3_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽350~400HU，窗位30~40HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 350, "max": 400}, "windowCenter": {"min": 30, "max": 40}}}, "isVeto": true, "description": "软组织窗：窗宽350~400HU，窗位30~40HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PANCREAS_5_4_9_3_5', 'CT_PANCREAS_5_4_9_3_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PANCREAS_5_4_9_3_6', 'CT_PANCREAS_5_4_9_3_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PANCREAS_5_4_9_3_7', 'CT_PANCREAS_5_4_9_3_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PANCREAS_5_4_9_3_8', 'CT_PANCREAS_5_4_9_3_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_9_3', 'CT_5_4_9_3', '胰腺CT平扫质控标准', 'CT', '上腹部', '平扫', '胰腺CT平扫', 80,
'胰腺CT平扫质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_9_3_1', 'STD_CT_5_4_9_3', 'CT_PANCREAS_5_4_9_3_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_9_3_2', 'STD_CT_5_4_9_3', 'CT_PANCREAS_5_4_9_3_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_9_3_3', 'STD_CT_5_4_9_3', 'CT_PANCREAS_5_4_9_3_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_9_3_4', 'STD_CT_5_4_9_3', 'CT_PANCREAS_5_4_9_3_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_9_3_5', 'STD_CT_5_4_9_3', 'CT_PANCREAS_5_4_9_3_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_9_3_6', 'STD_CT_5_4_9_3', 'CT_PANCREAS_5_4_9_3_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_9_3_7', 'STD_CT_5_4_9_3', 'CT_PANCREAS_5_4_9_3_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_9_3_8', 'STD_CT_5_4_9_3', 'CT_PANCREAS_5_4_9_3_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PANCREAS_5_4_9_4_1', 'CT_PANCREAS_5_4_9_4_1', '检查范围', 3, 'boolean',
'检查范围从横膈顶至第四腰椎上缘',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "上腹部", "checkCoverage": true}, "isVeto": false, "description": "检查范围从横膈顶至第四腰椎上缘"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PANCREAS_5_4_9_4_2', 'CT_PANCREAS_5_4_9_4_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PANCREAS_5_4_9_4_3', 'CT_PANCREAS_5_4_9_4_3', '重建参数', 3, 'boolean',
'厚层≤3.0mm，薄层≤1.25mm，DFOV：40cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 3.0, "thickIntervalMax": 3.0, "thinSliceMax": 1.25, "thinIntervalMax": 1.25, "dfov": 40, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤3.0mm，薄层≤1.25mm，DFOV：40cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PANCREAS_5_4_9_4_4', 'CT_PANCREAS_5_4_9_4_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽350~400HU，窗位30~40HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 350, "max": 400}, "windowCenter": {"min": 30, "max": 40}}}, "isVeto": true, "description": "软组织窗：窗宽350~400HU，窗位30~40HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PANCREAS_5_4_9_4_5', 'CT_PANCREAS_5_4_9_4_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PANCREAS_5_4_9_4_6', 'CT_PANCREAS_5_4_9_4_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PANCREAS_5_4_9_4_7', 'CT_PANCREAS_5_4_9_4_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PANCREAS_5_4_9_4_8', 'CT_PANCREAS_5_4_9_4_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_9_4', 'CT_5_4_9_4', '胰腺CT增强质控标准', 'CT', '上腹部', '增强', '胰腺CT增强', 80,
'胰腺CT增强质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_9_4_1', 'STD_CT_5_4_9_4', 'CT_PANCREAS_5_4_9_4_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_9_4_2', 'STD_CT_5_4_9_4', 'CT_PANCREAS_5_4_9_4_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_9_4_3', 'STD_CT_5_4_9_4', 'CT_PANCREAS_5_4_9_4_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_9_4_4', 'STD_CT_5_4_9_4', 'CT_PANCREAS_5_4_9_4_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_9_4_5', 'STD_CT_5_4_9_4', 'CT_PANCREAS_5_4_9_4_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_9_4_6', 'STD_CT_5_4_9_4', 'CT_PANCREAS_5_4_9_4_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_9_4_7', 'STD_CT_5_4_9_4', 'CT_PANCREAS_5_4_9_4_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_9_4_8', 'STD_CT_5_4_9_4', 'CT_PANCREAS_5_4_9_4_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_STOMACH_5_4_9_5_1', 'CT_STOMACH_5_4_9_5_1', '检查范围', 3, 'boolean',
'检查范围从膈顶至髂嵴',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "上腹部", "checkCoverage": true}, "isVeto": false, "description": "检查范围从膈顶至髂嵴"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_STOMACH_5_4_9_5_2', 'CT_STOMACH_5_4_9_5_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_STOMACH_5_4_9_5_3', 'CT_STOMACH_5_4_9_5_3', '重建参数', 3, 'boolean',
'厚层≤5.0mm，薄层≤1.25mm，DFOV：38cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 5.0, "thickIntervalMax": 5.0, "thinSliceMax": 1.25, "thinIntervalMax": 1.25, "dfov": 38, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤5.0mm，薄层≤1.25mm，DFOV：38cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_STOMACH_5_4_9_5_4', 'CT_STOMACH_5_4_9_5_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽200~300HU，窗位40~60HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 200, "max": 300}, "windowCenter": {"min": 40, "max": 60}}}, "isVeto": true, "description": "软组织窗：窗宽200~300HU，窗位40~60HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_STOMACH_5_4_9_5_5', 'CT_STOMACH_5_4_9_5_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_STOMACH_5_4_9_5_6', 'CT_STOMACH_5_4_9_5_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_STOMACH_5_4_9_5_7', 'CT_STOMACH_5_4_9_5_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_STOMACH_5_4_9_5_8', 'CT_STOMACH_5_4_9_5_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_9_5', 'CT_5_4_9_5', '胃部CT平扫质控标准', 'CT', '上腹部', '平扫', '胃部CT平扫', 80,
'胃部CT平扫质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_9_5_1', 'STD_CT_5_4_9_5', 'CT_STOMACH_5_4_9_5_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_9_5_2', 'STD_CT_5_4_9_5', 'CT_STOMACH_5_4_9_5_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_9_5_3', 'STD_CT_5_4_9_5', 'CT_STOMACH_5_4_9_5_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_9_5_4', 'STD_CT_5_4_9_5', 'CT_STOMACH_5_4_9_5_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_9_5_5', 'STD_CT_5_4_9_5', 'CT_STOMACH_5_4_9_5_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_9_5_6', 'STD_CT_5_4_9_5', 'CT_STOMACH_5_4_9_5_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_9_5_7', 'STD_CT_5_4_9_5', 'CT_STOMACH_5_4_9_5_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_9_5_8', 'STD_CT_5_4_9_5', 'CT_STOMACH_5_4_9_5_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_STOMACH_5_4_9_6_1', 'CT_STOMACH_5_4_9_6_1', '检查范围', 3, 'boolean',
'检查范围从膈顶至髂嵴',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "上腹部", "checkCoverage": true}, "isVeto": false, "description": "检查范围从膈顶至髂嵴"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_STOMACH_5_4_9_6_2', 'CT_STOMACH_5_4_9_6_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_STOMACH_5_4_9_6_3', 'CT_STOMACH_5_4_9_6_3', '重建参数', 3, 'boolean',
'厚层≤5.0mm，薄层≤1.25mm，DFOV：38cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 5.0, "thickIntervalMax": 5.0, "thinSliceMax": 1.25, "thinIntervalMax": 1.25, "dfov": 38, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤5.0mm，薄层≤1.25mm，DFOV：38cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_STOMACH_5_4_9_6_4', 'CT_STOMACH_5_4_9_6_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽200~300HU，窗位40~60HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 200, "max": 300}, "windowCenter": {"min": 40, "max": 60}}}, "isVeto": true, "description": "软组织窗：窗宽200~300HU，窗位40~60HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_STOMACH_5_4_9_6_5', 'CT_STOMACH_5_4_9_6_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_STOMACH_5_4_9_6_6', 'CT_STOMACH_5_4_9_6_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_STOMACH_5_4_9_6_7', 'CT_STOMACH_5_4_9_6_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_STOMACH_5_4_9_6_8', 'CT_STOMACH_5_4_9_6_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_9_6', 'CT_5_4_9_6', '胃部CT增强质控标准', 'CT', '上腹部', '增强', '胃部CT增强', 80,
'胃部CT增强质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_9_6_1', 'STD_CT_5_4_9_6', 'CT_STOMACH_5_4_9_6_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_9_6_2', 'STD_CT_5_4_9_6', 'CT_STOMACH_5_4_9_6_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_9_6_3', 'STD_CT_5_4_9_6', 'CT_STOMACH_5_4_9_6_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_9_6_4', 'STD_CT_5_4_9_6', 'CT_STOMACH_5_4_9_6_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_9_6_5', 'STD_CT_5_4_9_6', 'CT_STOMACH_5_4_9_6_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_9_6_6', 'STD_CT_5_4_9_6', 'CT_STOMACH_5_4_9_6_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_9_6_7', 'STD_CT_5_4_9_6', 'CT_STOMACH_5_4_9_6_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_9_6_8', 'STD_CT_5_4_9_6', 'CT_STOMACH_5_4_9_6_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_SMALLINT_5_4_9_7_1', 'CT_SMALLINT_5_4_9_7_1', '检查范围', 3, 'boolean',
'检查范围从膈顶至耻骨联合',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "上腹部", "checkCoverage": true}, "isVeto": false, "description": "检查范围从膈顶至耻骨联合"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_SMALLINT_5_4_9_7_2', 'CT_SMALLINT_5_4_9_7_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_SMALLINT_5_4_9_7_3', 'CT_SMALLINT_5_4_9_7_3', '重建参数', 3, 'boolean',
'厚层≤5.0mm，薄层≤1.25mm，DFOV：38cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 5.0, "thickIntervalMax": 5.0, "thinSliceMax": 1.25, "thinIntervalMax": 1.25, "dfov": 38, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤5.0mm，薄层≤1.25mm，DFOV：38cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_SMALLINT_5_4_9_7_4', 'CT_SMALLINT_5_4_9_7_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽200~300HU，窗位40~60HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 200, "max": 300}, "windowCenter": {"min": 40, "max": 60}}}, "isVeto": true, "description": "软组织窗：窗宽200~300HU，窗位40~60HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_SMALLINT_5_4_9_7_5', 'CT_SMALLINT_5_4_9_7_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_SMALLINT_5_4_9_7_6', 'CT_SMALLINT_5_4_9_7_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_SMALLINT_5_4_9_7_7', 'CT_SMALLINT_5_4_9_7_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_SMALLINT_5_4_9_7_8', 'CT_SMALLINT_5_4_9_7_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_9_7', 'CT_5_4_9_7', '小肠CT平扫质控标准', 'CT', '上腹部', '平扫', '小肠CT平扫', 80,
'小肠CT平扫质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_9_7_1', 'STD_CT_5_4_9_7', 'CT_SMALLINT_5_4_9_7_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_9_7_2', 'STD_CT_5_4_9_7', 'CT_SMALLINT_5_4_9_7_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_9_7_3', 'STD_CT_5_4_9_7', 'CT_SMALLINT_5_4_9_7_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_9_7_4', 'STD_CT_5_4_9_7', 'CT_SMALLINT_5_4_9_7_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_9_7_5', 'STD_CT_5_4_9_7', 'CT_SMALLINT_5_4_9_7_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_9_7_6', 'STD_CT_5_4_9_7', 'CT_SMALLINT_5_4_9_7_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_9_7_7', 'STD_CT_5_4_9_7', 'CT_SMALLINT_5_4_9_7_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_9_7_8', 'STD_CT_5_4_9_7', 'CT_SMALLINT_5_4_9_7_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_SMALLINT_5_4_9_8_1', 'CT_SMALLINT_5_4_9_8_1', '检查范围', 3, 'boolean',
'检查范围从膈顶至耻骨联合',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "上腹部", "checkCoverage": true}, "isVeto": false, "description": "检查范围从膈顶至耻骨联合"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_SMALLINT_5_4_9_8_2', 'CT_SMALLINT_5_4_9_8_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_SMALLINT_5_4_9_8_3', 'CT_SMALLINT_5_4_9_8_3', '重建参数', 3, 'boolean',
'厚层≤5.0mm，薄层≤1.25mm，DFOV：38cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 5.0, "thickIntervalMax": 5.0, "thinSliceMax": 1.25, "thinIntervalMax": 1.25, "dfov": 38, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤5.0mm，薄层≤1.25mm，DFOV：38cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_SMALLINT_5_4_9_8_4', 'CT_SMALLINT_5_4_9_8_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽200~300HU，窗位40~60HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 200, "max": 300}, "windowCenter": {"min": 40, "max": 60}}}, "isVeto": true, "description": "软组织窗：窗宽200~300HU，窗位40~60HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_SMALLINT_5_4_9_8_5', 'CT_SMALLINT_5_4_9_8_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_SMALLINT_5_4_9_8_6', 'CT_SMALLINT_5_4_9_8_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_SMALLINT_5_4_9_8_7', 'CT_SMALLINT_5_4_9_8_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_SMALLINT_5_4_9_8_8', 'CT_SMALLINT_5_4_9_8_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_9_8', 'CT_5_4_9_8', '小肠CT增强质控标准', 'CT', '上腹部', '增强', '小肠CT增强', 80,
'小肠CT增强质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_9_8_1', 'STD_CT_5_4_9_8', 'CT_SMALLINT_5_4_9_8_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_9_8_2', 'STD_CT_5_4_9_8', 'CT_SMALLINT_5_4_9_8_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_9_8_3', 'STD_CT_5_4_9_8', 'CT_SMALLINT_5_4_9_8_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_9_8_4', 'STD_CT_5_4_9_8', 'CT_SMALLINT_5_4_9_8_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_9_8_5', 'STD_CT_5_4_9_8', 'CT_SMALLINT_5_4_9_8_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_9_8_6', 'STD_CT_5_4_9_8', 'CT_SMALLINT_5_4_9_8_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_9_8_7', 'STD_CT_5_4_9_8', 'CT_SMALLINT_5_4_9_8_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_9_8_8', 'STD_CT_5_4_9_8', 'CT_SMALLINT_5_4_9_8_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_LOABD_5_4_9_9_1', 'CT_LOABD_5_4_9_9_1', '检查范围', 3, 'boolean',
'检查范围从髂嵴至髋关节',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "上腹部", "checkCoverage": true}, "isVeto": false, "description": "检查范围从髂嵴至髋关节"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_LOABD_5_4_9_9_2', 'CT_LOABD_5_4_9_9_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_LOABD_5_4_9_9_3', 'CT_LOABD_5_4_9_9_3', '重建参数', 3, 'boolean',
'厚层≤5.0mm，薄层≤1.25mm，DFOV：36cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 5.0, "thickIntervalMax": 5.0, "thinSliceMax": 1.25, "thinIntervalMax": 1.25, "dfov": 36, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤5.0mm，薄层≤1.25mm，DFOV：36cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_LOABD_5_4_9_9_4', 'CT_LOABD_5_4_9_9_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽350HU，窗位40HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 350, "max": 350}, "windowCenter": {"min": 40, "max": 40}}}, "isVeto": true, "description": "软组织窗：窗宽350HU，窗位40HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_LOABD_5_4_9_9_5', 'CT_LOABD_5_4_9_9_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_LOABD_5_4_9_9_6', 'CT_LOABD_5_4_9_9_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_LOABD_5_4_9_9_7', 'CT_LOABD_5_4_9_9_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_LOABD_5_4_9_9_8', 'CT_LOABD_5_4_9_9_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_9_9', 'CT_5_4_9_9', '下腹部CT平扫质控标准', 'CT', '上腹部', '平扫', '下腹部CT平扫', 80,
'下腹部CT平扫质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_9_9_1', 'STD_CT_5_4_9_9', 'CT_LOABD_5_4_9_9_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_9_9_2', 'STD_CT_5_4_9_9', 'CT_LOABD_5_4_9_9_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_9_9_3', 'STD_CT_5_4_9_9', 'CT_LOABD_5_4_9_9_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_9_9_4', 'STD_CT_5_4_9_9', 'CT_LOABD_5_4_9_9_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_9_9_5', 'STD_CT_5_4_9_9', 'CT_LOABD_5_4_9_9_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_9_9_6', 'STD_CT_5_4_9_9', 'CT_LOABD_5_4_9_9_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_9_9_7', 'STD_CT_5_4_9_9', 'CT_LOABD_5_4_9_9_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_9_9_8', 'STD_CT_5_4_9_9', 'CT_LOABD_5_4_9_9_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_LOABD_5_4_9_10_1', 'CT_LOABD_5_4_9_10_1', '检查范围', 3, 'boolean',
'检查范围从髂嵴至髋关节',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "上腹部", "checkCoverage": true}, "isVeto": false, "description": "检查范围从髂嵴至髋关节"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_LOABD_5_4_9_10_2', 'CT_LOABD_5_4_9_10_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_LOABD_5_4_9_10_3', 'CT_LOABD_5_4_9_10_3', '重建参数', 3, 'boolean',
'厚层≤5.0mm，薄层≤1.25mm，DFOV：36cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 5.0, "thickIntervalMax": 5.0, "thinSliceMax": 1.25, "thinIntervalMax": 1.25, "dfov": 36, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤5.0mm，薄层≤1.25mm，DFOV：36cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_LOABD_5_4_9_10_4', 'CT_LOABD_5_4_9_10_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽350HU，窗位40HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 350, "max": 350}, "windowCenter": {"min": 40, "max": 40}}}, "isVeto": true, "description": "软组织窗：窗宽350HU，窗位40HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_LOABD_5_4_9_10_5', 'CT_LOABD_5_4_9_10_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_LOABD_5_4_9_10_6', 'CT_LOABD_5_4_9_10_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_LOABD_5_4_9_10_7', 'CT_LOABD_5_4_9_10_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_LOABD_5_4_9_10_8', 'CT_LOABD_5_4_9_10_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_9_10', 'CT_5_4_9_10', '下腹部CT增强质控标准', 'CT', '上腹部', '增强', '下腹部CT增强', 80,
'下腹部CT增强质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_9_10_1', 'STD_CT_5_4_9_10', 'CT_LOABD_5_4_9_10_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_9_10_2', 'STD_CT_5_4_9_10', 'CT_LOABD_5_4_9_10_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_9_10_3', 'STD_CT_5_4_9_10', 'CT_LOABD_5_4_9_10_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_9_10_4', 'STD_CT_5_4_9_10', 'CT_LOABD_5_4_9_10_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_9_10_5', 'STD_CT_5_4_9_10', 'CT_LOABD_5_4_9_10_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_9_10_6', 'STD_CT_5_4_9_10', 'CT_LOABD_5_4_9_10_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_9_10_7', 'STD_CT_5_4_9_10', 'CT_LOABD_5_4_9_10_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_9_10_8', 'STD_CT_5_4_9_10', 'CT_LOABD_5_4_9_10_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ADRENAL_5_4_9_11_1', 'CT_ADRENAL_5_4_9_11_1', '检查范围', 3, 'boolean',
'检查范围从左膈顶至右肾门层面',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "上腹部", "checkCoverage": true}, "isVeto": false, "description": "检查范围从左膈顶至右肾门层面"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ADRENAL_5_4_9_11_2', 'CT_ADRENAL_5_4_9_11_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ADRENAL_5_4_9_11_3', 'CT_ADRENAL_5_4_9_11_3', '重建参数', 3, 'boolean',
'厚层≤2.5mm，薄层≤0.625mm，DFOV：30cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 2.5, "thickIntervalMax": 2.5, "thinSliceMax": 0.625, "thinIntervalMax": 0.625, "dfov": 30, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤2.5mm，薄层≤0.625mm，DFOV：30cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ADRENAL_5_4_9_11_4', 'CT_ADRENAL_5_4_9_11_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽300~400HU，窗位50~60HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 300, "max": 400}, "windowCenter": {"min": 50, "max": 60}}}, "isVeto": true, "description": "软组织窗：窗宽300~400HU，窗位50~60HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ADRENAL_5_4_9_11_5', 'CT_ADRENAL_5_4_9_11_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ADRENAL_5_4_9_11_6', 'CT_ADRENAL_5_4_9_11_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ADRENAL_5_4_9_11_7', 'CT_ADRENAL_5_4_9_11_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ADRENAL_5_4_9_11_8', 'CT_ADRENAL_5_4_9_11_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_9_11', 'CT_5_4_9_11', '肾上腺CT平扫质控标准', 'CT', '上腹部', '平扫', '肾上腺CT平扫', 80,
'肾上腺CT平扫质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_9_11_1', 'STD_CT_5_4_9_11', 'CT_ADRENAL_5_4_9_11_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_9_11_2', 'STD_CT_5_4_9_11', 'CT_ADRENAL_5_4_9_11_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_9_11_3', 'STD_CT_5_4_9_11', 'CT_ADRENAL_5_4_9_11_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_9_11_4', 'STD_CT_5_4_9_11', 'CT_ADRENAL_5_4_9_11_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_9_11_5', 'STD_CT_5_4_9_11', 'CT_ADRENAL_5_4_9_11_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_9_11_6', 'STD_CT_5_4_9_11', 'CT_ADRENAL_5_4_9_11_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_9_11_7', 'STD_CT_5_4_9_11', 'CT_ADRENAL_5_4_9_11_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_9_11_8', 'STD_CT_5_4_9_11', 'CT_ADRENAL_5_4_9_11_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ADRENAL_5_4_9_12_1', 'CT_ADRENAL_5_4_9_12_1', '检查范围', 3, 'boolean',
'检查范围从左膈顶至右肾门层面',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "上腹部", "checkCoverage": true}, "isVeto": false, "description": "检查范围从左膈顶至右肾门层面"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ADRENAL_5_4_9_12_2', 'CT_ADRENAL_5_4_9_12_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ADRENAL_5_4_9_12_3', 'CT_ADRENAL_5_4_9_12_3', '重建参数', 3, 'boolean',
'厚层≤2.5mm，薄层≤0.625mm，DFOV：30cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 2.5, "thickIntervalMax": 2.5, "thinSliceMax": 0.625, "thinIntervalMax": 0.625, "dfov": 30, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤2.5mm，薄层≤0.625mm，DFOV：30cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ADRENAL_5_4_9_12_4', 'CT_ADRENAL_5_4_9_12_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽300~400HU，窗位50~60HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 300, "max": 400}, "windowCenter": {"min": 50, "max": 60}}}, "isVeto": true, "description": "软组织窗：窗宽300~400HU，窗位50~60HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ADRENAL_5_4_9_12_5', 'CT_ADRENAL_5_4_9_12_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ADRENAL_5_4_9_12_6', 'CT_ADRENAL_5_4_9_12_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ADRENAL_5_4_9_12_7', 'CT_ADRENAL_5_4_9_12_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_ADRENAL_5_4_9_12_8', 'CT_ADRENAL_5_4_9_12_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_9_12', 'CT_5_4_9_12', '肾上腺CT增强质控标准', 'CT', '上腹部', '增强', '肾上腺CT增强', 80,
'肾上腺CT增强质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_9_12_1', 'STD_CT_5_4_9_12', 'CT_ADRENAL_5_4_9_12_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_9_12_2', 'STD_CT_5_4_9_12', 'CT_ADRENAL_5_4_9_12_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_9_12_3', 'STD_CT_5_4_9_12', 'CT_ADRENAL_5_4_9_12_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_9_12_4', 'STD_CT_5_4_9_12', 'CT_ADRENAL_5_4_9_12_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_9_12_5', 'STD_CT_5_4_9_12', 'CT_ADRENAL_5_4_9_12_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_9_12_6', 'STD_CT_5_4_9_12', 'CT_ADRENAL_5_4_9_12_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_9_12_7', 'STD_CT_5_4_9_12', 'CT_ADRENAL_5_4_9_12_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_9_12_8', 'STD_CT_5_4_9_12', 'CT_ADRENAL_5_4_9_12_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PELVIS_5_4_10_1_1', 'CT_PELVIS_5_4_10_1_1', '检查范围', 3, 'boolean',
'检查范围从髂嵴至耻骨联合下缘',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "盆腔", "checkCoverage": true}, "isVeto": false, "description": "检查范围从髂嵴至耻骨联合下缘"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PELVIS_5_4_10_1_2', 'CT_PELVIS_5_4_10_1_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PELVIS_5_4_10_1_3', 'CT_PELVIS_5_4_10_1_3', '重建参数', 3, 'boolean',
'厚层≤5.0mm，薄层≤1.25mm，DFOV：36cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 5.0, "thickIntervalMax": 5.0, "thinSliceMax": 1.25, "thinIntervalMax": 1.25, "dfov": 36, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤5.0mm，薄层≤1.25mm，DFOV：36cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PELVIS_5_4_10_1_4', 'CT_PELVIS_5_4_10_1_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽350HU，窗位40HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 350, "max": 350}, "windowCenter": {"min": 40, "max": 40}}}, "isVeto": true, "description": "软组织窗：窗宽350HU，窗位40HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PELVIS_5_4_10_1_5', 'CT_PELVIS_5_4_10_1_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PELVIS_5_4_10_1_6', 'CT_PELVIS_5_4_10_1_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PELVIS_5_4_10_1_7', 'CT_PELVIS_5_4_10_1_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PELVIS_5_4_10_1_8', 'CT_PELVIS_5_4_10_1_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_10_1', 'CT_5_4_10_1', '盆腔CT平扫质控标准', 'CT', '盆腔', '平扫', '盆腔CT平扫', 80,
'盆腔CT平扫质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_10_1_1', 'STD_CT_5_4_10_1', 'CT_PELVIS_5_4_10_1_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_10_1_2', 'STD_CT_5_4_10_1', 'CT_PELVIS_5_4_10_1_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_10_1_3', 'STD_CT_5_4_10_1', 'CT_PELVIS_5_4_10_1_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_10_1_4', 'STD_CT_5_4_10_1', 'CT_PELVIS_5_4_10_1_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_10_1_5', 'STD_CT_5_4_10_1', 'CT_PELVIS_5_4_10_1_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_10_1_6', 'STD_CT_5_4_10_1', 'CT_PELVIS_5_4_10_1_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_10_1_7', 'STD_CT_5_4_10_1', 'CT_PELVIS_5_4_10_1_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_10_1_8', 'STD_CT_5_4_10_1', 'CT_PELVIS_5_4_10_1_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PELVIS_5_4_10_2_1', 'CT_PELVIS_5_4_10_2_1', '检查范围', 3, 'boolean',
'检查范围从髂嵴至耻骨联合下缘',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "盆腔", "checkCoverage": true}, "isVeto": false, "description": "检查范围从髂嵴至耻骨联合下缘"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PELVIS_5_4_10_2_2', 'CT_PELVIS_5_4_10_2_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PELVIS_5_4_10_2_3', 'CT_PELVIS_5_4_10_2_3', '重建参数', 3, 'boolean',
'厚层≤5.0mm，薄层≤1.25mm，DFOV：36cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 5.0, "thickIntervalMax": 5.0, "thinSliceMax": 1.25, "thinIntervalMax": 1.25, "dfov": 36, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤5.0mm，薄层≤1.25mm，DFOV：36cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PELVIS_5_4_10_2_4', 'CT_PELVIS_5_4_10_2_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽350HU，窗位40HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 350, "max": 350}, "windowCenter": {"min": 40, "max": 40}}}, "isVeto": true, "description": "软组织窗：窗宽350HU，窗位40HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PELVIS_5_4_10_2_5', 'CT_PELVIS_5_4_10_2_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PELVIS_5_4_10_2_6', 'CT_PELVIS_5_4_10_2_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PELVIS_5_4_10_2_7', 'CT_PELVIS_5_4_10_2_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_PELVIS_5_4_10_2_8', 'CT_PELVIS_5_4_10_2_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_10_2', 'CT_5_4_10_2', '盆腔CT增强质控标准', 'CT', '盆腔', '增强', '盆腔CT增强', 80,
'盆腔CT增强质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_10_2_1', 'STD_CT_5_4_10_2', 'CT_PELVIS_5_4_10_2_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_10_2_2', 'STD_CT_5_4_10_2', 'CT_PELVIS_5_4_10_2_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_10_2_3', 'STD_CT_5_4_10_2', 'CT_PELVIS_5_4_10_2_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_10_2_4', 'STD_CT_5_4_10_2', 'CT_PELVIS_5_4_10_2_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_10_2_5', 'STD_CT_5_4_10_2', 'CT_PELVIS_5_4_10_2_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_10_2_6', 'STD_CT_5_4_10_2', 'CT_PELVIS_5_4_10_2_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_10_2_7', 'STD_CT_5_4_10_2', 'CT_PELVIS_5_4_10_2_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_10_2_8', 'STD_CT_5_4_10_2', 'CT_PELVIS_5_4_10_2_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_BONEPELV_5_4_10_3_1', 'CT_BONEPELV_5_4_10_3_1', '检查范围', 3, 'boolean',
'检查范围从髂前上棘至耻骨联合下缘',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "盆腔", "checkCoverage": true}, "isVeto": false, "description": "检查范围从髂前上棘至耻骨联合下缘"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_BONEPELV_5_4_10_3_2', 'CT_BONEPELV_5_4_10_3_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_BONEPELV_5_4_10_3_3', 'CT_BONEPELV_5_4_10_3_3', '重建参数', 3, 'boolean',
'厚层≤5.0mm，薄层≤1.25mm，DFOV：38cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 5.0, "thickIntervalMax": 5.0, "thinSliceMax": 1.25, "thinIntervalMax": 1.25, "dfov": 38, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤5.0mm，薄层≤1.25mm，DFOV：38cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_BONEPELV_5_4_10_3_4', 'CT_BONEPELV_5_4_10_3_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽1900~2100HU，窗位350~550HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 1900, "max": 2100}, "windowCenter": {"min": 350, "max": 550}}}, "isVeto": true, "description": "软组织窗：窗宽1900~2100HU，窗位350~550HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_BONEPELV_5_4_10_3_5', 'CT_BONEPELV_5_4_10_3_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_BONEPELV_5_4_10_3_6', 'CT_BONEPELV_5_4_10_3_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_BONEPELV_5_4_10_3_7', 'CT_BONEPELV_5_4_10_3_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_BONEPELV_5_4_10_3_8', 'CT_BONEPELV_5_4_10_3_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_10_3', 'CT_5_4_10_3', '骨盆CT平扫质控标准', 'CT', '盆腔', '平扫', '骨盆CT平扫', 80,
'骨盆CT平扫质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_10_3_1', 'STD_CT_5_4_10_3', 'CT_BONEPELV_5_4_10_3_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_10_3_2', 'STD_CT_5_4_10_3', 'CT_BONEPELV_5_4_10_3_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_10_3_3', 'STD_CT_5_4_10_3', 'CT_BONEPELV_5_4_10_3_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_10_3_4', 'STD_CT_5_4_10_3', 'CT_BONEPELV_5_4_10_3_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_10_3_5', 'STD_CT_5_4_10_3', 'CT_BONEPELV_5_4_10_3_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_10_3_6', 'STD_CT_5_4_10_3', 'CT_BONEPELV_5_4_10_3_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_10_3_7', 'STD_CT_5_4_10_3', 'CT_BONEPELV_5_4_10_3_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_10_3_8', 'STD_CT_5_4_10_3', 'CT_BONEPELV_5_4_10_3_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_BONEPELV_5_4_10_4_1', 'CT_BONEPELV_5_4_10_4_1', '检查范围', 3, 'boolean',
'检查范围从髂前上棘至耻骨联合下缘',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "盆腔", "checkCoverage": true}, "isVeto": false, "description": "检查范围从髂前上棘至耻骨联合下缘"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_BONEPELV_5_4_10_4_2', 'CT_BONEPELV_5_4_10_4_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_BONEPELV_5_4_10_4_3', 'CT_BONEPELV_5_4_10_4_3', '重建参数', 3, 'boolean',
'厚层≤5.0mm，薄层≤1.25mm，DFOV：38cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 5.0, "thickIntervalMax": 5.0, "thinSliceMax": 1.25, "thinIntervalMax": 1.25, "dfov": 38, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤5.0mm，薄层≤1.25mm，DFOV：38cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_BONEPELV_5_4_10_4_4', 'CT_BONEPELV_5_4_10_4_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽300~500HU，窗位30~50HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 300, "max": 500}, "windowCenter": {"min": 30, "max": 50}}}, "isVeto": true, "description": "软组织窗：窗宽300~500HU，窗位30~50HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_BONEPELV_5_4_10_4_5', 'CT_BONEPELV_5_4_10_4_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_BONEPELV_5_4_10_4_6', 'CT_BONEPELV_5_4_10_4_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_BONEPELV_5_4_10_4_7', 'CT_BONEPELV_5_4_10_4_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_BONEPELV_5_4_10_4_8', 'CT_BONEPELV_5_4_10_4_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_10_4', 'CT_5_4_10_4', '骨盆CT增强质控标准', 'CT', '盆腔', '增强', '骨盆CT增强', 80,
'骨盆CT增强质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_10_4_1', 'STD_CT_5_4_10_4', 'CT_BONEPELV_5_4_10_4_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_10_4_2', 'STD_CT_5_4_10_4', 'CT_BONEPELV_5_4_10_4_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_10_4_3', 'STD_CT_5_4_10_4', 'CT_BONEPELV_5_4_10_4_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_10_4_4', 'STD_CT_5_4_10_4', 'CT_BONEPELV_5_4_10_4_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_10_4_5', 'STD_CT_5_4_10_4', 'CT_BONEPELV_5_4_10_4_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_10_4_6', 'STD_CT_5_4_10_4', 'CT_BONEPELV_5_4_10_4_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_10_4_7', 'STD_CT_5_4_10_4', 'CT_BONEPELV_5_4_10_4_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_10_4_8', 'STD_CT_5_4_10_4', 'CT_BONEPELV_5_4_10_4_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_URINARY_5_4_11_1_1', 'CT_URINARY_5_4_11_1_1', '检查范围', 3, 'boolean',
'检查范围从肾上极上方1cm至耻骨联合下缘',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "其他", "checkCoverage": true}, "isVeto": false, "description": "检查范围从肾上极上方1cm至耻骨联合下缘"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_URINARY_5_4_11_1_2', 'CT_URINARY_5_4_11_1_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_URINARY_5_4_11_1_3', 'CT_URINARY_5_4_11_1_3', '重建参数', 3, 'boolean',
'厚层≤5.0mm，薄层≤1.25mm，DFOV：38cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 5.0, "thickIntervalMax": 5.0, "thinSliceMax": 1.25, "thinIntervalMax": 1.25, "dfov": 38, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤5.0mm，薄层≤1.25mm，DFOV：38cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_URINARY_5_4_11_1_4', 'CT_URINARY_5_4_11_1_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽300~500HU，窗位30~50HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 300, "max": 500}, "windowCenter": {"min": 30, "max": 50}}}, "isVeto": true, "description": "软组织窗：窗宽300~500HU，窗位30~50HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_URINARY_5_4_11_1_5', 'CT_URINARY_5_4_11_1_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_URINARY_5_4_11_1_6', 'CT_URINARY_5_4_11_1_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_URINARY_5_4_11_1_7', 'CT_URINARY_5_4_11_1_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_URINARY_5_4_11_1_8', 'CT_URINARY_5_4_11_1_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_11_1', 'CT_5_4_11_1', '泌尿系CT平扫质控标准', 'CT', '其他', '平扫', '泌尿系CT平扫', 80,
'泌尿系CT平扫质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_11_1_1', 'STD_CT_5_4_11_1', 'CT_URINARY_5_4_11_1_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_11_1_2', 'STD_CT_5_4_11_1', 'CT_URINARY_5_4_11_1_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_11_1_3', 'STD_CT_5_4_11_1', 'CT_URINARY_5_4_11_1_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_11_1_4', 'STD_CT_5_4_11_1', 'CT_URINARY_5_4_11_1_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_11_1_5', 'STD_CT_5_4_11_1', 'CT_URINARY_5_4_11_1_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_11_1_6', 'STD_CT_5_4_11_1', 'CT_URINARY_5_4_11_1_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_11_1_7', 'STD_CT_5_4_11_1', 'CT_URINARY_5_4_11_1_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_11_1_8', 'STD_CT_5_4_11_1', 'CT_URINARY_5_4_11_1_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_URINARY_5_4_11_2_1', 'CT_URINARY_5_4_11_2_1', '检查范围', 3, 'boolean',
'检查范围从肾上极上方1cm至耻骨联合下缘',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "其他", "checkCoverage": true}, "isVeto": false, "description": "检查范围从肾上极上方1cm至耻骨联合下缘"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_URINARY_5_4_11_2_2', 'CT_URINARY_5_4_11_2_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_URINARY_5_4_11_2_3', 'CT_URINARY_5_4_11_2_3', '重建参数', 3, 'boolean',
'厚层≤5.0mm，薄层≤1.25mm，DFOV：38cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 5.0, "thickIntervalMax": 5.0, "thinSliceMax": 1.25, "thinIntervalMax": 1.25, "dfov": 38, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤5.0mm，薄层≤1.25mm，DFOV：38cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_URINARY_5_4_11_2_4', 'CT_URINARY_5_4_11_2_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽300~500HU，窗位30~50HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 300, "max": 500}, "windowCenter": {"min": 30, "max": 50}}}, "isVeto": true, "description": "软组织窗：窗宽300~500HU，窗位30~50HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_URINARY_5_4_11_2_5', 'CT_URINARY_5_4_11_2_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_URINARY_5_4_11_2_6', 'CT_URINARY_5_4_11_2_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_URINARY_5_4_11_2_7', 'CT_URINARY_5_4_11_2_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_URINARY_5_4_11_2_8', 'CT_URINARY_5_4_11_2_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_11_2', 'CT_5_4_11_2', '泌尿系CT增强质控标准', 'CT', '其他', '增强', '泌尿系CT增强', 80,
'泌尿系CT增强质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_11_2_1', 'STD_CT_5_4_11_2', 'CT_URINARY_5_4_11_2_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_11_2_2', 'STD_CT_5_4_11_2', 'CT_URINARY_5_4_11_2_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_11_2_3', 'STD_CT_5_4_11_2', 'CT_URINARY_5_4_11_2_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_11_2_4', 'STD_CT_5_4_11_2', 'CT_URINARY_5_4_11_2_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_11_2_5', 'STD_CT_5_4_11_2', 'CT_URINARY_5_4_11_2_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_11_2_6', 'STD_CT_5_4_11_2', 'CT_URINARY_5_4_11_2_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_11_2_7', 'STD_CT_5_4_11_2', 'CT_URINARY_5_4_11_2_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_11_2_8', 'STD_CT_5_4_11_2', 'CT_URINARY_5_4_11_2_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_CTU_5_4_11_3_1', 'CT_CTU_5_4_11_3_1', '检查范围', 3, 'boolean',
'检查范围从肾上极上方1cm至耻骨联合下缘',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "其他", "checkCoverage": true}, "isVeto": false, "description": "检查范围从肾上极上方1cm至耻骨联合下缘"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_CTU_5_4_11_3_2', 'CT_CTU_5_4_11_3_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_CTU_5_4_11_3_3', 'CT_CTU_5_4_11_3_3', '重建参数', 3, 'boolean',
'厚层≤5.0mm，薄层≤1.25mm，DFOV：38cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 5.0, "thickIntervalMax": 5.0, "thinSliceMax": 1.25, "thinIntervalMax": 1.25, "dfov": 38, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤5.0mm，薄层≤1.25mm，DFOV：38cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_CTU_5_4_11_3_4', 'CT_CTU_5_4_11_3_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽300~500HU，窗位30~50HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 300, "max": 500}, "windowCenter": {"min": 30, "max": 50}}}, "isVeto": true, "description": "软组织窗：窗宽300~500HU，窗位30~50HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_CTU_5_4_11_3_5', 'CT_CTU_5_4_11_3_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_CTU_5_4_11_3_6', 'CT_CTU_5_4_11_3_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_CTU_5_4_11_3_7', 'CT_CTU_5_4_11_3_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_CTU_5_4_11_3_8', 'CT_CTU_5_4_11_3_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_11_3', 'CT_5_4_11_3', '尿路CT成像质控标准', 'CT', '其他', '平扫', '尿路CT成像', 80,
'尿路CT成像质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_11_3_1', 'STD_CT_5_4_11_3', 'CT_CTU_5_4_11_3_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_11_3_2', 'STD_CT_5_4_11_3', 'CT_CTU_5_4_11_3_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_11_3_3', 'STD_CT_5_4_11_3', 'CT_CTU_5_4_11_3_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_11_3_4', 'STD_CT_5_4_11_3', 'CT_CTU_5_4_11_3_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_11_3_5', 'STD_CT_5_4_11_3', 'CT_CTU_5_4_11_3_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_11_3_6', 'STD_CT_5_4_11_3', 'CT_CTU_5_4_11_3_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_11_3_7', 'STD_CT_5_4_11_3', 'CT_CTU_5_4_11_3_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_11_3_8', 'STD_CT_5_4_11_3', 'CT_CTU_5_4_11_3_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_COLON_5_4_11_4_1', 'CT_COLON_5_4_11_4_1', '检查范围', 3, 'boolean',
'检查范围从膈顶至耻骨联合',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "其他", "checkCoverage": true}, "isVeto": false, "description": "检查范围从膈顶至耻骨联合"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_COLON_5_4_11_4_2', 'CT_COLON_5_4_11_4_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_COLON_5_4_11_4_3', 'CT_COLON_5_4_11_4_3', '重建参数', 3, 'boolean',
'厚层≤5.0mm，薄层≤1.25mm，DFOV：38cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 5.0, "thickIntervalMax": 5.0, "thinSliceMax": 1.25, "thinIntervalMax": 1.25, "dfov": 38, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤5.0mm，薄层≤1.25mm，DFOV：38cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_COLON_5_4_11_4_4', 'CT_COLON_5_4_11_4_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽200~300HU，窗位40~60HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 200, "max": 300}, "windowCenter": {"min": 40, "max": 60}}}, "isVeto": true, "description": "软组织窗：窗宽200~300HU，窗位40~60HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_COLON_5_4_11_4_5', 'CT_COLON_5_4_11_4_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_COLON_5_4_11_4_6', 'CT_COLON_5_4_11_4_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_COLON_5_4_11_4_7', 'CT_COLON_5_4_11_4_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_COLON_5_4_11_4_8', 'CT_COLON_5_4_11_4_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_11_4', 'CT_5_4_11_4', '结肠CT平扫质控标准', 'CT', '其他', '平扫', '结肠CT平扫', 80,
'结肠CT平扫质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_11_4_1', 'STD_CT_5_4_11_4', 'CT_COLON_5_4_11_4_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_11_4_2', 'STD_CT_5_4_11_4', 'CT_COLON_5_4_11_4_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_11_4_3', 'STD_CT_5_4_11_4', 'CT_COLON_5_4_11_4_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_11_4_4', 'STD_CT_5_4_11_4', 'CT_COLON_5_4_11_4_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_11_4_5', 'STD_CT_5_4_11_4', 'CT_COLON_5_4_11_4_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_11_4_6', 'STD_CT_5_4_11_4', 'CT_COLON_5_4_11_4_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_11_4_7', 'STD_CT_5_4_11_4', 'CT_COLON_5_4_11_4_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_11_4_8', 'STD_CT_5_4_11_4', 'CT_COLON_5_4_11_4_8', 8.00, 1, 8, NOW(), NOW());


INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_COLON_5_4_11_5_1', 'CT_COLON_5_4_11_5_1', '检查范围', 3, 'boolean',
'检查范围从膈顶至耻骨联合',
'{"type": "dicom_check", "method": "checkSCAN_RANGE", "params": {"minSliceCount": 40, "expectedBodyPart": "其他", "checkCoverage": true}, "isVeto": false, "description": "检查范围从膈顶至耻骨联合"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_COLON_5_4_11_5_2', 'CT_COLON_5_4_11_5_2', '图像偏中心', 3, 'boolean',
'断层位于图像正中',
'{"type": "opencv_check", "method": "checkIMAGE_CENTERING", "params": {"maxOffsetRatio": 0.15}, "isVeto": false, "description": "断层位于图像正中"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_COLON_5_4_11_5_3', 'CT_COLON_5_4_11_5_3', '重建参数', 3, 'boolean',
'厚层≤5.0mm，薄层≤1.25mm，DFOV：38cm',
'{"type": "dicom_check", "method": "checkRECONSTRUCTION_PARAMS", "params": {"thickSliceMax": 5.0, "thickIntervalMax": 5.0, "thinSliceMax": 1.25, "thinIntervalMax": 1.25, "dfov": 38, "dfovTolerance": 3.0}, "isVeto": false, "description": "厚层≤5.0mm，薄层≤1.25mm，DFOV：38cm"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_COLON_5_4_11_5_4', 'CT_COLON_5_4_11_5_4', '窗口技术', 3, 'boolean',
'软组织窗：窗宽200~300HU，窗位40~60HU',
'{"type": "dicom_check", "method": "checkWINDOW_TECHNIQUE", "params": {"softTissueWindow": {"windowWidth": {"min": 200, "max": 300}, "windowCenter": {"min": 40, "max": 60}}}, "isVeto": true, "description": "软组织窗：窗宽200~300HU，窗位40~60HU"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_COLON_5_4_11_5_5', 'CT_COLON_5_4_11_5_5', '扫描体位', 3, 'boolean',
'仰卧位，双手上举',
'{"type": "dicom_check", "method": "checkSCAN_POSITION", "params": {"expectedPosition": ["HFS", "FFS"]}, "isVeto": false, "description": "仰卧位，双手上举"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_COLON_5_4_11_5_6', 'CT_COLON_5_4_11_5_6', '图像标识', 3, 'boolean',
'影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位',
'{"type": "dicom_check", "method": "checkImageAnnotation", "params": {"requiredFields": ["StudyInstanceUID", "BodyPartExamined", "PatientName", "PatientSex", "PatientAge", "StudyDate", "StudyTime", "KVP", "ScanDirection"]}, "isVeto": true, "description": "影像号、检查部位、姓名、性别、年龄、日期、时间、kV、mAs值、扫描方位"}',
'dicom_metadata', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_COLON_5_4_11_5_7', 'CT_COLON_5_4_11_5_7', '图像伪影', 3, 'boolean',
'无明显运动、呼吸、设备或体外金属等原因产生的图像伪影',
'{"type": "opencv_check", "method": "checkIMAGE_ARTIFACTS", "params": {"motionThreshold": 30.0, "beamHardeningThreshold": 50.0}, "isVeto": true, "description": "无明显运动、呼吸、设备或体外金属等原因产生的图像伪影"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_factor` (`id`, `factor_code`, `factor_name`, `factor_category`, `factor_type`, `description`, `check_rule`, `data_source`, `status`, `create_time`, `update_time`, `modality`, `body_part`, `scan_type`) VALUES
('CT_COLON_5_4_11_5_8', 'CT_COLON_5_4_11_5_8', '图像清晰度', 3, 'boolean',
'清晰显示各器官组织和病变',
'{"type": "opencv_check", "method": "checkIMAGE_CLARITY", "params": {"sharpnessThreshold": 100.0, "contrastThreshold": 50.0}, "isVeto": false, "description": "清晰显示各器官组织和病变"}',
'opencv_analysis', 1, NOW(), NOW(), NULL, NULL, NULL);

INSERT INTO `qc_standard` (`id`, `standard_code`, `standard_name`, `modality`, `body_part`, `scan_type`, `exam_item`, `pass_score`, `description`, `status`, `create_time`, `update_time`) VALUES
('STD_CT_5_4_11_5', 'CT_5_4_11_5', '结肠CT增强质控标准', 'CT', '其他', '增强', '结肠CT增强', 80,
'结肠CT增强质控标准，包含8个质控因子',
1, NOW(), NOW());

INSERT INTO `qc_standard_factor` (`id`, `standard_id`, `factor_id`, `weight`, `is_required`, `sort_order`, `create_time`, `update_time`) VALUES
('SF_CT_5_4_11_5_1', 'STD_CT_5_4_11_5', 'CT_COLON_5_4_11_5_1', 10.00, 1, 1, NOW(), NOW()),
('SF_CT_5_4_11_5_2', 'STD_CT_5_4_11_5', 'CT_COLON_5_4_11_5_2', 8.00, 1, 2, NOW(), NOW()),
('SF_CT_5_4_11_5_3', 'STD_CT_5_4_11_5', 'CT_COLON_5_4_11_5_3', 10.00, 1, 3, NOW(), NOW()),
('SF_CT_5_4_11_5_4', 'STD_CT_5_4_11_5', 'CT_COLON_5_4_11_5_4', 20.00, 1, 4, NOW(), NOW()),
('SF_CT_5_4_11_5_5', 'STD_CT_5_4_11_5', 'CT_COLON_5_4_11_5_5', 8.00, 1, 5, NOW(), NOW()),
('SF_CT_5_4_11_5_6', 'STD_CT_5_4_11_5', 'CT_COLON_5_4_11_5_6', 22.00, 1, 6, NOW(), NOW()),
('SF_CT_5_4_11_5_7', 'STD_CT_5_4_11_5', 'CT_COLON_5_4_11_5_7', 14.00, 1, 7, NOW(), NOW()),
('SF_CT_5_4_11_5_8', 'STD_CT_5_4_11_5', 'CT_COLON_5_4_11_5_8', 8.00, 1, 8, NOW(), NOW());

