Przejdź do treści

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 operacyjnygdzie 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


5. Odniesienia