Read advance reader review of The Secret History of the Rape Kit by Pagan Kennedy

Summary | Reviews | More Information | More Books

The Secret History of the Rape Kit by Pagan Kennedy

The Secret History of the Rape Kit

A True Crime Story

by Pagan Kennedy

  • Critics' Consensus (6):
  • Readers' Rating (27):
  • Published:
  • Jan 2025, 256 pages
  • Rate this book

About this book

Reviews


Page 1 of 2
There are currently 13 member reviews
for The Secret History of the Rape Kit
Order Reviews by:
  • Pamela K. (Churchville, NY)
    Demystification of the History of the Rape Kit
    Thankfully Pagan Kennedy dedicated several years of her life and her notable skills as a researcher and journalist to write this amazing non-fiction work titled, The Secret History of the Rape Kit. It is without question a compelling account of, not only the history of the rape kit, but perhaps more importantly, reveals the extent to which sexism and misogyny impacted the social justice system of the '70's and 80's. More specifically it documents how police departments and American society failed female victims who experienced sexual assault, abuse and rape. Kennedy describes the rape kit as the "work of audacious genius" and much of the book focuses on finding and honoring this genius, Martha "Marty" Goddard. It seems highly improbable that without the extensive efforts of Pagan Kennedy to uncover the facts about Goddard's work, the truth about Goddard and the rape kit's origin would ever have been acknowledged. This book is richly layered with topics that cross genres, from mystery, biography, social commentary to crime story. Pagan Kennedy's book is profoundly moving and inspirational. By honoring Marty Goddard, the author honors all women and their rights to live in a society that protects and defends them from sexual assault and dehumanization. By demystifying the true creator of the rape kit, Kennedy gives us hope that a better and more just legal system and society may prevail.
  • Lauri Z. (Washington, DC)
    "The Secret History of the Rape Kit-A True Crime Story", by Pagan Kennedy
    This is a true story about Marty Goddard, birth name Martha, a victim of sexual assault in the late 1970's. She started as a volunteer at a crisis hotline for teens in Chicago, IL in the early 1970's and it was then that she learned that there were thousands of sexual assault cases not prosecuted due to lack of evidence. Further, there was a national law that marital rape was considered legal (and didn't become illegal until 1973). Marty became an advocate for these victims and was instrumental in developing the rape kit test. However, she did not receive a patent or professional credit for this invention as patent awards were still in the male domain, starting as early as the 1800's. The kit was ultimately patented as the "Vitullo Evidence Collection Kit for Sexual Assualt Examination", named for her junior collaborator in the development of the kit.
    Kennedy quoted a historian Autumn Stanley to make this point."…technology is treated as a synonym for "stuff men do". A revised history of technology-taking into account women's contributions would require us to redefine technology itself…the theft of valuable ideas has been built into our intellectual property system from the beginning." She was wide known for her book titled "Mothers and Daughters of Invention published in 1993.
    The reader of Kennedy's book does not learn until later in the book that she too had been twice raped in the 1960's. The author said she wanted "to find Marty and help her seek justice." Just as much as she did for herself.
    She spent years investigating the history of the rape kit, and more specifically sought to learn about the true story of its creation told to her by Goddard herself. This book shares her persistent digging through thousands of pages of information, interviewing numerous people who ight ave known the history and even speaking with a small number of people who knew Marty during her lifetime. Kennedy learned late into her investigation the Marty Goddard died in 2015 at the age of 74. One of the early original rape kits invented by her is at the Smithsonian's National Museum of American History in Washington, DC.

    The book held my attention from start to finish. It was compelling and by no means dry. Anyone interested in women's rights should read this book; it is even more timely in the political environment we find ourselves in since 2022. At the very least this book should be required reading for women's' studies curriculums, policy studies, legal studies, sociology, both at the undergraduate and post-graduate levels, as well as at law schools and medical schools in the US.
  • Wanda T. (The Villages, FL)
    The History of the Rape Kit by Pagan Kennedy
    History has always been my favorite topic so when I saw this book I had to read it. The Secret History of the Rape Kit - A True Crime Story by Pagan Kennedy was quite an eye opener. The author did extensive research trying to find the origin of the rape kit. Her investigation led her to a Chicago police Sargent, Louis Vitullo, but she became suspicious because she knew the Chicago police department was well known for its violent behavior toward suspects and victims, as well, of crimes.

    After further digging she uncovered the name Martha "Marty" Goddard and set out on a quest to find her. Vitullo at this point had died so Pagan wanted interview Goddard to find out how the rape kit came to be.

    The story reveals how Goddard decided a rape kit was a necessity in determining whether a rape took place and possibly finding the perpetrator. The challenges that Goddard faced were incredible but she never gave up. Pagan had her share of challenges as well. I don't want to reveal too much. The book is not long and is filled with an amazing amount of information from the 70's until the book was written. It's a very interesting account of the little known origin of the rape kit used today to help the victims. I applaud Pagan and her temerity to take on a topic such as this.
  • Windell H. (Rock Hill, SC)
    Secret History of the Rape Kit
    A very well written book. The research on this was exceptional. In this time period women were being blatantly discriminated against by many branches of the Justice Department. Very strong and persistent women were involved in changing this. Victims of rape had very little physical evidence to support their case. Women were often times viewed as the perpetrator. Enter one woman who took up the cause and developed a forensic kit to test for violent sexual abuse . These kits were dispensed free of charge to many police departments. Many were used but never tested. Finally when a national DNA database was developed did rape kits become essential in prosecution of perpetrators. A great move in the empowerment of women and their quest for equal rights. I really enjoyed this book.
  • Jim T. (North Ridgeville, OH)
    The Secret History of.. the Rape Kit??!
    "The Secret History of the Rape Kit: A True Crime Story" by Pagan Kennedy
    Reviewed by Jim Traxler

    If I were simply browsing through a list of new books, looking for something of interest, I have to confess that a book with the title, "The Secret History of the Rape Kit: A True Crime Story," would not draw much attention for me. But since the book was provided to me for review by NetGalley, I waded into it. To my great surprise, it became a page-turner. Imagine a scenario where a social worker named Marty Goddard with no medical or forensic expertise was able to design a kit for medical workers to gather forensic evidence from someone who had been raped.

    In her work with the poor people in Chicago, she had discovered that rapists were rarely caught and prosecuted. She couldn't understand why and barged into the Chicago police department to find out why. What she discovered was there was a general attitude among policemen at the time that no one actually rapes women, they just got what they deserved. So law enforcement regarded rape to not be a serious crime. Furthermore, there were no procedures in Emergency Rooms to gather evidence of rape, and the ER staff were often just too busy to take the time to do so.

    Long (and very interesting) story short, she designed a kit and took it to a highly regarded Chicago police crime lab analyst named Louis Vitullo, who adopted and approved it, which became known as the "Vitullo Kit." So the female inventor of the kit got no credit for this ultimately life-changing invention. Why? Ms. Goddard allowed that to happen in order for the kit to be accepted by male-dominated police departments, since it had a respected male police officer's name on it.

    The book is much more than the history of the rape kit. The author Pagan Kennedy, after learning of Goddard's role in the development of the kit, goes looking for her. After achieving success against all odds in getting hospitals and law enforcement to use the rape kits, Goddard disappears from view, and the story becomes one of tracing her down.

    That story is just as interesting as the rape kit story. In the process of trying to find Goddard, Kennedy learns that Goddard herself had been the victim of sexual assault. Furthermore, we learn that Kennedy had also been a victim of sexual assault, both as a child and as an adult. So the search for Goddard became a personal memoir of the author's own struggles as a victim and survivor of rape.

    These two interwoven stories are heart-wrenching tales of what women went through and the inability of society to recognize and reform itself. But thankfully, with the acceptance of the rape kit, paired later with the ability to use DNA samples to identify and arrest sexual predators, the current rate of unsolved rape cases is much lower. It also means that there is awareness that rapists are no longer likely to escape punishment. However, the stigma of reporting sexual assaults still remains today, even after the "me-too" movement. And pockets of misogyny still reside in police and sheriff departments everywhere.

    This is a well-written saga, a real "true crime story." I recommend it to all for a better understanding of the woman who gave rape victims a chance for justice.
  • Lorraine D. (Lacey, WA)
    The Secret History of the Rape Kit, A True Crime Story - A Remarkable Revelation
    To say that The Secret History of the Rape Kit, A True Crime Story is captivating is to say the least. It is a revelation of how things were, and likely still are in some locations, and the importance of truly observing, listening, and taking action. Martha "Marty" Goddard suffered severely in her early years and the impact was deep, painful, with long lasting effects. She was heroic in her attempts to seek solutions and establish fair, reliable systems to identify offenders and help victims. It was a monumental effort to infiltrate the male establishment, rectify the lack of relevant public education, acquire resources, and achieve understanding of the trauma victims feel. The path was not only challenging, it reminded her on a daily basis of her own past experiences. Part 2 of the book traces Marty Goddard's lifelong struggle and her passion to expose the situation and save whomever she could with the effort. It also strikingly reveals the author, Pagan Kennedy's passion and purpose for this story being written. I highly applaud her for writing this valuable book, and for bringing this history to light. It was a real page turner and well worth the read.
  • Dona C. (Knoxville, TN)
    A story of female empowerment
    Incredible work of correcting and rewriting a long-held origin story. The reader gets a factual explanation of the creation of such a necessary tool as well as a look at what survivors were (and still are) facing when reporting a sexual assault. Wonderful research and notes and captivating storytelling.
  • Page
  • 1
  • 2

More Information

Read-Alikes

BookBrowse Book Club

Book Jacket
The Cover Girl
by Amy Rossi
Find them early enough, and they will always be her girls.

Members Recommend

  • Book Jacket
    The Sister's Curse
    by Nicola Solvinic
  • Book Jacket
    The Lost Story of Eva Fuentes
    by Chanel Cleeton
    A mysterious book links three women across generations in this novel by New York Times bestselling author Chanel Cleeton.
  • Book Jacket
    The Vanishing Place
    by Zoë Rankin
Who Said...

On the whole, human beings want to be good, but not too good and not quite all the time

Click Here to find out who said this, as well as discovering other famous literary quotes!

Book
Trivia
  • Book Trivia

    Can you name the title?

    Test your book knowledge with our daily trivia challenge!

Wordplay

Solve this clue:

W the C A the M W P

and be entered to win..

Your guide toexceptional          books

BookBrowse seeks out and recommends the best in contemporary fiction and nonfiction—books that not only engage and entertain but also deepen our understanding of ourselves and the world around us.

 


Debugging Information
ColdFusion Server Developer 2021,0,13,330286
Template /arc/arc_reviews/detail/index.cfm
Time Stamp 31-May-26 09:35 PM
Locale en
User Agent Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Remote IP 127.0.0.1
Host Name 127.0.0.1


Execution Time

Total Time Avg Time Count Template
1780263329663 ms 1.78026332966E+012 ms 1 /root/website/app_server.cfm
1211 ms 1211 ms 1 /root/website/arc/arc_reviews/detail/index.cfm
332 ms 332 ms 1 /root/website/queries/qry_get_discussion_by_id.cfm
292 ms 292 ms 1 /root/website/app_layout.cfm
246 ms 246 ms 1 /root/website/app_globals.cfm
194 ms 97 ms 2 /root/website/adsystem/adsystem_mod.cfm
182 ms 182 ms 1 /root/website/site/blocks/layout/dsp_right_column.cfm
146 ms 146 ms 1 /root/website/queries/qry_get_briefs_reader_rating.cfm
105 ms 105 ms 1 /root/website/site/blocks/layout/dsp_footer.cfm
103 ms 103 ms 1 /root/website/adzones/showcase_track.cfm
91 ms 91 ms 1 /root/website/adzones/AdZone6.cfm
78 ms 78 ms 1 /root/website/queries/qry_get_active_obc.cfm
66 ms 66 ms 1 /root/website/site/blocks/dsp_border_first_impressions.cfm
65 ms 65 ms 1 /root/website/queries/qry_get_arcs_for_ad.cfm
41 ms 41 ms 1 /root/website/queries/qry_get_reviews_by_arc_id.cfm
39 ms 39 ms 1 /root/website/queries/qry_get_current_competition.cfm
38 ms 38 ms 1 /root/website/queries/qry_get_books_by_briefs_category.cfm
34 ms 34 ms 1 /root/website/queries/qry_get_arc_by_id.cfm
33 ms 11 ms 3 /root/website/actions/act_spider_tracker.cfm
33 ms 33 ms 1 /root/website/actions/adstatus.cfm
26 ms 26 ms 1 /root/website/queries/qry_get_current_wordplay.cfm
26 ms 26 ms 1 /root/website/queries/qry_get_preview_awards_by_id.cfm
24 ms 24 ms 1 /root/website/act_check_login.cfm
24 ms 24 ms 1 /root/website/queries/qry_get_member_info.cfm
17 ms 17 ms 1 /root/website/queries/qry_get_preview_by_id.cfm
16 ms 16 ms 1 /root/website/arc/arc_reviews/detail/dsp_briefshell.cfm
13 ms 13 ms 1 /root/website/arc/arc_reviews/detail/dsp_reviews.cfm
13 ms 13 ms 1 /root/website/site/blocks/dsp_book_giveaway.cfm
11 ms 11 ms 1 /root/website/queries/qry_get_author_bookcount.cfm
5 ms 5 ms 1 /root/website/queries/qry_get_obc_number.cfm
1 ms 1 ms 1 /root/website/queries/qry_get_current_ezine.cfm
1 ms 1 ms 1 /root/website/site/blocks/dsp_top_brief_block.cfm
1 ms 1 ms 1 /root/website/site/blocks/layout/dsp_bottom_block.cfm
1 ms 1 ms 1 /root/website/site/blocks/layout/dsp_header.cfm
1 ms 1 ms 1 /root/website/site/blocks/layout/main_menu.cfm
0 ms 0 ms 1 /root/website/Application.cfm
0 ms 0 ms 1 /root/website/act_libraryIPLogin.cfm
0 ms 0 ms 1 /root/website/actions/udfs.cfm
0 ms 0 ms 1 /root/website/arc/arc_reviews/detail/dsp_views.cfm
0 ms 0 ms 1 /root/website/banners/ad_594.cfm
0 ms 0 ms 1 /root/website/formurl2attributes.cfm
0 ms 0 ms 1 /root/website/js/fbjavascriptsdk.cfm
0 ms 0 ms 1 /root/website/queries/qry_get_free_newsletters.cfm
0 ms 0 ms 1 /root/website/queries/qry_get_previous_arcs_for_ad.cfm
0 ms 0 ms 1 /root/website/site/blocks/act_book_view_tracking.cfm
0 ms 0 ms 1 /root/website/site/blocks/dsp_border_booktalk.cfm
0 ms 0 ms 1 /root/website/site/blocks/dsp_header_newsletter.cfm
0 ms 0 ms 1 /root/website/site/blocks/dsp_wordplay.cfm
0 ms 0 ms 1 /root/website/site/blocks/email_modal.cfm
0 ms 0 ms 1 /root/website/site/blocks/layout/google_tags.cfm
0 ms 0 ms 1 /root/website/site/blocks/layout/head.cfm
0 ms 0 ms 1 /root/website/site/blocks/layout/header_announcement.cfm
0 ms 0 ms 1 /root/website/site/blocks/layout/main_search.cfm
1 ms  STARTUP, PARSING, COMPILING, LOADING, & SHUTDOWN
1212 ms  TOTAL EXECUTION TIME
red = over 250 ms average execution time


SQL Queries

spidercheck (Datasource=bookbrowse_com_new, Time=32ms, Records=1) in /root/website/actions/act_spider_tracker.cfm @ 21:35:29.029
SELECT	a.bot_number
        FROM	bots a
        WHERE	charindex(a.bot_name, ?) > 0
		OR a.bot_ip = ?
Query Parameter Value(s) -
Parameter #1(cf_sql_varchar) = Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Parameter #2(cf_sql_varchar) = 127.0.0.1

get_member_info (Datasource=bookbrowse_com_new, Time=23ms, Records=0) in /root/website/queries/qry_get_member_info.cfm @ 21:35:29.029
select 	a.*, 
    		b.member_account_type_name, b.member_account_type_charge, b.member_account_type_charge_frequency,  b.member_account_type_months, 
            c.member_chargetype_name, c.member_chargetype_number, a.member_classification_number, a.member_book_format
	
    from members a, member_account_types b, member_chargetype c
	
    where a.member_account_type_number = b.member_account_type_number
	and a.payment_method_id = c.member_chargetype_number
	and a.member_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 0

adactive (Datasource=bookbrowse_com_new, Time=33ms, Records=2) in /root/website/actions/adstatus.cfm @ 21:35:29.029
SELECT	viewby, section
    FROM	adsystem 
    WHERE	active  = 1 
    AND		start_date <= GETDATE()
    AND 	(viewby = ? OR viewby = 'all')
Query Parameter Value(s) -
Parameter #1(CF_SQL_VARCHAR) = non

get_current_ezine (Datasource=bookbrowse_com_new, Time=0ms, Records=1, Cached Query) in /root/website/queries/qry_get_current_ezine.cfm @ 21:35:29.029
select		top 1 ezine_number, ezine_dt, ezine_image, ezine_brief_description, ezine_introduction
from		ezines
where		ezine_active_flag = 1
and 		ezine_type_number = 4
and			ezine_dt < getdate()
order by 	ezine_dt DESC
get_current_wordplay (Datasource=bookbrowse_com_new, Time=25ms, Records=1) in /root/website/queries/qry_get_current_wordplay.cfm @ 21:35:29.029
SELECT		a.wordplay_number, a.wordplay_dt, a.wordplay_name, a.wordplay_intro_text, b.wordplay_puzzle_number, b.wordplay_puzzle_question
    FROM		wordplays a 
	INNER JOIN	wordplay_puzzle_mapping c on c.wordplay_number = a.wordplay_number
	INNER JOIN	wordplay_puzzles b on b.wordplay_puzzle_number = c.wordplay_puzzle_number
	WHERE		a.wordplay_number = (	select top 1 a.wordplay_number
                                from wordplays a, wordplay_puzzles b, wordplay_puzzle_mapping c
                                where a.wordplay_number = c.wordplay_number
                                and b.wordplay_puzzle_number = c.wordplay_puzzle_number
                                and a.wordplay_dt < getdate()
                                and a.wordplay_expiration_dt > dateadd(day, -1, getdate())
                                order by a.wordplay_dt asc
                                )
get_ComNo (Datasource=bookbrowse_com_new, Time=17ms, Records=0) in /root/website/queries/qry_get_current_competition.cfm @ 21:35:29.029
SELECT 	TOP 1 	x.competition_number, x.bb_briefs_flag
	from			competitions x
	
		WHERE	x.competition_dt <= getdate()
		AND		x.competition_expiration_dt > dateadd(d,-1,getdate())
get_current_competition (Datasource=bookbrowse_com_new, Time=21ms, Records=0) in /root/website/queries/qry_get_current_competition.cfm @ 21:35:29.029
SELECT 	x.competition_number, x.book_number, x.competition_teaser_title, x.competition_teaser_description, x.competition_intro_text, x.competition_expiration_dt, x.bb_briefs_flag, x.competition_full_info_flag, x.competition_type, x.competition_optin,x.competition_optin_text, 
				a.book_title as "title",
				(b.author_first_name + ' ' +  b.author_middle_initial + ' ' + b.author_last_name) as "author",
	            f.edition_publish_dt AS "hardcover_publish_dt", f.edition_jacket_image as "hardcover_jacket_image",
				g.edition_publish_dt AS "paperback_publish_dt", g.edition_jacket_image as "paperback_jacket_image"
	
		FROM 		competitions x
		INNER JOIN	books a on a.book_number = x.book_number
		INNER JOIN	book_author_mapping c on c.book_number = x.book_number
		INNER JOIN	authors b on c.author_number = b.author_number
		LEFT JOIN	editions f on a.book_number = f.book_number and f.edition_paperback_flag = 0
		LEFT JOIN	editions g on a.book_number = g.book_number and g.edition_paperback_flag = 1

		WHERE		x.competition_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 0

get_previous_arcs_for_ad (Datasource=bookbrowse_com_new, Time=0ms, Records=0, Cached Query) in /root/website/queries/qry_get_previous_arcs_for_ad.cfm @ 21:35:29.029
SELECT 	a.arc_number,a.arc_client_url,a.arc_active_dt, a.arc_off_ad_dt,
		b.ezine_preview_number, b.ezine_preview_title, b.ezine_preview_subtitle, b.ezine_preview_jacket_image, b.ezine_preview_author, b.ezine_preview_publisher, 
		b.ezine_preview_publish_dt, b.ezine_preview_jacket_desc, b.ezine_preview_number_of_pages, b.ezine_preview_bb_comments, b.ezine_preview_isbn13,
		c.ezine_preview_category_name AS "ezine_preview_category",
		(select count(*) from arc_allocator d where d.arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) as "reviews",
		(select (CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,0))) AS numeric(12,0)))+
				(CASE WHEN right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) > 25 AND right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) < 50 THEN 0.5
				 WHEN right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) > 50 AND right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) < 75 THEN -0.5
				 ELSE 0
				 END)
 			from arc_allocator	where arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) AS arcrating,
 			(select (CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,1))) AS numeric(12,1)))from arc_allocator where arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) AS "decrating"

FROM arcs a
INNER JOIN ezine_previews b ON b.ezine_preview_number = a.ezine_preview_number
INNER JOIN ezine_preview_categories c ON b.ezine_preview_category_number = c.ezine_preview_category_number

WHERE arc_closed_flag = 1
AND arc_obc_flag = 0
AND getdate() >= arc_on_ad_dt
AND getdate() < arc_off_ad_dt

ORDER BY a.arc_on_ad_dt DESC
get_future_obc (Datasource=bookbrowse_com_new, Time=25ms, Records=0) in /root/website/queries/qry_get_active_obc.cfm @ 21:35:29.029
SELECT 		a.arc_forumidfk, a.discourse_flag, a.arc_promo_text, arc_on_ad_dt,
				b.ezine_preview_number, b.ezine_preview_title, b.ezine_preview_subtitle, b.ezine_preview_jacket_image, b.ezine_preview_author, b.ezine_preview_jacket_desc, b.ezine_preview_publisher, ezine_preview_publish_dt, ezine_preview_number_of_pages, ezine_preview_isbn, ezine_preview_short_summary,
	            b.ezine_preview_bb_author_link, ezine_preview_bb_link
	
	FROM 		arcs a
	INNER JOIN 	ezine_previews b ON b.ezine_preview_number = a.ezine_preview_number
	
	WHERE 		arc_obc_flag = 1

	AND 		getdate() < arc_on_ad_dt
	
		ORDER BY  	NEWID()
get_active_obc (Datasource=bookbrowse_com_new, Time=25ms, Records=1) in /root/website/queries/qry_get_active_obc.cfm @ 21:35:29.029
SELECT 		a.arc_forumidfk, a.discourse_flag, a.arc_promo_text,
				b.ezine_preview_number, b.ezine_preview_title, b.ezine_preview_subtitle, b.ezine_preview_jacket_image, b.ezine_preview_author, b.ezine_preview_jacket_desc, b.ezine_preview_publisher, ezine_preview_publish_dt, ezine_preview_number_of_pages,  ezine_preview_isbn, ezine_preview_short_summary,
	            b.ezine_preview_bb_author_link, ezine_preview_bb_link,
	            c.book_reading_guide
	
	FROM 		arcs a
	INNER JOIN 	ezine_previews b ON b.ezine_preview_number = a.ezine_preview_number
	LEFT JOIN  	books c on c.book_number = b.ezine_preview_bb_link
	
	WHERE 		a.arc_obc_flag = 1
	AND			a.arc_active_flag = 0
	AND 		arc_closed_flag = 1
	AND 		getdate() >= arc_on_ad_dt
	AND 		getdate() < arc_off_ad_dt
	ORDER BY  	NEWID()
get_recent_obc (Datasource=bookbrowse_com_new, Time=26ms, Records=4) in /root/website/queries/qry_get_active_obc.cfm @ 21:35:29.029
SELECT 		a.arc_forumidfk, a.discourse_flag, a.arc_promo_text,
				b.ezine_preview_number, b.ezine_preview_title, b.ezine_preview_subtitle, b.ezine_preview_jacket_image, b.ezine_preview_author, b.ezine_preview_jacket_desc, b.ezine_preview_publisher, ezine_preview_publish_dt, ezine_preview_number_of_pages,  ezine_preview_isbn, ezine_preview_short_summary,
	            b.ezine_preview_bb_author_link, ezine_preview_bb_link,
	            c.book_reading_guide
	
	FROM 		arcs a
	INNER JOIN 	ezine_previews b ON b.ezine_preview_number = a.ezine_preview_number
	LEFT JOIN  	books c on c.book_number = b.ezine_preview_bb_link
	
	WHERE a.arc_number IN (select top 4 arc_number
							from		arcs
							WHERE 		arc_obc_flag = 1
							AND			arc_active_flag = 0
							AND 		arc_closed_flag = 1
							AND 		getdate() > arc_off_ad_dt
							ORDER BY	arc_on_ad_dt DESC)
	ORDER BY  	NEWID()
get_arc_by_id (Datasource=bookbrowse_com_new, Time=33ms, Records=1) in /root/website/queries/qry_get_arc_by_id.cfm @ 21:35:29.029
SELECT		a.arc_client_url,
			a.bc_active_flag,
			a.arc_forumidfk,
			b.ezine_preview_number, b.ezine_preview_title, b.ezine_preview_subtitle, b.ezine_preview_jacket_image, b.ezine_preview_author, b.ezine_preview_publisher, b.ezine_preview_publish_dt, b.ezine_preview_number_of_pages, b.ezine_preview_isbn, b.ezine_preview_isbn13, b.ezine_preview_bb_link, b.ezine_preview_bb_author_link, b.ezine_preview_firsts_flag, b.ezine_preview_rating, b.ezine_preview_reading_level,
			c.ezine_preview_category_name,
			(select count(arc_allocator_review_rating) from arc_allocator	where arc_number = ? and arc_allocator_review_approved_flag = 1) AS arccount,
            
            (select (CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,0))) AS numeric(12,0)))+
				(CASE WHEN right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) > 25 AND right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) < 50 THEN 0.5
				 WHEN right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) >= 50 AND right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) < 75 THEN -0.5
				 ELSE 0
				 END)
 			from arc_allocator	where arc_number = ? and arc_allocator_review_approved_flag = 1) AS arcrating
     
FROM		arcs a
INNER JOIN	ezine_previews b on b.ezine_preview_number = a.ezine_preview_number
INNER JOIN	ezine_preview_categories c on c.ezine_preview_category_number = b.ezine_preview_category_number

WHERE		a.arc_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1142
Parameter #2(CF_SQL_INTEGER) = 1142
Parameter #3(CF_SQL_INTEGER) = 1142

get_reviews_by_arc_id (Datasource=bookbrowse_com_new, Time=41ms, Records=13) in /root/website/queries/qry_get_reviews_by_arc_id.cfm @ 21:35:29.029
SELECT		arc_number, arc_allocator_number, arc_allocator_review_dt, arc_allocator_reviewer_name, arc_allocator_review_title, arc_allocator_review, arc_allocator_review_rating,
			member_cc_city, member_cc_state

FROM		arc_allocator a
inner join	members m on m.member_number = a.member_number

WHERE		arc_number = ?
AND			arc_allocator_review_approved_flag = 1


	ORDER BY arc_allocator_review_rating DESC, arc_allocator_review_dt DESC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1142

get_briefs_reader_rating (Datasource=bookbrowse_com_new, Time=145ms, Records=1) in /root/website/queries/qry_get_briefs_reader_rating.cfm @ 21:35:30.030
SELECT	(CAST(AVG(CAST(rating AS numeric(12,0))) AS numeric(12,0)))+
				(CASE WHEN right(CAST(AVG(CAST(rating AS numeric(12,2))) AS numeric(12,2)),2) > 25 AND right(CAST(AVG(CAST(rating AS numeric(12,2))) AS numeric(12,2)),2) < 50 THEN 0.5
				 WHEN right(CAST(AVG(CAST(rating AS numeric(12,2))) AS numeric(12,2)),2) >= 50 AND right(CAST(AVG(CAST(rating AS numeric(12,2))) AS numeric(12,2)),2) < 75 THEN -0.5
			ELSE 0
			END) AS "avrating",
            count(rating) as "ratcount"
            
	FROM (
		SELECT reader_review_rating AS rating
		FROM reader_reviews
		WHERE ezine_preview_number = ?
		
		AND reader_review_rating > 0
		
		UNION ALL
		
		SELECT reading_list_book_rating AS rating
		FROM reading_lists
		WHERE book_number LIKE 'p%'
		AND TRY_CAST(SUBSTRING(book_number, 2, LEN(book_number)) AS INT) = ?
		AND reading_list_book_rating > 0
		AND TRY_CAST(SUBSTRING(book_number, 2, LEN(book_number)) AS INT) IS NOT NULL
	) combined_ratings
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 19711
Parameter #2(CF_SQL_INTEGER) = 19711

get_preview_by_id (Datasource=bookbrowse_com_new, Time=17ms, Records=1) in /root/website/queries/qry_get_preview_by_id.cfm @ 21:35:30.030
select 			a.ezine_preview_number,
				a.ezine_number, 
				a.ezine_preview_category_number, 
				a.ezine_preview_title, 
				a.ezine_preview_subtitle, 
				a.ezine_preview_author, 
				a.ezine_preview_publisher,
				a.ezine_preview_publish_dt,
				a.ezine_preview_number_of_pages, 
				a.ezine_preview_jacket_image,
				a.ezine_preview_reviews,
				a.ezine_preview_short_summary,
				a.ezine_preview_jacket_desc,
				a.ezine_preview_reading_guide,
				a.ezine_preview_bb_comments, 
				a.ezine_preview_isbn,
				a.ezine_preview_isbn13,
				a.ezine_preview_rating,
				a.ezine_preview_bb_link,
                a.ezine_preview_bb_author_link,
                a.ezine_preview_firsts_flag,
                a.ezine_preview_reading_level,
                a.ezine_preview_paperback_flag,
				b.*,
                c.ezine_dt, c.ezine_description
,(select publisher_holding_company from publishers where ezine_preview_publisher like publisher_imprint AND publisher_holding_company LIKE 'Harper%') AS "publisher_holding_company"		
 				
from ezine_previews a 
inner join ezine_preview_categories b ON b.ezine_preview_category_number = a.ezine_preview_category_number
left join ezines c ON c.ezine_number = a.ezine_number

where ezine_preview_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 19711

get_preview_awards_by_id (Datasource=bookbrowse_com_new, Time=25ms, Records=0) in /root/website/queries/qry_get_preview_awards_by_id.cfm @ 21:35:30.030
select a.book_award_number, a.book_award_name, a.book_award_image, c.book_award_dt
    from book_awards a 
    inner join book_awards_category b on b.book_award_number = a.book_award_number
    inner join book_awards_mapping c on c.book_awards_category_number = b.book_awards_category_number
    where ezine_preview_number =  ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 19711

get_arc_idfk (Datasource=bookbrowse_com_new, Time=18ms, Records=0) in /root/website/queries/qry_get_discussion_by_id.cfm @ 21:35:30.030
SELECT 		a.arc_forumidfk,a.discourse_flag
    FROM 		arcs a
    INNER JOIN 	ezine_previews e on e.ezine_preview_number = a.ezine_preview_number
    
	
        WHERE 		e.ezine_preview_number = ? 
    AND DATALENGTH(a.arc_forumidfk) > 0 AND arc_obc_flag=1
Query Parameter Value(s) -
Parameter #1(cf_sql_integer) = 19711

get_arc_idfk_legacy (Datasource=bookbrowse_com_new, Time=15ms, Records=0) in /root/website/queries/qry_get_discussion_by_id.cfm @ 21:35:30.030
SELECT 		a.arc_forumidfk,a.discourse_flag
    FROM 		arcs a
    INNER JOIN 	ezine_previews e on e.ezine_preview_number = a.ezine_preview_number
    
	
        WHERE 		e.ezine_preview_number = ? 
    AND DATALENGTH(a.arc_forumidfk) > 0 AND arc_obc_flag=1 AND a.discourse_flag = 0
Query Parameter Value(s) -
Parameter #1(cf_sql_integer) = 19711

obc_discussions (Datasource=booktalk_new, Time=250ms, Records=0) in /root/website/queries/qry_get_discussion_by_id.cfm @ 21:35:30.030
SELECT 		t.name,
                m.title, m.body,
                u.username, t.id,
				(SELECT COUNT(*) from booktalk_messages where threadidfk = t.id) AS	"responses"
                
    FROM 		booktalk_forums f
    INNER JOIN	booktalk_threads t on t.forumidfk = f.id
    INNER JOIN	booktalk_messages m on m.posted = t.lastpostcreated
    INNER JOIN	booktalk_users u on u.id = m.useridfk
    
    WHERE 	f.id = ?
    AND 	f.active = 1
	AND		t.active = 1
    
    ORDER BY t.name, t.messages DESC
Query Parameter Value(s) -
Parameter #1(cf_sql_varchar) =

searchResults (Datasource=bookbrowse_com_new, Time=19ms, Records=0) in /root/website/queries/qry_get_discussion_by_id.cfm @ 21:35:30.030
SELECT book_number, post_id, topic_id, blurb, username, topic_title
					FROM DiscourseSearchResults
					
        WHERE 		book_number = ? 
                    AND topic_id IS NOT NULL
Query Parameter Value(s) -
Parameter #1(cf_sql_varchar) = p19711

ya_check (Datasource=bookbrowse_com_new, Time=12ms, Records=0) in /root/website/queries/qry_get_books_by_briefs_category.cfm @ 21:35:30.030
select ezine_preview_reading_level 
from ezine_previews 
where ezine_preview_number = ?
and ezine_preview_reading_level = 2
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 19711

get_books_by_brief (Datasource=bookbrowse_com_new, Time=24ms, Records=20) in /root/website/queries/qry_get_books_by_briefs_category.cfm @ 21:35:30.030
select 			top 20
				a.ezine_preview_reading_level,
				b.category_name,
				c.category_number, 
				d.book_number, d.book_title,
				f.author_number, f.author_first_name, author_middle_initial, author_last_name
				
from 			ezine_previews a 
inner join		categories b on b.ezine_preview_category_number = a.ezine_preview_category_number
inner join		category_book_mapping c on c.category_number = b.category_number
inner join		books d on d.book_number = c.book_number
inner join		book_author_mapping e on e.book_number = d.book_number
inner join		authors f on f.author_number = e.author_number

where			a.ezine_preview_number = ? 

order by 		d.book_number DESC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 19711

get_author_bookcount (Datasource=bookbrowse_com_new, Time=10ms, Records=0) in /root/website/queries/qry_get_author_bookcount.cfm @ 21:35:30.030
select		b.book_title as "title", 1 as "bb_flag", b.book_number as "number"
        from		book_author_mapping a
		inner join	books b on b.book_number = a.book_number
        where		a.author_number = ?
union
    	select		c.ezine_preview_title as "title", 0 as "bb_flag", c.ezine_preview_number as "number"
        from		ezine_previews c
        where		c.ezine_preview_bb_author_link = ?
        and			c.ezine_preview_bb_link = 0
		and 1=0
order by title DESC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 0
Parameter #2(CF_SQL_INTEGER) = 0

get_obc_number (Datasource=bookbrowse_com_new, Time=5ms, Records=1) in /root/website/queries/qry_get_obc_number.cfm @ 21:35:30.030
select a.arc_forumidfk
    from arcs a
    
    	where a.ezine_preview_number = ?
Query Parameter Value(s) -
Parameter #1(cf_sql_numeric) = 19711.0

get_arcs_for_ad (Datasource=bookbrowse_com_new, Time=31ms, Records=0) in /root/website/queries/qry_get_arcs_for_ad.cfm @ 21:35:30.030
SELECT 	top 10 a.arc_number,arc_promo_text,
		b.ezine_preview_number, b.ezine_preview_title, b.ezine_preview_subtitle, b.ezine_preview_jacket_image, b.ezine_preview_author, b.ezine_preview_publish_dt, 
		(select (CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,0))) AS numeric(12,0)))+
				(CASE WHEN right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) > 25 AND right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) < 50 THEN 0.5
				 WHEN right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) > 50 AND right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) < 75 THEN -0.5
				 ELSE 0
				 END)
 			from arc_allocator	where arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) AS arcrating

FROM arcs a
INNER JOIN ezine_previews b ON b.ezine_preview_number = a.ezine_preview_number

WHERE arc_closed_flag = 1
AND arc_obc_flag = 0
AND getdate() >= arc_on_ad_dt
AND (select count(*) from arc_allocator d where d.arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) > 1
and getdate() <= dateadd(day,1,a.arc_off_ad_dt)

ORDER BY NEWID()
get_arcs_for_ad (Datasource=bookbrowse_com_new, Time=34ms, Records=3) in /root/website/queries/qry_get_arcs_for_ad.cfm @ 21:35:30.030
SELECT 	top 3 a.arc_number,arc_promo_text,
			b.ezine_preview_number, b.ezine_preview_title, b.ezine_preview_subtitle, b.ezine_preview_jacket_image, b.ezine_preview_author, b.ezine_preview_publish_dt, 
			(select (CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,0))) AS numeric(12,0)))+
					(CASE WHEN right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) > 25 AND right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) < 50 THEN 0.5
					 WHEN right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) > 50 AND right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) < 75 THEN -0.5
					 ELSE 0
					 END)
				from arc_allocator	where arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) AS arcrating

	FROM arcs a
	INNER JOIN ezine_previews b ON b.ezine_preview_number = a.ezine_preview_number

	WHERE arc_closed_flag = 1
	AND arc_obc_flag = 0
	AND getdate() >= arc_on_ad_dt
	AND (select count(*) from arc_allocator d where d.arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) > 1

	ORDER BY a.arc_off_ad_dt DESC
get_ads (Datasource=bookbrowse_com_new, Time=35ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 21:35:30.030
SELECT		a.adid,	adweight
	FROM		adsystem a
	INNER JOIN 	ad_category_mapping b ON b.adid = a.adid
	WHERE		a.section = ?
	AND			a.active  = 1
	AND 		a.start_date <= GETDATE()
	
	AND (a.viewby LIKE '%n%' OR a.viewby = 'all')
            

	AND     (b.category_number IN (	SELECT	category_number
									FROM	category_book_mapping
									WHERE	book_number = ?)
      		OR 	b.category_number = ?)
Query Parameter Value(s) -
Parameter #1(CF_SQL_VARCHAR) = adzone6
Parameter #2(CF_SQL_VARCHAR) = 0
Parameter #3(CF_SQL_VARCHAR) = 0

get_ads (Datasource=bookbrowse_com_new, Time=44ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 21:35:30.030
SELECT	a.adid,	adweight
        FROM	adsystem a
        WHERE	a.section = ? 
        AND 	a.active  = 1 
        AND		a.start_date <= GETDATE()	
        
        AND (a.viewby LIKE '%n%' OR a.viewby = 'all')
        AND (select count(*) from ad_category_mapping where datalength(category_number) >= 1 and adid = a.adid) = 0
Query Parameter Value(s) -
Parameter #1(CF_SQL_VARCHAR) = adzone6

get_type (Datasource=bookbrowse_com_new, Time=9ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 21:35:30.030
SELECT	a.start_date, a.adid, a.end_date, a.camp_views, a.image_name, a.alt_text, a.views, a.code, a.adsize
        FROM	adsystem a
        WHERE	a.adid = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1112

get_quotes (Datasource=bookbrowse_com_new, Time=12ms, Records=1) in /root/website/site/blocks/dsp_book_giveaway.cfm @ 21:35:30.030
select top 1 ezine_number, ezine_quote, ezine_quote_title
	    from ezines
	    where len(ezine_quote_title) > 1
	    order by newid()
get_free_newsletters (Datasource=bookbrowse_com_new, Time=0ms, Records=4, Cached Query) in /root/website/queries/qry_get_free_newsletters.cfm @ 21:35:30.030
SELECT 	*
    FROM 	free_newsletters
get_ads (Datasource=bookbrowse_com_new, Time=42ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 21:35:30.030
SELECT		a.adid,	adweight
	FROM		adsystem a
	INNER JOIN 	ad_category_mapping b ON b.adid = a.adid
	WHERE		a.section = ?
	AND			a.active  = 1
	AND 		a.start_date <= GETDATE()
		 	AND a.adid NOT IN (?) 
	AND (a.viewby LIKE '%n%' OR a.viewby = 'all')
            

	AND     (b.category_number IN (	SELECT	category_number
									FROM	category_book_mapping
									WHERE	book_number = ?)
      		OR 	b.category_number = ?)
Query Parameter Value(s) -
Parameter #1(CF_SQL_VARCHAR) = showcase_track
Parameter #2(CF_SQL_INTEGER) = 1112
Parameter #3(CF_SQL_VARCHAR) = 0
Parameter #4(CF_SQL_VARCHAR) = 0

get_ads (Datasource=bookbrowse_com_new, Time=37ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 21:35:30.030
SELECT	a.adid,	adweight
        FROM	adsystem a
        WHERE	a.section = ? 
        AND 	a.active  = 1 
        AND		a.start_date <= GETDATE()	
        		AND a.adid NOT IN (?) 
        AND (a.viewby LIKE '%n%' OR a.viewby = 'all')
        AND (select count(*) from ad_category_mapping where datalength(category_number) >= 1 and adid = a.adid) = 0
Query Parameter Value(s) -
Parameter #1(CF_SQL_VARCHAR) = showcase_track
Parameter #2(CF_SQL_INTEGER) = 1112

get_type (Datasource=bookbrowse_com_new, Time=20ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 21:35:30.030
SELECT	a.start_date, a.adid, a.end_date, a.camp_views, a.image_name, a.alt_text, a.views, a.code, a.adsize
        FROM	adsystem a
        WHERE	a.adid = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 594


Scope Variables

CGI Variables:
AUTH_PASSWORD=
AUTH_TYPE=
AUTH_USER=
CERT_COOKIE=
CERT_FLAGS=
CERT_ISSUER=
CERT_KEYSIZE=
CERT_SECRETKEYSIZE=
CERT_SERIALNUMBER=
CERT_SERVER_ISSUER=
CERT_SERVER_SUBJECT=
CERT_SUBJECT=
CF_TEMPLATE_PATH=/root/website/arc/arc_reviews/detail/index.cfm
CONTENT_LENGTH=
CONTENT_TYPE=
CONTEXT_PATH=
GATEWAY_INTERFACE=
HTTPS=
HTTPS_KEYSIZE=
HTTPS_SECRETKEYSIZE=
HTTPS_SERVER_ISSUER=
HTTPS_SERVER_SUBJECT=
HTTP_ACCEPT=*/*
HTTP_ACCEPT_ENCODING=gzip, br, zstd, deflate
HTTP_ACCEPT_LANGUAGE=
HTTP_CONNECTION=upgrade
HTTP_COOKIE=
HTTP_HOST=dev.bookbrowse.com
HTTP_REFERER=http://dev.bookbrowse.com/arc/arc_reviews/detail/?arc_number=1142
HTTP_URL=
HTTP_USER_AGENT=Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
LOCAL_ADDR=127.0.0.1
PATH_INFO=
PATH_TRANSLATED=/root/website/arc/arc_reviews/detail/index.cfm
QUERY_STRING=arc_number=1142
REMOTE_ADDR=127.0.0.1
REMOTE_HOST=127.0.0.1
REMOTE_USER=
REQUEST_METHOD=GET
SCRIPT_NAME=/arc/arc_reviews/detail/index.cfm
SERVER_NAME=dev.bookbrowse.com
SERVER_PORT=8500
SERVER_PORT_SECURE=0
SERVER_PROTOCOL=HTTP/1.1
SERVER_SOFTWARE=
WEB_SERVER_API=
Client Variables:
cfid=4074780
cftoken=f6e59bebcc95791b-FFA23C4E-07BF-66B5-78D4B5186E8E756A
hitcount=1
lastvisit={ts '2026-05-31 21:35:29'}
library_user_flag=0
member_active_flag=0
member_logged_in_flag=0
member_number=0
order=p
timecreated={ts '2026-05-31 21:35:29'}
urltoken=CFID=4074780&CFTOKEN=f6e59bebcc95791b-FFA23C4E-07BF-66B5-78D4B5186E8E756A
view=books
Cookie Variables:
CFID=4074780
CFTOKEN=f6e59bebcc95791b-FFA23C4E-07BF-66B5-78D4B5186E8E756A
Session Variables:
cfid=4074780
cftoken=f6e59bebcc95791b-FFA23C4E-07BF-66B5-78D4B5186E8E756A
sessionid=BOOKBROWSE_4074780_f6e59bebcc95791b-FFA23C4E-07BF-66B5-78D4B5186E8E756A
urltoken=CFID=4074780&CFTOKEN=f6e59bebcc95791b-FFA23C4E-07BF-66B5-78D4B5186E8E756A
URL Parameters:
arc_number=1142
Debug Rendering Time: 49 ms