ProductDefinition
ProductDefinition (definicja produktu) to zasób reprezentujący pozycję w katalogu – wzorzec towaru lub usługi (w tym szkoleniowej) itd., bez danych konkretnej instancji (seria, partia, data ważności). Definicja zawiera identyfikatory katalogowe, nazwę (z DomainResource), typ, status oraz attribute[] (Attribute: jednostka miary, stawka VAT, producent, grupa towarowa itd.). Konkretna instancja (partia, numer seryjny, data ważności) to Product z referencją do ProductDefinition. W DocumentPosition valueReference może wskazywać na ProductDefinition (gdy pozycja odnosi się do pozycji katalogu) lub na Product (gdy odnosi się do konkretnej instancji). Wzorowany na UBL 2.3 (CatalogueLine / Item), SAP (Material master), FHIR (Medication – definicja).
Rozszerza DomainResource.
1. Zakres i zastosowanie
ProductDefinition to poziom „katalogu”: co to za produkt, jakie ma cechy wspólne dla wszystkich instancji. Nie ma tu numeru partii, numeru seryjnego ani daty ważności – te są w Product (instancja).
- Towar (good): type=good, atrybuty np. unit-of-measure (szt), vat-rate, producer, product-group.
- Usługa (service): type=service, atrybuty np. unit-of-measure (usł., godz.), vat-rate. Obejmuje wszystkie rodzaje usług, w tym szkoleniowe — specyfika (czas trwania, kategoria, liczba uczestników) jest przenoszona w atrybutach, nie w osobnym typie.
W zamówieniu, fakturze oraz pozycjach InventoryDocument (GR/GI) można referować ProductDefinition (katalog) albo Product (partia/seria, data ważności).
Ceny katalogowe przenosi contained[] — element ProductPricing (ProductPricing); identyfikatory biznesowe pozostają na ProductDefinition.
2. Zawartość (struktura)
Oprócz elementów DomainResource (id, meta, text, comment, category, status, type, contained, attribute):
| Nazwa | Kard. | Typ | Opis |
|---|---|---|---|
| identifier | 0..* | Identifier | Identyfikatory katalogowe (symbol wewnętrzny, GTIN, EAN, kod dostawcy – rodzaj w type) |
| name | 0..1 | string | Nazwa definicji produktu (np. „Produkt A”, „Szkolenie BHP”) |
| attribute | 0..* | Attribute | Cechy definicji (jednostka miary, stawka VAT, kolor, czas trwania, producent, grupa itd.); struktura w Attribute |
3. Klasa produktu i reguły per rodzaj
Definicja produktu obsługuje wiele rodzajów towarów (leki, wyroby medyczne, preparaty krwi, żywność specjalnego przeznaczenia, kosmetyki, usługi, towary ogólne). Aby prowadzić na nich osobne reguły biznesowe, ProductDefinition niesie jawną klasę produktu w polu type, ze słownika product-class. Model pozostaje jednozasobowy z dyskryminatorem — tożsamość katalogowa, logistyka, wycena i finanse są wspólne dla wszystkich rodzajów, a klasa steruje zachowaniem (obowiązkowe pola, procesy, walidacja). Odpowiada to podejściu głównych systemów ERP (materiał + typ materiału).
3.1. Dwie osie: klasa a kontekst
Zachowanie produktu zależy od dwóch niezależnych wymiarów:
- Klasa produktu (
type) — czym produkt jest; podróżuje z produktem niezależnie od miejsca obsługi (lek jest lekiem w aptece, hurtowni i magazynie). - Kontekst operacyjny — gdzie jest obsługiwany (apteka, hurtownia farmaceutyczna, hurtownia ogólna, magazyn); wynika z systemu dziedzinowego, w którym produkt występuje, i nie jest osobnym polem na produkcie.
Te same reguły klasy stosuje się wszędzie; kontekst dokłada reguły specyficzne dla miejsca obsługi (np. lek w aptece podlega regułom wydania i refundacji, a w hurtowni — dystrybucji hurtowej i śledzenia partii).
3.2. Klasy produktu (product-class)
| Klasa | Opis | Profil | Kluczowe pola / cechy |
|---|---|---|---|
| medication | Produkt leczniczy (lek gotowy, galenowy, recepturowy, homeopatyczny, szczepionka, immunologiczny) | tak | ATC, postać, dawka, kategoria dostępności, pozwolenie na dopuszczenie |
| blood-product | Preparat / składnik krwi | tak | grupa ABO, Rh, dawstwo, identyfikowalność — na poziomie Product (jednostka) |
| medical-device | Wyrób medyczny | tak | klasa (I/IIa/IIb/III), UDI, jednostka notyfikowana, oznaczenie CE |
| ivd-medical-device | Wyrób medyczny do diagnostyki in vitro | tak | klasa IVD, UDI-DI, jednostka notyfikowana (odrębny reżim IVDR) |
| dietary-supplement | Suplement diety | nie | powiadomienie GIS, składniki (prawo żywnościowe) |
| medical-food | Środek spożywczy specjalnego przeznaczenia medycznego/żywieniowego, żywienie dietetyczne, środek wzbogacony | nie | przeznaczenie żywieniowe, kategoria |
| cosmetic | Kosmetyk (w tym leczniczy, dermokosmetyk) | nie | zgłoszenie CPNP, przeznaczenie |
| biocidal-product | Produkt biobójczy / preparat dezynfekcyjny | nie | numer pozwolenia, rodzaj produktu biobójczego |
| service | Usługa (transportowa, marketingowa, profilaktyka, recepta, inne) | nie | PKWiU; brak partii/serii/daty ważności/stanu magazynowego |
| general-good | Towar ogólny / materiał / produkt zaopatrzeniowy / opakowanie | nie | bazowy zestaw ProductDefinition |
Klasy z profilem konformancji mają strukturalnie wymuszone pola obowiązkowe. Produkt leczniczy roślinny należy do medication, ziołowy środek spożywczy do medical-food, a środek higieniczny do general-good lub cosmetic — o przynależności rozstrzyga reżim prawny produktu.
3.3. Wymiary ortogonalne — atrybuty, nie klasy
Poniższe cechy przecinają wiele klas i nie zmieniają tego, czym produkt jest — pozostają Attribute (systemy kodów w code-systems), a nie osobnymi klasami:
| Wymiar | Wartości (przykłady) | Uzasadnienie |
|---|---|---|
| intended-use | human, veterinary | Lek weterynaryjny to medication + przeznaczenie weterynaryjne; weterynaryjność przecina lek/wyrób/inne |
| preparation-type | ready-made, galenic, compounded, homeopathic | Sposób przygotowania leku to cecha, nie osobny byt zakupowo-magazynowy |
| pharmaceutical-category | narkotyk I-IV N, psychotrop I-IV P, prekursor 1-3, cytostatyk, radiofarmaceutyk, gaz medyczny | Kategorie regulacyjne leku — sterują ewidencją i przechowywaniem, nie definiują rodzaju |
| storage-condition | <2°C, 2–8°C, 8–15°C, 15–25°C | Warunek przechowywania to cecha |
| availability-category | Rp, Rpw, Rpz, OTC, Lz | Kategoria dostępności leku (cecha profilu medication) |
| medical-device-class | I, IIa, IIb, III | Cecha profilu medical-device |
Zasada rozstrzygająca: osobną klasę wprowadza się tylko wtedy, gdy rodzaj produktu ma inny reżim regulacyjny/procesowy (inne obowiązkowe dane strukturalne lub inny cykl życia). Cecha opcjonalna albo wymiar przecinający wiele rodzajów to atrybut.
3.4. Kontrakt atrybutów klasy — jak zbudować model
Specyfika każdej klasy jest przenoszona w attribute[] (Attribute: code = rodzaj cechy, value = wartość). „Jak zbudować model danej klasy" opisuje jej profil konformancji: tabela cech (które obowiązkowe, jaki wariant value*, z jakiego słownika) plus przykład payloadu. Klasy z profilem mają te reguły wymuszane maszynowo (JSON Schema).
| Klasa | Profil — kontrakt i przykład |
|---|---|
| medication | ProductDefinition — medication |
| blood-product | ProductDefinition — blood-product |
| medical-device | ProductDefinition — medical-device |
| ivd-medical-device | ProductDefinition — ivd-medical-device |
Klasy bez profilu (dietary-supplement, medical-food, cosmetic, biocidal-product, service, general-good) korzystają z cech wspólnych wszystkich definicji (unit-of-measure, vat-rate, producer, product-group) oraz dowolnych atrybutów opisowych — bez pól wymuszanych.
4. Przykłady
- Product-Examples – towar materialny, usługa serwisowa, usługa szkoleniowa (ProductDefinition + Product).
- ProductPricing-Examples – ceny w contained ProductDefinition / Product.
5. Odniesienia
- DomainResource, Product (instancja definicji), ProductPricing (ceny katalogowe), Attribute (attribute[]), DocumentPosition (valueReference → ProductDefinition lub Product)
- Identifier, CodeableConcept, Reference
- Systemy kodowania —
product-classi systemy wymiarów ortogonalnych