Przejdź do treści

Product

Product (egzemplarz produktu) to zasób reprezentujący konkretne, fizyczne wystąpienie pozycji katalogowej — na przykład określoną serię leku przyjętą do magazynu, pojedynczy serializowany wyrób medyczny lub jednostkę preparatu krwi. Zawiera referencję do ProductDefinition (definicja katalogowa) oraz identifier[] i attribute[] (Attribute) z danymi specyficznymi dla egzemplarza (numer partii, numer seryjny, data ważności, data produkcji, dane jednostki). Wzorowany na SAP (Batch / Serial Number przy Material), UBL 2.3 (ItemInstance), FHIR (Medication.batch, BiologicallyDerivedProduct).

Rozszerza DomainResource.


1. Rola i różnica względem ProductDefinition

Product i ProductDefinition reprezentują dwa różne poziomy abstrakcji w relacji typ – egzemplarz, a nie ten sam byt o różnym zestawie pól. Rozróżnienie jest niezbędne — nie jest optymalizacją ani duplikacją.

Aspekt ProductDefinition Product
Zakres Pozycja katalogowa (specyfikacja rodzaju) Fizyczne wystąpienie rodzaju
Pytanie Czym produkt jest Którego konkretnego wystąpienia dotyczy operacja
Natura Byt pojęciowy (wzorzec) Byt fizyczny (istnieje w obrocie)
Liczność Jedna na pozycję katalogu Wiele (lub żadne) na definicję
Cykl życia Stabilny; dane podstawowe (master data) Operacyjny: przyjęcie → obrót → wydanie / utylizacja / wygaśnięcie
Tożsamość Symbol katalogowy, GTIN Numer partii, numer seryjny, identyfikator donacji
Zmienność Rzadka (zmiana specyfikacji) Stan zmienny w czasie (ilość, lokalizacja, status)

Trzy przesłanki uzasadniają odrębność Product:

  1. Niezależny cykl życia. Definicja nie ulega zużyciu, nie wygasa i nie jest wycofywana z obrotu — te zdarzenia dotyczą wyłącznie egzemplarza. Operacje na rzeczy fizycznej (ruchy magazynowe, wygaśnięcie terminu ważności, wycofanie serii) wymagają bytu, do którego można je przypisać; definicja, współdzielona przez wszystkie egzemplarze, nie może pełnić tej funkcji.
  2. Referencyjność i identyfikowalność. Wycofanie z obrotu konkretnej serii, wydawanie według najkrótszego terminu ważności (FEFO), śledzenie opakowań w systemie NMVS oraz hemowigilancja jednostek krwi wymagają, aby dana partia lub sztuka była referowalnym bytem. Bez Product możliwe jest odwołanie wyłącznie do rodzaju produktu, nie do jego konkretnego wystąpienia.
  3. Normalizacja danych. Specyfikacja katalogowa (np. ATC, postać, dawka, pozwolenie) jest zapisana jednokrotnie na definicji. Egzemplarze referują tę definicję i przenoszą wyłącznie dane dla nich unikalne (partia, termin ważności). Połączenie obu poziomów wymuszałoby powtórzenie pełnej specyfikacji na każdym egzemplarzu oraz groziło niespójnością przy zmianie specyfikacji.

2. Reżim śledzenia — kiedy powstaje egzemplarz

Istnienie zasobu Product zależy od wymaganej granularności śledzenia fizycznego wystąpienia (system product-tracking). Reżim wynika przede wszystkim z klasy produktu i profilu (klasyfikacja produktów).

Reżim Identyfikacja egzemplarza Zastosowanie Czy Product powstaje
none brak — stan jest ilością definicji usługi, towary nieśledzone nie
batch numer partii + termin ważności leki, żywność, kosmetyki, odczynniki tak
serial unikalny identyfikator sztuki wyroby serializowane, opakowania w NMVS tak
unique tożsamość jednostkowa (kliniczna) preparaty krwi, tkanki tak

Reguła: Product jest tworzony wyłącznie wtedy, gdy proces biznesowy wymaga rozróżnienia i śledzenia konkretnego wystąpienia. W reżimie none dokumenty (zamówienie, faktura, pozycja) referują bezpośrednio ProductDefinition, a stan magazynowy wyrażany jest jako ilość definicji.


3. Zakres i zastosowanie

  • Referencja do egzemplarza: przyjęcie/wydanie magazynowe z partią, seria w reklamacji, termin ważności na fakturze — pole valueReference pozycji wskazuje na Product (referencja do ProductDefinition + dane partii/serii/ważności w atrybutach).
  • Referencja do definicji: zamówienie lub faktura na poziomie katalogu (bez śledzenia egzemplarza) — valueReference wskazuje na ProductDefinition.

Ceny egzemplarza (np. wycena partii) przenosi contained[] z elementem ProductPricing (lokalne id, bez identifier).


4. Zawartość (struktura)

Oprócz elementów DomainResource (id, meta, comment, category, status, type, contained, attribute):

Nazwa Kard. Typ Opis
productDefinition 1..1 Reference(ProductDefinition) Definicja katalogowa, której egzemplarzem jest ten zasób
identifier 0..* Identifier Identyfikatory egzemplarza (numer partii, numer seryjny, identyfikator donacji — rodzaj w type)
attribute 0..* Attribute Cechy egzemplarza (batch-number, serial-number, expiry-date, production-date, dane jednostki); struktura w Attribute

Uwaga: atrybuty egzemplarza używają tej samej struktury Attribute co definicja; code określa rodzaj cechy (system product-attribute-type). Daty wyraża się jako valueString (ISO 8601) lub valueCodeableConcept.

Kontrakty atrybutów egzemplarza dla klas śledzonych opisują profile definicji, w szczególności ProductDefinition — blood-product (dane jednostki: grupa ABO, Rh, identyfikator donacji, termin ważności).


5. Zgodność z systemami wzorcowymi

System Odpowiednik Uwagi
SAP Batch (Charge), Serial Number Material + Batch/Serial; ProductDefinition = Material, Product = Batch/Serial
UBL 2.3 ItemInstance, LotNumber, SerialID Batch/serial przy Item; Product = egzemplarz Item
FHIR Medication.batch, BiologicallyDerivedProduct Definicja vs egzemplarz z partią/terminem ważności; jednostka kliniczna jako odrębny byt

We wszystkich systemach wzorcowych poziom egzemplarza jest odrębny od poziomu definicji i opiera się na wspólnym mechanizmie partii/serii, a nie na osobnym modelu per rodzaj produktu.


6. Odniesienia