imednet.form_designer package
- class imednet.form_designer.FormBuilder[source]
Bases:
objectBuilder class to construct iMedNet Form Designer payloads programmatically.
Manages ID generation and hierarchical structure.
- add_field(type, label, question_name, required=False, choices=None, max_length=None, is_float=False)[source]
Add a standard field (Label + Control).
- Parameters:
type (
Literal['text','number','radio','dropdown','datetime','upload','checkbox','memo']) – Field type.label (
str) – Display label (HTML allowed).question_name (
str) – Variable OID.required (
bool) – If True, sets bl_req=’hard’.choices (
Optional[List[tuple[str,str]]]) – List of (text, code) for radios/dropdowns.max_length (
Optional[int]) – Max chars (text/memo) or digits (number).is_float (
bool) – For numbers, allow decimals.
- Return type:
None
- add_group_header(label)[source]
Add a group header (Label-only row).
- Return type:
None- Parameters:
label (str) –
- add_section_header(label)[source]
Add a separator/section header.
- Return type:
None- Parameters:
label (str) –
- class imednet.form_designer.FormDesignerClient[source]
Bases:
objectClient for the iMedNet Form Designer endpoint.
Handles the specific authentication and payload requirements of the legacy formdez_save.php endpoint.
- __init__(base_url, phpsessid, timeout=30.0)[source]
Initialize the client.
- Parameters:
base_url (
str) – The base URL of the iMedNet instance (e.g., https://xyz.imednet.com).phpsessid (
str) – The active PHP session ID from the browser.timeout (
float) – Request timeout in seconds.
- save_form(csrf_key, form_id, community_id, revision, layout)[source]
Submit the form layout to the server.
- Parameters:
csrf_key (
str) – The CSRF token (scraped from page).form_id (
int) – The ID of the form being edited.community_id (
int) – The study ID.revision (
int) – The NEXT revision number.layout (
ProtocolDeviationFormPayload) – The Form Layout object.
- Return type:
str- Returns:
The raw response text from the server.
- Raises:
httpx.HTTPStatusError – If the server returns a non-2xx status code.
ClientError – If validation fails for the provided arguments.
ApiError – If the server returns an error.
- imednet.form_designer.Layout
alias of
ProtocolDeviationFormPayload
Submodules
imednet.form_designer.builder module
- class imednet.form_designer.builder.FormBuilder[source]
Bases:
objectBuilder class to construct iMedNet Form Designer payloads programmatically.
Manages ID generation and hierarchical structure.
- add_field(type, label, question_name, required=False, choices=None, max_length=None, is_float=False)[source]
Add a standard field (Label + Control).
- Parameters:
type (
Literal['text','number','radio','dropdown','datetime','upload','checkbox','memo']) – Field type.label (
str) – Display label (HTML allowed).question_name (
str) – Variable OID.required (
bool) – If True, sets bl_req=’hard’.choices (
Optional[List[tuple[str,str]]]) – List of (text, code) for radios/dropdowns.max_length (
Optional[int]) – Max chars (text/memo) or digits (number).is_float (
bool) – For numbers, allow decimals.
- Return type:
None
- add_group_header(label)[source]
Add a group header (Label-only row).
- Return type:
None- Parameters:
label (str) –
- add_section_header(label)[source]
Add a separator/section header.
- Return type:
None- Parameters:
label (str) –
imednet.form_designer.client module
- class imednet.form_designer.client.FormDesignerClient[source]
Bases:
objectClient for the iMedNet Form Designer endpoint.
Handles the specific authentication and payload requirements of the legacy formdez_save.php endpoint.
- __init__(base_url, phpsessid, timeout=30.0)[source]
Initialize the client.
- Parameters:
base_url (
str) – The base URL of the iMedNet instance (e.g., https://xyz.imednet.com).phpsessid (
str) – The active PHP session ID from the browser.timeout (
float) – Request timeout in seconds.
- save_form(csrf_key, form_id, community_id, revision, layout)[source]
Submit the form layout to the server.
- Parameters:
csrf_key (
str) – The CSRF token (scraped from page).form_id (
int) – The ID of the form being edited.community_id (
int) – The study ID.revision (
int) – The NEXT revision number.layout (
ProtocolDeviationFormPayload) – The Form Layout object.
- Return type:
str- Returns:
The raw response text from the server.
- Raises:
httpx.HTTPStatusError – If the server returns a non-2xx status code.
ClientError – If validation fails for the provided arguments.
ApiError – If the server returns an error.
imednet.form_designer.models module
- class imednet.form_designer.models.BaseFieldProps[source]
Bases:
BaseModelShared properties for all data capture fields.
- bl_future_date: Optional[int]
- bl_future_date_id: Optional[Union[int, str]]
- bl_inherit_date: Optional[int]
- bl_inherit_date_id: Optional[Union[int, str]]
- bl_req: Optional[Literal['optional', 'hard', 'soft', 'autoquery', 'confirm']]
- bl_req_id: Optional[Union[int, str]]
- blinded_roles: Optional[List[str]]
- catalog: Optional[str]
- comments: Optional[str]
- fld_id: Optional[Union[int, str]]
- is_blinded: Optional[int]
- label: Optional[str]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- mv: Optional[int]
- new_fld_id: Optional[Union[int, str]]
- nodelete: Optional[int]
- page_no: Optional[str]
- question_id: Optional[Union[int, str]]
- question_name: Optional[str]
- sas_label: Optional[str]
- sdv_req: Optional[Literal['yes', 'no']]
- sequence: Optional[str]
- class imednet.form_designer.models.CheckboxFieldProps[source]
Bases:
BaseFieldProps- choices: Optional[List[Choice]]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- type: Literal['checkbox']
- class imednet.form_designer.models.Choice[source]
Bases:
BaseModelA choice for radio or dropdown fields.
- choice_id: Union[int, str]
- code: str
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- text: str
- class imednet.form_designer.models.Col[source]
Bases:
BaseModelA column in a layout table row.
- entities: Optional[List[Entity]]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class imednet.form_designer.models.DateTimeFieldProps[source]
Bases:
BaseFieldProps- allow_no_day: Optional[int]
- allow_no_month: Optional[int]
- allow_no_year: Optional[int]
- date_ctrl: Optional[int]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- record_comp_date: Optional[int]
- record_key_date: Optional[int]
- time_ctrl: Optional[int]
- type: Literal['datetime']
- use_seconds: Optional[int]
- class imednet.form_designer.models.DropdownFieldProps[source]
Bases:
BaseFieldProps- choices: List[Choice]
- lab_condition: Optional[str]
- lab_default_form: Optional[str]
- lab_default_form_type: Optional[str]
- lab_default_question: Optional[str]
- lab_normal: Optional[str]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- type: Literal['dropdown']
- class imednet.form_designer.models.Entity[source]
Bases:
BaseModelThe ‘Component’ in the Composite Pattern.
- id: str
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- props: EntityProps
- rows: Optional[List[Row]]
- class imednet.form_designer.models.ExtQuestionProps[source]
Bases:
BaseModel- ext_source: Literal['interval', 'form']
- field: Optional[int]
- form: Optional[int]
- interval_source: Optional[str]
- label: str
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- source: Optional[int]
- type: Literal['ext_question']
- class imednet.form_designer.models.FileUploadProps[source]
Bases:
BaseFieldProps- max_files: Union[str, int]
- mfs: int
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- type: Literal['upload']
- class imednet.form_designer.models.LabelProps[source]
Bases:
BaseModel- fld_id: Optional[Union[int, str]]
- label: str
- label_id: Optional[str]
- label_name: Optional[str]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- new_fld_id: Optional[Union[int, str]]
- type: Literal['label']
- imednet.form_designer.models.Layout
alias of
ProtocolDeviationFormPayload
- class imednet.form_designer.models.MemoFieldProps[source]
Bases:
BaseFieldProps- columns: Union[str, int]
- length: Union[str, int]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- rows: Union[str, int]
- type: Literal['memo']
- class imednet.form_designer.models.NumberFieldProps[source]
Bases:
BaseFieldProps- columns: Optional[Union[str, int]]
- length: Union[str, int]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- real: Optional[int]
- suffix: Optional[str]
- type: Literal['number']
- class imednet.form_designer.models.Page[source]
Bases:
BaseModelRepresents a single page within the electronic Case Report Form (CRF).
- entities: List[Entity]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class imednet.form_designer.models.PrecisionDateFieldProps[source]
Bases:
BaseFieldProps- allow_no_day: Optional[int]
- allow_no_month: Optional[int]
- allow_no_time: Optional[int]
- allow_no_year: Optional[int]
- display_text_day: Optional[str]
- display_text_month: Optional[str]
- display_text_time: Optional[str]
- display_text_year: Optional[str]
- impute_day: Optional[str]
- impute_month: Optional[int]
- impute_time: Optional[str]
- impute_year: Optional[int]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- precision_secs: Optional[int]
- precision_time: Optional[int]
- record_comp_date: Optional[int]
- record_key_date: Optional[int]
- type: Literal['precisiondate']
- class imednet.form_designer.models.ProtocolDeviationFormPayload[source]
Bases:
BaseModelRoot object representing the entire form definition payload.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- pages: List[Page]
- class imednet.form_designer.models.RadioFieldProps[source]
Bases:
BaseFieldProps- choices: List[Choice]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- radio: Optional[int]
- type: Literal['radio']
- class imednet.form_designer.models.Row[source]
Bases:
BaseModelA row in a layout table.
- cols: List[Col]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class imednet.form_designer.models.SeparatorProps[source]
Bases:
BaseModel- label: Optional[str]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- septype: int
- type: Literal['sep']
- class imednet.form_designer.models.TableProps[source]
Bases:
BaseModel- columns: int
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- type: Literal['table']
- class imednet.form_designer.models.TextFieldProps[source]
Bases:
BaseFieldProps- columns: Optional[Union[str, int]]
- length: Union[str, int]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- type: Literal['text']
imednet.form_designer.presets module
- imednet.form_designer.presets.build_cv_pathology(builder)[source]
A CV Pathology sample form.
- Return type:
None- Parameters:
builder (FormBuilder) –
- imednet.form_designer.presets.build_demo_form(builder)[source]
A demo form with various field types.
- Return type:
None- Parameters:
builder (FormBuilder) –