Worker¶
Worker wraps a ClaimPerson entity and is the injured-worker read model Claim.Worker, BillAssignment, and PatientIndexer rely on for name, phone, address, and claim-count data. It resolves the worker's mailing address by preference order (mailing, then home, then primary) and formats phone numbers with a sensible extension fallback, providing the consistent worker-identity shape consumed across bill assignment, patient indexing, and CBP generation (OP-DOM-01, OP-DOM-02, OP-DOM-06).
Purpose¶
- Resolves a worker's preferred mailing address by trying mailing, then home, then primary address types in order, returning the first one with a non-blank line 1 (OP-DOM-06 worker-data assembly).
- Builds a consistently formatted
PersonNamefrom either aClaimPersonor a GuidewireBulkClaimClaimant, used by claim navigation links and CBP worker-name generation (DOM-BR-054). - Formats home/message phone numbers with a phone-type tag and computes the worker's current age from their birth date.
Context¶
- Namespace:
SAIF.Domain.Model.Claims - Assembly/package:
SAIF.Domain(packaged inSAIF.SAIFCode.Core)
Public members¶
| Member | Signature | Purpose |
|---|---|---|
| Worker (constructor by id) | public Worker(IRepositoryFactory factory, IWorkerQueryProvider queryProvider, long workerId) |
Loads the worker by workerId, guarding that queryProvider and factory are non-null. |
| Worker (constructor from entity) | public Worker(IRepositoryFactory factory, IWorkerQueryProvider workerQueryProvider, ClaimPerson person) |
Wraps an already-loaded ClaimPerson entity. |
| Data | public ClaimPerson Data { get; } |
Exposes the underlying ClaimPerson entity. |
| WorkerName | public PersonName WorkerName { get; } |
The worker's name, built via BuildWorkerName(DataItem). |
| HomePhone | public PhoneNumber HomePhone { get; } |
The worker's home phone tagged with phone type "H"/"Home"; null when there is no home phone number. |
| MessagePhone | public PhoneNumber MessagePhone { get; } |
The worker's message phone tagged with phone type "M"/"Message"; null when there is no message phone number. |
| ClaimCount | public int ClaimCount { get; } |
The number of claims associated with the worker's person ID, from IWorkerQueryProvider.GetClaimCount. |
| BuildWorkerName (from ClaimPerson) | public static PersonName BuildWorkerName(ClaimPerson person) |
Builds a PersonName from a ClaimPerson's first/last/middle/suffix name fields. |
| BuildWorkerName (from BulkClaimClaimant) | public static PersonName BuildWorkerName(BulkClaimClaimant person) |
Builds a PersonName from a Guidewire BulkClaimClaimant's first/last/middle name fields, with an empty suffix. |
| GetWorkerAddress (no args) | public ClaimPersonAddress GetWorkerAddress() |
Resolves the worker's preferred address from DataItem.Addresses; null when the worker has no addresses. |
| GetWorkerAddress (from list) | public ClaimPersonAddress GetWorkerAddress(IEnumerable<ClaimPersonAddress> addressList) |
Picks the first non-blank mailing address, else home address, else primary address (in that preference order) from addressList, ordered by most recent update first; null when none of the three types has a non-blank line 1. |
| WorkerAddress | public Address WorkerAddress() |
The worker's preferred address (via GetWorkerAddress()), mapped to the Address contract by BuildWorkerAddress. |
| MapWorkerAddress | public Address MapWorkerAddress(ClaimPersonAddress addr) |
Maps a ClaimPersonAddress to the Address contract via AutoMapper; null when addr is null. |
| BuildWorkerAddress | public static Address BuildWorkerAddress(ClaimPersonAddress addr) |
Builds an Address contract from addr field-by-field, formatting a zero zip code as empty and setting the country code to "US" unless the address is foreign; an empty Address when addr is null. |
| GetPreferredContactCode | public string GetPreferredContactCode() |
The description of the worker's preferred contact method; empty when the worker has no data. |
| WorkerAge | public string WorkerAge { get; } |
The worker's current age in years, computed from their birth date and adjusted for whether their birthday has occurred yet this year; empty when there is no birth date. |
Inherited public members¶
Members in this section are inherited from DomainBase<TItem> in SAIF.Domain. They are available on this type through inheritance (via the intermediate DomainRepositoryBase<TItem> base).
| Member | Signature | Purpose | Origin |
|---|---|---|---|
| HasData | public virtual bool HasData { get; } |
Reports whether the wrapped ClaimPerson entity is present, evaluated as !DataItem.IsNull(). |
SAIF.Domain — DomainBase<TItem> |
Behavioral notes¶
- The static constructor calls
ClaimsMappingHelper.MapForWorker(), registering the address AutoMapper mapsMapWorkerAddressrelies on, once per process the first time aWorkeris constructed. GetWorkerAddress(addressList)orders candidates byUpdateDatedescending before applying the mailing/home/primary preference, so among multiple addresses of the preferred type the most recently updated one wins*.MapWorkerAddressandBuildWorkerAddressoverlap in purpose — one uses AutoMapper, the other builds the contract manually — and both are present in the type's public surface*.
Constraints and usage notes¶
GetWorkerAddress(addressList)is marked as not requiring a static implementation despite having no instance-state dependency (aCA1822suppression is present in source), so it remains an instance method by design rather than static*.
Note: Statements marked with
*were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts.
Sources¶
Domain/SAIF.Domain/Model/Claims/Worker.csDomain/SAIF.Domain/Model/Claims/ClaimsMappingHelper.csDomain/SAIF.Domain/DomainBase.csDomain/SAIF.Domain/DomainRepositoryBase.cs