123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718 |
- /**
- * Protocol Mock Handlers
- * 协议相关的 mock 处理器
- */
- /**
- * 获取患者类型列表 - Human类型
- *
- * @description 获取启用的人医患者类型列表
- * @method GET
- * @url /dr/api/v1/auth/protocol/patient_type
- * @access 需要认证
- *
- * @param {boolean} [is_enabled] - 是否只返回启用的类型
- *
- * @returns {Object[]} data.patient_type_list - 患者类型列表
- * @returns {string} data.patient_type_list[].patient_type_id - 患者类型ID
- * @returns {string} data.patient_type_list[].patient_type_name - 患者类型名称
- * @returns {boolean} data.patient_type_list[].is_enabled - 是否启用
- * @returns {string} data.patient_type_list[].product - 产品类型(DROS/VETDROS)
- *
- * @example
- * mockGetPatientTypeHuman();
- * cy.wait('@getPatientTypeHuman');
- *
- * @see docs/DR.md - 章节12.1
- */
- export function mockGetPatientTypeHuman() {
- cy.intercept('GET', '/dr/api/v1/auth/protocol/patient_type*', {
- statusCode: 200,
- body: {
- code: "0x000000",
- description: "Success",
- solution: "",
- data: {
- patient_type_list: [
- {
- id: "1",
- patient_type_id: "Human",
- patient_type_name: "Human",
- patient_type_local: "Human",
- patient_type_description: "Human",
- sort: 1,
- is_enabled: true,
- product: "DROS",
- is_pre_install: true
- }
- ]
- }
- }
- }).as('getPatientTypeHuman');
- }
- /**
- * 获取患者类型列表 - 所有类型
- *
- * @description 获取所有患者类型列表(包括禁用的)
- * @method GET
- * @url /dr/api/v1/auth/protocol/patient_type
- * @access 需要认证
- *
- * @returns {Object[]} data.patient_type_list - 患者类型列表
- *
- * @example
- * mockGetPatientTypeAll();
- * cy.wait('@getPatientTypeAll');
- *
- * @see docs/DR.md - 章节12.1
- */
- export function mockGetPatientTypeAll() {
- cy.intercept('GET', '/dr/api/v1/auth/protocol/patient_type*', {
- statusCode: 200,
- body: {
- code: "0x000000",
- description: "Success",
- solution: "",
- data: {
- patient_type_list: [
- {
- id: "1",
- patient_type_id: "Human",
- patient_type_name: "Human",
- patient_type_local: "Human",
- patient_type_description: "Human",
- sort: 1,
- is_enabled: true,
- product: "DROS",
- is_pre_install: true
- },
- {
- id: "2",
- patient_type_id: "SpecialType",
- patient_type_name: "SpecialType",
- patient_type_local: "SpecialType",
- patient_type_description: "SpecialType",
- sort: 2,
- is_enabled: false,
- product: "DROS",
- is_pre_install: true
- }
- ]
- }
- }
- }).as('getPatientTypeAll');
- }
- /**
- * 获取身体部位列表 - Human
- *
- * @description 根据患者类型获取支持的身体部位(人医)
- * @method GET
- * @url /dr/api/v1/auth/protocol/body_part
- * @access 需要认证
- *
- * @param {string} patient_type - 患者类型
- * @param {string} modality - 模式(DX)
- * @param {boolean} [is_enabled] - 是否只返回启用的
- *
- * @returns {Object[]} data.body_part_list - 身体部位列表
- * @returns {string} data.body_part_list[].body_part_id - 身体部位ID
- * @returns {string} data.body_part_list[].body_part_name - 身体部位名称
- *
- * @example
- * mockGetBodyPartHuman();
- * cy.wait('@getBodyPartHuman');
- *
- * @see docs/DR.md - 章节12.2
- */
- export function mockGetBodyPartHuman() {
- cy.intercept('GET', '/dr/api/v1/auth/protocol/body_part*', {
- statusCode: 200,
- body: {
- code: "0x000000",
- description: "Success",
- solution: "",
- data: {
- body_part_list: [
- {
- id: "1",
- body_part_id: "Human_SKULL",
- body_part_name: "颅骨",
- body_part_local: "颅骨",
- body_part_description: "Skull",
- patient_type: "Human",
- category: "DX",
- sort: 1,
- is_enabled: true,
- product: "DROS",
- is_pre_install: true
- },
- {
- id: "2",
- body_part_id: "Human_NECK",
- body_part_name: "颈部",
- body_part_local: "颈部",
- body_part_description: "Neck",
- patient_type: "Human",
- category: "DX",
- sort: 2,
- is_enabled: true,
- product: "DROS",
- is_pre_install: true
- }
- ]
- }
- }
- }).as('getBodyPartHuman');
- }
- /**
- * 获取协议列表 - 成功场景
- *
- * @description 根据身体部位获取协议列表
- * @method GET
- * @url /dr/api/v1/auth/protocol/procedure
- * @access 需要认证
- *
- * @param {string} patient_type - 患者类型
- * @param {string} body_part - 身体部位
- * @param {string} [procedure_type] - 协议类型(NORMAL/EMERGENCY)
- * @param {boolean} [is_enabled] - 是否只返回启用的
- * @param {number} [page] - 页码
- * @param {number} [page_size] - 每页数量
- *
- * @returns {Object} data - 协议列表数据
- * @returns {number} data.count - 总数
- * @returns {Object[]} data.procedures - 协议列表
- *
- * @example
- * mockGetProcedureListSuccess();
- * cy.wait('@getProcedureListSuccess');
- *
- * @see docs/DR.md - 章节12.3
- */
- export function mockGetProcedureListSuccess() {
- cy.intercept('GET', '/dr/api/v1/auth/protocol/procedure*', {
- statusCode: 200,
- body: {
- code: "0x000000",
- description: "Success",
- solution: "",
- data: {
- "@type": "type.googleapis.com/dr.protocol.ProcedureList",
- count: 4,
- procedures: [
- {
- id: "2",
- procedure_id: "P0-0002",
- procedure_code: "P0-0002",
- procedure_name: "颅骨前后位 + 侧位",
- procedure_name_local: "颅骨前后位 + 侧位",
- procedure_other_name: "Skull AP + LAT",
- procedure_description: "颅骨前后位 + 侧位",
- procedure_description_local: "颅骨前后位 + 侧位",
- patient_type: "Human",
- body_part_id: "Human_SKULL",
- procedure_type: "NORMAL",
- fast_search: false,
- protocol_laterality: "U",
- procedure_category: "Adult",
- modality: "DX",
- sort: 1,
- is_enabled: true,
- product: "DROS",
- is_pre_install: true
- },
- {
- id: "3",
- procedure_id: "P0-0003",
- procedure_code: "P0-0003",
- procedure_name: "颅骨后前位 + 侧位",
- procedure_name_local: "颅骨后前位 + 侧位",
- procedure_other_name: "Skull PA + LAT",
- procedure_description: "颅骨后前位 + 侧位",
- procedure_description_local: "颅骨后前位 + 侧位",
- patient_type: "Human",
- body_part_id: "Human_SKULL",
- procedure_type: "NORMAL",
- fast_search: false,
- protocol_laterality: "U",
- procedure_category: "Adult",
- modality: "DX",
- sort: 1,
- is_enabled: true,
- product: "DROS",
- is_pre_install: true
- }
- ]
- }
- }
- }).as('getProcedureListSuccess');
- }
- /**
- * 获取体位列表 - 成功场景
- *
- * @description 获取体位列表
- * @method GET
- * @url /dr/api/v1/auth/protocol/view
- * @access 需要认证
- *
- * @param {string} patient_type - 患者类型
- * @param {string} body_part - 身体部位
- * @param {boolean} [is_enabled] - 是否只返回启用的
- * @param {number} [page] - 页码
- * @param {number} [page_size] - 每页数量
- *
- * @returns {Object} data - 体位列表数据
- * @returns {number} data.count - 总数
- * @returns {Object[]} data.views - 体位列表
- *
- * @example
- * mockGetViewListSuccess();
- * cy.wait('@getViewListSuccess');
- *
- * @see docs/DR.md - 章节12.4
- */
- export function mockGetViewListSuccess() {
- cy.intercept('GET', '/dr/api/v1/auth/protocol/view*', {
- statusCode: 200,
- body: {
- code: "0x000000",
- description: "Success",
- solution: "",
- data: {
- "@type": "type.googleapis.com/dr.protocol.ViewList",
- count: 2,
- views: [
- {
- internal_id: "View_DX_T_A_SK_AP_00",
- view_id: "View_DX_T_A_SK_AP_00",
- view_name: "颅骨前后位",
- view_name_local: "",
- view_other_name: "Skull AP",
- view_description: "颅骨前后位",
- view_position: "AP",
- application: "RAD",
- anatomic_region: "SKULL",
- patient_type: "Human",
- body_part_id: "Human_SKULL",
- view_icon_name: "/Image/Position/Human/skull.ap.table.x.png",
- modality: "DX",
- work_station_id: 0,
- apr_id: "View_DX_T_A_SK_AP_00",
- img_proc_id: "View_DX_T_A_SK_AP_00",
- sort: 1,
- is_enabled: true,
- product: "DROS",
- is_pre_install: true
- }
- ]
- }
- }
- }).as('getViewListSuccess');
- }
- /**
- * 获取体位详情 - 成功场景(简化版)
- *
- * @description 根据ID获取体位详情(不含完整config_object)
- * @method GET
- * @url /dr/api/v1/auth/protocol/view/{id}
- * @access 需要认证
- *
- * @param {string} id - 体位ID(路径参数)
- *
- * @returns {Object} data - 体位详情
- *
- * @example
- * mockGetViewDetailSuccess();
- * cy.wait('@getViewDetailSuccess');
- *
- * @see docs/DR.md - 章节12.6
- */
- export function mockGetViewDetailSuccess() {
- cy.intercept('GET', '/dr/api/v1/auth/protocol/view/*', {
- statusCode: 200,
- body: {
- code: "0x000000",
- description: "Success",
- solution: "",
- data: {
- "@type": "type.googleapis.com/dr.protocol.View",
- internal_id: "View_DX_T_A_SK_AP_00",
- view_id: "View_DX_T_A_SK_AP_00",
- view_name: "颅骨前后位",
- view_description: "颅骨前后位",
- patient_type: "Human",
- body_part_id: "Human_SKULL",
- modality: "DX",
- sort: 1,
- is_enabled: true,
- product: "DROS",
- is_pre_install: true
- }
- }
- }).as('getViewDetailSuccess');
- }
- /**
- * 获取体位详情 - 完整版(包含config_object)
- *
- * @description 根据ID获取完整的体位详情,包含DX和Common配置对象
- * @method GET
- * @url /dr/api/v1/auth/protocol/view/{id}
- * @access 需要认证
- *
- * @param {string} id - 体位ID(路径参数)
- *
- * @returns {Object} data - 完整的体位详情,包含config_object
- * @returns {Object} data.config_object.DX - 人医配置参数
- * @returns {Object} data.config_object.Common - 通用配置参数
- *
- * @example
- * mockGetViewDetailComplete();
- * cy.wait('@getViewDetailComplete');
- *
- * @see src/API/patient/viewActions.ts - fetchViewDetail函数
- */
- export function mockGetViewDetailComplete() {
- cy.intercept('GET', '/dr/api/v1/auth/protocol/view/*', {
- statusCode: 200,
- body: {
- code: "0x000000",
- description: "Success",
- solution: "",
- data: {
- "@type": "type.googleapis.com/dr.protocol.View",
- internal_id: "View_DX_T_A_SK_AP_00",
- view_id: "View_DX_T_A_SK_AP_00",
- view_name: "颅骨前后位",
- view_name_local: "颅骨前后位",
- view_other_name: "Skull AP",
- view_description: "颅骨前后位",
- view_position: "AP",
- application: "RAD",
- anatomic_region: "Skull",
- patient_type: "Human",
- body_part_id: "Human_SKULL",
- view_icon_name: "/Image/Position/Human/skull.ap.table.x.png",
- view_big_icon_name: "/Image/Position/Human/skull.ap.table.x_big.png",
- view_coach_name: "/Image/Coach/Human/skull_ap.png",
- modality: "DX",
- work_station_id: 0,
- apr_id: "View_DX_T_A_SK_AP_00",
- img_proc_id: "View_DX_T_A_SK_AP_00",
- config_object: {
- DX: {
- WorkStationID: "0",
- PatientOrientationRow: "P",
- PatientOrientationColumn: "L",
- ImageLaterality: "U",
- ImageRotate: "0",
- CollimatorSizeLength: "430",
- CollimatorSizeWidth: "430",
- CollimatorSize: "430*430",
- CollimatorCenter: "0,0",
- CollimatorFilter: "None",
- CollimatorNoChange: false,
- StandPos: "Table",
- ImageHorizontalFlip: "False",
- LabelStyle: "Default",
- LabelPosition: "TopLeft",
- RatioFactorThickness: 1.0,
- RatioFactorWeight: 1.0,
- RatioFactorSize: 1.0,
- RatioFactorLength: 1.0,
- TargetEXI: 200
- },
- Common: {
- CollimatorCenter: "0,0",
- CollimatorFilter: "None",
- CollimatorNoChange: false,
- CollimatorSize: "430*430",
- CollimatorSizeLength: "430",
- CollimatorSizeWidth: "430",
- ImageHorizontalFlip: "False",
- ImageInvert: false,
- ImageLaterality: "U",
- ImageRotate: "0",
- LabelPosition: "TopLeft",
- RatioFactorLength: 1.0,
- RatioFactorSize: 1.0,
- RatioFactorThickness: 1.0,
- RatioFactorWeight: 1.0,
- StandPos: "Table",
- TargetEXI: 200,
- UseMaskMapMatrix: false,
- ViewID: "View_DX_T_A_SK_AP_00",
- XIndex: 0,
- YIndex: 0
- }
- },
- sort: 1,
- is_enabled: true,
- product: "DROS",
- is_pre_install: true
- }
- }
- }).as('getViewDetailComplete');
- }
- /**
- * 获取APR详情(通过view_id)- 成功场景
- *
- * @description 根据体位ID获取APR详情
- * @method GET
- * @url /dr/api/v1/auth/protocol/view/{id}/apr
- * @access 需要认证
- *
- * @param {string} id - 体位ID(路径参数)
- *
- * @returns {Object} data - APR详情
- * @returns {Object[]} data.exposures - 曝光参数列表
- *
- * @example
- * mockGetAprByViewSuccess();
- * cy.wait('@getAprByViewSuccess');
- *
- * @see docs/DR.md - 章节12.7
- */
- export function mockGetAprByViewSuccess() {
- cy.intercept('GET', '/dr/api/v1/auth/protocol/view/*/apr*', {
- statusCode: 200,
- body: {
- code: "0x000000",
- description: "Success",
- solution: "",
- data: {
- "@type": "type.googleapis.com/dr.protocol.AprReply",
- apr_id: "View_DX_T_A_SK_AP_00",
- apr_name: "View_DX_T_A_SK_AP_00",
- apr_description: "颅骨前后位",
- patient_type: "Human",
- body_part_id: "Human_SKULL",
- modality: "DX",
- exposures: [
- {
- work_station_id: 0,
- patient_size: "Medium",
- config_object: {
- Common: {
- kV: 70,
- mA: 125,
- ms: 100,
- mAs: 12.5
- }
- }
- }
- ],
- sort: 0,
- is_enabled: true,
- product: "DROS",
- is_pre_install: true
- }
- }
- }).as('getAprByViewSuccess');
- }
- /**
- * 获取APR设备信息 - 成功场景
- *
- * @description 根据APR ID获取设备参数信息
- * @method GET
- * @url /dr/api/v1/auth/protocol/apr/{id}/device
- * @access 需要认证
- *
- * @param {string} id - APR ID(路径参数)
- * @param {number} [work_station_id] - 工作位ID(0或1)
- *
- * @returns {Object} data - 设备参数
- *
- * @example
- * mockGetAprDeviceSuccess();
- * cy.wait('@getAprDeviceSuccess');
- *
- * @see docs/DR.md - 章节12.9
- */
- export function mockGetAprDeviceSuccess() {
- cy.intercept('GET', '/dr/api/v1/auth/protocol/apr/*/device*', {
- statusCode: 200,
- body: {
- code: "0x000000",
- description: "Success",
- solution: "",
- data: {
- "@type": "type.googleapis.com/dr.protocol.AprDevice",
- work_station_id: 1,
- config_object: {
- Common: {
- APRNumber: "5",
- SID: 115,
- GridType: 2
- }
- }
- }
- }
- }).as('getAprDeviceSuccess');
- }
- /**
- * 获取APR默认曝光参数 - 成功场景
- *
- * @description 根据APR ID获取默认曝光技术参数
- * @method GET
- * @url /dr/api/v1/auth/protocol/apr/{id}/tech
- * @access 需要认证
- *
- * @param {string} id - APR ID(路径参数)
- * @param {number} [work_station_id] - 工作位ID
- * @param {string} [patient_size] - 患者体型(Large/Medium/Small)
- *
- * @returns {Object} data - 技术参数
- * @returns {Object} data.dp - 设备参数
- * @returns {Object} data.ep - 曝光参数
- *
- * @example
- * mockGetAprTechParamsSuccess();
- * cy.wait('@getAprTechParamsSuccess');
- *
- * @see docs/DR.md - 章节12.10
- */
- export function mockGetAprTechParamsSuccess() {
- cy.intercept('GET', '/dr/api/v1/auth/protocol/apr/*/tech*', {
- statusCode: 200,
- body: {
- code: "0x000000",
- description: "Success",
- solution: "",
- data: {
- "@type": "type.googleapis.com/dr.protocol.TechParam",
- dp: {
- SID: 115,
- GridType: 2,
- GridSpeed: 0
- },
- ep: {
- kV: 70,
- mA: 125,
- ms: 100,
- mAs: 12.5
- }
- }
- }
- }).as('getAprTechParamsSuccess');
- }
- /**
- * 获取APR完整详情(包含所有体型参数)- 成功场景
- *
- * @description 根据体位ID获取完整的APR详情,包含所有患者体型的曝光参数
- * @method GET
- * @url /dr/api/v1/auth/protocol/view/{id}/apr
- * @access 需要认证
- *
- * @param {string} id - 体位ID(路径参数)
- * @param {string} [patient_type] - 患者类型
- * @param {string} [body_part] - 身体部位
- * @param {boolean} [is_enabled] - 是否启用
- * @param {string} [procedure_id] - 协议ID
- *
- * @returns {Object} data - 完整的APR详情
- * @returns {Object[]} data.sub - 不同体型的曝光参数列表
- * @returns {Object} data.sub[].config_object.Common - 完整的曝光配置
- *
- * @example
- * mockGetAprDetailsComplete();
- * cy.wait('@getAprDetailsComplete');
- *
- * @see src/API/exam/APRActions.ts - getAprDetails函数
- */
- export function mockGetAprDetailsComplete() {
- cy.intercept('GET', '/dr/api/v1/auth/protocol/view/*/apr*', {
- statusCode: 200,
- body: {
- code: "0x000000",
- description: "Success",
- solution: "",
- data: {
- "@type": "type.googleapis.com/dr.protocol.APR",
- apr_id: "View_DX_T_A_SK_AP_00",
- apr_name: "颅骨前后位APR",
- apr_description: "颅骨前后位曝光参数",
- patient_type: "Human",
- body_part_id: "Human_SKULL",
- view_position: "AP",
- category: "DX",
- modality: "DX",
- sub: [
- {
- work_station_id: 0,
- patient_size: "Large",
- config_object: {
- Common: {
- AECDensity: 0,
- AECField: "Center",
- AECFilm: 0,
- Dose: 100,
- ExposureMode: 1,
- Focus: 0,
- TOD: 100,
- TubeLoad: 50,
- kV: 70,
- mA: 125,
- mAs: 12.5,
- ms: 100
- }
- }
- },
- {
- work_station_id: 0,
- patient_size: "Medium",
- config_object: {
- Common: {
- AECDensity: 0,
- AECField: "Center",
- AECFilm: 0,
- Dose: 80,
- ExposureMode: 1,
- Focus: 0,
- TOD: 100,
- TubeLoad: 40,
- kV: 65,
- mA: 100,
- mAs: 10,
- ms: 100
- }
- }
- },
- {
- work_station_id: 0,
- patient_size: "Small",
- config_object: {
- Common: {
- AECDensity: 0,
- AECField: "Center",
- AECFilm: 0,
- Dose: 60,
- ExposureMode: 1,
- Focus: 0,
- TOD: 100,
- TubeLoad: 30,
- kV: 60,
- mA: 80,
- mAs: 8,
- ms: 100
- }
- }
- }
- ],
- sort: 1,
- is_enabled: true,
- product: "DROS",
- is_pre_install: true
- }
- }
- }).as('getAprDetailsComplete');
- }
|