func (item *JiraItem) CreateStory(userMaps []userMap) ClubHouseCreateStory {
	comments := []ClubHouseCreateComment{}
	for _, c := range item.Comments {
		comments = append(comments, c.CreateComment(userMaps))
	}
	labels := []ClubHouseCreateLabel{}
	for _, label := range item.Labels {
		labels = append(labels, ClubHouseCreateLabel{Name: strings.ToLower(label)})
	}
	lastSprint := item.GetLastSprint()
	if lastSprint != "" {
		labels = append(labels, ClubHouseCreateLabel{Name: strings.ToLower(lastSprint)})
	}
	labels = append(labels, ClubHouseCreateLabel{Name: "jira"})
	projectID := MapProject(userMaps, item.Assignee.Username)
	ownerID := MapUser(userMaps, item.Assignee.Username)
	var owners []string
	if ownerID != "" {
		owners = append(owners, ownerID)
	} else {
		owners = make([]string, 0)
	}
	var state int64 = 500000014
	switch item.Status {
	    case "Ready for Test":
	        state = 500000010
	    case "Task In Progress":
	        state = 500000015
	    case "Selected for Review/Development":
	    	state = 500000011
	    case "Task backlog":
	        state = 500000014
	    case "Done":
	    	state = 500000012
	    case "Verified":
	    	state = 500000012
	    case "Closed":
	    	state = 500000021
	    default:
	        state = 500000014
    }
    requestor := MapUser(userMaps, item.Reporter.Username)
    if requestor == "" {
    	requestor = MapUser(userMaps, "ted")
    }
    fmt.Printf("%s: JIRA Assignee: %s | Project: %d | Status: %s\n\n", item.Key, item.Assignee.Username, projectID, item.Status)
	return ClubHouseCreateStory{
		Comments:    	comments,
		CreatedAt:   	ParseJiraTimeStamp(item.CreatedAtString),
		UpdatedAt:   	ParseJiraTimeStamp(item.UpdatedAtString),
		CompletedAt:   	ParseJiraTimeStamp(item.ResolvedAtString),
		StartedAt:   	ParseJiraTimeStampWithDelta(item.ResolvedAtString, -1),
		Description: 	sanitize.HTML(item.Description),
		Labels:      	labels,
		Name:        	sanitize.HTML(item.Summary),
		ProjectID:   	int64(projectID),
		StoryType:   	item.GetClubhouseType(),
		key:         	item.Key,
		epicLink:    	item.GetEpicLink(),
		WorkflowState:	state,
		OwnerIDs:		owners,
		RequestedBy:	requestor,
		Estimate: 		item.GetEstimate(),
	}
}
CreateStory returns a ClubHouseCreateStory from the JiraItem
package main
import (
	"encoding/xml"
	"fmt"
	"strings"
	"time"
	"strconv"
	"github.com/kennygrant/sanitize"
)
type JiraExport struct {
	ElementName xml.Name   `xml:"rss"`
	Items       []JiraItem `xml:"channel>item"`
}
type JiraAssignee struct {
	Username		string	`xml:"username,attr"`
}
type JiraReporter struct {
	Username		string	`xml:"username,attr"`
}
type JiraItem struct {
	Assignee        JiraAssignee   `xml:"assignee"`
	CreatedAtString string   		`xml:"created"`
	Description     string   		`xml:"description"`
	Key             string   		`xml:"key"`
	Labels          []string 		`xml:"labels>label"`
	Project         string   		`xml:"project"`
	Resolution      string   		`xml:"resolution"`
	Reporter        JiraReporter  	`xml:"reporter"`
	Status          string   		`xml:"status"`
	Summary         string   		`xml:"summary"`
	Title           string   		`xml:"title"`
	Type            string   		`xml:"type"`
	Parent          string   		`xml:"parent"`
	Comments     []JiraComment     `xml:"comments>comment"`
	CustomFields []JiraCustomField `xml:"customfields>customfield"`
	epicLink string
	UpdatedAtString string   		`xml:"updated"`
	ResolvedAtString string   		`xml:"resolved"`
}
type JiraCustomField struct {
	FieldName  string   `xml:"customfieldname"`
	FieldVales []string `xml:"customfieldvalues>customfieldvalue"`
}
type JiraComment struct {
	Author          string `xml:"author,attr"`
	CreatedAtString string `xml:"created,attr"`
	Comment         string `xml:",chardata"`
	ID              string `xml:"id,attr"`
}
func GetUserInfo(userMaps []userMap, jiraUsername string) (CHProjectID int, CHID string) {
	for _, u := range userMaps {
		if u.JiraUsername == jiraUsername {
			return u.CHProjectID, u.CHID
		}
	}
	return 0, ""
}
func (je *JiraExport) GetDataForClubhouse(userMaps []userMap) ClubHouseData {
	epics := []JiraItem{}
	tasks := []JiraItem{}
	stories := []JiraItem{}
	for _, item := range je.Items {
		switch item.Type {
		case "Epic":
			epics = append(epics, item)
			break
		case "Sub-task":
			tasks = append(tasks, item)
			break
		default:
			stories = append(stories, item)
			break
		}
	}
	chEpics := []ClubHouseCreateEpic{}
	for _, item := range epics {
		chEpics = append(chEpics, item.CreateEpic())
	}
	chTasks := []ClubHouseCreateTask{}
	chStories := []ClubHouseCreateStory{}
	for _, item := range tasks {
		chTasks = append(chTasks, item.CreateTask())
	}
	for _, item := range stories {
		chStories = append(chStories, item.CreateStory(userMaps))
	}
	storyMap := make(map[string]int)
	for i, item := range chStories {
		storyMap[item.key] = i
	}
	for _, task := range chTasks {
		chStories[storyMap[task.parent]].Tasks = append(chStories[storyMap[task.parent]].Tasks, task)
	}
	return ClubHouseData{Epics: chEpics, Stories: chStories}
}
func (item *JiraItem) CreateEpic() ClubHouseCreateEpic {
	return ClubHouseCreateEpic{Description: sanitize.HTML(item.Description), Name: sanitize.HTML(item.Summary), key: item.Key, CreatedAt: ParseJiraTimeStamp(item.CreatedAtString)}
}
func (item *JiraItem) CreateTask() ClubHouseCreateTask {
	return ClubHouseCreateTask{Description: sanitize.HTML(item.Summary), parent: item.Parent, Complete: false}
}