PurchaseRequisition (zapotrzebowanie)
PurchaseRequisition (zapotrzebowanie / rekwizycja) to zasób magazynowy służący do przyjęcia i przechowywania zapotrzebowania utworzonego w systemie zewnętrznym i przekazanego do obsługi przez system magazynowy.
Zapotrzebowanie nie jest dokumentem księgowym – nie zawiera cen. Zawiera nagłówek i listę pozycji (position[]) z produktem (asortyment) i ilością.
Rozszerza DomainResource.
1. Zakres i zastosowanie
- Wejście do magazynu: system zewnętrzny przekazuje zapotrzebowanie, a system magazynowy tworzy u siebie dokument
PurchaseRequisitionz wiązaniem do identyfikatorów źródłowych. - Identyfikowalność: powiązanie z systemem źródłowym jest utrzymywane przez
identifier[]oraz (dla danych pomocniczych)attribute[]. - Zakres zasobu: przyjęcie i utrzymanie zapotrzebowania przekazanego z systemu zewnętrznego; zamówienia do dostawców, GR/FV, przesunięcia i rozchody leżą poza tym zasobem i są modelowane innymi typami (
PurchaseOrder,InventoryDocument,Invoice).
2. Zawartość (struktura)
Oprócz elementów DomainResource (id, resourceType, meta, owner, comment, category, status, type, contained, attribute):
| Nazwa | Kard. | Typ | Opis |
|---|---|---|---|
| identifier | 0..* | Identifier | Identyfikatory zapotrzebowania w przestrzeni urn:oid:1.2.616.1.113769.4.<instalacja>.<klucz> |
| symbol | 0..* | CodeableConcept | Symbol dokumentu zapotrzebowania (§3) |
| warehouse | 0..1 | Reference(Location) | Magazyn kontekstowy (Location w profilu Warehouse, category = warehouse) |
| participant | 0..* | Reference(Party) | Uczestnicy (np. jednostka zamawiająca, jednostka realizująca) |
| relatedDocument | 0..* | Reference | Powiązane dokumenty (np. zamówienie zakupu PurchaseOrder, dokument ruchu InventoryDocument) |
| issueDate | 0..1 | dateTime | Data i czas utworzenia |
| expectedDate | 0..1 | dateTime | Oczekiwana data i czas realizacji |
| description | 0..1 | string | Opis |
| note | 0..1 | string | Uwagi |
| transferDate | 0..1 | dateTime | Data przekazania |
| realizationDate | 0..1 | dateTime | Data zrealizowania zapotrzebowania |
| position | 1..* | struktura pozycji (§2a) | Pozycje zapotrzebowania zagnieżdżone w dokumencie |
Schemat wymaga position. status (z DomainResource) niesie kod ze słownika purchase-requisition-status.
2a. Pozycja (position[], struktura zagnieżdżona)
Pozycje są częścią zapotrzebowania: nie mają własnego endpointu ani identyfikatora. Pozycja nie rozszerza DomainResource; status, type i attribute są jej własnymi polami.
| Nazwa | Kard. | Typ | Opis |
|---|---|---|---|
| positionNo | 1..1 | integer | Numer pozycji (od 1); w torze zapisu pełni rolę identyfikatora pozycji po stronie magazynu |
| product | 1..1 | Reference(ProductDefinition) | Referencja do asortymentu |
| quantity | 1..1 | Quantity | Ilość żądana (value > 0; unit = nazwa jednostki, code = identyfikator jednostki w systemie magazynowym) |
| priority | 0..1 | CodeableConcept | Priorytet pozycji (system https://api-erp.kamsoft.pl/vs/warehouse/purchase-requisition-position-priority; adres w rejestrze, słownik nieopublikowany) |
| type | 0..1 | CodeableConcept | Typ pozycji (system https://api-erp.kamsoft.pl/vs/warehouse/purchase-requisition-position-type; adres w rejestrze, słownik nieopublikowany) |
| factor | 0..1 | number | Mnożnik/przelicznik dla ilości |
| attribute | 0..* | Attribute | Atrybuty pozycji (§2b) |
| status | 0..1 | CodeableConcept | Status pozycji |
| creationTime | 0..1 | dateTime | Data utworzenia pozycji |
| fulfilledQuantity | 0..1 | number | Ilość zrealizowana, może być częściowa |
| description | 0..1 | string | Opis pozycji |
Schemat pozycji wymaga positionNo, product, quantity.
2b. Kontekst medyczny i operacyjny
Rdzeń zasobu nie przewiduje osobnych pól dla pacjenta, lekarza ani numeru zlecenia, które mogą towarzyszyć pozycji zapotrzebowania w systemie źródłowym. Identyfikatory i numery ze źródła zapisuje się w attribute[] nagłówka lub pozycji jako valueString z kodem uzgodnionym z operatorem API; kody nadaje wdrożenie (brak opublikowanego słownika).
Instalacje łączące szpitalny obieg kliniczny z API.ERP: KAMSOFT oferuje osobno API.MED — interfejsy pod dane medyczne (np. pacjent, wizyta, zlecenie w ujęciu klinicznym), zbliżone modelem do HL7 FHIR. API.ERP (ten przewodnik) opisuje wyłącznie warstwę gospodarczą. Gdy umowa o integrację przewiduje powiązanie zapotrzebowania z rekordem klinicznym, profil instalacji może dopuścić Reference do zasobu opisanego w dokumentacji API.MED. Integrator nie zakłada obecności API.MED.
3. Mapowanie z modelem źródłowym
Odczyt (GET):
- identyfikator dokumentu →
identifier[0](system= przestrzeńurn:oid:…<klucz>, beztype) - symbol →
symbol[0].coding[0]ze stałymcode=symboli wartością wdisplay(systemhttps://api-erp.kamsoft.pl/vs/warehouse/purchase-requisition-symbol; adres w rejestrze, słownik nieopublikowany) - status (liczba w źródle) → kod ze słownika
purchase-requisition-status(0→not-delivered,1→in-preparation/handed-over,2→accepted,3→completed,4→rejected,5→ordered,6→draft,7→temporary,8→suspended,9→pending-director-approval,10→partially-ordered, inne →unknown) - magazyn →
warehouse(Reference do Location), firma →owner[0], jednostki →participant[] - pozycja: id pozycji →
positionNo, asortyment →product.identifier, ilość + jednostka →quantity
Zapis (POST) czyta odwrotnie: symbol[0].text, warehouse.identifier.value, owner[0].identifier.value, participant[0]/participant[1], status.coding[0].code (jako liczba źródłowa), na pozycji positionNo, product.identifier.value, quantity.value, quantity.code (id jednostki), quantity.unit, factor, creationTime, description.
4. Operacje
| Metoda | Ścieżka | Opis |
|---|---|---|
| GET | /v1/purchase-requisitions |
Lista zapotrzebowań |
| POST | /v1/purchase-requisitions |
Przekazanie zapotrzebowania do magazynu (treść: PurchaseRequisition z identifier[].system) |
Zapis może nieść przestrzeń identyfikatora (identifier[].system) — wskazuje ona wtedy magazyn rejestrujący zapotrzebowanie; bez niej magazyn rozstrzyga profil. value jest opcjonalne i nadaje je system prowadzący (rejestracja zasobu). Odpowiedź obu operacji ma kod 200 i kopertę { "items": [PurchaseRequisition…], "nextToken": null }.
Parametry GET /v1/purchase-requisitions:
| Parametr | Format | Opis |
|---|---|---|
identifier |
system\|value |
Identyfikator zapotrzebowania w przestrzeni urn:oid:1.2.616.1.113769.4.<instalacja>.<klucz> |
owner |
system\|value |
Firma (przestrzeń identyfikatora strony) |
status |
system\|value |
system = https://api-erp.kamsoft.pl/vs/warehouse/purchase-requisition-status, value = kod ze słownika; nieznany kod → 400 |
symbol |
system\|value |
system = https://api-erp.kamsoft.pl/vs/warehouse/purchase-requisition-symbol |
issueDateFrom, issueDateTo |
date | Zakres dat utworzenia |
count, offset |
integer | Paginacja (domyślnie 20 / 0) |
5. Artefakty
- Schemat: PurchaseRequisition.schema.json
- Schemat pozycji: PurchaseRequisitionPosition.schema.json
- Powiązanie realizacji z pozycją zapotrzebowania: InventoryDocument §2b