diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index 3edfa089ecf..90bbbc4d0a1 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -101,6 +101,15 @@ "1.3": "https://json.schemastore.org/aiproj-1.3.json" } }, + { + "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-1.0.0.json", + "versions": { + "1.0.0": "https://json.schemastore.org/abc-inventory-module-data-1.0.0.json" + } + }, { "name": "ABCSupplyPlan", "description": "ABCSupplyPlan representing all the state for performing inventory optimization and expiry analysis in ABC-Plan MasterPlanner", diff --git a/src/negative_test/abc-inventory-module-data-1.0.0/abc-inventory-module-data-missing-schema-property.json b/src/negative_test/abc-inventory-module-data-1.0.0/abc-inventory-module-data-missing-schema-property.json new file mode 100644 index 00000000000..cb578519c3f --- /dev/null +++ b/src/negative_test/abc-inventory-module-data-1.0.0/abc-inventory-module-data-missing-schema-property.json @@ -0,0 +1,10 @@ +{ + "ABCProducts": {}, + "ABCVendors": {}, + "ABCMaterialCategories": {}, + "ABCMaterialNumbers": {}, + "ABCLocations": {}, + "ABCReasonCodes": {}, + "ABCTransactions": [], + "ABCInventoryEntries": {} +} \ No newline at end of file diff --git a/src/schemas/json/abc-inventory-module-data-1.0.0.json b/src/schemas/json/abc-inventory-module-data-1.0.0.json new file mode 100644 index 00000000000..c1c28e87062 --- /dev/null +++ b/src/schemas/json/abc-inventory-module-data-1.0.0.json @@ -0,0 +1,1126 @@ +{ + "$id": "https://json.schemastore.org/abc-inventory-module-data-1.0.0.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "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" + }, + "cost": { + "type": "number" + }, + "productID": { + "type": [ + "string", + "null" + ] + }, + "notes": { + "type": "string" + } + }, + "required": [ + "lotNumber", + "materialNumberID", + "quantity", + "dateOfExpiry", + "dateOfManufacture", + "poNumber", + "statusID", + "locationID", + "cost", + "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" + }, + "cost": { + "type": "number" + }, + "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", + "cost", + "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" + }, + "cost": { + "type": "number" + }, + "lotNumber": { + "type": "string" + }, + "materialNumberID": { + "type": "string" + }, + "locationID": { + "type": "string" + }, + "productID": { + "type": [ + "string", + "null" + ] + }, + "notes": { + "type": "string" + } + }, + "required": [ + "lotID", + "quantity", + "cost", + "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 + } + }, + "required": [ + "uid", + "timestamp", + "transactionType", + "transactionData" + ], + "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" + }, + "cost": { + "type": "number" + }, + "hasUpstreams": { + "type": "boolean", + "enum": [ + false + ] + }, + "transactionNotes": { + "type": "array", + "items": { + "type": "string" + } + }, + "lotNumberLowercase": { + "type": "string" + } + }, + "required": [ + "lotNumber", + "materialNumberID", + "productID", + "quantity", + "dateOfExpiry", + "dateOfManufacture", + "poNumber", + "statusID", + "locationID", + "cost", + "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" + }, + "cost": { + "type": "number" + }, + "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", + "cost", + "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-1.0.0.json", + "type": "string", + "enum": [ + "https://json.schemastore.org/abc-inventory-module-data-1.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 +} \ No newline at end of file diff --git a/src/test/abc-inventory-module-data-1.0.0/abc-inventory-module-data.json b/src/test/abc-inventory-module-data-1.0.0/abc-inventory-module-data.json new file mode 100644 index 00000000000..48efa575261 --- /dev/null +++ b/src/test/abc-inventory-module-data-1.0.0/abc-inventory-module-data.json @@ -0,0 +1,870 @@ +{ + "$schema": "https://json.schemastore.org/abc-inventory-module-data-1.0.0.json", + "ABCProducts": { + "ANDxFkVFRBVnsvdczXso": { + "isActive": true, + "name": "Cerebrin" + }, + "APjQO1TOw6jNFNjJMggV": { + "isActive": true, + "name": "Cogniva" + } + }, + "ABCVendors": { + "ok4Z2ZHoh7LiXMTlIGZ0": { + "isActive": true, + "name": "AGC Biologics" + }, + "ipBea62n8teUIsJS5xQe": { + "isActive": true, + "name": "AbVial" + }, + "ZqDS5pMHaQhfo4snE8Cd": { + "isActive": true, + "name": "Catalent" + }, + "oxQIzBxetPRW4G8Xu1v6": { + "isActive": true, + "name": "FM" + }, + "g06PpqbF1NPNPIdMDWmc": { + "isActive": true, + "name": "ICS" + }, + "Y0BuPpvH7aErANyFZFgi": { + "isActive": true, + "name": "Lonza" + }, + "PdZt6MRz8xvxFOH47kLm": { + "isActive": true, + "name": "PCI" + }, + "z7AEcWy6rXJOhyqJzWy7": { + "isActive": true, + "name": "Vetter Pharma" + }, + "LHHDL8QBYFfNqKNUISUf": { + "isActive": true, + "name": "XY" + } + }, + "ABCMaterialCategories": { + "sKjwbvAjSv6t7j1WwhHE": { + "isActive": true, + "name": "Drug Products", + "prefix": "DP" + }, + "zxb67dV3W18BXcnaHkJU": { + "isActive": true, + "name": "Drug Substances", + "prefix": "DS" + }, + "MsF9w8QwMBi1gqSQuDrz": { + "isActive": true, + "name": "Finished Goods", + "prefix": "FG" + }, + "C8ICDG3sEHfToQQOzGkh": { + "isActive": true, + "name": "Raw Materials", + "prefix": "RM" + } + }, + "ABCMaterialNumbers": { + "1OhAyPqaDGrehhuoRvD0": { + "isActive": true, + "productID": "ANDxFkVFRBVnsvdczXso", + "vendorID": "ok4Z2ZHoh7LiXMTlIGZ0", + "materialCategoryID": "sKjwbvAjSv6t7j1WwhHE", + "number": 1, + "name": "Drug Product 1", + "description": "Drug Product 1", + "unitOfMeasure": "Vial" + }, + "U00M572I3h9rdFKfgCbE": { + "isActive": true, + "productID": "ANDxFkVFRBVnsvdczXso", + "vendorID": "ok4Z2ZHoh7LiXMTlIGZ0", + "materialCategoryID": "sKjwbvAjSv6t7j1WwhHE", + "number": 2, + "name": "Drug Product 2", + "description": "Drug Product 2", + "unitOfMeasure": "Vial" + }, + "YsaWzdBZPSWVWcEJDM1k": { + "isActive": true, + "productID": "ANDxFkVFRBVnsvdczXso", + "vendorID": "ok4Z2ZHoh7LiXMTlIGZ0", + "materialCategoryID": "sKjwbvAjSv6t7j1WwhHE", + "number": 3, + "name": "Drug Product 3", + "description": "Drug Product 3", + "unitOfMeasure": "Vial" + }, + "mJkQ9nXxKcDelktJZcJ9": { + "isActive": true, + "productID": "ANDxFkVFRBVnsvdczXso", + "vendorID": "ZqDS5pMHaQhfo4snE8Cd", + "materialCategoryID": "zxb67dV3W18BXcnaHkJU", + "number": 1, + "name": "Drug Substance 1", + "description": "Drug Substance 1", + "unitOfMeasure": "Gram" + }, + "g6FY8ycoh3JFrMkgUanX": { + "isActive": true, + "productID": "ANDxFkVFRBVnsvdczXso", + "vendorID": "ZqDS5pMHaQhfo4snE8Cd", + "materialCategoryID": "zxb67dV3W18BXcnaHkJU", + "number": 2, + "name": "Drug Substance 2", + "description": "Drug Substance 2", + "unitOfMeasure": "Gram" + }, + "8pUEBFXKYrmisHH0u2ov": { + "isActive": true, + "productID": "ANDxFkVFRBVnsvdczXso", + "vendorID": "ZqDS5pMHaQhfo4snE8Cd", + "materialCategoryID": "zxb67dV3W18BXcnaHkJU", + "number": 3, + "name": "Drug Substance 3", + "description": "Drug Substance 3", + "unitOfMeasure": "Gram" + }, + "n85wwi58yBVATXXNWC8a": { + "isActive": true, + "productID": "ANDxFkVFRBVnsvdczXso", + "vendorID": "ipBea62n8teUIsJS5xQe", + "materialCategoryID": "MsF9w8QwMBi1gqSQuDrz", + "number": 1, + "name": "Finished Drug Product 1", + "description": "Finished Goods 1", + "unitOfMeasure": "Carton" + }, + "xdUrtBGbwYiY0yvGqiIs": { + "isActive": true, + "productID": "ANDxFkVFRBVnsvdczXso", + "vendorID": "ipBea62n8teUIsJS5xQe", + "materialCategoryID": "MsF9w8QwMBi1gqSQuDrz", + "number": 2, + "name": "Finished Drug Product 2", + "description": "Finished Goods 2", + "unitOfMeasure": "Carton" + }, + "AO5P5zZA6C0EjK3LeLyd": { + "isActive": true, + "productID": "ANDxFkVFRBVnsvdczXso", + "vendorID": "ipBea62n8teUIsJS5xQe", + "materialCategoryID": "MsF9w8QwMBi1gqSQuDrz", + "number": 3, + "name": "Finished Drug Product 3", + "description": "Finished Goods 3", + "unitOfMeasure": "Carton" + }, + "kAftjoSoCIRZlnMTpkR3": { + "isActive": true, + "productID": null, + "vendorID": "oxQIzBxetPRW4G8Xu1v6", + "materialCategoryID": "C8ICDG3sEHfToQQOzGkh", + "number": 1, + "name": "Raw Material 1", + "description": "CDC Powder", + "unitOfMeasure": "Gram" + }, + "xS5uGQrH1854opdmHoQs": { + "isActive": true, + "productID": null, + "vendorID": "oxQIzBxetPRW4G8Xu1v6", + "materialCategoryID": "C8ICDG3sEHfToQQOzGkh", + "number": 2, + "name": "Raw Material 2", + "description": "Filter", + "unitOfMeasure": "Each" + }, + "fNmIPEt7pZtZKZrgRrsT": { + "isActive": true, + "productID": null, + "vendorID": "oxQIzBxetPRW4G8Xu1v6", + "materialCategoryID": "C8ICDG3sEHfToQQOzGkh", + "number": 3, + "name": "Raw Material 3", + "description": "Raw Material 3", + "unitOfMeasure": "Gram" + }, + "NlbaZL4lSjPfiOk8gYSG": { + "isActive": true, + "productID": null, + "vendorID": "ipBea62n8teUIsJS5xQe", + "materialCategoryID": "C8ICDG3sEHfToQQOzGkh", + "number": 4, + "name": "Raw Material 4", + "description": "Ethanol", + "unitOfMeasure": "Gram" + }, + "VG2tess9YMu2aBgZLyF4": { + "isActive": true, + "productID": null, + "vendorID": "ipBea62n8teUIsJS5xQe", + "materialCategoryID": "C8ICDG3sEHfToQQOzGkh", + "number": 5, + "name": "Raw Material 5", + "description": "Polyvinylpyrrolidone", + "unitOfMeasure": "Gram" + }, + "En7FK66YP6AOKtD5PO3h": { + "isActive": true, + "productID": null, + "vendorID": "ipBea62n8teUIsJS5xQe", + "materialCategoryID": "C8ICDG3sEHfToQQOzGkh", + "number": 6, + "name": "Raw Material 6", + "description": "Titanium dioxide", + "unitOfMeasure": "Gram" + } + }, + "ABCLocations": { + "GFgcsuUkIe7ymD7r20K6": { + "isActive": true, + "name": "Lonza" + }, + "961O18l0ByZYXkWVZlBo": { + "isActive": true, + "name": "PCI" + }, + "HAvgQrYW8V12ZXLA43NF": { + "isActive": true, + "name": "Vetter Pharma" + }, + "RQHKtp1IGGxtNyhInTsL": { + "isActive": true, + "name": "WH001" + } + }, + "ABCReasonCodes": { + "Pgi7cQHGsJszaueWoQII": { + "isActive": true, + "code": "RC00001", + "description": "Material damaged" + }, + "wCCJtO7ADbUl1oVAZdEQ": { + "isActive": true, + "code": "RC00002", + "description": "Deviation" + }, + "lcLTu3fRDPy7E29MlG1Z": { + "isActive": true, + "code": "RC00003", + "description": "Temperature excursion" + }, + "8FyvHe5WGKxZeUHKOceC": { + "isActive": true, + "code": "RC00004", + "description": "Recount" + }, + "DJJdptzr1ceaeiii49rG": { + "isActive": true, + "code": "RC00005", + "description": "Better yield" + } + }, + "ABCTransactions": [ + { + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U", + "timestamp": 1724091626161, + "transactionType": "receive", + "transactionData": { + "materialNumberID": "kAftjoSoCIRZlnMTpkR3", + "lotNumber": "PowJul24001", + "quantity": 500, + "dateOfExpiry": "2025-08-19", + "dateOfManufacture": "2024-08-19", + "poNumber": "XXX", + "statusID": "CONDITIONAL_RELEASED", + "locationID": "GFgcsuUkIe7ymD7r20K6", + "cost": 0, + "notes": "received 500 grams of powder", + "productID": null + }, + "targetLotID": "QNFkPDOS2dLT9A0ePejm" + }, + { + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U", + "timestamp": 1724091662949, + "transactionType": "receive", + "transactionData": { + "materialNumberID": "xS5uGQrH1854opdmHoQs", + "lotNumber": "FilJul24001", + "quantity": 500, + "dateOfExpiry": "2027-08-19", + "dateOfManufacture": "2024-08-19", + "poNumber": "XXX", + "statusID": "RELEASED", + "locationID": "GFgcsuUkIe7ymD7r20K6", + "cost": 0, + "notes": "received 500 filters immediately released", + "productID": null + }, + "targetLotID": "TF5aQDuEy2gTsjvUhDA3" + }, + { + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U", + "timestamp": 1724091750976, + "transactionType": "receive", + "transactionData": { + "materialNumberID": "kAftjoSoCIRZlnMTpkR3", + "lotNumber": "PowJul24002", + "quantity": 400, + "dateOfExpiry": "2024-10-10", + "dateOfManufacture": "2024-08-19", + "poNumber": "XXX", + "statusID": "QUARANTINE", + "locationID": "961O18l0ByZYXkWVZlBo", + "cost": 0, + "notes": "received 400 grams of powder @ PCI", + "productID": null + }, + "targetLotID": "Kp71g0HGXVnHgujYiqnw" + }, + { + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U", + "timestamp": 1724091809137, + "transactionType": "receive", + "transactionData": { + "materialNumberID": "xS5uGQrH1854opdmHoQs", + "lotNumber": "FilJul24002", + "quantity": 400, + "dateOfExpiry": "2027-08-19", + "dateOfManufacture": "2024-08-19", + "poNumber": "XXX", + "statusID": "RELEASED", + "locationID": "961O18l0ByZYXkWVZlBo", + "cost": 0, + "notes": "", + "productID": null + }, + "targetLotID": "l1RNNSdvfeLy7t6iVwa8" + }, + { + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U", + "timestamp": 1724091965795, + "transactionType": "build", + "transactionData": { + "materialNumberID": "mJkQ9nXxKcDelktJZcJ9", + "lotNumber": "SubJul24001", + "quantity": 200, + "dateOfExpiry": "2024-10-01", + "dateOfManufacture": "2024-08-19", + "poNumber": "XXX", + "statusID": "CONDITIONAL_RELEASED", + "locationID": "961O18l0ByZYXkWVZlBo", + "cost": 0, + "upstreams": [ + { + "lotID": "QNFkPDOS2dLT9A0ePejm", + "quantity": 200 + }, + { + "lotID": "TF5aQDuEy2gTsjvUhDA3", + "quantity": 200 + } + ], + "notes": "", + "productID": "ANDxFkVFRBVnsvdczXso", + "upstreamIDs": [ + "QNFkPDOS2dLT9A0ePejm", + "TF5aQDuEy2gTsjvUhDA3" + ], + "upstreamQuantities": [ + 200, + 200 + ], + "upstreamLotNumbers": [ + "PowJul24001", + "FilJul24001" + ], + "upstreamMaterialNumberIDs": [ + "kAftjoSoCIRZlnMTpkR3", + "xS5uGQrH1854opdmHoQs" + ], + "upstreamLocationIDs": [ + "GFgcsuUkIe7ymD7r20K6", + "GFgcsuUkIe7ymD7r20K6" + ], + "upstreamProductIDs": [ + null, + null + ] + }, + "targetLotID": "aCTyZbfUKbjrzaf9D6Rq" + }, + { + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U", + "timestamp": 1724091987560, + "transactionType": "statusChange", + "transactionData": { + "lotID": "Kp71g0HGXVnHgujYiqnw", + "newStatusID": "RELEASED", + "quantity": 100, + "notes": "", + "lotNumber": "PowJul24002", + "materialNumberID": "kAftjoSoCIRZlnMTpkR3", + "locationID": "961O18l0ByZYXkWVZlBo", + "productID": null + }, + "targetLotID": "YbtzvSUCj8eBp1zE7O8q" + }, + { + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U", + "timestamp": 1724092097319, + "transactionType": "build", + "transactionData": { + "materialNumberID": "mJkQ9nXxKcDelktJZcJ9", + "lotNumber": "SubJul24002", + "quantity": 100, + "dateOfExpiry": "2024-10-01", + "dateOfManufacture": "2024-08-19", + "poNumber": "XXX", + "statusID": "QUARANTINE", + "locationID": "GFgcsuUkIe7ymD7r20K6", + "cost": 0, + "upstreams": [ + { + "lotID": "QNFkPDOS2dLT9A0ePejm", + "quantity": 100 + }, + { + "lotID": "TF5aQDuEy2gTsjvUhDA3", + "quantity": 100 + } + ], + "notes": "", + "productID": "ANDxFkVFRBVnsvdczXso", + "upstreamIDs": [ + "QNFkPDOS2dLT9A0ePejm", + "TF5aQDuEy2gTsjvUhDA3" + ], + "upstreamQuantities": [ + 100, + 100 + ], + "upstreamLotNumbers": [ + "PowJul24001", + "FilJul24001" + ], + "upstreamMaterialNumberIDs": [ + "kAftjoSoCIRZlnMTpkR3", + "xS5uGQrH1854opdmHoQs" + ], + "upstreamLocationIDs": [ + "GFgcsuUkIe7ymD7r20K6", + "GFgcsuUkIe7ymD7r20K6" + ], + "upstreamProductIDs": [ + null, + null + ] + }, + "targetLotID": "FPkvlnFrGMomlM0tYCAR" + }, + { + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U", + "timestamp": 1724092133502, + "transactionType": "statusChange", + "transactionData": { + "lotID": "aCTyZbfUKbjrzaf9D6Rq", + "newStatusID": "RELEASED", + "quantity": 100, + "notes": "", + "lotNumber": "SubJul24001", + "materialNumberID": "mJkQ9nXxKcDelktJZcJ9", + "locationID": "961O18l0ByZYXkWVZlBo", + "productID": "ANDxFkVFRBVnsvdczXso" + }, + "targetLotID": "z4aStBFhmQczqUXvVnow" + }, + { + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U", + "timestamp": 1724192167647, + "transactionType": "statusChange", + "transactionData": { + "lotID": "FPkvlnFrGMomlM0tYCAR", + "newStatusID": "CONDITIONAL_RELEASED", + "quantity": 20, + "notes": "", + "lotNumber": "SubJul24002", + "materialNumberID": "mJkQ9nXxKcDelktJZcJ9", + "locationID": "GFgcsuUkIe7ymD7r20K6", + "productID": "ANDxFkVFRBVnsvdczXso" + }, + "targetLotID": "fnZk9AgHmF6hGuognj1D" + }, + { + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U", + "timestamp": 1724192190300, + "transactionType": "statusChange", + "transactionData": { + "lotID": "FPkvlnFrGMomlM0tYCAR", + "newStatusID": "RELEASED", + "quantity": 25, + "notes": "", + "lotNumber": "SubJul24002", + "materialNumberID": "mJkQ9nXxKcDelktJZcJ9", + "locationID": "GFgcsuUkIe7ymD7r20K6", + "productID": "ANDxFkVFRBVnsvdczXso" + }, + "targetLotID": "hPrKSVsylJQAB9PREIKZ" + }, + { + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U", + "timestamp": 1724193323613, + "transactionType": "receive", + "transactionData": { + "materialNumberID": "fNmIPEt7pZtZKZrgRrsT", + "lotNumber": "RawJul24001", + "quantity": 495, + "dateOfExpiry": "2024-10-03", + "dateOfManufacture": "2024-08-19", + "poNumber": "XXX", + "statusID": "RELEASED", + "locationID": "HAvgQrYW8V12ZXLA43NF", + "cost": 0, + "notes": "", + "productID": null + }, + "targetLotID": "1GBivOszVaVBlGzr9SMW" + }, + { + "uid": "oqVWAp4OtA3ZhyH1fleb5LXK719U", + "timestamp": 1724195724040, + "transactionType": "build", + "transactionData": { + "materialNumberID": "g6FY8ycoh3JFrMkgUanX", + "lotNumber": "DrugJul24001", + "quantity": 100, + "dateOfExpiry": "2024-09-30", + "dateOfManufacture": "2024-08-19", + "poNumber": "XXX", + "statusID": "ON_HOLD", + "locationID": "GFgcsuUkIe7ymD7r20K6", + "cost": 0, + "upstreams": [ + { + "lotID": "1GBivOszVaVBlGzr9SMW", + "quantity": 100 + }, + { + "lotID": "TF5aQDuEy2gTsjvUhDA3", + "quantity": 100 + } + ], + "notes": "", + "productID": "ANDxFkVFRBVnsvdczXso", + "upstreamIDs": [ + "1GBivOszVaVBlGzr9SMW", + "TF5aQDuEy2gTsjvUhDA3" + ], + "upstreamQuantities": [ + 100, + 100 + ], + "upstreamLotNumbers": [ + "RawJul24001", + "FilJul24001" + ], + "upstreamMaterialNumberIDs": [ + "fNmIPEt7pZtZKZrgRrsT", + "xS5uGQrH1854opdmHoQs" + ], + "upstreamLocationIDs": [ + "HAvgQrYW8V12ZXLA43NF", + "GFgcsuUkIe7ymD7r20K6" + ], + "upstreamProductIDs": [ + null, + null + ] + }, + "targetLotID": "hlVgspFTAQQf5NtUXmy2" + } + ], + "ABCInventoryEntries": { + "1GBivOszVaVBlGzr9SMW": { + "productID": null, + "hasUpstreams": false, + "materialNumberID": "fNmIPEt7pZtZKZrgRrsT", + "lotNumber": "RawJul24001", + "dateOfExpiry": "2024-10-03", + "dateOfManufacture": "2024-08-19", + "poNumber": "XXX", + "statusID": "RELEASED", + "locationID": "HAvgQrYW8V12ZXLA43NF", + "cost": 0, + "transactionNotes": [ + "" + ], + "lotNumberLowercase": "rawjul24001", + "quantity": 395 + }, + "FPkvlnFrGMomlM0tYCAR": { + "productID": "ANDxFkVFRBVnsvdczXso", + "materialNumberID": "mJkQ9nXxKcDelktJZcJ9", + "lotNumber": "SubJul24002", + "dateOfExpiry": "2024-10-01", + "dateOfManufacture": "2024-08-19", + "poNumber": "XXX", + "statusID": "QUARANTINE", + "locationID": "GFgcsuUkIe7ymD7r20K6", + "cost": 0, + "hasUpstreams": true, + "upstreamIDs": [ + "QNFkPDOS2dLT9A0ePejm", + "TF5aQDuEy2gTsjvUhDA3" + ], + "upstreamQuantities": [ + 100, + 100 + ], + "upstreamLotNumbers": [ + "PowJul24001", + "FilJul24001" + ], + "transactionNotes": [ + "" + ], + "lotNumberLowercase": "subjul24002", + "quantity": 55 + }, + "Kp71g0HGXVnHgujYiqnw": { + "productID": null, + "hasUpstreams": false, + "materialNumberID": "kAftjoSoCIRZlnMTpkR3", + "lotNumber": "PowJul24002", + "dateOfExpiry": "2024-10-10", + "dateOfManufacture": "2024-08-19", + "poNumber": "XXX", + "statusID": "QUARANTINE", + "locationID": "961O18l0ByZYXkWVZlBo", + "cost": 0, + "lotNumberLowercase": "powjul24002", + "quantity": 300, + "transactionNotes": [ + "received 400 grams of powder @ PCI", + "" + ] + }, + "QNFkPDOS2dLT9A0ePejm": { + "productID": null, + "hasUpstreams": false, + "materialNumberID": "kAftjoSoCIRZlnMTpkR3", + "lotNumber": "PowJul24001", + "dateOfExpiry": "2025-08-19", + "dateOfManufacture": "2024-08-19", + "poNumber": "XXX", + "statusID": "CONDITIONAL_RELEASED", + "locationID": "GFgcsuUkIe7ymD7r20K6", + "cost": 0, + "transactionNotes": [ + "received 500 grams of powder" + ], + "lotNumberLowercase": "powjul24001", + "quantity": 200 + }, + "TF5aQDuEy2gTsjvUhDA3": { + "productID": null, + "hasUpstreams": false, + "materialNumberID": "xS5uGQrH1854opdmHoQs", + "lotNumber": "FilJul24001", + "dateOfExpiry": "2027-08-19", + "dateOfManufacture": "2024-08-19", + "poNumber": "XXX", + "statusID": "RELEASED", + "locationID": "GFgcsuUkIe7ymD7r20K6", + "cost": 0, + "transactionNotes": [ + "received 500 filters immediately released" + ], + "lotNumberLowercase": "filjul24001", + "quantity": 100 + }, + "YbtzvSUCj8eBp1zE7O8q": { + "productID": null, + "hasUpstreams": false, + "materialNumberID": "kAftjoSoCIRZlnMTpkR3", + "lotNumber": "PowJul24002", + "quantity": 100, + "dateOfExpiry": "2024-10-10", + "dateOfManufacture": "2024-08-19", + "poNumber": "XXX", + "statusID": "RELEASED", + "locationID": "961O18l0ByZYXkWVZlBo", + "cost": 0, + "transactionNotes": [ + "received 400 grams of powder @ PCI", + "" + ], + "lotNumberLowercase": "powjul24002" + }, + "aCTyZbfUKbjrzaf9D6Rq": { + "productID": "ANDxFkVFRBVnsvdczXso", + "materialNumberID": "mJkQ9nXxKcDelktJZcJ9", + "lotNumber": "SubJul24001", + "dateOfExpiry": "2024-10-01", + "dateOfManufacture": "2024-08-19", + "poNumber": "XXX", + "statusID": "CONDITIONAL_RELEASED", + "locationID": "961O18l0ByZYXkWVZlBo", + "cost": 0, + "hasUpstreams": true, + "upstreamIDs": [ + "QNFkPDOS2dLT9A0ePejm", + "TF5aQDuEy2gTsjvUhDA3" + ], + "upstreamQuantities": [ + 200, + 200 + ], + "upstreamLotNumbers": [ + "PowJul24001", + "FilJul24001" + ], + "transactionNotes": [ + "" + ], + "lotNumberLowercase": "subjul24001", + "quantity": 100 + }, + "fnZk9AgHmF6hGuognj1D": { + "productID": "ANDxFkVFRBVnsvdczXso", + "materialNumberID": "mJkQ9nXxKcDelktJZcJ9", + "lotNumber": "SubJul24002", + "quantity": 20, + "dateOfExpiry": "2024-10-01", + "dateOfManufacture": "2024-08-19", + "poNumber": "XXX", + "statusID": "CONDITIONAL_RELEASED", + "locationID": "GFgcsuUkIe7ymD7r20K6", + "cost": 0, + "hasUpstreams": true, + "upstreamIDs": [ + "QNFkPDOS2dLT9A0ePejm", + "TF5aQDuEy2gTsjvUhDA3" + ], + "upstreamQuantities": [ + 100, + 100 + ], + "upstreamLotNumbers": [ + "PowJul24001", + "FilJul24001" + ], + "transactionNotes": [ + "" + ], + "lotNumberLowercase": "subjul24002" + }, + "hPrKSVsylJQAB9PREIKZ": { + "productID": "ANDxFkVFRBVnsvdczXso", + "materialNumberID": "mJkQ9nXxKcDelktJZcJ9", + "lotNumber": "SubJul24002", + "dateOfExpiry": "2024-10-01", + "dateOfManufacture": "2024-08-19", + "poNumber": "XXX", + "statusID": "RELEASED", + "locationID": "GFgcsuUkIe7ymD7r20K6", + "cost": 0, + "hasUpstreams": true, + "upstreamIDs": [ + "QNFkPDOS2dLT9A0ePejm", + "TF5aQDuEy2gTsjvUhDA3" + ], + "upstreamQuantities": [ + 100, + 100 + ], + "upstreamLotNumbers": [ + "PowJul24001", + "FilJul24001" + ], + "transactionNotes": [ + "" + ], + "lotNumberLowercase": "subjul24002", + "quantity": 25 + }, + "hlVgspFTAQQf5NtUXmy2": { + "productID": "ANDxFkVFRBVnsvdczXso", + "materialNumberID": "g6FY8ycoh3JFrMkgUanX", + "lotNumber": "DrugJul24001", + "quantity": 100, + "dateOfExpiry": "2024-09-30", + "dateOfManufacture": "2024-08-19", + "poNumber": "XXX", + "statusID": "ON_HOLD", + "locationID": "GFgcsuUkIe7ymD7r20K6", + "cost": 0, + "hasUpstreams": true, + "upstreamIDs": [ + "1GBivOszVaVBlGzr9SMW", + "TF5aQDuEy2gTsjvUhDA3" + ], + "upstreamQuantities": [ + 100, + 100 + ], + "upstreamLotNumbers": [ + "RawJul24001", + "FilJul24001" + ], + "transactionNotes": [ + "" + ], + "lotNumberLowercase": "drugjul24001" + }, + "l1RNNSdvfeLy7t6iVwa8": { + "productID": null, + "hasUpstreams": false, + "materialNumberID": "xS5uGQrH1854opdmHoQs", + "lotNumber": "FilJul24002", + "quantity": 400, + "dateOfExpiry": "2027-08-19", + "dateOfManufacture": "2024-08-19", + "poNumber": "XXX", + "statusID": "RELEASED", + "locationID": "961O18l0ByZYXkWVZlBo", + "cost": 0, + "transactionNotes": [ + "" + ], + "lotNumberLowercase": "filjul24002" + }, + "z4aStBFhmQczqUXvVnow": { + "productID": "ANDxFkVFRBVnsvdczXso", + "materialNumberID": "mJkQ9nXxKcDelktJZcJ9", + "lotNumber": "SubJul24001", + "quantity": 100, + "dateOfExpiry": "2024-10-01", + "dateOfManufacture": "2024-08-19", + "poNumber": "XXX", + "statusID": "RELEASED", + "locationID": "961O18l0ByZYXkWVZlBo", + "cost": 0, + "hasUpstreams": true, + "upstreamIDs": [ + "QNFkPDOS2dLT9A0ePejm", + "TF5aQDuEy2gTsjvUhDA3" + ], + "upstreamQuantities": [ + 200, + 200 + ], + "upstreamLotNumbers": [ + "PowJul24001", + "FilJul24001" + ], + "transactionNotes": [ + "" + ], + "lotNumberLowercase": "subjul24001" + } + } +} \ No newline at end of file