Przejdź do treści

Przykłady Party (stron)

Przykłady zasobu Party dla różnych rodzajów podmiotów: organizacja (firma), osoba (person), oddział (branch). Party jest wspólny dla kartotek w FK, CRM, WHS, HR – rodzaj wyraża type lub category z DomainResource. Role są w PartyRole, który referuje do Party przez party.

URL systemów kodów: https://api-erp.kamsoft.pl/ns/ (party-type, party-role itd.). Rodzaj identyfikatora wynika z Identifier.system (np. urn:pl:nip, urn:pl:regon, company).


1. Firma (organizacja)

Party reprezentujący przedsiębiorstwo: identyfikatory (NIP, REGON, numer kontrahenta), nazwa jako CodeableConcept, adresy (siedziba, rozliczeniowy), kontakt (telefon, e-mail), role (odbiorca, dostawca).

{
  "resourceType": "Party",
  "id": "party-org-001",
  "meta": { "lastModified": "2025-02-20T10:00:00Z" },
  "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", "display": "Aktywny" }] },
  "identifier": [
    { "system": "urn:pl:nip", "value": "1234567890" },
    { "system": "urn:pl:regon", "value": "123456789" },
    { "system": "https://api-erp.kamsoft.pl/ns/company", "value": "K-001" }
  ],
  "name": {
    "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/party-name", "code": "official", "display": "ABC Sp. z o.o." }]
  },
  "address": [
    {
      "use": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/address-use", "code": "work", "display": "Siedziba" }] },
      "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/address-type", "code": "physical", "display": "Fizyczny" }] },
      "line": ["ul. Przykładowa 1", "lok. 10"],
      "city": "Warszawa",
      "postalCode": "00-001",
      "country": "PL"
    },
    {
      "use": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/address-use", "code": "billing", "display": "Rozliczeniowy" }] },
      "line": ["ul. Przykładowa 1", "lok. 10"],
      "city": "Warszawa",
      "postalCode": "00-001",
      "country": "PL"
    }
  ],
  "contactPoint": [
    { "system": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/contact-point-system", "code": "phone", "display": "Telefon" }] }, "value": "+48 22 123 45 67" },
    { "system": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/contact-point-system", "code": "email", "display": "E-mail" }] }, "value": "biuro@abc.pl" }
  ]
}

Uwaga: Party nie zawiera pól na role. Role (odbiorca, dostawca) są w PartyRole, który referuje do Party przez party. W dokumentach używa się referencji do Party lub do PartyRole z kontekstem roli w profilu.


2. Osoba (person)

Party reprezentujący osobę fizyczną: nazwa jako CodeableConcept, identyfikator wewnętrzny (np. pracownik, kontakt), adres, telefon/e-mail, rola (pracownik, kontakt).

{
  "resourceType": "Party",
  "id": "party-person-001",
  "meta": { "lastModified": "2025-02-20T10:00:00Z" },
  "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", "display": "Aktywny" }] },
  "identifier": [
    { "system": "https://api-erp.kamsoft.pl/ns/company", "value": "P-1001" }
  ],
  "name": {
    "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/party-name", "code": "official", "display": "Jan Kowalski" }]
  },
  "address": [
    {
      "use": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/address-use", "code": "home", "display": "Prywatny" }] },
      "line": ["ul. Kwiatowa 5"],
      "city": "Kraków",
      "postalCode": "30-001",
      "country": "PL"
    }
  ],
  "contactPoint": [
    { "system": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/contact-point-system", "code": "phone", "display": "Telefon" }] }, "value": "+48 500 123 456", "use": { "coding": [{ "code": "mobile", "display": "Komórka" }] } },
    { "system": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/contact-point-system", "code": "email", "display": "E-mail" }] }, "value": "jan.kowalski@example.com" }
  ]
}

Uwaga: Dla osoby bez NIP/REGON wystarczy name i opcjonalnie identifier wewnętrzny. Role (np. pracownik, pracodawca) są w PartyRole z party = ten Party; w HR Employment wskazuje employer i employee jako referencje do PartyRole.


3. Oddział / placówka (branch)

Party może reprezentować oddział lub placówkę firmy (np. biuro sprzedaży, punkt obsługi). Identyfikacja przez type (branch), identifier (kod oddziału), adres, opcjonalnie kontakt. Magazyn jako „strona” w dokumentach WHS to osobny przypadek – Party z type=branch i category=warehouse (przykłady w WMS-Examples).

{
  "resourceType": "Party",
  "id": "party-branch-001",
  "meta": { "lastModified": "2025-02-20T10:00:00Z" },
  "type": {
    "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/party-type", "code": "branch", "display": "Oddział" }]
  },
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active", "display": "Aktywny" }] },
  "identifier": [
    { "system": "https://api-erp.kamsoft.pl/ns/company", "value": "ODD-01" }
  ],
  "name": {
    "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/party-name", "code": "official", "display": "Oddział Warszawa" }]
  },
  "address": [
    {
      "use": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/address-use", "code": "work", "display": "Siedziba" }] },
      "line": ["ul. Marszałkowska 1"],
      "city": "Warszawa",
      "postalCode": "00-001",
      "country": "PL"
    }
  ],
  "contactPoint": [
    { "system": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/contact-point-system", "code": "phone", "display": "Telefon" }] }, "value": "+48 22 999 00 00" }
  ]
}

Uwaga: W systemach ERP oddział bywa osobnym obiektem (Branch, Location); w naszym modelu Party z type (branch) reprezentuje oddział/placówkę i może być używany w participant[] w Document (np. miejsce dostawy, punkt sprzedaży).


4. Diagramy zależności obiektów Party

4.1. Rodzaje Party (type / category)

flowchart TB
    subgraph Party["Zasób Party"]
        direction TB
        ORG[type: organization\nFirma – NIP, REGON, adres, role]
        PER[type: person\nOsoba – name, identifier, role]
        BR[type: branch\nOddział / placówka – kod, adres]
        GRP[type: group\nGrupa / holding]
    end

4.2. Party i powiązania (PartyRole, Document)

erDiagram
    PartyRole }o--|| Party : "party"
    Party ||--o{ Document : "participant"
    PartyRelationship }o--|| PartyRole : "partyFrom"
    PartyRelationship }o--|| PartyRole : "partyTo"

    Party {
        string id
        CodeableConcept name
        string type
        Address address
        ContactPoint contactPoint
    }

    PartyRole {
        Reference party
        CodeableConcept role
    }

    Document {
        Reference participant
    }

4.3. Użycie Party w różnych domenach

flowchart LR
    P[Party]
    P --> CRM[Document CRM\nseller, customer]
    P --> FK[Document FK\nsupplier, buyer]
    P --> WHS[Document WHS\nwarehouse, supplier]
    P --> HR[Employment, Payroll\nemployer, employee]

Podsumowanie: czym może być Party

Rodzaj type (przykład) Opis
Organizacja organization Firma, instytucja – NIP, REGON, adres siedziby, role customer/supplier
Osoba person Osoba fizyczna – pracownik, kontakt; name (CodeableConcept) = imię i nazwisko, opcjonalnie identifier wewnętrzny
Oddział / placówka branch Oddział firmy, placówka – identifier (kod oddziału), adres; w WHS magazyn to branch z category=warehouse
Grupa / holding group Np. grupa kapitałowa – category/type; relacje do innych Party przez PartyRelationship

Wszystkie przykłady używają tej samej struktury Party: identifier, name, address, contactPoint; type i category (z DomainResource) rozróżniają rodzaj podmiotu. Party nie zawiera partyRole – to PartyRole referuje do Party przez party. Mapowanie z SAP Business Partner, Oracle TCA Party, UBL PartyType, OAGIS Party na identifier, Address, ContactPoint jest spójne.