Przejdź do treści

Przykładowe dokumenty (DocumentReference)

Poniżej po jednym przykładowym dokumencie dla każdego profilu DocumentReference: HrInboxDocument (dokument w skrzynce kadrowej) i WarehouseDocument (dokument magazynowy poza GR/GI), zbudowanym z obiektów DocumentReference, DocumentPosition i ValueItem. GR i GI — wyłącznie InventoryDocument (zob. WMS-Examples). Zapis w JSON; wartości przykładowe.

W przykładach używane są wyłącznie pola rdzenia DocumentReference: identifier, space, issueDate, participant, basedOn, position, attachment oraz pola DomainResource (category, type, status, attribute). Pozycja (position[]) ma positionNo, code, value[] (lista ValueItem z type i jednym z valueQuantity, valueMoney, valueString, valueInteger, valueBoolean, valueCodeableConcept, valueReference), status, attachment. Nie ma pól statusDate, expectedDate, realizationDate — daty poza issueDate przenosi attribute[].

Profil: zapis (POST, PATCH) wymaga profilu — meta.profile z adresem HrInboxDocument lub WarehouseDocument albo category z kodem hr-inbox-document / warehouse-document; bez tego 400. Słowniki: warianty domenowe hr/document-category, hr/document-space, hr/document-status, hr/document-attribute-type, warehouse/document-type, warehouse/document-status, warehouse/document-position-type, warehouse/value-item-type, warehouse/invoice-position-vat-rate, warehouse/document-attribute-typeSystemy kodowania.

Legenda placeholderów (zob. konwencje przykładów): urn:oid:2.999.1 — id dokumentu w skrzynce kadrowej (inbox-document-id), urn:oid:2.999.2 — id pracownika (employee-id), urn:oid:2.999.3 — id dokumentu magazynowego (document-id), urn:oid:2.999.4 — id kontrahenta w magazynie (contractor-id), urn:oid:2.999.5 — id produktu (product-id).


1. Kadry – dokument w skrzynce kadrowej (profil HrInboxDocument)

{
  "resourceType": "DocumentReference",
  "id": "4711",
  "meta": {
    "lastModified": "2025-02-17T16:00:00Z",
    "profile": ["https://api-erp.kamsoft.pl/ns/StructureDefinition/HrInboxDocument"]
  },
  "category": [
    { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/hr/document-category", "code": "hr-inbox-document", "display": "Dokument skrzynki HR" }] }
  ],
  "space": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/hr/document-space", "code": "hr-inbox", "display": "Skrzynka HR" }] },
  "identifier": [
    { "system": "urn:oid:2.999.1", "value": "4711" }
  ],
  "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/hr-inbox-document-type", "code": "<kod z instalacji>", "display": "Zaświadczenie" }] },
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/hr/document-status", "code": "received", "display": "Przyjęty" }] },
  "issueDate": "2025-02-17",
  "participant": [
    {
      "type": "Party",
      "identifier": { "system": "urn:oid:2.999.2", "value": "1001" },
      "display": "Jan Kowalski"
    }
  ],
  "attribute": [
    {
      "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/hr/document-attribute-type", "code": "external-system-name" }] },
      "value": { "valueString": "System medycyny pracy" }
    },
    {
      "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/hr/document-attribute-type", "code": "external-document-id" }] },
      "value": { "valueString": "MP/2025/000123" }
    },
    {
      "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/hr/document-attribute-type", "code": "receive-operation-comment" }] },
      "value": { "valueString": "Przekazano automatycznie" }
    }
  ],
  "attachment": [
    {
      "resourceType": "Attachment",
      "contentType": "application/pdf",
      "title": "zaswiadczenie.pdf",
      "data": "<base64>"
    }
  ]
}

Uwaga: type pochodzi ze słownika wdrożeniowego hr-inbox-document-type — kody pobiera się z GET /v1/value-sets?url=https://api-erp.kamsoft.pl/vs/hr-inbox-document-type. Dokument kadrowy nie ma pozycji; treść niesie attachment[], a dane operacyjne attribute[]. Zapis: POST /v1/document-references z treścią jak wyżej, bez id i bez value w identyfikatorze wewnętrznym — sama przestrzeń ({ "system": "urn:oid:2.999.1" }) wskazuje skrzynkę rejestrującą dokument (pominięta — rozstrzyga profil), a wartość nadaje skrzynka kadrowa (rejestracja zasobu); odpowiedź 200 z komunikatem systemu kadrowego. Odczyt: GET /v1/document-references?profile=https://api-erp.kamsoft.pl/ns/StructureDefinition/HrInboxDocument&participant=urn:oid:2.999.2|1001.


2. Magazyn – dokument zamówienia (profil WarehouseDocument)

{
  "resourceType": "DocumentReference",
  "id": "88",
  "meta": {
    "lastModified": "2025-02-19T14:30:00Z",
    "profile": ["https://api-erp.kamsoft.pl/ns/StructureDefinition/WarehouseDocument"]
  },
  "category": [
    { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/warehouse/document-category", "code": "warehouse-document", "display": "Dokument magazynowy" }] }
  ],
  "identifier": [
    { "system": "urn:oid:2.999.3", "value": "88" }
  ],
  "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/warehouse/document-type", "code": "6", "display": "dokument zamówienia" }] },
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/warehouse/document-status", "code": "buffer", "display": "W buforze" }] },
  "issueDate": "2025-02-19",
  "participant": [
    {
      "type": "Party",
      "identifier": { "system": "urn:oid:2.999.4", "value": "15" },
      "display": "Dostawca XYZ"
    }
  ],
  "position": [
    {
      "positionNo": 1,
      "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/warehouse/document-position-type", "code": "order-line", "display": "Pozycja zamówienia" }] },
      "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/warehouse/document-position-status", "code": "buffer", "display": "w buforze" }] },
      "value": [
        { "valueReference": { "type": "ProductDefinition", "identifier": { "system": "urn:oid:2.999.5", "value": "10045" }, "display": "Produkt A" } },
        { "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/warehouse/value-item-type", "code": "net-value", "display": "Wartość netto" }] }, "valueMoney": { "value": 1000, "currency": "PLN" } },
        { "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/warehouse/value-item-type", "code": "vat-rate", "display": "Stawka VAT" }] }, "valueCodeableConcept": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/warehouse/invoice-position-vat-rate", "code": "23" }] } },
        { "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/warehouse/value-item-type", "code": "tax-value", "display": "Wartość VAT" }] }, "valueMoney": { "value": 230, "currency": "PLN" } },
        { "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/warehouse/value-item-type", "code": "gross-value", "display": "Wartość brutto" }] }, "valueMoney": { "value": 1230, "currency": "PLN" } }
      ]
    },
    {
      "positionNo": 2,
      "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/warehouse/document-position-type", "code": "vat-summary-line", "display": "Podsumowanie VAT" }] },
      "value": [
        { "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/warehouse/value-item-type", "code": "vat-rate" }] }, "valueCodeableConcept": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/warehouse/invoice-position-vat-rate", "code": "23" }] } },
        { "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/warehouse/value-item-type", "code": "net-value" }] }, "valueMoney": { "value": 1000, "currency": "PLN" } },
        { "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/warehouse/value-item-type", "code": "tax-value" }] }, "valueMoney": { "value": 230, "currency": "PLN" } }
      ]
    }
  ],
  "attribute": [
    { "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/warehouse/document-attribute-type", "code": "total-net", "display": "Suma netto" }] }, "value": { "valueMoney": { "value": 1000, "currency": "PLN" } } },
    { "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/warehouse/document-attribute-type", "code": "total-vat", "display": "Suma VAT" }] }, "value": { "valueMoney": { "value": 230, "currency": "PLN" } } },
    { "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/warehouse/document-attribute-type", "code": "total-gross", "display": "Suma brutto" }] }, "value": { "valueMoney": { "value": 1230, "currency": "PLN" } } }
  ]
}

Uwaga: Pozycja i podsumowanie VAT są w position[]; każda wartość to element value[] (ValueItem) z type ze słownika warehouse/value-item-type i jedną z wartości value*. Podsumowanie dokumentu (suma netto, VAT, brutto) jest w attribute[] (warehouse/document-attribute-type). Kod warehouse-document rozpoznaje profil; wersja 1.0.0 pliku warehouse/document-category jeszcze go nie publikuje. Dekretacja faktury w API.ERP: wyłącznie PostingInstruction (postingLine[]) + Invoice, nie przez DocumentReference.

2a. Zmiana statusu dokumentu magazynowego (PATCH)

PATCH /v1/document-references przyjmuje zasób z profilem WarehouseDocument; cel wskazuje identifier[] w treści, a zmianę niesie status:

{
  "resourceType": "DocumentReference",
  "meta": { "profile": ["https://api-erp.kamsoft.pl/ns/StructureDefinition/WarehouseDocument"] },
  "identifier": [{ "system": "urn:oid:2.999.3", "value": "88" }],
  "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/warehouse/document-type", "code": "6" }] },
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/warehouse/document-status", "code": "not-buffer", "display": "Przyjęty" }] }
}

Odpowiedź 200 z kopertą { "items": [ … ] } zawierającą wynik operacji po stronie systemu magazynowego.


3. Magazyn — przyjęcie i wydanie (GR / GI)

Przyjęcie (GR, goods receipt) i wydanie (GI, goods issue) nie są modelowane jako DocumentReference. Wyłączny zasób: InventoryDocument z movementType receipt lub issue, endpoint /v1/inventory-documents. Pełne przykłady JSON: WMS-Examples — § 7 (w tym #gr-receipt-example i #gi-issue-example).


4. Diagramy zależności obiektów DocumentReference

4.1. Struktura DocumentReference, DocumentPosition i ValueItem

erDiagram
    DocumentReference ||--o{ DocumentPosition : "position"
    DocumentReference }o--o{ Party : "participant"
    DocumentReference }o--o{ Attribute : "attribute"
    DocumentReference }o--o{ Attachment : "attachment"
    DocumentReference }o--o{ DocumentReference : "basedOn"
    DocumentPosition ||--o{ ValueItem : "value"
    ValueItem }o--o| ProductDefinition : "valueReference"

    DocumentReference {
        string id
        CodeableConcept category
        CodeableConcept type
        CodeableConcept status
        CodeableConcept space
        date issueDate
        Reference participant
        Reference basedOn
    }

    DocumentPosition {
        integer positionNo
        CodeableConcept code
        CodeableConcept status
        ValueItem value
        Attachment attachment
    }

    ValueItem {
        CodeableConcept type
        Quantity valueQuantity
        Money valueMoney
        string valueString
        CodeableConcept valueCodeableConcept
        Reference valueReference
    }

4.2. Profile i typy dokumentów

flowchart TB
    subgraph DR["DocumentReference"]
        D[identifier, category, type, status, issueDate, participant]
    end

    D --> HR[HrInboxDocument: dokument w skrzynce kadrowej\ntype z hr-inbox-document-type]
    D --> WHS[WarehouseDocument: zamówienie, zapotrzebowanie, komis\ntype z warehouse/document-type]
    WHS -.->|GR/GI/MM| INV[InventoryDocument]

4.3. Position (code) a value[] w zależności od profilu

flowchart LR
    subgraph WHS_pos["WarehouseDocument: order-line, vat-summary-line"]
        C1[value: valueReference → ProductDefinition\nvalue-item-type: net-value, vat-rate, tax-value, gross-value\nattribute: total-net, total-vat, total-gross]
    end

    subgraph INV_pos["InventoryDocument: GR/GI (nie DocumentReference)"]
        C2[InventoryDocumentPosition:\nproduct, quantity, from/to Location]
    end

    subgraph HR_pos["HrInboxDocument: bez pozycji"]
        C3[attachment: treść dokumentu\nattribute: external-system-name, external-document-id]
    end

Podsumowanie

Profil Typ dokumentu (type) Position (code) Wykorzystane pola DocumentPosition / attribute
HrInboxDocument słownik wdrożeniowy hr-inbox-document-type (bez pozycji) attachment; attribute: external-system-name, external-document-id, receive-operation-comment
WarehouseDocument warehouse/document-type: 1, 6, 8, 10 order-line, vat-summary-line, goods-receipt-line, goods-issue-line positionNo, code, status, value[] (valueReference, valueMoney, valueCodeableConcept); attribute: total-net, total-vat, total-gross
InventoryDocument (GR/GI) (InventoryDocument.type) (InventoryDocumentPosition) product, quantity, fromLocation, toLocation

Profile różnią się category, type i code pozycji oraz wyborem składników value[] i attribute[]; struktura rdzenia jest wspólna.