Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.encoreos.io/llms.txt

Use this file to discover all available pages before exploring further.

Purpose: Comprehensive comparison of all data management features to help choose the right tool for each scenario. Last Updated: 2026-02-01
See Also: TERMINOLOGY.md for full glossary including wizards and templates.

Master Comparison Matrix

FeaturePurposeStorageScopeUse When
Picklists (PF-15)Reusable dropdown valuespf_picklists + pf_picklist_itemsOrganizationValues used across multiple forms/entities
Custom Fields (PF-16)Extend existing entity schemas{table}.custom_fields JSONBOrganization + EntityAdding metadata to existing entities
Field Configuration (PF-17)Control field behaviorpf_entity_field_configsOrganization + Entity + ContextVisibility, required rules, ordering
Object Browser (PF-23)Discover and manage objectspf_object_metadataOrganizationBrowse, categorize, favorite objects
Custom Objects (PF-24)Create new entity typespf_custom_objects + pf_custom_object_recordsOrganizationNew entities with CRUD operations
Raw Data Editor (PF-25)Browse and edit recordsCore tablesOrganizationView records, edit custom fields, export CSV
Form Builder (FW-01)Data capture interfacesfw_forms + fw_form_submissionsOrganizationOne-time data capture, workflows
Lookups (FW-15)Dynamic dropdown from tablesDatabase tablesDatabaseDropdown values from existing data
Form Wizards (FW-31)Multi-step data capturefw_forms.wizard_configOrganizationGuided form completion with steps
Module Wizards (PF-41)Business process guidancepf_wizard_templatesOrganizationOnboarding, payroll, admissions
Workflow Templates (FW-28)Reusable automationfw_workflow_templatesOrganizationShareable workflow patterns
Document Templates (PF-64)Printable PDFspf_document_templatesOrganizationPolicies, letters, reports

Feature Relationship Diagram

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        Encore Health OS Data Architecture                         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                      VALUE PROVIDERS                                 β”‚   β”‚
β”‚  β”‚                                                                      β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                   β”‚   β”‚
β”‚  β”‚  β”‚  Picklists    β”‚              β”‚   Lookups     β”‚                   β”‚   β”‚
β”‚  β”‚  β”‚   (PF-15)     β”‚              β”‚   (FW-15)     β”‚                   β”‚   β”‚
β”‚  β”‚  β”‚               β”‚              β”‚               β”‚                   β”‚   β”‚
β”‚  β”‚  β”‚ Static        β”‚              β”‚ Dynamic       β”‚                   β”‚   β”‚
β”‚  β”‚  β”‚ dropdown      β”‚              β”‚ dropdown      β”‚                   β”‚   β”‚
β”‚  β”‚  β”‚ values        β”‚              β”‚ from tables   β”‚                   β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜              β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜                   β”‚   β”‚
β”‚  β”‚          β”‚                              β”‚                            β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚             β”‚ provides options to          β”‚                                β”‚
β”‚             β–Ό                              β–Ό                                β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                      SCHEMA EXTENDERS                                β”‚   β”‚
β”‚  β”‚                                                                      β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                   β”‚   β”‚
β”‚  β”‚  β”‚ Custom Fields β”‚              β”‚ Custom Objectsβ”‚                   β”‚   β”‚
β”‚  β”‚  β”‚    (PF-16)    β”‚              β”‚    (PF-24)    β”‚                   β”‚   β”‚
β”‚  β”‚  β”‚               β”‚              β”‚               β”‚                   β”‚   β”‚
β”‚  β”‚  β”‚ Extend        β”‚              β”‚ Create new    β”‚                   β”‚   β”‚
β”‚  β”‚  β”‚ existing      β”‚              β”‚ entity types  β”‚                   β”‚   β”‚
β”‚  β”‚  β”‚ entities      β”‚              β”‚               β”‚                   β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜              β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜                   β”‚   β”‚
β”‚  β”‚          β”‚                              β”‚                            β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚             β”‚ configured by                β”‚ managed by                     β”‚
β”‚             β–Ό                              β–Ό                                β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                      BEHAVIOR CONTROLLERS                            β”‚   β”‚
β”‚  β”‚                                                                      β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                   β”‚   β”‚
β”‚  β”‚  β”‚ Field Config  β”‚              β”‚ Object Browserβ”‚                   β”‚   β”‚
β”‚  β”‚  β”‚    (PF-17)    β”‚              β”‚    (PF-23)    β”‚                   β”‚   β”‚
β”‚  β”‚  β”‚               β”‚              β”‚               β”‚                   β”‚   β”‚
β”‚  β”‚  β”‚ Visibility,   β”‚              β”‚ Discover,     β”‚                   β”‚   β”‚
β”‚  β”‚  β”‚ required,     β”‚              β”‚ categorize,   β”‚                   β”‚   β”‚
β”‚  β”‚  β”‚ ordering      β”‚              β”‚ favorite      β”‚                   β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                   β”‚   β”‚
β”‚  β”‚                                                                      β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                      DATA INTERFACES                                 β”‚   β”‚
β”‚  β”‚                                                                      β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                   β”‚   β”‚
β”‚  β”‚  β”‚ Form Builder  β”‚              β”‚ Raw Data      β”‚                   β”‚   β”‚
β”‚  β”‚  β”‚    (FW-01)    β”‚              β”‚ Editor(PF-25) β”‚                   β”‚   β”‚
β”‚  β”‚  β”‚               β”‚              β”‚               β”‚                   β”‚   β”‚
β”‚  β”‚  β”‚ Data capture  β”‚              β”‚ Browse, edit, β”‚                   β”‚   β”‚
β”‚  β”‚  β”‚ interfaces    β”‚              β”‚ export data   β”‚                   β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                   β”‚   β”‚
β”‚  β”‚                                                                      β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Master Decision Tree

I need to work with data
β”‚
β”œβ”€β–Ί I need DROPDOWN OPTIONS
β”‚   β”‚
β”‚   β”œβ”€ Used across multiple forms/entities?
β”‚   β”‚   β”œβ”€ Yes β†’ From database table?
β”‚   β”‚   β”‚   β”œβ”€ Yes β†’ Use Lookups (FW-15)
β”‚   β”‚   β”‚   └─ No  β†’ Organization-specific?
β”‚   β”‚   β”‚       β”œβ”€ Yes β†’ Use Picklists (PF-15)
β”‚   β”‚   β”‚       └─ No  β†’ Use TypeScript Enum
β”‚   β”‚   └─ No β†’ Use Form Options (FW-01)
β”‚   β”‚
β”œβ”€β–Ί I need to ADD A FIELD
β”‚   β”‚
β”‚   β”œβ”€ To existing entity?
β”‚   β”‚   β”œβ”€ Yes β†’ Organization-specific metadata?
β”‚   β”‚   β”‚   β”œβ”€ Yes β†’ Frequently queried?
β”‚   β”‚   β”‚   β”‚   β”œβ”€ Yes β†’ Use proper DB column
β”‚   β”‚   β”‚   β”‚   └─ No  β†’ Use Custom Fields (PF-16)
β”‚   β”‚   β”‚   └─ No β†’ Use proper DB column
β”‚   β”‚   └─ No β†’ Creating form?
β”‚   β”‚       β”œβ”€ Yes β†’ Use Form Builder (FW-01)
β”‚   β”‚       └─ No  β†’ Use Custom Objects (PF-24)
β”‚   β”‚
β”œβ”€β–Ί I need to CONTROL A FIELD
β”‚   β”‚
β”‚   β”œβ”€ Control visibility by role?
β”‚   β”‚   └─ Yes β†’ Use Field Configuration (PF-17)
β”‚   β”œβ”€ Make field conditionally required?
β”‚   β”‚   └─ Yes β†’ Use Field Configuration (PF-17)
β”‚   β”œβ”€ Change field order in forms?
β”‚   β”‚   └─ Yes β†’ Use Field Configuration (PF-17)
β”‚   └─ Create form layout?
β”‚       └─ Yes β†’ Use Form Builder (FW-01)
β”‚   β”‚
β”œβ”€β–Ί I need to CREATE NEW ENTITY
β”‚   β”‚
β”‚   β”œβ”€ Track multiple records over time?
β”‚   β”‚   β”œβ”€ Yes β†’ Need CRUD operations?
β”‚   β”‚   β”‚   β”œβ”€ Yes β†’ Use Custom Objects (PF-24)
β”‚   β”‚   β”‚   └─ No  β†’ Use Forms (FW-01)
β”‚   β”‚   └─ No β†’ One-time data capture?
β”‚   β”‚       └─ Yes β†’ Use Forms (FW-01)
β”‚   β”‚
β”œβ”€β–Ί I need to BROWSE/MANAGE DATA
β”‚   β”‚
β”‚   β”œβ”€ Discover available objects?
β”‚   β”‚   └─ Yes β†’ Use Object Browser (PF-23)
β”‚   β”œβ”€ View/edit records?
β”‚   β”‚   └─ Yes β†’ Use Raw Data Editor (PF-25)
β”‚   └─ Export to CSV?
β”‚       └─ Yes β†’ Use Raw Data Editor (PF-25)
β”‚   β”‚
└─► I need to CAPTURE DATA
    β”‚
    β”œβ”€ One-time submission?
    β”‚   └─ Yes β†’ Use Form Builder (FW-01)
    β”œβ”€ With workflow?
    β”‚   └─ Yes β†’ Use Form Builder (FW-01)
    └─ Directly into entity?
        └─ Use module-specific forms or Raw Data Editor

Detailed Feature Comparisons

Picklists vs Lookups vs Form Options

AspectPicklists (PF-15)Lookups (FW-15)Form Options (FW-01)
Data Sourcepf_picklist_itemsDatabase tablesForm definition
ScopeOrganizationDatabase/RLSSingle form
ManagementSettings UIAutomaticForm Builder
Reusableβœ… Yesβœ… Yes❌ No
Dynamic❌ Staticβœ… Real-time❌ Static
ExampleEmployment statusDepartments listYes/No question

Custom Fields vs Custom Objects

AspectCustom Fields (PF-16)Custom Objects (PF-24)
PurposeExtend existing entityCreate new entity
StorageJSONB column on entitySeparate table
Records1:1 with entityIndependent records
CRUDVia entityFull CRUD
ExampleBadge number on employeeClinical licenses

Forms vs Custom Objects

AspectForms (FW-01)Custom Objects (PF-24)
PurposeData captureEntity management
Data ModelForm β†’ SubmissionsObject β†’ Records
LifecycleSubmit onceCRUD operations
Workflowβœ… Built-in❌ Manual
ExampleIntake formLicense tracking

Field Configuration vs Form Builder

AspectField Configuration (PF-17)Form Builder (FW-01)
PurposeControl field behaviorBuild data capture forms
ScopeEntity fieldsForm-specific fields
VisibilityRole-basedEveryone
RequiredContext-basedFixed
ExampleHide salary from staffCreate intake form

Common Scenarios Quick Reference

”I need a dropdown for employment status”

β†’ Picklist (PF-15) - Reusable across forms/entities

”I need a dropdown of departments”

β†’ Lookup (FW-15) - Dynamic from hr_departments table

”I need Yes/No in this form only”

β†’ Form Options (FW-01) - Form-specific static options

”I need to add badge number to employees”

β†’ Custom Fields (PF-16) - Extend hr_employees

”I need to track clinical licenses”

β†’ Custom Objects (PF-24) - New entity type

”I need to hide salary from non-admins”

β†’ Field Configuration (PF-17) - Role-based visibility

”I need to create an intake form”

β†’ Form Builder (FW-01) - Data capture with workflow

”I need to see all employees and export to CSV”

β†’ Raw Data Editor (PF-25) - Browse and export

”I need to find what objects exist”

β†’ Object Browser (PF-23) - Discover and categorize

Wizard Comparison

Form Wizard vs Module Wizard

AspectForm Wizard (FW-31)Module Wizard (PF-41)
PurposeMulti-step data captureBusiness process guidance
Data Storagefw_form_submissionsModule-specific tables
Step TypesForm fields onlyForm, Custom, Review
CustomizationField configurationFull step customization
Use CaseSurveys, intake formsOnboarding, payroll

When to Use Each Wizard

Use Form Wizard (FW-31) when:
  • You have a multi-page form that needs guided progression
  • Data should go to form submissions table
  • All steps are form fields (no custom components)
  • Example: Resident intake, satisfaction survey
Use Module Wizard (PF-41) when:
  • You’re building a business process (onboarding, payroll)
  • Data should go to module-specific tables
  • Steps need custom React components
  • Organizations need to customize the wizard flow
  • Example: Employee onboarding, resident admission

Template Comparison

Template Types

Template TypeSpecPurposeStorageUse Case
Workflow TemplatesFW-28Automation patternsfw_workflow_templatesReusable workflows
Document TemplatesPF-64Printable PDFspf_document_templatesPolicies, letters
Form TemplatesFW-01Clonable formsfw_formsForm patterns
Wizard TemplatesPF-41Business wizardspf_wizard_templatesOnboarding wizards
Spec Templates-Documentationspecs/_templates/Writing specs

When to Use Each Template Type

I need a reusable template for:
β”‚
β”œβ”€ Automating workflows?
β”‚   └─ Workflow Template (FW-28)
β”‚
β”œβ”€ Generating printable documents?
β”‚   └─ Document Template (PF-64)
β”‚
β”œβ”€ Creating reusable form structures?
β”‚   └─ Form Template (FW-01)
β”‚
β”œβ”€ Business process wizards?
β”‚   └─ Wizard Template (PF-41)
β”‚
└─ Writing specifications?
    └─ Spec Template (specs/_templates/)

Anti-Patterns to Avoid

❌ Using Picklists for Database Table Data

Problem: Creating picklist for departments when hr_departments exists
Solution: Use Lookups (FW-15)

❌ Using Custom Objects for Entity Extension

Problem: Creating custom object to add badge number to employees
Solution: Use Custom Fields (PF-16)

❌ Using Custom Objects for Forms

Problem: Creating custom object for intake form
Solution: Use Form Builder (FW-01)

❌ Using Custom Fields for New Entities

Problem: Adding β€œlicense_number” custom field when you need license tracking
Solution: Use Custom Objects (PF-24)

❌ Using Form Builder for Entity Extension

Problem: Creating form to capture employee badge number
Solution: Use Custom Fields (PF-16) + entity form

❌ Using Field Configuration to Add Fields

Problem: Trying to add new field via field configuration
Solution: Use Custom Fields (PF-16) first, then configure

❌ Using Form Wizard for Business Processes

Problem: Using FW-31 form wizard for employee onboarding
Solution: Use Module Wizard (PF-41) - data needs to go to HR tables

❌ Using Module Wizard for Data Capture

Problem: Using PF-41 wizard for a survey or intake form
Solution: Use Form Wizard (FW-31) - simpler, data goes to form submissions

❌ Using Workflow Template for Documents

Problem: Creating workflow template to generate PDF letters
Solution: Use Document Template (PF-64) for printable documents

❌ Using Document Template for Automation

Problem: Trying to automate approval flow with document template
Solution: Use Workflow Template (FW-28) for automation patterns

Integration Patterns

Pattern 1: Picklist β†’ Custom Field β†’ Field Config

1. Create Picklist (PF-15): employee_shirt_sizes
2. Create Custom Field (PF-16): shirt_size β†’ uses picklist
3. Configure Visibility (PF-17): visible to HR only

Pattern 2: Custom Object β†’ Form Reference

1. Create Custom Object (PF-24): Clinical Licenses
2. Create Form (FW-01): License Renewal Form
3. Add Lookup Field (FW-15): β†’ pf_custom_object_records

Pattern 3: Custom Fields β†’ Raw Data Export

1. Create Custom Fields (PF-16): badge_number, shirt_size
2. Browse in Raw Data Editor (PF-25)
3. Export to CSV with all fields

Use Case Guides

Terminology & Analysis

Specifications


Last Updated: 2026-02-01