Przejdź do treści

Plan: Modele HR/ZZL – struktura organizacyjna (OrganizationUnit, OrganizationAssignment)

Decyzja

Zgodnie z analizą innych systemów ERP wprowadzamy dwa nowe zasoby:

  1. OrganizationUnit – jednostka organizacyjna wewnątrz przedsiębiorstwa (komórka, dział, oddział).
  2. OrganizationAssignment – przypisanie pracownika do jednostki organizacyjnej (z okresem, stopniem hierarchii).

Party i PartyRole pozostają. Pion to rodzaj jednostki organizacyjnej (jak dział) – modelowany wyłącznie przez OrganizationUnit (type/category), bez osobnego pola w OrganizationAssignment.


1. OrganizationUnit (jednostka organizacyjna)

OrganizationUnit = jednostka organizacyjna wewnątrz przedsiębiorstwa: komórka, dział, oddział, z hierarchią (partOf), okresem funkcjonowania i opcjonalnie MPK. Kierownik/zastępca jednostki = OrganizationAssignment z hierarchyLevel (np. primary-manager, deputy).

1.1 Zakres

  • Hierarchia jednostek: partOf (Reference OrganizationUnit).
  • Identyfikacja: identifier (symbol, kod), name, skrócona nazwa (w name lub attribute).
  • Okres funkcjonowania: period (0..1 Period) – od–do.
  • Ośrodek kosztów / MPK: attribute[] (np. code=MPK, valueString/valueQuantity) lub characteristic.
  • Status: status (active / inactive) z DomainResource.
  • Opcjonalnie: type lub category (np. dział, oddział, pion – jeśli pion modelowany jako podtyp jednostki).

Rozszerza DomainResource.

1.2 Zgodność z systemami ERP

System Odpowiednik
SAP (OM) Organizational Unit (O), struktura O
Oracle HCM PER_ORGANIZATION_UNITS, HR_ORGANIZATION_UNITS
Workday Organization (Cost Center, Department, etc.)
D365 HR OMFunctionalArea, OMDepartment

1.3 Struktura (propozycja pól)

Pole Kard. Typ Opis
identifier 0..* Identifier Symbol/kod jednostki
name 0..1 string Nazwa
partOf 0..1 Reference(OrganizationUnit) Jednostka nadrzędna
period 0..1 Period Okres funkcjonowania (od–do)
attribute 0..* Attribute Np. MPK (ośrodek kosztów)

(+ elementy DomainResource: id, meta, text, status, type, category, attribute.)


2. OrganizationAssignment (przypisanie do jednostki organizacyjnej)

OrganizationAssignment = przypisanie pracownika do jednostki organizacyjnej: kto (employee), do której jednostki (organizationalUnit), w jakim okresie, w jakim stopniu hierarchii (główny przełożony / zastępca); opcjonalnie powiązanie z Employment. Pion, dział, komórka = typy OrganizationUnit.

2.1 Zakres

  • employee (1..1 Reference PartyRole) – pracownik.
  • organizationalUnit (1..1 Reference OrganizationUnit) – jednostka organizacyjna (komórka, dział, pion itd.).
  • period (0..1 Period) – początek/koniec pracy w tej jednostce.
  • hierarchyLevel (0..1 CodeableConcept) – np. główny przełożony, zastępca (value set).
  • employment (0..1 Reference Employment) – opcjonalne powiązanie z zatrudnieniem.

Rozszerza DomainResource.

2.2 Zgodność z systemami ERP

System Odpowiednik
SAP (OM/PA) Assignment do Object (Org Unit), PA0001 w kontekście O
Oracle HCM Assignment do Organization
Workday Worker Assignment to Organization, Supervisory Organization

2.3 Struktura (propozycja pól)

Pole Kard. Typ Opis
employee 1..1 Reference(PartyRole) Pracownik
organizationalUnit 1..1 Reference(OrganizationUnit) Jednostka organizacyjna
period 0..1 Period Okres przypisania (praca w jednostce)
hierarchyLevel 0..1 CodeableConcept Główny przełożony / zastępca
employment 0..1 Reference(Employment) Powiązane zatrudnienie

(+ elementy DomainResource.)


3. Relacje z istniejącymi modelami

  • Party, PartyRole – bez zmian; employee to PartyRole. Kierownik jednostki = OrganizationAssignment (employee + organizationalUnit + hierarchyLevel).
  • Employment – bez nowych pól; powiązanie z komórką przez OrganizationAssignment (OrganizationAssignment.employment → Employment).
  • Position – stanowisko (slot); Employment.position → Position. OrganizationUnit to „komórka”, Position to „stanowisko”; jedno OrganizationUnit może mieć wiele Position (partOf lub rozszerzenie).
  • Group – nie używany w tym kontekście. Pion = typ OrganizationUnit (organization-unit-type).

4. Kroki wdrożenia

  1. Dokumentacja zasobów
  2. Dodać docs/Resources/HR/OrganizationUnit.md – definicja, struktura, zgodność z SAP/Oracle/Workday.
  3. Dodać docs/Resources/HR/OrganizationAssignment.md – definicja, struktura, zgodność.

  4. README HR

  5. W docs/Resources/HR/README.md dodać OrganizationUnit i OrganizationAssignment do tabeli zasobów i relacji.

  6. Code systems

  7. W docs/code-systems.md: hierarchy-level (główny przełożony, zastępca); organization-unit-type (w tym pion).

  8. Przykłady

  9. W docs/Examples: JSON OrganizationUnit (hierarchia komórek, period, MPK) oraz OrganizationAssignment (employee + organizationalUnit + period + hierarchyLevel – kierownik/zastępca).

  10. OpenAPI / schemy

  11. Dodać OrganizationUnit i OrganizationAssignment do specyfikacji kanonicznej (YAML/JSON) i skryptu generowania schematów.

  12. Nawigacja

  13. W mkdocs.yml (katalog główny repozytorium) w sekcji HR dodać linki do OrganizationUnit i OrganizationAssignment.

5. Diagram relacji

flowchart TB
  OU[OrganizationUnit\nidentifier, name, partOf, period\nattribute: MPK]
  OA[OrganizationAssignment\nemployee, organizationalUnit, period\nhierarchyLevel, employment]
  PR[PartyRole\nemployee]
  E[Employment\nemployer, employee, position]
  P[Position]

  OU -->|partOf| OU
  OA -->|employee| PR
  OA -->|organizationalUnit| OU
  OA -.->|employment| E
  E -->|position| P