diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index 34aabced618..597e64f7186 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -105,10 +105,11 @@ "name": "ABCInventoryModuleData", "description": "ABCInventoryModuleData defining the structure of ABCInventoryModuleData including Principal Data, inventory, and transaction data in ABC-Plan's Inventory Management Module", "fileMatch": ["abc-inventory-module-data-*.json"], - "url": "https://json.schemastore.org/abc-inventory-module-data-2.0.0.json", + "url": "https://json.schemastore.org/abc-inventory-module-data-3.0.0.json", "versions": { "1.0.0": "https://json.schemastore.org/abc-inventory-module-data-1.0.0.json", - "2.0.0": "https://json.schemastore.org/abc-inventory-module-data-2.0.0.json" + "2.0.0": "https://json.schemastore.org/abc-inventory-module-data-2.0.0.json", + "3.0.0": "https://json.schemastore.org/abc-inventory-module-data-2.0.0.json" } }, { diff --git a/src/negative_test/abc-inventory-module-data-3.0.0/abc-inventory-module-data-missing-schema-property.json b/src/negative_test/abc-inventory-module-data-3.0.0/abc-inventory-module-data-missing-schema-property.json new file mode 100644 index 00000000000..4df2a732be7 --- /dev/null +++ b/src/negative_test/abc-inventory-module-data-3.0.0/abc-inventory-module-data-missing-schema-property.json @@ -0,0 +1,10 @@ +{ + "ABCInventoryEntries": {}, + "ABCLocations": {}, + "ABCMaterialCategories": {}, + "ABCMaterialNumbers": {}, + "ABCProducts": {}, + "ABCReasonCodes": {}, + "ABCTransactions": [], + "ABCVendors": {} +} diff --git a/src/schemas/json/abc-inventory-module-data-3.0.0.json b/src/schemas/json/abc-inventory-module-data-3.0.0.json new file mode 100644 index 00000000000..539be4ea59f --- /dev/null +++ b/src/schemas/json/abc-inventory-module-data-3.0.0.json @@ -0,0 +1,984 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://json.schemastore.org/abc-inventory-module-data-3.0.0.json", + "title": "ABCInventoryModuleData JSON Schema", + "description": "Schema defining the structure of ABCInventoryModuleData including Principal Data, inventory, and transaction data in ABC-Plan's Inventory Management Module.", + "type": "object", + "definitions": { + "ABCStatus": { + "type": "string", + "enum": [ + "RELEASED", + "CONDITIONAL_RELEASED", + "QUARANTINE", + "ON_HOLD", + "EXPIRED", + "DAMAGED" + ] + }, + "ABCInventoryReceiveTransaction": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "timestamp": { + "type": "number" + }, + "transactionType": { + "type": "string", + "enum": ["receive"] + }, + "transactionData": { + "type": "object", + "properties": { + "lotNumber": { + "type": "string" + }, + "materialNumberID": { + "type": "string" + }, + "quantity": { + "type": "number" + }, + "dateOfExpiry": { + "type": "string", + "format": "date" + }, + "dateOfManufacture": { + "type": "string", + "format": "date" + }, + "poNumber": { + "type": "string" + }, + "statusID": { + "$ref": "#/definitions/ABCStatus" + }, + "locationID": { + "type": "string" + }, + "productID": { + "type": ["string", "null"] + }, + "notes": { + "type": "string" + } + }, + "required": [ + "lotNumber", + "materialNumberID", + "quantity", + "dateOfExpiry", + "dateOfManufacture", + "poNumber", + "statusID", + "locationID", + "productID", + "notes" + ], + "additionalProperties": false + }, + "targetLotID": { + "type": "string" + } + }, + "required": [ + "uid", + "timestamp", + "transactionType", + "transactionData", + "targetLotID" + ], + "additionalProperties": false + }, + "ABCInventoryBuildTransaction": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "timestamp": { + "type": "number" + }, + "transactionType": { + "type": "string", + "enum": ["build"] + }, + "transactionData": { + "type": "object", + "properties": { + "lotNumber": { + "type": "string" + }, + "materialNumberID": { + "type": "string" + }, + "quantity": { + "type": "number" + }, + "dateOfExpiry": { + "type": "string", + "format": "date" + }, + "dateOfManufacture": { + "type": "string", + "format": "date" + }, + "poNumber": { + "type": "string" + }, + "statusID": { + "$ref": "#/definitions/ABCStatus" + }, + "locationID": { + "type": "string" + }, + "upstreams": { + "type": "array", + "items": { + "type": "object", + "properties": { + "lotID": { + "type": "string" + }, + "quantity": { + "type": "number" + } + }, + "required": ["lotID", "quantity"], + "additionalProperties": false + } + }, + "upstreamIDs": { + "type": "array", + "items": { + "type": "string" + } + }, + "upstreamLotNumbers": { + "type": "array", + "items": { + "type": "string" + } + }, + "upstreamQuantities": { + "type": "array", + "items": { + "type": "number" + } + }, + "upstreamMaterialNumberIDs": { + "type": "array", + "items": { + "type": "string" + } + }, + "upstreamLocationIDs": { + "type": "array", + "items": { + "type": "string" + } + }, + "productID": { + "type": ["string", "null"] + }, + "upstreamProductIDs": { + "type": "array", + "items": { + "type": ["string", "null"] + } + }, + "notes": { + "type": "string" + } + }, + "required": [ + "lotNumber", + "materialNumberID", + "quantity", + "dateOfExpiry", + "dateOfManufacture", + "poNumber", + "statusID", + "locationID", + "upstreams", + "upstreamIDs", + "upstreamLotNumbers", + "upstreamQuantities", + "upstreamMaterialNumberIDs", + "upstreamLocationIDs", + "productID", + "upstreamProductIDs", + "notes" + ], + "additionalProperties": false + }, + "targetLotID": { + "type": "string" + } + }, + "required": [ + "uid", + "timestamp", + "transactionType", + "transactionData", + "targetLotID" + ], + "additionalProperties": false + }, + "ABCInventoryTransferTransaction": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "timestamp": { + "type": "number" + }, + "transactionType": { + "type": "string", + "enum": ["transfer"] + }, + "transactionData": { + "type": "object", + "properties": { + "lotID": { + "type": "string" + }, + "newLocationID": { + "type": "string" + }, + "quantity": { + "type": "number" + }, + "lotNumber": { + "type": "string" + }, + "materialNumberID": { + "type": "string" + }, + "locationID": { + "type": "string" + }, + "productID": { + "type": ["string", "null"] + }, + "notes": { + "type": "string" + } + }, + "required": [ + "lotID", + "newLocationID", + "quantity", + "lotNumber", + "materialNumberID", + "locationID", + "productID", + "notes" + ], + "additionalProperties": false + }, + "targetLotID": { + "type": "string" + } + }, + "required": [ + "uid", + "timestamp", + "transactionType", + "transactionData", + "targetLotID" + ], + "additionalProperties": false + }, + "ABCInventoryStatusChangeTransaction": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "timestamp": { + "type": "number" + }, + "transactionType": { + "type": "string", + "enum": ["statusChange"] + }, + "transactionData": { + "type": "object", + "properties": { + "lotID": { + "type": "string" + }, + "newStatusID": { + "$ref": "#/definitions/ABCStatus" + }, + "quantity": { + "type": "number" + }, + "lotNumber": { + "type": "string" + }, + "materialNumberID": { + "type": "string" + }, + "locationID": { + "type": "string" + }, + "productID": { + "type": ["string", "null"] + }, + "notes": { + "type": "string" + } + }, + "required": [ + "lotID", + "newStatusID", + "quantity", + "lotNumber", + "materialNumberID", + "locationID", + "productID", + "notes" + ], + "additionalProperties": false + }, + "targetLotID": { + "type": "string" + } + }, + "required": [ + "uid", + "timestamp", + "transactionType", + "transactionData", + "targetLotID" + ], + "additionalProperties": false + }, + "ABCInventoryDistributeTransaction": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "timestamp": { + "type": "number" + }, + "transactionType": { + "type": "string", + "enum": ["distribute"] + }, + "transactionData": { + "type": "object", + "properties": { + "lotID": { + "type": "string" + }, + "quantity": { + "type": "number" + }, + "lotNumber": { + "type": "string" + }, + "materialNumberID": { + "type": "string" + }, + "locationID": { + "type": "string" + }, + "productID": { + "type": ["string", "null"] + }, + "notes": { + "type": "string" + } + }, + "required": [ + "lotID", + "quantity", + "lotNumber", + "materialNumberID", + "locationID", + "productID", + "notes" + ], + "additionalProperties": false + } + }, + "required": ["uid", "timestamp", "transactionType", "transactionData"], + "additionalProperties": false + }, + "ABCInventoryDestroyTransaction": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "timestamp": { + "type": "number" + }, + "transactionType": { + "type": "string", + "enum": ["destroy"] + }, + "transactionData": { + "type": "object", + "properties": { + "lotID": { + "type": "string" + }, + "lotNumber": { + "type": "string" + }, + "materialNumberID": { + "type": "string" + }, + "locationID": { + "type": "string" + }, + "productID": { + "type": ["string", "null"] + }, + "notes": { + "type": "string" + } + }, + "required": [ + "lotID", + "lotNumber", + "materialNumberID", + "locationID", + "productID", + "notes" + ], + "additionalProperties": false + } + }, + "required": ["uid", "timestamp", "transactionType", "transactionData"], + "additionalProperties": false + }, + "ABCInventorySellTransaction": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "timestamp": { + "type": "number" + }, + "transactionType": { + "type": "string", + "enum": ["sell"] + }, + "transactionData": { + "type": "object", + "properties": { + "lotID": { + "type": "string" + }, + "quantity": { + "type": "number" + }, + "lotNumber": { + "type": "string" + }, + "materialNumberID": { + "type": "string" + }, + "locationID": { + "type": "string" + }, + "productID": { + "type": ["string", "null"] + }, + "notes": { + "type": "string" + } + }, + "required": [ + "lotID", + "quantity", + "lotNumber", + "materialNumberID", + "locationID", + "productID", + "notes" + ], + "additionalProperties": false + } + }, + "required": ["uid", "timestamp", "transactionType", "transactionData"], + "additionalProperties": false + }, + "ABCInventoryAdjustTransaction": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "timestamp": { + "type": "number" + }, + "transactionType": { + "type": "string", + "enum": ["adjust"] + }, + "transactionData": { + "type": "object", + "properties": { + "lotID": { + "type": "string" + }, + "newQuantity": { + "type": "number" + }, + "reasonCodeID": { + "type": "string" + }, + "lotNumber": { + "type": "string" + }, + "materialNumberID": { + "type": "string" + }, + "locationID": { + "type": "string" + }, + "productID": { + "type": ["string", "null"] + }, + "notes": { + "type": "string" + } + }, + "required": [ + "lotID", + "newQuantity", + "reasonCodeID", + "lotNumber", + "materialNumberID", + "locationID", + "productID", + "notes" + ], + "additionalProperties": false + }, + "oldQuantity": { + "type": "number" + } + }, + "required": [ + "uid", + "timestamp", + "transactionType", + "transactionData", + "oldQuantity" + ], + "additionalProperties": false + }, + "ABCInventoryChangeExpiryTransaction": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "timestamp": { + "type": "number" + }, + "transactionType": { + "type": "string", + "enum": ["changeExpiry"] + }, + "transactionData": { + "type": "object", + "properties": { + "lotID": { + "type": "string" + }, + "newDateOfExpiry": { + "type": "string" + }, + "lotNumber": { + "type": "string" + }, + "materialNumberID": { + "type": "string" + }, + "locationID": { + "type": "string" + }, + "productID": { + "type": ["string", "null"] + }, + "notes": { + "type": "string" + } + }, + "required": [ + "lotID", + "newDateOfExpiry", + "lotNumber", + "materialNumberID", + "locationID", + "productID", + "notes" + ], + "additionalProperties": false + } + }, + "required": ["uid", "timestamp", "transactionType", "transactionData"], + "additionalProperties": false + }, + "ABCInventoryTransaction": { + "oneOf": [ + { "$ref": "#/definitions/ABCInventoryReceiveTransaction" }, + { "$ref": "#/definitions/ABCInventoryBuildTransaction" }, + { "$ref": "#/definitions/ABCInventoryTransferTransaction" }, + { "$ref": "#/definitions/ABCInventoryStatusChangeTransaction" }, + { "$ref": "#/definitions/ABCInventoryDistributeTransaction" }, + { "$ref": "#/definitions/ABCInventoryDestroyTransaction" }, + { "$ref": "#/definitions/ABCInventorySellTransaction" }, + { "$ref": "#/definitions/ABCInventoryAdjustTransaction" }, + { "$ref": "#/definitions/ABCInventoryChangeExpiryTransaction" } + ] + }, + "ABCInventoryEntryWithoutUpstreams": { + "type": "object", + "properties": { + "lotNumber": { + "type": "string" + }, + "materialNumberID": { + "type": "string" + }, + "productID": { + "type": ["string", "null"] + }, + "quantity": { + "type": "number" + }, + "dateOfExpiry": { + "type": "string", + "format": "date" + }, + "dateOfManufacture": { + "type": "string", + "format": "date" + }, + "poNumber": { + "type": "string" + }, + "statusID": { + "$ref": "#/definitions/ABCStatus" + }, + "locationID": { + "type": "string" + }, + "hasUpstreams": { + "type": "boolean", + "enum": [false] + }, + "transactionNotes": { + "type": "array", + "items": { + "type": "string" + } + }, + "lotNumberLowercase": { + "type": "string" + } + }, + "required": [ + "lotNumber", + "materialNumberID", + "productID", + "quantity", + "dateOfExpiry", + "dateOfManufacture", + "poNumber", + "statusID", + "locationID", + "hasUpstreams", + "transactionNotes", + "lotNumberLowercase" + ], + "additionalProperties": false + }, + "ABCInventoryEntryWithUpstreams": { + "type": "object", + "properties": { + "lotNumber": { + "type": "string" + }, + "materialNumberID": { + "type": "string" + }, + "productID": { + "type": ["string", "null"] + }, + "quantity": { + "type": "number" + }, + "dateOfExpiry": { + "type": "string", + "format": "date" + }, + "dateOfManufacture": { + "type": "string", + "format": "date" + }, + "poNumber": { + "type": "string" + }, + "statusID": { + "$ref": "#/definitions/ABCStatus" + }, + "locationID": { + "type": "string" + }, + "hasUpstreams": { + "type": "boolean", + "enum": [true] + }, + "upstreamIDs": { + "type": "array", + "items": { + "type": "string" + } + }, + "upstreamQuantities": { + "type": "array", + "items": { + "type": "number" + } + }, + "upstreamLotNumbers": { + "type": "array", + "items": { + "type": "string" + } + }, + "transactionNotes": { + "type": "array", + "items": { + "type": "string" + } + }, + "lotNumberLowercase": { + "type": "string" + } + }, + "required": [ + "lotNumber", + "materialNumberID", + "productID", + "quantity", + "dateOfExpiry", + "dateOfManufacture", + "poNumber", + "statusID", + "locationID", + "hasUpstreams", + "upstreamIDs", + "upstreamQuantities", + "upstreamLotNumbers", + "transactionNotes", + "lotNumberLowercase" + ], + "additionalProperties": false + }, + "ABCInventoryEntry": { + "oneOf": [ + { "$ref": "#/definitions/ABCInventoryEntryWithoutUpstreams" }, + { "$ref": "#/definitions/ABCInventoryEntryWithUpstreams" } + ] + } + }, + "properties": { + "$schema": { + "description": "Link to https://json.schemastore.org/abc-inventory-module-data-3.0.0.json", + "type": "string", + "enum": [ + "https://json.schemastore.org/abc-inventory-module-data-3.0.0.json" + ] + }, + "ABCProducts": { + "type": "object", + "patternProperties": { + "^[a-zA-Z0-9_-]+$": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "isActive": { + "type": "boolean" + } + }, + "required": ["name", "isActive"], + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "ABCVendors": { + "type": "object", + "patternProperties": { + "^[a-zA-Z0-9_-]+$": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "isActive": { + "type": "boolean" + } + }, + "required": ["name", "isActive"], + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "ABCMaterialCategories": { + "type": "object", + "patternProperties": { + "^[a-zA-Z0-9_-]+$": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "isActive": { + "type": "boolean" + } + }, + "required": ["name", "isActive", "prefix"], + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "ABCMaterialNumbers": { + "type": "object", + "patternProperties": { + "^[a-zA-Z0-9_-]+$": { + "type": "object", + "properties": { + "productID": { + "type": ["string", "null"] + }, + "vendorID": { + "type": ["string", "null"] + }, + "materialCategoryID": { + "type": "string" + }, + "number": { + "type": "number" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "unitOfMeasure": { + "type": "string" + }, + "isActive": { + "type": "boolean" + } + }, + "required": [ + "productID", + "vendorID", + "materialCategoryID", + "number", + "name", + "description", + "unitOfMeasure", + "isActive" + ], + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "ABCLocations": { + "type": "object", + "patternProperties": { + "^[a-zA-Z0-9_-]+$": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "isActive": { + "type": "boolean" + } + }, + "required": ["name", "isActive"], + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "ABCReasonCodes": { + "type": "object", + "patternProperties": { + "^[a-zA-Z0-9_-]+$": { + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "description": { + "type": "string" + }, + "isActive": { + "type": "boolean" + } + }, + "required": ["code", "description", "isActive"], + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "ABCTransactions": { + "type": "array", + "items": { + "$ref": "#/definitions/ABCInventoryTransaction" + } + }, + "ABCInventoryEntries": { + "type": "object", + "patternProperties": { + "^[a-zA-Z0-9_-]+$": { + "$ref": "#/definitions/ABCInventoryEntry" + } + }, + "additionalProperties": false + } + }, + "required": [ + "$schema", + "ABCProducts", + "ABCVendors", + "ABCMaterialCategories", + "ABCMaterialNumbers", + "ABCLocations", + "ABCReasonCodes", + "ABCTransactions", + "ABCInventoryEntries" + ], + "additionalProperties": false +} diff --git a/src/test/abc-inventory-module-data-3.0.0/abc-inventory-module-data.json b/src/test/abc-inventory-module-data-3.0.0/abc-inventory-module-data.json new file mode 100644 index 00000000000..ff700f460e7 --- /dev/null +++ b/src/test/abc-inventory-module-data-3.0.0/abc-inventory-module-data.json @@ -0,0 +1,744 @@ +{ + "$schema": "https://json.schemastore.org/abc-inventory-module-data-3.0.0.json", + "ABCInventoryEntries": { + "HuY3I5QOC3IYgVjzM6wA": { + "dateOfExpiry": "2024-10-01", + "dateOfManufacture": "2024-08-19", + "hasUpstreams": true, + "locationID": "OgB3eLUlOtCIgbt68zUR", + "lotNumber": "SubJul24002", + "lotNumberLowercase": "subjul24002", + "materialNumberID": "Ma6GJi4KFsE3a2BR8aKC", + "poNumber": "XXX", + "productID": "nEIph0fwQRIvD0CMcydi", + "quantity": 55, + "statusID": "QUARANTINE", + "transactionNotes": [""], + "upstreamIDs": ["niFr2QAuUKx3REvZ84V5", "2hpDNvUCH1EJaqKRCzE5"], + "upstreamLotNumbers": ["PowJul24001", "FilJul24001"], + "upstreamQuantities": [100, 100] + }, + "M226Bm59h6emhEiZ6Lvu": { + "dateOfExpiry": "2027-08-19", + "dateOfManufacture": "2024-08-19", + "hasUpstreams": false, + "locationID": "4a1aGdFiiElKm9nd7OMh", + "lotNumber": "FilJul24002", + "lotNumberLowercase": "filjul24002", + "materialNumberID": "a3HpfGns3ONf3ivvQTS4", + "poNumber": "XXX", + "productID": null, + "quantity": 400, + "statusID": "RELEASED", + "transactionNotes": [""] + }, + "NlgrI220ev49IB2fvL0L": { + "dateOfExpiry": "2024-10-10", + "dateOfManufacture": "2024-08-19", + "hasUpstreams": false, + "locationID": "4a1aGdFiiElKm9nd7OMh", + "lotNumber": "PowJul24002", + "lotNumberLowercase": "powjul24002", + "materialNumberID": "iqH7RXTmPpcjT0uHF6Kf", + "poNumber": "XXX", + "productID": null, + "quantity": 100, + "statusID": "RELEASED", + "transactionNotes": ["received 400 grams of powder @ PCI", ""] + }, + "QfWY56vH4oLL9SMEwEyZ": { + "dateOfExpiry": "2024-09-30", + "dateOfManufacture": "2024-08-19", + "hasUpstreams": true, + "locationID": "OgB3eLUlOtCIgbt68zUR", + "lotNumber": "DrugJul24001", + "lotNumberLowercase": "drugjul24001", + "materialNumberID": "jAJIy67csn5wOmfXT606", + "poNumber": "XXX", + "productID": "nEIph0fwQRIvD0CMcydi", + "quantity": 100, + "statusID": "ON_HOLD", + "transactionNotes": [""], + "upstreamIDs": ["u7sJf61apVvITF4XZ3Ak", "2hpDNvUCH1EJaqKRCzE5"], + "upstreamLotNumbers": ["RawJul24001", "FilJul24001"], + "upstreamQuantities": [100, 100] + }, + "YhoFr0gkZi0r2sOqXnbd": { + "dateOfExpiry": "2024-10-01", + "dateOfManufacture": "2024-08-19", + "hasUpstreams": true, + "locationID": "OgB3eLUlOtCIgbt68zUR", + "lotNumber": "SubJul24002", + "lotNumberLowercase": "subjul24002", + "materialNumberID": "Ma6GJi4KFsE3a2BR8aKC", + "poNumber": "XXX", + "productID": "nEIph0fwQRIvD0CMcydi", + "quantity": 25, + "statusID": "RELEASED", + "transactionNotes": [""], + "upstreamIDs": ["niFr2QAuUKx3REvZ84V5", "2hpDNvUCH1EJaqKRCzE5"], + "upstreamLotNumbers": ["PowJul24001", "FilJul24001"], + "upstreamQuantities": [100, 100] + }, + "cXDig3e4ZU8goPYSNXfk": { + "dateOfExpiry": "2024-10-01", + "dateOfManufacture": "2024-08-19", + "hasUpstreams": true, + "locationID": "4a1aGdFiiElKm9nd7OMh", + "lotNumber": "SubJul24001", + "lotNumberLowercase": "subjul24001", + "materialNumberID": "Ma6GJi4KFsE3a2BR8aKC", + "poNumber": "XXX", + "productID": "nEIph0fwQRIvD0CMcydi", + "quantity": 100, + "statusID": "CONDITIONAL_RELEASED", + "transactionNotes": [""], + "upstreamIDs": ["niFr2QAuUKx3REvZ84V5", "2hpDNvUCH1EJaqKRCzE5"], + "upstreamLotNumbers": ["PowJul24001", "FilJul24001"], + "upstreamQuantities": [200, 200] + }, + "lJvkG0iWXY37Ltk0LyAG": { + "dateOfExpiry": "2024-10-01", + "dateOfManufacture": "2024-08-19", + "hasUpstreams": true, + "locationID": "OgB3eLUlOtCIgbt68zUR", + "lotNumber": "SubJul24002", + "lotNumberLowercase": "subjul24002", + "materialNumberID": "Ma6GJi4KFsE3a2BR8aKC", + "poNumber": "XXX", + "productID": "nEIph0fwQRIvD0CMcydi", + "quantity": 20, + "statusID": "CONDITIONAL_RELEASED", + "transactionNotes": [""], + "upstreamIDs": ["niFr2QAuUKx3REvZ84V5", "2hpDNvUCH1EJaqKRCzE5"], + "upstreamLotNumbers": ["PowJul24001", "FilJul24001"], + "upstreamQuantities": [100, 100] + }, + "lYIjFW4QuOK3QMOhJO0F": { + "dateOfExpiry": "2024-10-10", + "dateOfManufacture": "2024-08-19", + "hasUpstreams": false, + "locationID": "4a1aGdFiiElKm9nd7OMh", + "lotNumber": "PowJul24002", + "lotNumberLowercase": "powjul24002", + "materialNumberID": "iqH7RXTmPpcjT0uHF6Kf", + "poNumber": "XXX", + "productID": null, + "quantity": 300, + "statusID": "QUARANTINE", + "transactionNotes": ["received 400 grams of powder @ PCI", ""] + }, + "niFr2QAuUKx3REvZ84V5": { + "dateOfExpiry": "2025-08-19", + "dateOfManufacture": "2024-08-19", + "hasUpstreams": false, + "locationID": "OgB3eLUlOtCIgbt68zUR", + "lotNumber": "PowJul24001", + "lotNumberLowercase": "powjul24001", + "materialNumberID": "iqH7RXTmPpcjT0uHF6Kf", + "poNumber": "XXX", + "productID": null, + "quantity": 200, + "statusID": "CONDITIONAL_RELEASED", + "transactionNotes": ["received 500 grams of powder"] + }, + "qP0qZNgg07QRtlRid9sP": { + "dateOfExpiry": "2024-10-01", + "dateOfManufacture": "2024-08-19", + "hasUpstreams": true, + "locationID": "4a1aGdFiiElKm9nd7OMh", + "lotNumber": "SubJul24001", + "lotNumberLowercase": "subjul24001", + "materialNumberID": "Ma6GJi4KFsE3a2BR8aKC", + "poNumber": "XXX", + "productID": "nEIph0fwQRIvD0CMcydi", + "quantity": 100, + "statusID": "RELEASED", + "transactionNotes": [""], + "upstreamIDs": ["niFr2QAuUKx3REvZ84V5", "2hpDNvUCH1EJaqKRCzE5"], + "upstreamLotNumbers": ["PowJul24001", "FilJul24001"], + "upstreamQuantities": [200, 200] + }, + "u7sJf61apVvITF4XZ3Ak": { + "dateOfExpiry": "2024-10-03", + "dateOfManufacture": "2024-08-19", + "hasUpstreams": false, + "locationID": "rrppj22Kc0Nru0JkwVaY", + "lotNumber": "RawJul24001", + "lotNumberLowercase": "rawjul24001", + "materialNumberID": "k2nScdH9FploRFsFiV5v", + "poNumber": "XXX", + "productID": null, + "quantity": 395, + "statusID": "RELEASED", + "transactionNotes": [""] + }, + "2hpDNvUCH1EJaqKRCzE5": { + "dateOfExpiry": "2027-08-19", + "dateOfManufacture": "2024-08-19", + "hasUpstreams": false, + "locationID": "OgB3eLUlOtCIgbt68zUR", + "lotNumber": "FilJul24001", + "lotNumberLowercase": "filjul24001", + "materialNumberID": "a3HpfGns3ONf3ivvQTS4", + "poNumber": "XXX", + "productID": null, + "quantity": 50, + "statusID": "RELEASED", + "transactionNotes": [ + "received 500 filters immediately released", + "Adjusting FilJul24001 from 100 to 50 because of a recount." + ] + } + }, + "ABCLocations": { + "OgB3eLUlOtCIgbt68zUR": { + "isActive": true, + "name": "Lonza" + }, + "opL7ZNdgnWyOA2d316FL": { + "isActive": true, + "name": "WH001" + }, + "rrppj22Kc0Nru0JkwVaY": { + "isActive": true, + "name": "Vetter Pharma" + }, + "4a1aGdFiiElKm9nd7OMh": { + "isActive": true, + "name": "PCI" + } + }, + "ABCMaterialCategories": { + "GcboF7f3Jb6XSAm6rRL9": { + "isActive": true, + "name": "Raw Materials", + "prefix": "RM" + }, + "NH5VfjvaBTxyPljSj134": { + "isActive": true, + "name": "Drug Substances", + "prefix": "DS" + }, + "Qb1skfq15N1XYYYCypu5": { + "isActive": true, + "name": "Drug Products", + "prefix": "DP" + }, + "j24b9kL39jXybrwkOOw0": { + "isActive": true, + "name": "Finished Goods", + "prefix": "FG" + } + }, + "ABCMaterialNumbers": { + "A3Rt4Qd5EhrwZJ08ud72": { + "description": "Drug Substance 3", + "isActive": true, + "materialCategoryID": "NH5VfjvaBTxyPljSj134", + "name": "Drug Substance 3", + "number": 3, + "productID": "nEIph0fwQRIvD0CMcydi", + "unitOfMeasure": "Gram", + "vendorID": "Em5n7e4Ai7N0ukiMPE2R" + }, + "E7yrHwaUJHqBGMCkSxO4": { + "description": "Drug Product 2", + "isActive": true, + "materialCategoryID": "Qb1skfq15N1XYYYCypu5", + "name": "Drug Product 2", + "number": 2, + "productID": "nEIph0fwQRIvD0CMcydi", + "unitOfMeasure": "Vial", + "vendorID": "MvRi8YAdxHZzQQwXplDT" + }, + "Ea5C6myMD1GPeBjTuwqL": { + "description": "Polyvinylpyrrolidone", + "isActive": true, + "materialCategoryID": "GcboF7f3Jb6XSAm6rRL9", + "name": "Raw Material 5", + "number": 5, + "productID": null, + "unitOfMeasure": "Gram", + "vendorID": "jrpB6edxOew0C2wJRahV" + }, + "Ma6GJi4KFsE3a2BR8aKC": { + "description": "Drug Substance 1", + "isActive": true, + "materialCategoryID": "NH5VfjvaBTxyPljSj134", + "name": "Drug Substance 1", + "number": 1, + "productID": "nEIph0fwQRIvD0CMcydi", + "unitOfMeasure": "Gram", + "vendorID": "Em5n7e4Ai7N0ukiMPE2R" + }, + "a3HpfGns3ONf3ivvQTS4": { + "description": "Filter", + "isActive": true, + "materialCategoryID": "GcboF7f3Jb6XSAm6rRL9", + "name": "Raw Material 2", + "number": 2, + "productID": null, + "unitOfMeasure": "Each", + "vendorID": "8ARRINY3d4mgZszXax5b" + }, + "ay8LxLkO36TFDCY0cZ6p": { + "description": "Drug Product 3", + "isActive": true, + "materialCategoryID": "Qb1skfq15N1XYYYCypu5", + "name": "Drug Product 3", + "number": 3, + "productID": "nEIph0fwQRIvD0CMcydi", + "unitOfMeasure": "Vial", + "vendorID": "MvRi8YAdxHZzQQwXplDT" + }, + "bTLmrI98HMzZoJ9sPhfT": { + "description": "Ethanol", + "isActive": true, + "materialCategoryID": "GcboF7f3Jb6XSAm6rRL9", + "name": "Raw Material 4", + "number": 4, + "productID": null, + "unitOfMeasure": "Gram", + "vendorID": "jrpB6edxOew0C2wJRahV" + }, + "gkABsSxa5kk0SCRcGN9O": { + "description": "Finished Goods 2", + "isActive": true, + "materialCategoryID": "j24b9kL39jXybrwkOOw0", + "name": "Finished Drug Product 2", + "number": 2, + "productID": "nEIph0fwQRIvD0CMcydi", + "unitOfMeasure": "Carton", + "vendorID": "jrpB6edxOew0C2wJRahV" + }, + "gr80V2uJDdUB4ekFMSS7": { + "description": "Drug Product 1", + "isActive": true, + "materialCategoryID": "Qb1skfq15N1XYYYCypu5", + "name": "Drug Product 1", + "number": 1, + "productID": "nEIph0fwQRIvD0CMcydi", + "unitOfMeasure": "Vial", + "vendorID": "MvRi8YAdxHZzQQwXplDT" + }, + "iqH7RXTmPpcjT0uHF6Kf": { + "description": "CDC Powder", + "isActive": true, + "materialCategoryID": "GcboF7f3Jb6XSAm6rRL9", + "name": "Raw Material 1", + "number": 1, + "productID": null, + "unitOfMeasure": "Gram", + "vendorID": "8ARRINY3d4mgZszXax5b" + }, + "jAJIy67csn5wOmfXT606": { + "description": "Drug Substance 2", + "isActive": true, + "materialCategoryID": "NH5VfjvaBTxyPljSj134", + "name": "Drug Substance 2", + "number": 2, + "productID": "nEIph0fwQRIvD0CMcydi", + "unitOfMeasure": "Gram", + "vendorID": "Em5n7e4Ai7N0ukiMPE2R" + }, + "k2nScdH9FploRFsFiV5v": { + "description": "Raw Material 3", + "isActive": true, + "materialCategoryID": "GcboF7f3Jb6XSAm6rRL9", + "name": "Raw Material 3", + "number": 3, + "productID": null, + "unitOfMeasure": "Gram", + "vendorID": "8ARRINY3d4mgZszXax5b" + }, + "rCkQNeWkMOCkmtdgy5wp": { + "description": "Titanium dioxide", + "isActive": true, + "materialCategoryID": "GcboF7f3Jb6XSAm6rRL9", + "name": "Raw Material 6", + "number": 6, + "productID": null, + "unitOfMeasure": "Gram", + "vendorID": "jrpB6edxOew0C2wJRahV" + }, + "0fGxg9j4v78c6QGSWkCh": { + "description": "Finished Goods 3", + "isActive": true, + "materialCategoryID": "j24b9kL39jXybrwkOOw0", + "name": "Finished Drug Product 3", + "number": 3, + "productID": "nEIph0fwQRIvD0CMcydi", + "unitOfMeasure": "Carton", + "vendorID": "jrpB6edxOew0C2wJRahV" + }, + "4BOskUTqjBkHYs2psKra": { + "description": "Finished Goods 1", + "isActive": true, + "materialCategoryID": "j24b9kL39jXybrwkOOw0", + "name": "Finished Drug Product 1", + "number": 1, + "productID": "nEIph0fwQRIvD0CMcydi", + "unitOfMeasure": "Carton", + "vendorID": "jrpB6edxOew0C2wJRahV" + } + }, + "ABCProducts": { + "SlcqasssHi4LWimfKLrd": { + "isActive": true, + "name": "Cogniva" + }, + "nEIph0fwQRIvD0CMcydi": { + "isActive": true, + "name": "Cerebrin" + } + }, + "ABCReasonCodes": { + "HFusf7KN2kfjMae81aRR": { + "code": "RC00001", + "description": "Material damaged", + "isActive": true + }, + "LitFsloXS3un0zi557af": { + "code": "RC00003", + "description": "Temperature excursion", + "isActive": true + }, + "ZV2wa5Rbmr3fY5vNoRhh": { + "code": "RC00002", + "description": "Deviation", + "isActive": true + }, + "cKmtTGy7YWhzGh9Y5CcM": { + "code": "RC00004", + "description": "Recount", + "isActive": true + }, + "ffGsqBRfbVtH2sZhhdYg": { + "code": "RC00005", + "description": "Better yield", + "isActive": true + } + }, + "ABCTransactions": [ + { + "targetLotID": "niFr2QAuUKx3REvZ84V5", + "timestamp": 1724091626161, + "transactionData": { + "dateOfExpiry": "2025-08-19", + "dateOfManufacture": "2024-08-19", + "locationID": "OgB3eLUlOtCIgbt68zUR", + "lotNumber": "PowJul24001", + "materialNumberID": "iqH7RXTmPpcjT0uHF6Kf", + "notes": "received 500 grams of powder", + "poNumber": "XXX", + "productID": null, + "quantity": 500, + "statusID": "CONDITIONAL_RELEASED" + }, + "transactionType": "receive", + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U" + }, + { + "targetLotID": "2hpDNvUCH1EJaqKRCzE5", + "timestamp": 1724091662949, + "transactionData": { + "dateOfExpiry": "2027-08-19", + "dateOfManufacture": "2024-08-19", + "locationID": "OgB3eLUlOtCIgbt68zUR", + "lotNumber": "FilJul24001", + "materialNumberID": "a3HpfGns3ONf3ivvQTS4", + "notes": "received 500 filters immediately released", + "poNumber": "XXX", + "productID": null, + "quantity": 500, + "statusID": "RELEASED" + }, + "transactionType": "receive", + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U" + }, + { + "targetLotID": "lYIjFW4QuOK3QMOhJO0F", + "timestamp": 1724091750976, + "transactionData": { + "dateOfExpiry": "2024-10-10", + "dateOfManufacture": "2024-08-19", + "locationID": "4a1aGdFiiElKm9nd7OMh", + "lotNumber": "PowJul24002", + "materialNumberID": "iqH7RXTmPpcjT0uHF6Kf", + "notes": "received 400 grams of powder @ PCI", + "poNumber": "XXX", + "productID": null, + "quantity": 400, + "statusID": "QUARANTINE" + }, + "transactionType": "receive", + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U" + }, + { + "targetLotID": "M226Bm59h6emhEiZ6Lvu", + "timestamp": 1724091809137, + "transactionData": { + "dateOfExpiry": "2027-08-19", + "dateOfManufacture": "2024-08-19", + "locationID": "4a1aGdFiiElKm9nd7OMh", + "lotNumber": "FilJul24002", + "materialNumberID": "a3HpfGns3ONf3ivvQTS4", + "notes": "", + "poNumber": "XXX", + "productID": null, + "quantity": 400, + "statusID": "RELEASED" + }, + "transactionType": "receive", + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U" + }, + { + "targetLotID": "cXDig3e4ZU8goPYSNXfk", + "timestamp": 1724091965795, + "transactionData": { + "dateOfExpiry": "2024-10-01", + "dateOfManufacture": "2024-08-19", + "locationID": "4a1aGdFiiElKm9nd7OMh", + "lotNumber": "SubJul24001", + "materialNumberID": "Ma6GJi4KFsE3a2BR8aKC", + "notes": "", + "poNumber": "XXX", + "productID": "nEIph0fwQRIvD0CMcydi", + "quantity": 200, + "statusID": "CONDITIONAL_RELEASED", + "upstreamIDs": ["niFr2QAuUKx3REvZ84V5", "2hpDNvUCH1EJaqKRCzE5"], + "upstreamLocationIDs": ["OgB3eLUlOtCIgbt68zUR", "OgB3eLUlOtCIgbt68zUR"], + "upstreamLotNumbers": ["PowJul24001", "FilJul24001"], + "upstreamMaterialNumberIDs": [ + "iqH7RXTmPpcjT0uHF6Kf", + "a3HpfGns3ONf3ivvQTS4" + ], + "upstreamProductIDs": [null, null], + "upstreamQuantities": [200, 200], + "upstreams": [ + { + "lotID": "niFr2QAuUKx3REvZ84V5", + "quantity": 200 + }, + { + "lotID": "2hpDNvUCH1EJaqKRCzE5", + "quantity": 200 + } + ] + }, + "transactionType": "build", + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U" + }, + { + "targetLotID": "NlgrI220ev49IB2fvL0L", + "timestamp": 1724091987560, + "transactionData": { + "locationID": "4a1aGdFiiElKm9nd7OMh", + "lotID": "lYIjFW4QuOK3QMOhJO0F", + "lotNumber": "PowJul24002", + "materialNumberID": "iqH7RXTmPpcjT0uHF6Kf", + "newStatusID": "RELEASED", + "notes": "", + "productID": null, + "quantity": 100 + }, + "transactionType": "statusChange", + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U" + }, + { + "targetLotID": "HuY3I5QOC3IYgVjzM6wA", + "timestamp": 1724092097319, + "transactionData": { + "dateOfExpiry": "2024-10-01", + "dateOfManufacture": "2024-08-19", + "locationID": "OgB3eLUlOtCIgbt68zUR", + "lotNumber": "SubJul24002", + "materialNumberID": "Ma6GJi4KFsE3a2BR8aKC", + "notes": "", + "poNumber": "XXX", + "productID": "nEIph0fwQRIvD0CMcydi", + "quantity": 100, + "statusID": "QUARANTINE", + "upstreamIDs": ["niFr2QAuUKx3REvZ84V5", "2hpDNvUCH1EJaqKRCzE5"], + "upstreamLocationIDs": ["OgB3eLUlOtCIgbt68zUR", "OgB3eLUlOtCIgbt68zUR"], + "upstreamLotNumbers": ["PowJul24001", "FilJul24001"], + "upstreamMaterialNumberIDs": [ + "iqH7RXTmPpcjT0uHF6Kf", + "a3HpfGns3ONf3ivvQTS4" + ], + "upstreamProductIDs": [null, null], + "upstreamQuantities": [100, 100], + "upstreams": [ + { + "lotID": "niFr2QAuUKx3REvZ84V5", + "quantity": 100 + }, + { + "lotID": "2hpDNvUCH1EJaqKRCzE5", + "quantity": 100 + } + ] + }, + "transactionType": "build", + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U" + }, + { + "targetLotID": "qP0qZNgg07QRtlRid9sP", + "timestamp": 1724092133502, + "transactionData": { + "locationID": "4a1aGdFiiElKm9nd7OMh", + "lotID": "cXDig3e4ZU8goPYSNXfk", + "lotNumber": "SubJul24001", + "materialNumberID": "Ma6GJi4KFsE3a2BR8aKC", + "newStatusID": "RELEASED", + "notes": "", + "productID": "nEIph0fwQRIvD0CMcydi", + "quantity": 100 + }, + "transactionType": "statusChange", + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U" + }, + { + "targetLotID": "lJvkG0iWXY37Ltk0LyAG", + "timestamp": 1724192167647, + "transactionData": { + "locationID": "OgB3eLUlOtCIgbt68zUR", + "lotID": "HuY3I5QOC3IYgVjzM6wA", + "lotNumber": "SubJul24002", + "materialNumberID": "Ma6GJi4KFsE3a2BR8aKC", + "newStatusID": "CONDITIONAL_RELEASED", + "notes": "", + "productID": "nEIph0fwQRIvD0CMcydi", + "quantity": 20 + }, + "transactionType": "statusChange", + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U" + }, + { + "targetLotID": "YhoFr0gkZi0r2sOqXnbd", + "timestamp": 1724192190300, + "transactionData": { + "locationID": "OgB3eLUlOtCIgbt68zUR", + "lotID": "HuY3I5QOC3IYgVjzM6wA", + "lotNumber": "SubJul24002", + "materialNumberID": "Ma6GJi4KFsE3a2BR8aKC", + "newStatusID": "RELEASED", + "notes": "", + "productID": "nEIph0fwQRIvD0CMcydi", + "quantity": 25 + }, + "transactionType": "statusChange", + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U" + }, + { + "targetLotID": "u7sJf61apVvITF4XZ3Ak", + "timestamp": 1724193323613, + "transactionData": { + "dateOfExpiry": "2024-10-03", + "dateOfManufacture": "2024-08-19", + "locationID": "rrppj22Kc0Nru0JkwVaY", + "lotNumber": "RawJul24001", + "materialNumberID": "k2nScdH9FploRFsFiV5v", + "notes": "", + "poNumber": "XXX", + "productID": null, + "quantity": 495, + "statusID": "RELEASED" + }, + "transactionType": "receive", + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U" + }, + { + "targetLotID": "QfWY56vH4oLL9SMEwEyZ", + "timestamp": 1724195724040, + "transactionData": { + "dateOfExpiry": "2024-09-30", + "dateOfManufacture": "2024-08-19", + "locationID": "OgB3eLUlOtCIgbt68zUR", + "lotNumber": "DrugJul24001", + "materialNumberID": "jAJIy67csn5wOmfXT606", + "notes": "", + "poNumber": "XXX", + "productID": "nEIph0fwQRIvD0CMcydi", + "quantity": 100, + "statusID": "ON_HOLD", + "upstreamIDs": ["u7sJf61apVvITF4XZ3Ak", "2hpDNvUCH1EJaqKRCzE5"], + "upstreamLocationIDs": ["rrppj22Kc0Nru0JkwVaY", "OgB3eLUlOtCIgbt68zUR"], + "upstreamLotNumbers": ["RawJul24001", "FilJul24001"], + "upstreamMaterialNumberIDs": [ + "k2nScdH9FploRFsFiV5v", + "a3HpfGns3ONf3ivvQTS4" + ], + "upstreamProductIDs": [null, null], + "upstreamQuantities": [100, 100], + "upstreams": [ + { + "lotID": "u7sJf61apVvITF4XZ3Ak", + "quantity": 100 + }, + { + "lotID": "2hpDNvUCH1EJaqKRCzE5", + "quantity": 100 + } + ] + }, + "transactionType": "build", + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U" + }, + { + "oldQuantity": 100, + "timestamp": 1726259704819, + "transactionData": { + "locationID": "OgB3eLUlOtCIgbt68zUR", + "lotID": "2hpDNvUCH1EJaqKRCzE5", + "lotNumber": "FilJul24001", + "materialNumberID": "a3HpfGns3ONf3ivvQTS4", + "newQuantity": 50, + "notes": "Adjusting FilJul24001 from 100 to 50 because of a recount.", + "productID": null, + "reasonCodeID": "cKmtTGy7YWhzGh9Y5CcM" + }, + "transactionType": "adjust", + "uid": "wIecJIzS11VsWKoAfOgnxI4s3uo9" + } + ], + "ABCVendors": { + "Em5n7e4Ai7N0ukiMPE2R": { + "isActive": true, + "name": "Catalent" + }, + "GOVbaYnvGGZRMFaNvGyO": { + "isActive": true, + "name": "Lonza" + }, + "JQEsS6vhAfYJZqM9SJmn": { + "isActive": true, + "name": "XY" + }, + "MvRi8YAdxHZzQQwXplDT": { + "isActive": true, + "name": "AGC Biologics" + }, + "NuvEcBzsm1KLmtHugum7": { + "isActive": true, + "name": "Vetter Pharma" + }, + "OEibgkegBZAXb5NAt9iC": { + "isActive": true, + "name": "ICS" + }, + "jrpB6edxOew0C2wJRahV": { + "isActive": true, + "name": "AbVial" + }, + "oBIEe7gpSOk3pO4XQqL8": { + "isActive": true, + "name": "PCI" + }, + "8ARRINY3d4mgZszXax5b": { + "isActive": true, + "name": "FM" + } + } +}