Przykład: Struktura organizacyjna (zarząd → wydziały → zakłady → sekcje)
Przykład modeluje pełną hierarchię organizacyjną: zarząd → wydziały → zakłady → sekcje. Kierownik, zastępca i dyrektorzy są wyłącznie w OrganizationAssignment przez pole hierarchyLevel (np. primary-manager, deputy, main-director, technical-director). OrganizationUnit nie ma pola manager – kto kieruje jednostką wynika z przypisań z odpowiednim hierarchyLevel.
Użyte modele: Party, PartyRole, OrganizationUnit, OrganizationAssignment, Employment, Position. System kodów: https://api-erp.kamsoft.pl/ns/.
1. Hierarchia jednostek (schemat)
Zarząd (board)
├── Wydział Produkcji (department)
│ ├── Dyrektor główny: Anna Nowak (OrganizationAssignment, hierarchyLevel=main-director)
│ ├── Dyrektor techniczny: Michał Nowicki (OrganizationAssignment, hierarchyLevel=technical-director)
│ └── Zakład 1 (plant), kierownik: Maria Wiśniewska (OrganizationAssignment, hierarchyLevel=primary-manager)
│ ├── Sekcja A (section), kierownik: Tomasz Lewandowski (OrganizationAssignment, hierarchyLevel=primary-manager)
│ └── Sekcja B (section), kierownik: Katarzyna Dąbrowska (OrganizationAssignment, hierarchyLevel=primary-manager)
└── Wydział Sprzedaży (department)
└── Zakład 2 (plant), kierownik: Jan Zieliński (OrganizationAssignment, hierarchyLevel=primary-manager)
2. Pracodawca (Party + PartyRole)
Firma „Produkt Plus” – pracodawca (Party typu organization, PartyRole role=employer).
{
"resourceType": "Party",
"id": "party-firma",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"identifier": [
{ "system": "urn:pl:nip", "value": "1234567890" },
{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "FIRMA-01" }
],
"name": "Produkt Plus Sp. z o.o.",
"type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/party-type", "code": "organization", "display": "Organizacja" }] },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}
{
"resourceType": "PartyRole",
"id": "role-firma-employer",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"party": { "reference": "Party/party-firma", "display": "Produkt Plus Sp. z o.o." },
"role": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/party-role", "code": "employer", "display": "Pracodawca" }] },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}
3. Pracownicy (Party + PartyRole employee)
Sześciu pracowników: Anna Nowak, Michał Nowicki, Maria Wiśniewska, Tomasz Lewandowski, Katarzyna Dąbrowska, Jan Zieliński.
{
"resourceType": "Party",
"id": "party-anna-nowak",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "PRAC-001" }],
"name": "Anna Nowak",
"type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/party-type", "code": "person", "display": "Osoba" }] },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}
{
"resourceType": "PartyRole",
"id": "role-anna-nowak-employee",
"party": { "reference": "Party/party-anna-nowak", "display": "Anna Nowak" },
"role": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/party-role", "code": "employee", "display": "Pracownik" }] },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}
Analogicznie definiuje się Party i PartyRole (role=employee) dla: Michał Nowicki (PRAC-002), Maria Wiśniewska (PRAC-003), Tomasz Lewandowski (PRAC-004), Katarzyna Dąbrowska (PRAC-005), Jan Zieliński (PRAC-006). Identyfikatory PartyRole: role-michal-nowicki-employee, role-maria-wisniewska-employee, role-tomasz-lewandowski-employee, role-katarzyna-dabrowska-employee, role-jan-zielinski-employee.
4. Zatrudnienia (Employment)
Każdy pracownik ma jedno Employment (pracodawca = Produkt Plus, pracownik = odpowiedni PartyRole). Dla zwięzłości poniżej dwa warianty: umowa o pracę i umowa zlecenie.
Anna Nowak (dyrektor główny wydziału):
{
"resourceType": "Employment",
"id": "emp-anna-nowak",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"employer": { "reference": "PartyRole/role-firma-employer", "display": "Produkt Plus Sp. z o.o." },
"employee": { "reference": "PartyRole/role-anna-nowak-employee", "display": "Anna Nowak" },
"identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "EMP-001" }],
"period": { "start": "2018-01-15" },
"type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/employment-type", "code": "employment-contract", "display": "Umowa o pracę" }] },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}
Jan Zieliński (pracownik sekcji, umowa zlecenie):
{
"resourceType": "Employment",
"id": "emp-jan-zielinski",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"employer": { "reference": "PartyRole/role-firma-employer", "display": "Produkt Plus Sp. z o.o." },
"employee": { "reference": "PartyRole/role-jan-zielinski-employee", "display": "Jan Zieliński" },
"identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "EMP-006" }],
"period": { "start": "2024-06-01" },
"type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/employment-type", "code": "contract-of-mandate", "display": "Umowa zlecenie" }] },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}
Pozostałe Employment (Michał, Maria, Tomasz, Katarzyna) – ta sama struktura, employer = role-firma-employer, employee = odpowiedni role-*-employee, period.start zgodny z datą wejścia.
5. Jednostki organizacyjne (OrganizationUnit)
Zarząd (szczebel najwyższy, bez partOf):
{
"resourceType": "OrganizationUnit",
"id": "ou-zarzad",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "ZARZAD" }],
"name": "Zarząd",
"type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/organization-unit-type", "code": "board", "display": "Zarząd" }] },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}
Wydział Produkcji (partOf = Zarząd). Dyrektor główny ustawiony w manager; dyrektor techniczny tylko w OrganizationAssignment.
{
"resourceType": "OrganizationUnit",
"id": "ou-wydzial-produkcji",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "WYD-PROD" }],
"name": "Wydział Produkcji",
"type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/organization-unit-type", "code": "department", "display": "Wydział" }] },
"partOf": { "reference": "OrganizationUnit/ou-zarzad", "display": "Zarząd" },
"period": { "start": "2020-01-01" },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}
Wydział Sprzedaży (partOf = Zarząd):
{
"resourceType": "OrganizationUnit",
"id": "ou-wydzial-sprzedazy",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "WYD-SPRZ" }],
"name": "Wydział Sprzedaży",
"type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/organization-unit-type", "code": "department", "display": "Wydział" }] },
"partOf": { "reference": "OrganizationUnit/ou-zarzad", "display": "Zarząd" },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}
Zakład 1 (w Wydziale Produkcji, kierownik = Maria Wiśniewska):
{
"resourceType": "OrganizationUnit",
"id": "ou-zaklad-1",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "ZAK-1" }],
"name": "Zakład 1",
"type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/organization-unit-type", "code": "plant", "display": "Zakład" }] },
"partOf": { "reference": "OrganizationUnit/ou-wydzial-produkcji", "display": "Wydział Produkcji" },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}
Zakład 2 (w Wydziale Sprzedaży, kierownik = Jan Zieliński):
{
"resourceType": "OrganizationUnit",
"id": "ou-zaklad-2",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "ZAK-2" }],
"name": "Zakład 2",
"type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/organization-unit-type", "code": "plant", "display": "Zakład" }] },
"partOf": { "reference": "OrganizationUnit/ou-wydzial-sprzedazy", "display": "Wydział Sprzedaży" },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}
Sekcja A (w Zakładzie 1, kierownik = Tomasz Lewandowski):
{
"resourceType": "OrganizationUnit",
"id": "ou-sekcja-a",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "SEKC-A" }],
"name": "Sekcja A",
"type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/organization-unit-type", "code": "section", "display": "Sekcja" }] },
"partOf": { "reference": "OrganizationUnit/ou-zaklad-1", "display": "Zakład 1" },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}
Sekcja B (w Zakładzie 1, kierownik = Katarzyna Dąbrowska):
{
"resourceType": "OrganizationUnit",
"id": "ou-sekcja-b",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "SEKC-B" }],
"name": "Sekcja B",
"type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/organization-unit-type", "code": "section", "display": "Sekcja" }] },
"partOf": { "reference": "OrganizationUnit/ou-zaklad-1", "display": "Zakład 1" },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}
6. Przypisania do jednostek (OrganizationAssignment)
Przypisania łączą pracowników z jednostkami. Kierownik, zastępca i dyrektorzy są wyłącznie w OrganizationAssignment przez hierarchyLevel (primary-manager, deputy, main-director, technical-director).
Anna Nowak – dyrektor główny Wydziału Produkcji:
{
"resourceType": "OrganizationAssignment",
"id": "oa-anna-wydzial",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"employee": { "reference": "PartyRole/role-anna-nowak-employee", "display": "Anna Nowak" },
"organizationalUnit": { "reference": "OrganizationUnit/ou-wydzial-produkcji", "display": "Wydział Produkcji" },
"period": { "start": "2019-03-01" },
"hierarchyLevel": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/hierarchy-level", "code": "main-director", "display": "Dyrektor główny" }] },
"employment": { "reference": "Employment/emp-anna-nowak", "display": "Anna Nowak – Produkt Plus" },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}
Michał Nowicki – dyrektor techniczny Wydziału Produkcji:
{
"resourceType": "OrganizationAssignment",
"id": "oa-michal-wydzial",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"employee": { "reference": "PartyRole/role-michal-nowicki-employee", "display": "Michał Nowicki" },
"organizationalUnit": { "reference": "OrganizationUnit/ou-wydzial-produkcji", "display": "Wydział Produkcji" },
"period": { "start": "2020-06-01" },
"hierarchyLevel": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/hierarchy-level", "code": "technical-director", "display": "Dyrektor techniczny" }] },
"employment": { "reference": "Employment/emp-michal-nowicki", "display": "Michał Nowicki – Produkt Plus" },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}
Maria Wiśniewska – kierownik Zakładu 1 (hierarchyLevel=primary-manager):
{
"resourceType": "OrganizationAssignment",
"id": "oa-maria-zaklad1",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"employee": { "reference": "PartyRole/role-maria-wisniewska-employee", "display": "Maria Wiśniewska" },
"organizationalUnit": { "reference": "OrganizationUnit/ou-zaklad-1", "display": "Zakład 1" },
"period": { "start": "2021-01-01" },
"hierarchyLevel": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/hierarchy-level", "code": "primary-manager", "display": "Główny przełożony (kierownik zakładu)" }] },
"employment": { "reference": "Employment/emp-maria-wisniewska", "display": "Maria Wiśniewska – Produkt Plus" },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}
Tomasz Lewandowski – kierownik Sekcji A:
{
"resourceType": "OrganizationAssignment",
"id": "oa-tomasz-sekcja-a",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"employee": { "reference": "PartyRole/role-tomasz-lewandowski-employee", "display": "Tomasz Lewandowski" },
"organizationalUnit": { "reference": "OrganizationUnit/ou-sekcja-a", "display": "Sekcja A" },
"period": { "start": "2022-04-01" },
"hierarchyLevel": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/hierarchy-level", "code": "primary-manager", "display": "Kierownik sekcji" }] },
"employment": { "reference": "Employment/emp-tomasz-lewandowski", "display": "Tomasz Lewandowski – Produkt Plus" },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}
Katarzyna Dąbrowska – kierownik Sekcji B:
{
"resourceType": "OrganizationAssignment",
"id": "oa-katarzyna-sekcja-b",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"employee": { "reference": "PartyRole/role-katarzyna-dabrowska-employee", "display": "Katarzyna Dąbrowska" },
"organizationalUnit": { "reference": "OrganizationUnit/ou-sekcja-b", "display": "Sekcja B" },
"period": { "start": "2022-09-01" },
"hierarchyLevel": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/hierarchy-level", "code": "primary-manager", "display": "Kierownik sekcji" }] },
"employment": { "reference": "Employment/emp-katarzyna-dabrowska", "display": "Katarzyna Dąbrowska – Produkt Plus" },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}
Jan Zieliński – pracownik Sekcji A (bez funkcji kierowniczej w tej jednostce; równolegle kierownik Zakładu 2 w innym wydziale):
{
"resourceType": "OrganizationAssignment",
"id": "oa-jan-sekcja-a",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"employee": { "reference": "PartyRole/role-jan-zielinski-employee", "display": "Jan Zieliński" },
"organizationalUnit": { "reference": "OrganizationUnit/ou-sekcja-a", "display": "Sekcja A" },
"period": { "start": "2024-06-01" },
"employment": { "reference": "Employment/emp-jan-zielinski", "display": "Jan Zieliński – Produkt Plus" },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}
Jan Zieliński – kierownik Zakładu 2 (drugie przypisanie: ta sama osoba w innej jednostce jako kierownik):
{
"resourceType": "OrganizationAssignment",
"id": "oa-jan-zaklad-2",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"employee": { "reference": "PartyRole/role-jan-zielinski-employee", "display": "Jan Zieliński" },
"organizationalUnit": { "reference": "OrganizationUnit/ou-zaklad-2", "display": "Zakład 2" },
"period": { "start": "2024-06-01" },
"hierarchyLevel": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/hierarchy-level", "code": "primary-manager", "display": "Kierownik zakładu" }] },
"employment": { "reference": "Employment/emp-jan-zielinski", "display": "Jan Zieliński – Produkt Plus" },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}
Wariant zatrudnienia: Jan ma jedno Employment (umowa zlecenie u Produkt Plus) i dwa OrganizationAssignment – w Sekcji A jako zwykły pracownik oraz w Zakładzie 2 jako kierownik (możliwy scenariusz łączenia ról lub przeniesienia w czasie).
7. Diagram hierarchii jednostek i ról
flowchart TB
subgraph zarzad [Zarząd]
Z[OrganizationUnit Zarząd board]
end
subgraph wydzial_prod [Wydział Produkcji]
W1[OrganizationUnit Wydział Produkcji department]
W1 --- D1[OrganizationAssignment Anna Nowak main-director]
W1 --- D2[OrganizationAssignment Michał Nowicki technical-director]
end
subgraph zaklad1 [Zakład 1]
K1[OrganizationUnit Zakład 1 plant]
K1 --- S1[OrganizationUnit Sekcja A section]
K1 --- S2[OrganizationUnit Sekcja B section]
end
subgraph wydzial_sprz [Wydział Sprzedaży]
W2[OrganizationUnit Wydział Sprzedaży department]
end
subgraph zaklad2 [Zakład 2]
K2[OrganizationUnit Zakład 2 plant]
end
Z --> W1
Z --> W2
W1 --> K1
W2 --> K2
8. Podsumowanie wariantów
| Osoba | Employment (typ) | Jednostka | Rola (hierarchyLevel w OrganizationAssignment) |
|---|---|---|---|
| Anna Nowak | Umowa o pracę | Wydział Produkcji | Dyrektor główny (hierarchyLevel=main-director) |
| Michał Nowicki | Umowa o pracę | Wydział Produkcji | Dyrektor techniczny (hierarchyLevel=technical-director) |
| Maria Wiśniewska | Umowa o pracę | Zakład 1 | Kierownik zakładu (hierarchyLevel=primary-manager) |
| Tomasz Lewandowski | Umowa o pracę | Sekcja A | Kierownik sekcji (hierarchyLevel=primary-manager) |
| Katarzyna Dąbrowska | Umowa o pracę | Sekcja B | Kierownik sekcji (hierarchyLevel=primary-manager) |
| Jan Zieliński | Umowa zlecenie | Sekcja A | Pracownik (OrganizationAssignment bez hierarchyLevel) |
| Jan Zieliński | Umowa zlecenie | Zakład 2 | Kierownik zakładu (hierarchyLevel=primary-manager) |
Konwencje: Kierownik, zastępca i dyrektorzy są wyłącznie w OrganizationAssignment (pole hierarchyLevel: primary-manager, deputy, main-director, technical-director). OrganizationUnit nie ma pola manager. Jedna osoba może mieć wiele OrganizationAssignment (różne jednostki lub role w czasie).