graph LR
    %% Virtual Model
    VS[VirtualSpecialist]
    
    %% Virtual Fields
    VS --> specialist_id[specialist_id]
    VS --> specialist_name[specialist_name]
    VS --> user_id[user_id]
    VS --> birthday[birthday<br/>nullable]
    VS --> speciality[speciality<br/>nullable]
    VS --> city[city<br/>nullable]
    VS --> state[state<br/>nullable]
    
    %% OMOP Tables
    PROV[Provider]
    LOC[Location]
    
    %% Mappings to Provider
    specialist_id --> |provider_id<br/>KEY| PROV
    specialist_name --> |provider_name| PROV
    user_id --> |provider_user_id| PROV
    birthday --> |provider_birthday| PROV
    speciality --> |specialty_string| PROV
    
    %% Mappings to Location
    specialist_id --> |location_id<br/>KEY| LOC
    city --> |city| LOC
    state --> |state| LOC
    
    %% Styling
    classDef virtualModel fill:#e1f5ff,stroke:#01579b,stroke-width:3px
    classDef virtualField fill:#fff9c4,stroke:#f57f17,stroke-width:2px
    classDef virtualFieldNull fill:#fff9c4,stroke:#f57f17,stroke-width:2px,stroke-dasharray: 3 3
    classDef omopTable fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
    
    class VS virtualModel
    class specialist_id,specialist_name,user_id virtualField
    class birthday,speciality,city,state virtualFieldNull
    class PROV,LOC omopTable