planning:userguide:results_api_functions
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| planning:userguide:results_api_functions [2017/07/18 14:56] – created dpatenaude | planning:userguide:results_api_functions [2021/07/29 18:24] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Planning Results API Functions | + | ====== Planning Results API ====== |
| Below is a list of provided Results API functions for the planning application. Each function must be called using a Thinknode meta request. | Below is a list of provided Results API functions for the planning application. Each function must be called using a Thinknode meta request. | ||
| Line 6: | Line 6: | ||
| For an example in calling a Planning Results API function, please refer to the // | For an example in calling a Planning Results API function, please refer to the // | ||
| + | |||
| + | ===== Results API Types ===== | ||
| <code c++> | <code c++> | ||
| + | // PLAN RESULTS API | ||
| + | |||
| + | // Some general notes about the API... | ||
| + | // | ||
| + | // All API functions here are exposed as request generators. This is for | ||
| + | // multiple reasons... | ||
| + | // | ||
| + | // * It allows the implementation to return (possibly chained) ' | ||
| + | // | ||
| + | // | ||
| + | // | ||
| + | // * It allows users to inspect the intermediate requests to see how result | ||
| + | // | ||
| + | // | ||
| + | // ' | ||
| + | // It includes only textual information and IDs. There' | ||
| + | // The real data is retrieved separately through other API calls. | ||
| + | // | ||
| + | // A ' | ||
| + | // user commentary and parameters that are automatically captured by the app. | ||
| + | // | ||
| + | // A report has no prescribed structure. It's only meant to be consumed | ||
| + | // visually by humans. The generating app version has full flexibility in what | ||
| + | // it chooses to include. Thus, apps that use this API should NOT analyze the | ||
| + | // contents of the report. If apps need information that's not directly | ||
| + | // available outside the report, then either this API is missing information | ||
| + | // or they' | ||
| + | // of the planning app (in which case they should be using that version' | ||
| + | // structures directly). | ||
| + | // | ||
| + | // There' | ||
| + | // the DVHs for structures even though you have enough info to compute them | ||
| + | // yourself). This is not just a matter of convenience but is a way of ensuring | ||
| + | // that important results are captured as they were originally computed. | ||
| + | |||
| + | api(struct) | ||
| + | struct ct_summary | ||
| + | { | ||
| + | double window; | ||
| + | double level; | ||
| + | vector3d slice_positions; | ||
| + | markup_document report; | ||
| + | }; | ||
| + | |||
| + | api(struct) | ||
| + | struct structure_summary | ||
| + | { | ||
| + | value internal_id; | ||
| + | // stringified version of the internal id | ||
| + | string id; | ||
| + | // display label of the structure | ||
| + | styled_text label; | ||
| + | rgb8 color; | ||
| + | bool visible; | ||
| + | double opacity; | ||
| + | structure_render_mode render_mode; | ||
| + | markup_document report; | ||
| + | }; | ||
| + | |||
| + | api(struct) | ||
| + | struct point_summary | ||
| + | { | ||
| + | value internal_id; | ||
| + | styled_text label; | ||
| + | rgb8 color; | ||
| + | markup_document report; | ||
| + | }; | ||
| + | |||
| + | api(struct) | ||
| + | struct aperture_summary | ||
| + | { | ||
| + | styled_text label; | ||
| + | markup_document report; | ||
| + | |||
| + | aperture_parameters parameters; | ||
| + | }; | ||
| + | |||
| + | api(struct) | ||
| + | struct degrader_summary | ||
| + | { | ||
| + | styled_text label; | ||
| + | markup_document report; | ||
| + | |||
| + | double thickness; | ||
| + | }; | ||
| + | |||
| + | api(struct) | ||
| + | struct beam_summary | ||
| + | { | ||
| + | styled_text label; | ||
| + | rgb8 color; | ||
| + | markup_document report; | ||
| + | |||
| + | styled_text isocenter; | ||
| + | styled_text geometric_target_label; | ||
| + | styled_text spot_target_label; | ||
| + | |||
| + | double couch_angle; | ||
| + | double gantry_angle; | ||
| + | |||
| + | double air_gap; | ||
| + | |||
| + | // optional snout name for this beam | ||
| + | optional< | ||
| + | |||
| + | // optional aperture for this beam | ||
| + | optional< | ||
| + | |||
| + | // list of degraders for this beam | ||
| + | std:: | ||
| + | }; | ||
| + | |||
| + | api(struct) | ||
| + | struct course_summary | ||
| + | { | ||
| + | markup_document report; | ||
| + | styled_text label; | ||
| + | }; | ||
| + | |||
| + | api(struct) | ||
| + | struct intent_summary | ||
| + | { | ||
| + | // a report about what the plan was intended to accomplish | ||
| + | // (e.g., prescription, | ||
| + | markup_document report; | ||
| + | // Name of the patient external structure (from the disease site template) | ||
| + | string patient_structure_name; | ||
| + | // Name of the treatment_site | ||
| + | string treatment_site; | ||
| + | }; | ||
| + | |||
| + | api(struct) | ||
| + | struct patient_model_summary | ||
| + | { | ||
| + | markup_document report; | ||
| + | styled_text label; | ||
| + | }; | ||
| + | |||
| + | api(struct) | ||
| + | struct constraint_summary | ||
| + | { | ||
| + | string constraint_type; | ||
| + | styled_text structure_label; | ||
| + | double dose; | ||
| + | }; | ||
| + | |||
| + | api(struct) | ||
| + | struct fraction_group_summary | ||
| + | { | ||
| + | styled_text label; | ||
| + | rgb8 color; | ||
| + | markup_document report; | ||
| + | |||
| + | unsigned fraction_count; | ||
| + | // The scale factor to apply to the rx_statement for the fraction group. Set as follows: | ||
| + | // IMPT Fraction Group: 1.0 | ||
| + | // SFO Fraction Group: 1.0 / # of beamsets | ||
| + | // Advanced Fraction Group: 1.0 | ||
| + | double rx_scale_factor; | ||
| + | |||
| + | std:: | ||
| + | |||
| + | std:: | ||
| + | }; | ||
| + | |||
| + | |||
| + | api(struct) | ||
| + | struct prescription_summary | ||
| + | { | ||
| + | styled_text label; | ||
| + | rgb8 color; | ||
| + | markup_document report; | ||
| + | |||
| + | // the number of fractions this prescription is specified to implement | ||
| + | unsigned fraction_count; | ||
| + | |||
| + | // map of the index of the structure from the structure summary and it's Rx dose | ||
| + | std:: | ||
| + | |||
| + | std:: | ||
| + | }; | ||
| + | |||
| + | api(struct) | ||
| + | struct spot_placement_summary | ||
| + | { | ||
| + | double distal_margin; | ||
| + | double lateral_margin; | ||
| + | double spot_spacing; | ||
| + | string spot_strategy; | ||
| + | double layer_spacing; | ||
| + | string layer_strategy; | ||
| + | }; | ||
| + | |||
| + | api(struct) | ||
| + | struct objective_summary | ||
| + | { | ||
| + | string objective_type; | ||
| + | styled_text structure_label; | ||
| + | optional< | ||
| + | }; | ||
| + | |||
| + | api(struct) | ||
| + | struct solver_parameter_summary | ||
| + | { | ||
| + | bool intelligent_stopping_solver; | ||
| + | unsigned solver_iterations; | ||
| + | bool intelligent_stopping_optimizer; | ||
| + | unsigned optimizer_iterations; | ||
| + | }; | ||
| + | |||
| + | api(struct) | ||
| + | struct dicom_summary | ||
| + | { | ||
| + | string study_instance_uid; | ||
| + | string study_description; | ||
| + | string study_id; | ||
| + | string series_instance_uid; | ||
| + | string series_description; | ||
| + | string ref_structure_set_uid; | ||
| + | }; | ||
| + | |||
| + | api(struct) | ||
| + | struct rsp_image_summary | ||
| + | { | ||
| + | markup_document report; | ||
| + | string rsp_image_id; | ||
| + | }; | ||
| + | |||
| + | api(struct) | ||
| + | struct plan_summary | ||
| + | { | ||
| + | // A summary of the DICOM study/ | ||
| + | dicom_summary dcm_summary; | ||
| + | |||
| + | // the treatment plan name | ||
| + | styled_text label; | ||
| + | |||
| + | // the plan description | ||
| + | styled_text description; | ||
| + | |||
| + | // the patient information | ||
| + | // (e.g., name, mrn, demographics) | ||
| + | patient_info patient; | ||
| + | |||
| + | // the snapshot patient position | ||
| + | patient_position_type patient_position; | ||
| + | |||
| + | // info from the course level | ||
| + | course_summary course_info; | ||
| + | |||
| + | // info from the intent level | ||
| + | intent_summary intent_info; | ||
| + | |||
| + | // info from the patient model level | ||
| + | patient_model_summary patient_model_info; | ||
| + | |||
| + | // a summary about the CT image associated with the treatment plan | ||
| + | ct_summary ct_image_summary; | ||
| + | |||
| + | // a report about the high-level creation of the plan | ||
| + | // (e.g., calculation settings, optimization parameters, etc.) | ||
| + | markup_document creation_report; | ||
| + | |||
| + | // a summary about the RSP image associated with the treatment plan | ||
| + | rsp_image_summary rsp_image_info; | ||
| + | |||
| + | // a report about the calculation grid used in creating the treatment plan | ||
| + | markup_document calc_grid_report; | ||
| + | |||
| + | // a report about the results of the plan | ||
| + | // (e.g., dose statistics that were considered important) | ||
| + | markup_document results_report; | ||
| + | |||
| + | // the list of structures relevant to this treatment plan | ||
| + | std:: | ||
| + | |||
| + | // the list of points relevant to this treatment plan | ||
| + | std:: | ||
| + | |||
| + | // ID of the machine on which this plan is intended to be treated | ||
| + | string machine_id; | ||
| + | |||
| + | // ID of the treatment room on which this plan is intended to be treated | ||
| + | string treatment_room_id; | ||
| + | |||
| + | // the list of prescriptions intended to be delivered by this plan | ||
| + | std:: | ||
| + | |||
| + | // the spot placement parameters used at the plan level | ||
| + | spot_placement_summary spot_placement; | ||
| + | |||
| + | // the list of constraints to be used for calculating MCO in this plan | ||
| + | std:: | ||
| + | |||
| + | // the list of objectives to be used for calculating MCO in this plan | ||
| + | std:: | ||
| + | |||
| + | // the iteration counts used for MCO calculations in this plan | ||
| + | solver_parameter_summary solver_params; | ||
| + | }; | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | ===== Results API Functions ===== | ||
| + | |||
| + | <code c++> | ||
| + | |||
| + | // Generate the request for the site_info used for constructing the treatment plan. | ||
| + | api(fun) | ||
| + | calculation_request | ||
| + | generate_site_info_request(treatment_plan const& plan); | ||
| + | |||
| + | // Generate the request for the dicom rt_ion_plan for a treatment_plan | ||
| + | api(fun) | ||
| + | calculation_request | ||
| + | generate_rt_ion_plan_request( | ||
| + | treatment_plan const& plan, | ||
| + | rt_approval const& approval, | ||
| + | rt_tolerance_table const& tol_table, | ||
| + | rt_patient_setup const& patient_setup, | ||
| + | std:: | ||
| + | unsigned fraction_cycle_length, | ||
| + | unsigned fractions_per_day, | ||
| + | string const& fraction_pattern); | ||
| + | |||
| + | // Generate the request for the summary info for a plan. | ||
| + | api(fun) | ||
| + | calculation_request | ||
| + | generate_plan_summary_request(treatment_plan const& plan); | ||
| + | |||
| + | // Generate the request for the CT image used for constructing a plan. | ||
| + | // Image is returned in IEC 61217 (DICOM) patient space coordinates. | ||
| + | api(fun) | ||
| + | calculation_request | ||
| + | generate_ct_image_request(treatment_plan const& plan); | ||
| + | |||
| + | // Generate the request for the RSP image used for constructing a plan. | ||
| + | // The spatial coordinate system is that of the CT image. | ||
| + | // TODO: This currently returns the merged EPF image because we don't actually | ||
| + | // construct the sliced one as an intermediate step, which is also incorrect. | ||
| + | // Once that's fixed, this should return the sliced EPF. | ||
| + | api(fun) | ||
| + | calculation_request | ||
| + | generate_rsp_image_request(treatment_plan const& plan); | ||
| + | |||
| + | // Generate the request for the machine used for constructing a plan. | ||
| + | api(fun) | ||
| + | calculation_request | ||
| + | generate_machine_request(treatment_plan const& plan); | ||
| + | |||
| + | // Generate the request for the geometry associated with a treatment plan | ||
| + | // structure. | ||
| + | // structure_index is the index of the structure in the plan summary' | ||
| + | // `structures` list. | ||
| + | // The spatial coordinate system of the structure is that of the CT image. | ||
| + | api(fun) | ||
| + | calculation_request | ||
| + | generate_structure_geometry_request( | ||
| + | treatment_plan const& plan, size_t structure_index); | ||
| + | |||
| + | // Generate the request for the geometry associated with a treatment plan | ||
| + | // point. | ||
| + | api(fun) | ||
| + | calculation_request | ||
| + | generate_point_geometry_request( | ||
| + | treatment_plan const& plan, size_t point_index); | ||
| + | |||
| + | // Generate the request for the list of voxels making up the calculation grid | ||
| + | // used for a plan. | ||
| + | api(fun) | ||
| + | calculation_request | ||
| + | generate_calc_grid_voxels_request( | ||
| + | treatment_plan const& plan); | ||
| + | |||
| + | // Generate the request for the dose delivered by a treatment plan. | ||
| + | // The units of the dose image are Gy(RBE). | ||
| + | // The spatial coordinate system is that of the CT image. | ||
| + | api(fun) | ||
| + | calculation_request | ||
| + | generate_plan_dose_request(treatment_plan const& plan); | ||
| + | |||
| + | // Generate the request for the DVH for a structure within a treatment plan. | ||
| + | // The DVH is cumulative and includes the full plan dose. | ||
| + | // The image-space dimension of the DVH is dose and is in Gy(RBE). | ||
| + | // The value-space dimension of the DVH is volume and is fractional (not percent). | ||
| + | api(fun) | ||
| + | calculation_request | ||
| + | generate_plan_dvh_request(treatment_plan const& plan, size_t structure_index); | ||
| + | |||
| + | // Generate the request for the dose delivered by a treatment plan for a | ||
| + | // particular prescription. | ||
| + | // The units of the dose image are Gy(RBE). | ||
| + | // The spatial coordinate system is that of the CT image. | ||
| + | api(fun) | ||
| + | calculation_request | ||
| + | generate_prescription_dose_request( | ||
| + | treatment_plan const& plan, | ||
| + | size_t prescription_index); | ||
| + | |||
| + | // Generate the request for the dose delivered by a fraction group within a | ||
| + | // treatment plan. | ||
| + | // The fraction group is specified by the index of its prescription within the plan | ||
| + | // and the index of the fraction group within its prescription. | ||
| + | // The units of the dose image are Gy(RBE). | ||
| + | // The spatial coordinate system is that of the CT image. | ||
| + | api(fun) | ||
| + | calculation_request | ||
| + | generate_fraction_group_dose_request( | ||
| + | treatment_plan const& plan, | ||
| + | size_t prescription_index, | ||
| + | size_t fraction_group_index); | ||
| + | |||
| + | // Generate the request for the dose delivered by a beam within a treatment | ||
| + | // plan. | ||
| + | // The beam is identified by the index of its prescription within the prescription, | ||
| + | // fraction group within that prescription, | ||
| + | // within its fraction group. | ||
| + | // The units of the dose image are Gy(RBE). | ||
| + | // The spatial coordinate system is that of the CT image. | ||
| + | api(fun) | ||
| + | calculation_request | ||
| + | generate_beam_dose_request( | ||
| + | treatment_plan const& plan, | ||
| + | size_t prescription_index, | ||
| + | size_t fraction_group_index, | ||
| + | size_t beam_index); | ||
| + | |||
| + | // Generate the request for the geometry for a beam in a treatment plan. | ||
| + | api(fun) | ||
| + | calculation_request | ||
| + | generate_beam_geometry_request( | ||
| + | treatment_plan const& plan, | ||
| + | size_t prescription_index, | ||
| + | size_t fraction_group_index, | ||
| + | size_t beam_index); | ||
| + | |||
| + | // Generate the request for the aperture used by a beam within a treatment | ||
| + | // plan. | ||
| + | // | ||
| + | // The generated request will yield an aperture as modeled by the dosimetry | ||
| + | // app. | ||
| + | // | ||
| + | // If the specified beam has no aperture, this is an error. | ||
| + | api(fun) | ||
| + | calculation_request | ||
| + | generate_beam_aperture_request( | ||
| + | treatment_plan const& plan, | ||
| + | size_t prescription_index, | ||
| + | size_t fraction_group_index, | ||
| + | size_t beam_index); | ||
| + | |||
| + | // Generate the request for the aperture mesh for a beam within a treatment | ||
| + | // plan. | ||
| + | // | ||
| + | // The generated request will yield a 3D mesh that describes the shape that | ||
| + | // the planning app believes the aperture to be. The mesh is oriented in beam | ||
| + | // space with its downstream edge at the isocentric plane. | ||
| + | // | ||
| + | // If the specified beam has no aperture, this is an error. | ||
| + | api(fun) | ||
| + | calculation_request | ||
| + | generate_beam_aperture_mesh_request( | ||
| + | treatment_plan const& plan, | ||
| + | size_t prescription_index, | ||
| + | size_t fraction_group_index, | ||
| + | size_t beam_index, | ||
| + | optional< | ||
| + | |||
| + | // Generate the request for a degrader used by a beam within a treatment plan. | ||
| + | api(fun) | ||
| + | calculation_request | ||
| + | generate_beam_degrader_request( | ||
| + | treatment_plan const& plan, | ||
| + | size_t prescription_index, | ||
| + | size_t fraction_group_index, | ||
| + | size_t beam_index, | ||
| + | size_t degrader_index); | ||
| + | |||
| + | // Generate the request for the 3D mesh for a degrader used by a beam within a | ||
| + | // treatment plan. | ||
| + | // | ||
| + | // The generated request will yield a 3D mesh that describes the shape that | ||
| + | // the planning app believes the degrader to be. The mesh is oriented in beam | ||
| + | // space with its downstream edge at the isocentric plane. | ||
| + | // | ||
| + | /// TODO: Again, I'm not sure that this should really be a separate request. | ||
| + | /// | ||
| + | api(fun) | ||
| + | calculation_request | ||
| + | generate_beam_degrader_mesh_request( | ||
| + | treatment_plan const& plan, | ||
| + | size_t prescription_index, | ||
| + | size_t fraction_group_index, | ||
| + | size_t beam_index, | ||
| + | size_t degrader_index); | ||
| + | |||
| + | // Generate the request for the spot list for a beam within a treatment plan. | ||
| + | api(fun) | ||
| + | calculation_request | ||
| + | generate_beam_spot_list_request( | ||
| + | treatment_plan const& plan, | ||
| + | size_t prescription_index, | ||
| + | size_t fraction_group_index, | ||
| + | size_t beam_index); | ||
| + | // Generate the request for the snout position for a beam within a treatment plan. | ||
| + | api(fun) | ||
| + | calculation_request | ||
| + | generate_beam_snout_position_request( | ||
| + | treatment_plan const& plan, | ||
| + | size_t prescription_index, | ||
| + | size_t fraction_group_index, | ||
| + | size_t beam_index); | ||
| </ | </ | ||
planning/userguide/results_api_functions.1500389786.txt.gz · Last modified: (external edit)
