imednet.form_designer package

iMednet Form Designer integration.

This package provides tools for programmatically building and publishing iMednet form layouts.

class imednet.form_designer.FormBuilder[source]

Bases: object

Builder class to construct iMedNet Form Designer payloads programmatically.

Manages ID generation and hierarchical structure.

__init__()[source]

Initialize a new FormBuilder instance.

Return type:

None

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_page()[source]

Add a new page to the form.

Return type:

None

add_section_header(label)[source]

Add a separator/section header.

Return type:

None

Parameters:

label (str) –

build()[source]

Return the final layout.

Return type:

ProtocolDeviationFormPayload

property current_page: Page

Return the current (last) page being built.

Returns:

The current page instance.

Return type:

Page

class imednet.form_designer.FormDesignerClient[source]

Bases: object

Client 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

Builder for iMednet Form Designer layouts.

This module provides a programmatic interface for constructing complex form layouts for iMednet, handling ID generation and hierarchical structure.

class imednet.form_designer.builder.FormBuilder[source]

Bases: object

Builder class to construct iMedNet Form Designer payloads programmatically.

Manages ID generation and hierarchical structure.

__init__()[source]

Initialize a new FormBuilder instance.

Return type:

None

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_page()[source]

Add a new page to the form.

Return type:

None

add_section_header(label)[source]

Add a separator/section header.

Return type:

None

Parameters:

label (str) –

build()[source]

Return the final layout.

Return type:

ProtocolDeviationFormPayload

property current_page: Page

Return the current (last) page being built.

Returns:

The current page instance.

Return type:

Page

imednet.form_designer.client module

HTTP client for interacting with the iMednet Form Designer backend.

class imednet.form_designer.client.FormDesignerClient[source]

Bases: object

Client 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

Pydantic models for iMednet Form Designer layouts.

class imednet.form_designer.models.BaseFieldProps[source]

Bases: BaseModel

Shared properties for all data capture fields.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class imednet.form_designer.models.CheckboxFieldProps[source]

Bases: BaseFieldProps

Properties for a checkbox field.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class imednet.form_designer.models.Choice[source]

Bases: BaseModel

A choice for radio or dropdown fields.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class imednet.form_designer.models.Col[source]

Bases: BaseModel

A column in a layout table row.

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

Properties for a date/time input field.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class imednet.form_designer.models.DropdownFieldProps[source]

Bases: BaseFieldProps

Properties for a dropdown/select field.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class imednet.form_designer.models.Entity[source]

Bases: BaseModel

The ‘Component’ in the Composite Pattern.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class imednet.form_designer.models.ExtQuestionProps[source]

Bases: BaseModel

Properties for an external question component.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class imednet.form_designer.models.FileUploadProps[source]

Bases: BaseFieldProps

Properties for a file upload field.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class imednet.form_designer.models.LabelProps[source]

Bases: BaseModel

Properties for a label component.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

imednet.form_designer.models.Layout

alias of ProtocolDeviationFormPayload

class imednet.form_designer.models.MemoFieldProps[source]

Bases: BaseFieldProps

Properties for a memo/multiline text field.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class imednet.form_designer.models.NumberFieldProps[source]

Bases: BaseFieldProps

Properties for a number input field.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class imednet.form_designer.models.Page[source]

Bases: BaseModel

Represents a single page within the electronic Case Report Form (CRF).

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

Properties for a precision date input field (supporting partial dates).

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class imednet.form_designer.models.ProtocolDeviationFormPayload[source]

Bases: BaseModel

Root 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].

class imednet.form_designer.models.RadioFieldProps[source]

Bases: BaseFieldProps

Properties for a radio button field.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class imednet.form_designer.models.Row[source]

Bases: BaseModel

A row in a layout table.

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

Properties for a separator/section header component.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class imednet.form_designer.models.TableProps[source]

Bases: BaseModel

Properties for a table layout component.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class imednet.form_designer.models.TextFieldProps[source]

Bases: BaseFieldProps

Properties for a text input field.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

imednet.form_designer.presets module

Standard form layout presets for the Form Designer.

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) –