Tag ArchiveSpare Parts


Automated EMails

It has been our intention for some time to add an automated email facility to e-Quip. Those of you using version 2.13.3 may have noticed that the job property page now includes an email button on the ribbon strip. This email integrates rather nicely with the job details micro-site. You can generate an email which includes a hyperlink which, when clicked, shows details of the job so that the user can check on progress. In version 2.14.0 we will be adding auto-email support to deliveries as well as jobs.

Configuring the EMails

Clearly, it must be possible to configure the emails so that they say what you want them to say. This is done using the e-Quip Options utility. A new tab has been added specifically for this purpose. Currently there are two sets of email options, one for jobs and one for deliveries.

Job EMail Configuration

The email generated from the job property page is made up of three components: a subject line, the primary body text and the secondary body text. The reason that there are two alternative pieces of text is that you may wish to send slightly different emails when a job is first created and then subsequently when the job is edited.

The subject and body texts can contain various placeholders which will be substituted for the appropriate value when the email is sent. These are: {EquipmentCode}, {JobCode} & {ReportedFault}

For example, the subject line:

Medical Device {EquipmentCode} Service Request No {JobCode}

might generate an email with a subject line of:

Medical Device 12435 Service Request No 879843

Note that this text can include HTML for formatting.

Delivery EMail Configuration

The delivery email also has a subject line and a main body, but unlike the job email, a delivery email may consist of multiple lines, at least one for each line of the delivery. If a spare part is referenced in multiple uncompleted jobs then there will be additional lines for each job. For example:

Subject: Delivery of Items for Order No. 12345

You have been sent this email because items have been delivered for this order that you may be waiting for.

Job No: 12345, Technician: John Smith, Part No: 34567, Qty Required: 1, Delivered: 2

Job No: 34567, Technician: Tom Brown, Part No: 34567, Qty Required: 2, Delivered: 2

Job No: 34567 Technician: Tom Brown Part No: 7891 Qty Required: 1 Delivered: 4

For this email, the subject line contained:

Delivery of Items for {OrderCode}

The body is:

You have been sent this email because items have been delivered for this order that you may be waiting for.

The individual lines are formatted as:

<p>Job No: {JobCode},  Technician: {Technician}, Part No: {PartNo} Qty Required: 1 Delivered: 4</p>

Note the embedded HTML formatting characters.

Sending Job EMails

To generate an email from a job simply click the EMail button on the ribbon. This will display the following screen in order to collect your preferences.

The checkboxes labelled Caller, Caller Contact, Job Contact and Technician will be enabled if a) the appropriate field on the job has been completed and b) if the field is a personnel record, then that record contains an email address. You cannot, for example, choose to send the email to the technician if either the technician field is empty or the technician does not have an email address.

Any additional recipients can be added by entering their details in the CC field. If you are entering multiple addresses then separate them with the “;” character.

The text tab shows the text that will be used for the body of the email. You may choose either the primary or secondary body text. You can also edit this text and also edit the reported fault.

That’s all there is to it! As soon as you have selected one or more recipients the EMail button will be enabled. To send the email simply click this button. A sample email is shown below.

Sending Delivery EMails

Delivery emails are similar to those for jobs. One difference is that while job emails are a fixed (but configurable) piece of text, a delivery may consist of multiple lines which may be in turn referenced by multiple jobs. Delivery emails are therefore variable length.

Look at the order below which was requested by Paul Brown. The first line was specifically ordered for job 163806. The technician for this job is John Day and the engineering contact is Michael Miles. While the other lines are not linked specifically to jobs, there are several outstanding jobs which need those parts. These are:

Job No: 163808, Part No: 5151, Technician: Jim Green, Contact: Les Hammond

Job No: 163806, Part No: 5151, Technician: John Day, Contact: Michael Miles

Now suppose that a delivery is created for this order which is accepted by Ian Founder. When the delivery is saved the screen below appears.

The email generated is shown below. Why isn’t Les Hammond included in the recipients? This is because his personnel record does not contain an email address.

These are only our first steps in email automation. We will shortly be adding email to Medical Device Alerts and Competences.

As always, any feedback will be much appreciated.



Order Merging

It is quite common for several orders or requisitions to be raised for a single supplier in a given period. Often, before the orders are sent to the supplier they are combined into a single order. This can reduce postage & packaging charges and also makes orders easier to manage. In the past this has been a manual process, but starting with version 2.11.0 a new Order Merge facility has been added to e-Quip.

From the order summary screen right-click and select Merge from the context menu (you can also use the Office menu if you prefer). This will display the screen below:

The Order Merge Utility


First, select the supplier for which you wish to manage orders. The grid will then display all orders for that supplier which:

1. Have no order status
2. Have an order status with no order status class
3. Have an order status with an order status class of IN PROGRESS
4. Have no line items with a status class of RECEIVED

To select an order to be merged, tick the check-box in the left-hand grid column. Once you have selected 2 or more orders, you may then click Merge.

If you wish to enter a specific code for the new order, then enter it in the New Order Code field. By default this field contains the next sequential order code. If this field is blank then the Order Merge utility will generate an order code automatically.

Once the orders are merged, the status of the new order will be set to the first order status (ordered by status code) with a status class of IN PROGRESS. All of the merged orders will be set to the first order status (ordered by status code) with a status class of MERGED.

As always, let us know if you think this can be improved.


Spare Part Locations – When is a Bin not a Bin?

What is a Spare Part Location

A spare part bin is a repository for spare parts. You might think that all  asset-management databases support the concept of  spare part bins, but surprisingly they don’t, and those that do all do it in different ways. Many of you will remember the old SEMS system developed by IBS in Bristol many years ago. SEMS used to provide full support for spare part bins: there was a screen where you could define the bins and give them names etc. The spare part catalogue would then allow you to assign spare parts to bins. A nice feature of this approach is that you can’t accidentally assign parts to non-existent bins, but the downside is that it introduces a significant data entry overhead: you have to create the bins before you can use them. This is even more cumbersome for smaller hospitals which may only have a single bin for each spare part. An interesting side-effect of this strategy is that bins can exist which have no parts assigned to them (which is not the same thing as an empty bin, which is a bin which has parts assigned to but but where the number of parts in the bin is zero).

At the other extreme, several systems completely ignore bins and just have a spare part catalogue with a field to represent the quantity in stock, which makes an implicit assumption that a spare part is held in only one bin. This is surprisingly common. For E-Quip, we chose a compromise approach which allowed a spare part to be held in multiple locations but which did not impose the overhead of a separate spare part bin entity. How does this work?

For the next couple of paragraphs  I will use the term bin to refer to spare part locations, since this avoids confusion with the term location, which specifies where the bin is. e.g. “Bin 36 in the Anaesthetics Workshop” is, strictly speaking, a spare part location named “Bin 36” in the location “Anaesthetics Workshop”, but this overuse of the word location can obscure the explanation. Later on in the article I will switch back to using the terms bin and spare part location interchangeably.

In E-Quip a bin is simply “a named link between  a spare part and a location“. What makes these useful is that the name is not constrained to be unique, and neither is the spare part or the location.

This is quite an important definition – it implies that a bin cannot exist in the absence of a spare part. There is no such thing as a bin which has no spare parts assigned to it – there is no place in E-Quip where a bin can be created except on the spare part screen, which means that the example used above (“Bin 36 in the Anaesthetics Workshop“) is only meaningful in the context of a specific spare part.

Suppose we wish to record that Part No 123-456 is (or can be) held in  Bin 36 which is located in the Anaesthetics Workshop. We simply create a link between Part No 123-456 and the Anaesthetics Workshop location, and then name the link “Bin 36”.

This is done on the spare part property page, using the Locations tab. You simply type a code and/or name for the bin, then choose the location. This is no different to editing any list within E-Quip. The example below shows two bins being created for a spare part.

Note that in a system which actually included bins in the data model, you would first need to create the bins before you could make use of them, so in the example above, bins 3 & 23 would be selected from a list, not entered as free text.  Our approach has several advantages, chiefly in the reduction in the amount of data entry when creating spare part bins, but it does have some disadvantages. Because the concept of the bin is implemented textually, care is needed when entering bin codes and names. However, this disadvantage is far outweighed by the saving in data entry effort.

How do we model a situation where multiple different parts all share the same bin? Simple, just create another link between some other spare part and the Anaesthetics Workshop location, and give it the same name as before, i.e. “Bin 36”. Now, when looking through the list of links (i.e bins), “Bin 36” will appear twice, with a different spare part in each case.

The example below appears to all intents and purposes to be a list of the spare parts held in Bin 52 in the Technical Services spare parts store. In fact, these are just 5 separate links between spare parts (each different in this example) and the location Technical Services. It is the textual name of this link which implements the concept of a spare part bin.

Naturally there is more to a spare part location than just a named link between between a spare part and a location. The system must be able to record the number of parts in the bin, minimum stock levels etc.

Spare Part Location Attributes

In addition to a spare part and a location, bins can also include the following information:

1. Code & Name: The name of a spare part location is factored into two separate elements simply to reflect common usage. For some types of store, locations can be referred to in a coded way. A common example is a two-dimensional array of plastic drawers each containing multiple partitions. An individual drawer might be identified by a  number followed by a letter, with the number representing the column and the letter indicating the row. The particular partition within the drawer could be represented by a 2nd number. Thus 10D5 would uniquely identify a drawer and the location of the part within it.

In other situations, particularly for larger items, locations may be referred to by names, such as the “Graseby Shelf” or “Mattress Parts”.

2. Stock: The current number of spare parts in this bin. Note that when spare parts are used on jobs this value is not decremented until the job is finished.

3. In-Use: The number of spare parts in the bin which are currently assigned to non-completed jobs. The stock minus the in-use count should yield the number of parts currently  in the bin.

4. Minimum Stock Level: If the stock level falls below this value then the bin should be replenished.

5. Target Stock Level: This is used by auto-ordering, and specifies the desired stock level for replenishment.

5. Expiry Date: Sometimes spare parts have a limited storage life and must be consumed in a particular sequence. Batteries and O2 cells are common examples. See the paragraph on shelf-life below for fuller details.

6. Team: If the same spare part exists in multiple locations, then assigning teams to locations can be a great help in ensuring that the system takes parts from the correct locations when they are used in jobs.

There are several ways in which multiple stores can be managed, but at a simple level suppose that you have AAA batteries stored in both Technical Services (Bin 525) and in the Anaesthetics Workshop (Bin 4). By assigning Bin 525 to the team “EBME” and Bin 4 to the team “Aesthetics”, if an anaesthetics engineer uses a AAA battery then the system can easily determine which bin it should be taken from.

7. Inactive: Making a spare part location inactive prevents it from being selected in future.

Expiry Dates and Spare Part Shelf-Life

We have seen that a spare part location is simply a named link between a spare part and a location. How can we model a situation where there are several identical spare parts in a bin each with a different “use by” dates. Clearly in this situation, when using a spare part on a job
it is not enough to say for example that an O2 cell from Bin 52 was used – we need to select the O2 cell based on its remaining life, and record which particular O2 cell was used.

Suppose that Bin 52 contains 5 O2 cells each with different expiry dates. Apart from their expiry dates these cells are all identical and all have the same Part No. In the case of bins containing several different parts we have already seen that several spare part locations can be created for the same location and each given the same name. We can also create multiple spare part locations for the same spare part. This is shown below.

Note that when uniquely identifying parts in this way, it is common for the stock level to be 1. i.e. We have 5 rows each with a quantity of 1, rather than 1 row with a quantity of 5.

When one of these O2 cells is used in a job, how can we specify which one was used? The Spare Part Location lookup includes an Expiry Date column, allowing you to select the particular part used.



Spare Part Location Management

Spare Part Location Bulk Update

From time to time you may want to re-organise your spare part store, and this will probably involve renaming your spare part bins. How can you do this?

For a single spare part you can do this by editing the spare part, going to the Locations tab and then simply change the location code and name by typing directly in the grid.

For example, if you wanted to rename Bin 1 (whose code is 00001) to have a code “A52” and the name “Bin 52”, then you can just type this directly into the grid shown above, replacing “00001” with “A52”, and “Bin 1” with “Bin 52”.

This is fine for a small number of spare parts, but if you were reorganising your entire store this could be very time consuming. Things also get more complex when a spare part location contains many different spare parts, which is extremely common. If Bin 1 contained 5 different parts, then each part in this location would have to be found, and the location renamed.

The screen-capture below (of the Spare Part Bin summary screen) shows the contents of Bin 1. We can see that it contains 5 different small parts.

It would be very time-consuming to open Part No 0126-0025-K and rename its part location, and then to repeat this for each part in the bin. That’s where spare part location Bulk Update comes in.

Simple select all of the bins (Ctrl+A), then right-click the mouse and choose Bulk Update. This will display the following screen.

Just enter the new bin code and name, then click Update.



Keeping Spare Part Prices Up-to-Date

Spare Part Prices

As you probably know, E-Quip records several prices for spare parts:

a) The base charge

b) The default job charge

c) Supplier list prices

The first two define how much you will charge for prices, while the third indicates how much you pay for parts. An optional markup can be applied to the base charge, which then gives the default job charge. There is another factor which affects the charge for a spare part when it is added to a job, which applies only for work carried out under a customer contract. A customer contract allows you to specify a parts discount, which is applied to the default job job charge. The price displayed on the job screen is always the base charge plus the markup minus any discount.

A problem with spare part charges arises when you source parts from multiple suppliers, each of which have different list prices. If a bin contains a number of parts all purchased for different amounts, how much should you charge when one of the parts is used in a job?

Updating Prices

As from version 1.16.0, there is now a system option which allows the base charge to be updated either:

a) When an order is created

b) When a part is edited

Four different strategies are available.

1. Do Nothing

If you choose this option then the system will not automatically update part prices, and you must manually adjust parts, either individually or using bulk update

2. Update the Base Price with the Price Just Entered

This option is useful if you have just raised an order and you want the base price to be set the the list price from that order. It is really only sensible to use this strategy if the majority of your parts are sourced from a single supplier. This is effectively how versions prior to 1.16.0 behaved.

3. Set the Base Price to be the Maximum of the Prices from all Suppliers

If Supplier A sells this part for £100, and Supplier B sells it for £200, then the base charge will be set to £200.

4. Set the Base Price to be the Average of the Prices from all Suppliers

If Supplier A sells this part for £100, and Supplier B sells it for £200, then the base charge will be set to £150.

Updating Supplier List Prices

So we’ve taken care up updating spare part charges, how about supplier list prices? On the Spare Part Supplier Link screen there is a useful bulk update facility. The real reason it’s there is to allow you to easily switch all parts from one supplier to another after a supplier takeover. For example, when Graseby become Smiths Medical, all of the Graseby parts need to become Smiths parts. Incidentally, there is a similar feature on the contacts screen so that all of the Graseby contacts can be switched to Smiths.

As well as allowing you to switch suppliers, this bulk update also allows you to adjust the list prices, as shown below:

This is perfect if once a year you want to increase the list prices from a particular supplier by 5%, for example.


Spare Part Audit: Auto-Prompt when Adjusting Spare Part Stock

New Feature in 1.16.0

As you might know, adjusting stock levels in E-Quip in completely trivial; simply open the spare parts property page, move to the Bins tab, then enter the quantity in the Stock field. Behind the scenes E-Quip creates an audit record to note who and when made this change.

Now, if the system option “Prompt for Stock Audit” is set, when you change the stock a pop-up box is displayed to prompt you to enter the reason that the manual stock adjustment was made. This text will appear, and is searchable, on the stock control audit screen.