Attribute
Attribute (atrybut) to typ danych oznaczający cechę opisaną kodem (rodzaj) i wartością – np. jednostka miary, stawka VAT, kolor, numer partii, data ważności. Używany w ProductDefinition (cechy definicji: jednostka, VAT, producent, grupa), Product (cechy instancji: batch-number, serial-number, expiry-date), Document (attribute[] – atrybuty dokumentu, np. podsumowanie pozycji: suma netto, VAT, brutto) oraz Location (attribute[] – cechy lokalizacji: powierzchnia, temperatura, typ strefy). Jedna struktura: code (rodzaj atrybutu) + value (ValueItem) — typ danych niosący opcjonalny rodzaj wartości (type: CodeableConcept) oraz dokładnie jeden wariant: valueQuantity, valueMoney, valueString, valueInteger, valueBoolean, valueCodeableConcept lub valueReference. Wzorowany na podejściu code + value[x] z FHIR (Observation.component).
Attribute nie jest zasobem (DomainResource) – jest typem zagnieżdżonym w tablicy attribute[] w ProductDefinition, Product, Document i Location. W sensie DDD to Value Object: brak własnej identyfikacji (id), tożsamość wyłącznie przez wartość (code + value), zagnieżdżenie w rodzicu.
1. Zakres i zastosowanie
Attribute służy do:
- Cech definicji produktu – w ProductDefinition: unit-of-measure, vat-rate, color, size, training-duration, producer, product-group (code + value z wariantem valueCodeableConcept, valueQuantity dla ilości/miar, valueMoney dla kwot, valueReference dla odniesień).
- Cech instancji produktu – w Product: batch-number, serial-number, expiry-date, production-date, location (code + value — typowo wariant valueString, valueCodeableConcept albo valueReference, zależnie od cechy).
- Atrybuty dokumentu – w Document (attribute[]): np. podsumowanie pozycji faktury – total-net, total-vat, total-gross (code + value z wariantem valueMoney); system np.
https://api-erp.kamsoft.pl/ns/document-attribute-type. - Cechy lokalizacji – w Location (attribute[]): np. powierzchnia (value z wariantem valueQuantity), temperatura, typ strefy (valueCodeableConcept); system np.
https://api-erp.kamsoft.pl/ns/location-attribute-type. - Rozszerzalności – nowe rodzaje atrybutów przez code (system zależny od zasobu: product-attribute-type, document-attribute-type, location-attribute-type) bez zmiany struktury.
Reguła na poziomie modelu: code (1..1) i value (0..1, ValueItem). W ValueItem jest dokładnie jeden wariant value*; opcjonalnie type precyzuje rodzaj wartości (np. net, gross). Profil konformance może zawęzić dopuszczalne warianty dla konkretnego kodu cechy.
2. Zawartość (struktura)
| Nazwa | Kard. | Typ | Opis |
|---|---|---|---|
| code | 1..1 | CodeableConcept | Rodzaj atrybutu (unit-of-measure, vat-rate, color, batch-number, expiry-date, producer… – system https://api-erp.kamsoft.pl/ns/product-attribute-type) |
| value | 0..1 | ValueItem | Wartość cechy – opcjonalny type (CodeableConcept) oraz dokładnie jeden wariant value* (patrz tabela ValueItem poniżej) |
ValueItem (struktura wartości)
ValueItem to typ polimorficzny: opcjonalny type precyzujący rodzaj wartości (np. net, gross) oraz dokładnie jeden wariant value* (wzór jak value[x] w FHIR). W JSON Schema odzwierciedlany jako oneOf nad wariantami.
| Nazwa | Kard. | Typ | Opis |
|---|---|---|---|
| type | 0..1 | CodeableConcept | Rodzaj wartości (np. net, gross) – sensowne przy valueQuantity/valueMoney |
| valueBoolean | 0..1 | boolean | Wartość logiczna |
| valueString | 0..1 | string | Tekst lub data (np. ISO 8601) |
| valueInteger | 0..1 | integer | Liczba całkowita |
| valueQuantity | 0..1 | Quantity | Ilość / miara niepieniężna (UCUM) |
| valueMoney | 0..1 | Money | Kwota pieniężna |
| valueCodeableConcept | 0..1 | CodeableConcept | Wartość kodowana (np. stawka VAT 23%, kolor, kategoria) |
| valueReference | 0..1 | Reference | Odniesienie (np. producent → Party) |
Reguła: dokładnie jeden wariant value* w ValueItem; opcjonalnie type. Dla dat (expiry-date, production-date) używa się valueString (ISO 8601) lub valueCodeableConcept; rozszerzenie może dodać valueDate.
3. Przykłady code (system zależny od zasobu)
- ProductDefinition: unit-of-measure, vat-rate, color, size, training-duration, producer, product-group (system product-attribute-type).
- Product (instancja): batch-number, serial-number, expiry-date, production-date, location (system product-attribute-type).
4. Zgodność atrybutów z systemami ERP
Model atrybutów (code + value: ValueItem) pozwala uzupełnić dane z systemów ERP i odwrotnie – bez utraty informacji.
| System | Odpowiednik cech | Mapowanie |
|---|---|---|
| SAP | Characteristic (CLASS), Batch (Charge), Serial Number; Material master – jednostka, grupa, VAT | code → Char. name / tabela; value.valueQuantity/valueMoney/valueString → wartość; value.valueReference → np. producent (Vendor/BP); batch-number, expiry-date w Product.attribute |
| Oracle EBS / Fusion | Descriptive Flexfields (DFF), Item Attributes; Lot/Serial; UOM, Category, VAT | code → DFF segment / Item Attribute; value.value* → wartość; value.type → precyzja wariantu (np. net/gross); Product.attribute → Lot/Serial attributes |
| UBL 2.3 | Item Property (Name, Value); ClassifiedTaxCategory; AdditionalItemProperty | code → Item Property name; value.valueString/valueCodeableConcept/valueQuantity → Value; Batch/Serial w ItemInstance |
| OAGIS | Item IDs, Quantity, Amount, Classification; Lot/Serial w BOD | code → Classification/Property; value.value* → wartość; ProductDefinition.attribute ↔ Item master; Product.attribute ↔ Lot/Serial |
| FHIR | Observation.component (code + value[x]); Medication (batch, expirationDate) | Bezpośrednie: code + value (ValueItem odpowiada value[x] z opcjonalnym type); warianty valueQuantity, valueCodeableConcept, valueString, valueReference |
Podsumowanie: Ten sam zestaw danych (jednostka, VAT, partia, seria, data ważności, producent, grupa, cechy niestandardowe) da się wyrazić w naszym modelu i w SAP/Oracle/UBL/OAGIS. Różnice dotyczą nazewnictwa (code/system) i miejsca przechowania (Material vs Item vs Batch) – mapowanie jest możliwe w obie strony; atrybuty pozwalają uzupełnić dane z ERP (import do API) i eksportować do ERP (export z API).
5. Odniesienia
- ProductDefinition (attribute[]), Product (attribute[])
- CodeableConcept, Quantity, Money, Reference