Przykłady produktów (ProductDefinition i Product)
Przykłady ProductDefinition (pozycja katalogu) i Product (instancja z partią/serią) dla: towaru materialnego, usługi serwisowej, szkolenia. Atrybuty według Attribute (code + value* / valueItem).
System kodów atrybutów: https://api-erp.kamsoft.pl/ns/product-attribute-type.
1. Towar materialny (good) – definicja i instancja
ProductDefinition – pozycja w katalogu: symbol, nazwa, jednostka miary, stawka VAT, producent (Reference do Party), grupa towarowa. Product – konkretna partia z numerem partii i datą ważności.
1.1 ProductDefinition (definicja towaru)
{
"resourceType": "ProductDefinition",
"id": "pd-good-001",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-type", "code": "good", "display": "Towar" }] },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active", "display": "Aktywny" }] },
"identifier": [
{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "TOW-001" },
{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "5901234123457" }
],
"name": "Środek czyszczący 5L",
"attribute": [
{
"code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "unit-of-measure", "display": "Jednostka miary" }] },
"valueCodeableConcept": [{ "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/unit", "code": "szt", "display": "Sztuka" }] }]
},
{
"code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "vat-rate", "display": "Stawka VAT" }] },
"valueCodeableConcept": [{ "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/vat-rate", "code": "23", "display": "23%" }] }]
},
{
"code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "producer", "display": "Producent" }] },
"valueReference": [{ "reference": "Party/party-org-001", "display": "ABC Sp. z o.o." }]
},
{
"code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "product-group", "display": "Grupa towarowa" }] },
"valueCodeableConcept": [{ "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-group", "code": "chematics", "display": "Chemia" }] }]
}
]
}
1.2 Product (instancja – partia)
{
"resourceType": "Product",
"id": "prod-batch-001",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"productDefinition": { "reference": "ProductDefinition/pd-good-001", "display": "Środek czyszczący 5L" },
"identifier": [
{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "PART-2025-02-001" }
],
"attribute": [
{
"code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "batch-number", "display": "Numer partii" }] },
"valueString": "PART-2025-02-001"
},
{
"code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "expiry-date", "display": "Data ważności" }] },
"valueString": "2026-06-30"
},
{
"code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "production-date", "display": "Data produkcji" }] },
"valueString": "2025-02-01"
}
]
}
Uwaga: W dokumentach (PZ, WZ, faktura z partią) valueReference wskazuje na Product/prod-batch-001; gdy partia nie jest wymagana – na ProductDefinition/pd-good-001.
2. Usługa serwisowa (service)
ProductDefinition z type=service: jednostka (usł., godz.), stawka VAT, opcjonalnie kategoria usługi. Brak partii/serii – w dokumentach referuje się tylko definicję.
{
"resourceType": "ProductDefinition",
"id": "pd-service-001",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-type", "code": "service", "display": "Usługa" }] },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active", "display": "Aktywny" }] },
"identifier": [
{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "USL-SERW-01" }
],
"name": "Serwis urządzeń – przegląd roczny",
"attribute": [
{
"code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "unit-of-measure", "display": "Jednostka miary" }] },
"valueItem": [
{ "valueCodeableConcept": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/unit", "code": "usl", "display": "Usługa" }] } }
]
},
{
"code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "vat-rate", "display": "Stawka VAT" }] },
"valueCodeableConcept": [{ "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/vat-rate", "code": "23", "display": "23%" }] }]
},
{
"code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "product-group", "display": "Grupa" }] },
"valueCodeableConcept": [{ "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/service-category", "code": "maintenance", "display": "Serwis i konserwacja" }] }]
}
]
}
Uwaga: Dla usług zwykle nie tworzy się Product (instancji); w DocumentPosition valueReference wskazuje na ProductDefinition/pd-service-001.
3. Szkolenie (training)
ProductDefinition z type=training: jednostka (godz., os.), czas trwania (Quantity), kategoria (BHP, soft skills). Używane w HR i w ofertach/sprzedaży szkoleń.
{
"resourceType": "ProductDefinition",
"id": "pd-training-001",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-type", "code": "training", "display": "Szkolenie" }] },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active", "display": "Aktywny" }] },
"identifier": [
{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "SZK-BHP-01" }
],
"name": "Szkolenie okresowe BHP",
"attribute": [
{
"code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "unit-of-measure", "display": "Jednostka miary" }] },
"valueItem": [
{ "valueCodeableConcept": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/unit", "code": "h", "display": "Godzina" }] } },
{ "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/quantity-type", "code": "per-participant", "display": "Na uczestnika" }] }, "valueCodeableConcept": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/unit", "code": "os", "display": "Osoba" }] } }
]
},
{
"code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "training-duration", "display": "Czas trwania" }] },
"valueQuantity": { "value": 8, "unit": "h" }
},
{
"code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "vat-rate", "display": "Stawka VAT" }] },
"valueCodeableConcept": [{ "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/vat-rate", "code": "0", "display": "0% (zwolnione)" }] }]
},
{
"code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "product-group", "display": "Kategoria" }] },
"valueCodeableConcept": [{ "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/training-category", "code": "bhp", "display": "BHP" }] }]
}
]
}
Uwaga: valueItem z opcjonalnym type pozwala wyrazić „godzina” i „osoba (na uczestnika)”; valueQuantity – czas trwania (8 h). W HR dokumentacja ukończenia szkolenia referuje tę definicję (valueReference → ProductDefinition) oraz pracownika (Party).
4. Diagramy zależności obiektów Product / ProductDefinition
4.1. Relacja definicja → instancja
erDiagram
ProductDefinition ||--o{ Product : "productDefinition"
ProductDefinition ||--o{ Attribute : "attribute"
Product ||--o{ Attribute : "attribute"
DocumentPosition }o--o{ ProductDefinition : "valueReference"
DocumentPosition }o--o{ Product : "valueReference"
Inventory }o--o{ ProductDefinition : "product"
Inventory }o--o{ Product : "product"
ProductDefinition {
string id
string name
string type
Attribute attribute
}
Product {
Reference productDefinition
Identifier identifier
Attribute attribute
}
Attribute {
CodeableConcept code
valueItem value
}
4.2. Rodzaje ProductDefinition i instancje
flowchart TB
subgraph Definicje["ProductDefinition"]
PD1[good – towar\nunit, vat, producer, group]
PD2[service – usługa\nunit, vat, group]
PD3[training – szkolenie\nunit, duration, vat, category]
end
subgraph Instancje["Product (opcjonalnie)"]
P1[Product\nbatch-number, expiry-date\nproduction-date]
end
PD1 --> P1
PD2 -.->|"zazwyczaj brak instancji"| N[Document → ProductDefinition]
PD3 -.->|"zazwyczaj brak instancji"| N
4.3. Użycie w dokumentach i Inventory
flowchart LR
PD[ProductDefinition]
P[Product instancja]
PD --> DC[DocumentPosition\nvalueReference]
P --> DC
PD --> INV[Inventory\nproduct – stan zbiorczy]
P --> INV2[Inventory\nproduct – stan z partią lub serią]
Podsumowanie
| Rodzaj | ProductDefinition.type | Atrybuty definicji (przykład) | Product (instancja) |
|---|---|---|---|
| Towar | good | unit-of-measure, vat-rate, producer, product-group | Tak – batch-number, expiry-date, production-date |
| Usługa | service | unit-of-measure (usł.), vat-rate, product-group | Zazwyczaj nie – referencja do definicji |
| Szkolenie | training | unit-of-measure (godz., os.), training-duration, vat-rate, product-group | Zazwyczaj nie – referencja do definicji |
Model atrybutów (code + valueQuantity, valueMoney, valueItem, valueCodeableConcept, valueReference, valueString) pokrywa cechy materialne (jednostka, VAT, partia, data ważności) i niematerialne (jednostka usługi/szkolenia, czas trwania, kategoria) oraz pozwala uzupełniać dane z systemów ERP – patrz sekcja „Zgodność atrybutów z systemami ERP” w Attribute.