Claim contacts and beneficiaries retrieval¶
This operation retrieves the set of people associated with a claim — role-based contacts (adjuster, supervisor, EAIP specialist, RTW consultant, safety consultant, vocational coordinator, attending physicians, worker representatives, beneficiaries) — from the claim contacts API, and maps beneficiary-type contacts into clsClaimPersonView objects for claim-view consumers.
| Field | Value |
|---|---|
| Operation ID | OP-VC-05 |
| Trigger | Caller reads clsClaimData.Beneficiaries (which calls RetrieveBeneficiaries()), or directly calls clsClaimPersonViewCollection.GetClaimPersons/GetBeneficiaries, or ClaimContactsCollection.GetData |
| Inputs | Claim number (for ClaimContactsCollection); claim ID plus a ContactTypes value (for clsClaimPersonViewCollection); optionally a pre-fetched ClaimContacts payload |
| Outputs | ClaimContacts (grouped role contacts) or clsClaimPersonViewCollection of clsClaimPersonView (currently beneficiaries only) |
| Primary components | ClaimContactsCollection.GetData, clsClaimPersonViewCollection.BeforeRetrieve/AfterRetrieve, clsClaimPersonView.Load |
| Entry point | Business\SAIF.Business.View.Claim\CCClaimDataApi\Contact\ClaimContactsCollection.vb, Business\SAIF.Business.View.Claim\clsClaimPersonViewCollection.vb, Business\SAIF.Business.View.Claim\clsClaimPersonView.vb |
Steps¶
- Retrieve raw claim contacts.
ClaimContactsCollection.GetData(dataPortalInfo, claimNumber)builds a request against routev1/{controller}/Claim/Contacts/ClaimNumber/{claimNumber}(client keyCCClaimDataApi, controllerGeneralClaimData) and returns the.ClaimContactspayload from the first result. - Select the contact-type route.
clsClaimPersonViewCollection.BeforeRetrievecurrently only implements retrieval forContactTypes.BENEFICIARY. - If a different contact type is requested and no
ClaimContactswas pre-supplied:BeforeRetrievethrows"The operation is not implemented". - Fetch or reuse contacts. If the criteria's
ClaimContactsis not already populated, the collection calls the claim contacts API for the claim; if it was pre-supplied by the caller, that payload is reused instead of issuing another API call. - Map contacts to person views.
AfterRetrievereadsResponseData(Of ClaimContacts)and maps each relevantContactrow (e.g. eachBeneficiary.Beneficiaryentry) into aclsClaimPersonViewviaLoad(contact, contactType). - Resolve the person identifier.
clsClaimPersonView.LoadresolvesPersonIDfrom the contact's provider location sequence number when nonzero, otherwise from a numericPublicID(BR-007). - On failure: if neither identifier is usable,
Loadthrows"Unexpected public ID...". - Map relationship and demographic fields.
LoadderivesRelationshipfromRelationshipToWorkerCodevia a case mapping, mapsTypefromContactTypes, and extracts a birth-certificate-received date from the contact's certificate list when present. - Return the collection. The populated
clsClaimPersonViewCollectionis returned to the caller (e.g. exposed asclsClaimData.Beneficiaries).
Process flow¶
The following diagram visualizes this operation's control flow.
flowchart TD
Start([Caller requests contacts or beneficiaries]) --> Which{Raw contacts or<br>person-view collection?}
Which -->|Raw contacts| CallContacts[ClaimContactsCollection.GetData]
CallContacts --> ReturnContacts([Return ClaimContacts])
Which -->|Person views| Type{Contact type is BENEFICIARY?}
Type -->|No, and no contacts supplied| NotImpl([Throw: operation not implemented])
Type -->|Yes, or contacts supplied| HaveContacts{ClaimContacts already supplied?}
HaveContacts -->|No| FetchApi[Call claim contacts API]
HaveContacts -->|Yes| UseSupplied[Reuse supplied ClaimContacts]
FetchApi --> MapPersons[Map each Contact to clsClaimPersonView]
UseSupplied --> MapPersons
MapPersons --> ResolveId{PersonID resolvable?}
ResolveId -->|No| IdError([Throw: unexpected public ID])
ResolveId -->|Yes| Done([Return clsClaimPersonViewCollection])
Failure and edge-case behavior¶
- Requesting any contact type other than
BENEFICIARYwithout pre-supplyingClaimContactsthrows"The operation is not implemented", so callers needing other role contacts must useClaimContactsCollection.GetDatadirectly instead. - A contact row lacking both a provider location sequence number and a numeric public ID causes the entire retrieval to fail with an unhandled identifier error, rather than skipping the unusable row.
GetContacts(...)returns an empty list for aNothinginput rather than throwing, so a missing contact group (e.g. no beneficiaries on the claim) resolves to zero rows.*
Related documentation¶
Note: Statements marked with
*were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts.
Sources¶
Business\SAIF.Business.View.Claim\CCClaimDataApi\Contact\ClaimContactsCollection.vbBusiness\SAIF.Business.View.Claim\CCClaimDataApi\Contact\Dto\ClaimContacts.vbBusiness\SAIF.Business.View.Claim\CCClaimDataApi\Contact\Dto\Contact.vbBusiness\SAIF.Business.View.Claim\clsClaimPersonView.vbBusiness\SAIF.Business.View.Claim\clsClaimPersonViewCollection.vbBusiness\SAIF.Business.View.Claim\clsClaimData.vb