public LocationSummary CreateLocationSummary(Location location)
		{
			return new LocationSummary(
				location.GetRef(),
				location.Id,
				location.Name,
				new FacilityAssembler().CreateFacilitySummary(location.Facility),
				location.Building,
				location.Floor,
				location.PointOfCare,
				location.Deactivated);
		}
		public void UpdateLocation(LocationDetail detail, Location location, IPersistenceContext context)
		{
			location.Name = detail.Name;
			location.Id = detail.Id;
			location.Description = detail.Description;

			location.Facility = context.Load<Facility>(detail.Facility.FacilityRef, EntityLoadFlags.Proxy);
			location.Building = detail.Building;
			location.Floor = detail.Floor;
			location.PointOfCare = detail.PointOfCare;
			location.Deactivated = detail.Deactivated;
		}
        public AddLocationResponse AddLocation(AddLocationRequest request)
        {
            Location location = new Location();

            LocationAssembler assembler = new LocationAssembler();
            assembler.UpdateLocation(request.LocationDetail, location, PersistenceContext);

            PersistenceContext.Lock(location, DirtyState.New);

            // ensure the new location is assigned an OID before using it in the return value
            PersistenceContext.SynchState();

            return new AddLocationResponse(assembler.CreateLocationSummary(location));
        }