243 lines
5.2 KiB
Markdown
243 lines
5.2 KiB
Markdown
|
|
### Handled at the master level
|
||
|
|
|
||
|
|
Tenants:
|
||
|
|
- Tenant 000000: Master Tenant
|
||
|
|
- Tenant: 000001 - zzzzzz (all other tenants)
|
||
|
|
- Tenant Name
|
||
|
|
- Tenant ID
|
||
|
|
- Tenant Description
|
||
|
|
- Tenant Email (primary contact)
|
||
|
|
- Tenant Phone (primary Contact)
|
||
|
|
|
||
|
|
|
||
|
|
### Handled at the Tenant Level:
|
||
|
|
|
||
|
|
#### Tenant Locations:
|
||
|
|
|
||
|
|
Any locations defined through a parent - child hierarchy. This can best reflect the actual structure of any location where assets may be located
|
||
|
|
|
||
|
|
```
|
||
|
|
location {
|
||
|
|
_id: location_id, # req
|
||
|
|
tenant_id: tenant_id, # req
|
||
|
|
loc_name: location_name, # req
|
||
|
|
loc_desc: location_description,
|
||
|
|
loc_type: code_table, # req
|
||
|
|
loc_info: {
|
||
|
|
location_info
|
||
|
|
},
|
||
|
|
loc_is_child: t/f, # req
|
||
|
|
loc_parent_id: location_id,
|
||
|
|
}
|
||
|
|
```
|
||
|
|
__Code Table: location type__
|
||
|
|
```
|
||
|
|
location_types: {
|
||
|
|
_id: loc_type_id
|
||
|
|
loc_type: type,
|
||
|
|
tenant_id: tenant_id,
|
||
|
|
}
|
||
|
|
```
|
||
|
|
__Code Table: location info__
|
||
|
|
```
|
||
|
|
location_details: {
|
||
|
|
_id: loc_detail_id,
|
||
|
|
tenant_id: tenant_id,
|
||
|
|
loc_type: type_id,
|
||
|
|
loc_detail: detail1,
|
||
|
|
loc_detail_type: (text, number, t/f, select),
|
||
|
|
loc_detail_sel_options: {
|
||
|
|
option: option1,
|
||
|
|
option: option2,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
----
|
||
|
|
|
||
|
|
### Assets
|
||
|
|
An asset is any item, whether permanent fixture, high dollar equiprment, consumable requiring inventory and replenishment, or otherwise.
|
||
|
|
|
||
|
|
```
|
||
|
|
item: {
|
||
|
|
_id: item_id,
|
||
|
|
tenant_id: tenant_id,
|
||
|
|
location_id: location_id,
|
||
|
|
location_path: path / separated / out,
|
||
|
|
item_name: item name,
|
||
|
|
item_desc: item desc,
|
||
|
|
images: {
|
||
|
|
image_name: image name,
|
||
|
|
image_storage_location: path to image,
|
||
|
|
}
|
||
|
|
item_qty: qunatity,
|
||
|
|
item_type: code_table,
|
||
|
|
expiration_date: item_expires
|
||
|
|
createdDate: new Date(),
|
||
|
|
createdBy: user_id,
|
||
|
|
modified: {
|
||
|
|
modified_on: new Date(),
|
||
|
|
modified_by: user_id,
|
||
|
|
modified_reason: text_input,
|
||
|
|
},
|
||
|
|
item_archived: t/f,
|
||
|
|
item_archive_info: {
|
||
|
|
archived_on: new Date(),
|
||
|
|
archived_by: user_id,
|
||
|
|
archive_reason: text_input,
|
||
|
|
},
|
||
|
|
item_deleted: t/f,
|
||
|
|
item_delete_info: {
|
||
|
|
deleted_on: new Date(),
|
||
|
|
deleted_by: user_id,
|
||
|
|
deleted_reason: text_input,
|
||
|
|
},
|
||
|
|
item_dispo_info: {
|
||
|
|
item_dispo: code_table,
|
||
|
|
dispo_date: new Date(),
|
||
|
|
dispo_by: user_id,
|
||
|
|
dispo_reason: text_input,
|
||
|
|
dispo_description: text_input,
|
||
|
|
},
|
||
|
|
item_barcode: barcode detail (autogenerate 1d),
|
||
|
|
item_req_inspection: t/f
|
||
|
|
item_req_inventory: t/f
|
||
|
|
item_cost: number,
|
||
|
|
item_value: number,
|
||
|
|
item_type_attributes: {
|
||
|
|
item_attribute: {
|
||
|
|
attribute: entry_type,
|
||
|
|
attribute: entry_type,
|
||
|
|
},
|
||
|
|
item_attribute: {
|
||
|
|
attribute: entry_type,
|
||
|
|
attribute: entry_type,
|
||
|
|
},
|
||
|
|
}.
|
||
|
|
is_parent_of_multipart_asset: t/f
|
||
|
|
is_part_of_multipart_asset: t/f
|
||
|
|
multipart_asset_parent_id
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
__Code Table: Asset Types__
|
||
|
|
```
|
||
|
|
asset_types: {
|
||
|
|
_id: asset_type_id,
|
||
|
|
tenant_id: tenant_id:
|
||
|
|
asset_type_name: name,
|
||
|
|
assett_type_desc: asset_type_description,
|
||
|
|
asset_type_req_more_details: t/f
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
__Code Table: Asset Type Details__
|
||
|
|
```
|
||
|
|
asset_type_details: {
|
||
|
|
_id: asset_type_details_id,
|
||
|
|
asset_type_id: asset_type_id,
|
||
|
|
tenant_id: tenant_id,
|
||
|
|
detail: detail_to_collect,
|
||
|
|
field_type: number, text, t/f, select,
|
||
|
|
asset_type_detail_sel_options: {
|
||
|
|
option: option1,
|
||
|
|
option: option2,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
__Code Table: Asset Disposition__
|
||
|
|
```
|
||
|
|
asset_dispoitions: {
|
||
|
|
_id: dispo_id,
|
||
|
|
tenant_id: tenant_id,
|
||
|
|
disposition: disposition,
|
||
|
|
is_final: is_a_final_dispo (t/f),
|
||
|
|
archive_with_this_disp: t/f,
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
__Code Table: Asset Inspection Types__
|
||
|
|
```
|
||
|
|
asset_inspection_type: {
|
||
|
|
_id: inspection_id,
|
||
|
|
tenant_id: tenant_id,
|
||
|
|
insp_type_name: name
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
__Code Table: Asset Inspection Options__
|
||
|
|
```
|
||
|
|
asset_inspection_name: {
|
||
|
|
_id: inspection_id,
|
||
|
|
tenant_id: tenant_id,
|
||
|
|
insp_name: name,
|
||
|
|
insp_type: item_inspection_id
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
__Code Table: Asset Attribute__
|
||
|
|
```
|
||
|
|
asset_attribute_name: {
|
||
|
|
_id: attribute_id,
|
||
|
|
tenant_id: tenant_id,
|
||
|
|
attribute_name: name, # e.g. color, texture, etc
|
||
|
|
attribute_req: t/f,
|
||
|
|
attribute_applies_to_asset_types: <multi-select types>
|
||
|
|
}
|
||
|
|
```
|
||
|
|
----
|
||
|
|
## Asset Inspections
|
||
|
|
|
||
|
|
Inspection Type
|
||
|
|
|
||
|
|
Inspection Steps
|
||
|
|
- Step Type (e.g. pass, fail, measure, grade, etc)
|
||
|
|
- Step instructions
|
||
|
|
- Observations
|
||
|
|
- Evidence (images, notes, video, data, etc.)
|
||
|
|
|
||
|
|
Multi-part Asset Inspection?
|
||
|
|
|
||
|
|
Signature of completion
|
||
|
|
Signature of acceptance
|
||
|
|
Signature of reviewer
|
||
|
|
Singature of secondary inspectors
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
----
|
||
|
|
## Asset Inventory
|
||
|
|
|
||
|
|
|
||
|
|
----
|
||
|
|
## Asset Movements
|
||
|
|
Movements covers a wide array of actions, including but not limited to moving an item from 1 place to another, moving an item in a way that the item is used up (e.g. using a needle, flex-cuff, etc), movement for destruction, movement for retirement, etc. These types can be defined by the tenant.
|
||
|
|
|
||
|
|
#### Movement Record
|
||
|
|
|
||
|
|
```
|
||
|
|
asset_movement: {
|
||
|
|
_id: asset_move_id,
|
||
|
|
tenant_id: tenant_id,
|
||
|
|
asset_id: asset_id,
|
||
|
|
movement_type: movement_type_id,
|
||
|
|
movement_end
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
|
||
|
|
```
|
||
|
|
movement_type: {
|
||
|
|
_id: movement_id,
|
||
|
|
tenant_id: tenant_id,
|
||
|
|
movement_name: name,
|
||
|
|
movement_desc: description,
|
||
|
|
req_end_location: t/f,
|
||
|
|
req_usage_qty: t/f,
|
||
|
|
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
----
|
||
|
|
##
|
||
|
|
|