Visualization demo

Hugo's Cohort Demo: https://staging.pih-emr.org:8443/openmrs-visualization/cohort_chart_demo.htm

Sash's Patient Demo: http://students.cs.tamu.edu/damaraju/openmrs/ManyFlashesAndSparks.html

	<burke>	it'll be 3:03pm in one minute
	<haa_rodrigues>	I'm not sure what you need from me for the demo, it's pretty simple stuff
	<burke>	singing, dancing, juggling, etc.
	<docpaul>	i thought it was going to be a feast for the eyes? a veritable cornucopia of flash/js goodness?
	<haa_rodrigues>	I'll try to bring some ASCII art next time:)
	<djazayeri>	<flash>singing</flash>
	<djazayeri>	(hmm...didn't work)
	<burke>	.../\/\/\/\/\/\...^..^..^..
	<burke>	(-) ^ (-)
	<haa_rodrigues>	the veritable cornucopia of flash/js goodness is for later on
	<docpaul>	hehe
	* OpenMRSBot	chuckles
	<docpaul>	when does the show begin?
	<haa_rodrigues>	if you'd like to check this link:
	<haa_rodrigues>	https://staging.pih-emr.org:8443/openmrs-visualization/cohort_chart_demo.htm
	<OpenMRSBot>	http://tinyurl.com/2znrxk [staging.pih-e...hart_demo.htm]
	<haa_rodrigues>	you'll find a pre-defined cohort (actually you can choose a big or smaller one)
	<burke>	ooohh. pretty colors. :)
	<haa_rodrigues>	if the server doesn't crash with the overhead of users, you should be able to see that cohort in the form of a gender\age distribution
	<bwolfe>	I like the "aged" look for the age distribution :-)
	<burke>	sweet colors & fades
	<haa_rodrigues>	from where you can select a gender\age pie slice to see the corresponding patients
	<burke>	if I click on a region, is there a "back" button?
	<haa_rodrigues>	there is no back button yet, you'll have to start over...
	<burke>	I like being able to investigate a subset, but how do i step back to the prior cohort....oh. ok.
	<docpaul>	there's something odd about the loading process... sometimes it loads, sometimes it doesnt
	<djazayeri>	I noticed that earlier too.
	<haa_rodrigues>	the back button would be useful
	<burke>	maybe it's not multithreaded? could we be stepping on each other's contexts?
	<haa_rodrigues>	but since this is currently done with ajax, i haven't studied the best way to implement that
	<bwolfe>	burke: we better not be stepping on others' contexts
	<burke>	ouch!
	<djazayeri>	Just viewing it myself on localhost, the loading message would sometimes hang until I pressed one of the links again. I haven't experienced that since deploying on this staging server.
	<docpaul>	this is cool.
	<docpaul>	i dont understand patients vs. values
	<bwolfe>	it looks more like its the error sashikanth was having early with the js/swf being cached or not
	<haa_rodrigues>	could be from the concurrent access, I don't think I had that problem locally
	<sashikanth>	ooh someone said my name
	<haa_rodrigues>	patients vs values needs some touch-ups... it's giving you the values of the concept for each patient in the set
	<haa_rodrigues>	the numbers you see are the patient IDs
	<docpaul>	sash: hugo's having a demo... take a look
	<sashikanth>	reading up
	<docpaul>	hugo: maybe you could give us a guided tour?
	<docpaul>	show us the features you've done?
	<docpaul>	i'm struggling to orient a bit
	<haa_rodrigues>	they will be replaced eventually (i.e. with patient names)
	<burke>	then we definitely have to close down access to concept stats, eh paul? :)
	<docpaul>	i'd want this same technology to be used in concept stats
	<docpaul>	b/c those stats are for a different use case
	<docpaul>	a cohort of the entire repository. :)
	|<--	sarpc has left freenode ()
	<burke>	hugo, how detailed of feedback do you want?
	<haa_rodrigues>	perhaps the most confusing part is the concept plot
	<burke>	e.g., the popup on the pie chart seems a little too close to the mouse cursor
	<haa_rodrigues>	it's actually on an early stage, so I'm open to ideas
	<docpaul>	it's a distribution of values for a given concept, for the selected cohort, right?
	<burke>	how about some mini icons along the top with popular graph types (e.g., Gender vs. Age w/ a little sample pie chart icon next to it)?
	<haa_rodrigues>	burke, we could have that... the idea is to have a set of predefined graphs, such as the gender\Age, and also allow to plot an arbitrary concept
	<docpaul>	an arbitrary concept for the given cohort, correct?
	<haa_rodrigues>	right
	<docpaul>	ok... so i have a lot of feedback on that
	<burke>	And instead of the concept search field at the bottom, have a "change concept" link/button next to the header that pops up the search box?
	<docpaul>	1) i really like the idea of "ranges" of values for each bar
	<docpaul>	and then clicking down through that bar gives more detail
	<haa_rodrigues>	(side note: only numeric concepts are supported at the moment)
	<burke>	can the concept search be limited to only concepts that apply?
	<docpaul>	2) in the concept selector, have it filtered to question concepts that have datatypes that you can render
	<docpaul>	yep, what burke said too
	<haa_rodrigues>	about what burke said, I don't think the concept search widget accepts that kind of customization
	<haa_rodrigues>	but I guess it can be adapted
	<burke>	How about this: hovering over the title "CD4 COUNT" pops up a div with a list of common/favorite concepts on the left and a concept search box on the right?
	<djazayeri>	fyi, numeric concepts with a lot of obs in this dataset are:
	<djazayeri>	WEIGHT (KG)
	<djazayeri>	HEIGHT (CM)
	<djazayeri>	BODY MASS INDEX, MEASURED
	<djazayeri>	SYSTOLIC BLOOD PRESSURE
	<djazayeri>	DIASTOLIC BLOOD PRESSURE
	<djazayeri>	PULSE
	<djazayeri>	TEMPERATURE (C)
	<djazayeri>	RESPIRATORY RATE
	<djazayeri>	CD4 COUNT
	<docpaul>	3) when you click down through a bar, you get more detailed ranges... why not limit the bounds of the x axis to the range defined by the bar?
	<docpaul>	er, more granular ranges
	<bwolfe>	haa_rodrigues: the concept search widget will take conceptClasses as parameters
	<djazayeri>	Another comment: we also need a timeline graph of obs_datetimes for the concept you've selected.
	<haa_rodrigues>	docpaul, working on number 3) at the moment
	<bwolfe>	you'd just need to limit to Numeric right now
	<djazayeri>	class =? datatype?
	<docpaul>	numeric is not a class, it's a datatype. :)
	<djazayeri>	bwolfe: does it do datatypes?
	<bwolfe>	right, well, luckily the search widget accepts those too :-p
	<burke>	it'd be cool to "zoom" into the range selected. and what about instead of click on a specific bar, letting folks draw a box for a range (ala Google finance widget)?
	<bwolfe>	(fwiw, it also accepts /not/ datatypes and classes)
	<djazayeri>	would that be <... includeDatatypes="Numeric" ... />?
	<haa_rodrigues>	bwolfe: so the concept filtering is easy...
	<bwolfe>	indeed
	<djazayeri>	as text like that?
	<bwolfe>	yeah
	<burke>	having a slider on the bottom with moveable ends (ala google finance widget) would rock.
	<docpaul>	the key for the google finance widget though is that it's time based... the data aren't represented that way here burke
	<burke>	you need to add a little margin on the top, of course.
	<burke>	but what if I'm interested in the range made by three bars?
	<djazayeri>	You might also want to view this data time-based though.
	<docpaul>	there's nothing to scroll, when you've represented the entire range of values along the x axis
	<burke>	I can move the ends of the bar to zoom in though
	<burke>	and when I click through on the chart, the bar at the bottom would be a visual clue of how "zoomed in" I am from the "big picture" right?
	<burke>	...a point of reference
	<djazayeri>	Look at BODY MASS INDEX, for example. Clearly the default range displayed is not helpful.
	<djazayeri>	So you'd need to zoom in, as burke is saying.
	<docpaul>	ah, so you're thinking of a numeric slider along the bottom with min and max values, and a window to grow and shrink the xmin and xmax for the graph above?
	<burke>	yeah. you could start zoomed in, but the size of the bar would show that you're only seeing a portion of possible values.
	<sashikanth>	Ok, here are my updates : http://students.cs.tamu.edu/damaraju/openmrs/ManyFlashesAndSparks.html
	<OpenMRSBot>	http://tinyurl.com/2eumsq [students.cs.t...ndSparks.html]
	<docpaul>	yeah, that'd be fun to play with
	<docpaul>	i can imagine how that'd work
	<burke>	sashikanth, very nice
	<djazayeri>	Here's a question I'll throw out: what other general plot types would we need?
	<djazayeri>	Obviously frequency distribution.
	<burke>	line, pie, bar, ...
	<djazayeri>	Which is generally like this for numerics, would be a pie chart for datatype=coded, etc...
	<sashikanth>	on the cohort level i'd really like to see stuff like what hans rosling does
	<djazayeri>	(please suggest ways to fill in the "etc")
	<sashikanth>	scatter plots with axes being any concept of a demographic
	<djazayeri>	I think we also need a timeline view based on the obs_datetime.
	<burke>	when all that's working well, it'd be fun to explore some more wild things...like 3d or visualizing links between cohorts in an interactive way
	<sashikanth>	http://www.gapminder.org/
	<djazayeri>	But what's the "right" visualization if the user says: show me my cohort from the perspective of 2 concepts: CD4 COUNT, and CLINIC TRAVEL TIME.
	<burke>	yeah. :p
	<docpaul>	gapminder rocks my world
	<sashikanth>	i think the visualization shown here can show a lot more data
	<burke>	sashikanth, it'd be nice to adopt some conventions that people could rely on -- e.g., using a red asterisk to mark criticals instead of a black dot.
	<burke>	both in sparks and graphs
	<docpaul>	the sparks are a winner
	<docpaul>	i'd want the user to be able to define what sparks he wanted to see for a given patient
	<docpaul>	but your approach of showing all sparks for where there's sufficient data is cool
	<sashikanth>	yea, as of now the limiting factor is that there are only so few patients with chartable data
	<burke>	sashikanth, can you show values in tip windows for the sparks?
	<burke>	it seems almost more useful for sparks
	<sashikanth>	i thought those would clutter up the space a lot ...
	<sashikanth>	hence the min/max/normal values on mouse over
	<burke>	how about if it was grey in the top right margin then, just changing as the mouse moved?
	<docpaul>	but there are cases where the clinician would want to see that there's no data for a given concept, or "insufficient" data
	<djazayeri>	When I click on Weight I just get a long-spinning Loading Data...
	<burke>	sorry...it's supposed to be spelled "wait"
	<djazayeri>	:P
	<sashikanth>	djazayeri: the main grah right now shows only the first graph you click
	<docpaul>	sash: we can get you access to a 16M plus repository that we can obscure names for
	<sashikanth>	*graph
	<djazayeri>	Ah, ok.
	<docpaul>	16M + concepts
	<docpaul>	that is
	<docpaul>	er, obs
	<sashikanth>	I'd love to work with that
	<docpaul>	but get it to work in openmrs, then we can make that dataset available to you
	<sashikanth>	also, i wanted to ask if i could get the actual values for the critical/normal hi's and lo's
	<sashikanth>	i was hesitant to put in my own arbitrary values ...
	<djazayeri>	Can you put a light yellow/red background for the abnormal and critical ranges?
	<burke>	sashikanth, the min/max/current appearing/disappearing doesn't work for me.
	<burke>	current should just be a little number at the end of the spark line
	<sashikanth>	burke: firefox ?
	<burke>	yes.
	<haa_rodrigues>	this eternal loading behaviour shouldn't be happening
	<burke>	the min & max could be light grey values along the left edge
	<sashikanth>	haa_rodrigues: i put in a 1.5 second lag
	<sashikanth>	is anybody able to see a concept being graphed out ? atleast the first click ?
	<burke>	yes.
	<burke>	first click always works for me
	<djazayeri>	If I reload the page, then I can always see the first thing I click on.
	<docpaul>	i am too
	<sashikanth>	ok, cool
	<haa_rodrigues>	sash, I mean in cohort_chart_demo.htm. did you have any similar problems?
	<burke>	even on wait. ;)
	<burke>	sashikanth, a lightgrey vertical bar on the left of each spark line with a little horizontal end at the top & bottom followed by a number could provide an intuitive min & max without labels, don't you think?
	<sashikanth>	er, haa_rodrigues could you walk me thru what i'm supposed to do with your demo ?
	<[OmegentooX]>	burke, how do I convince InfoPath to find openmrs-infopath.js and edit it?
	<sashikanth>	burke, huh !?
	<haa_rodrigues>	sashikanth: you can see the cohort as a list, as a gender\age distribution, or plot a (numeric) concept for those patients
	<burke>	[OmegentooX], what do you mean "convince InfoPath to find openmrs-infopath.js"? It should be in the xsn.
	<haa_rodrigues>	this concept plot can be a frequency distribution or the values for every patient in the set
	<sashikanth>	ooh 7 seconds to render
	<[OmegentooX]>	I guess I'm asking how to edit it then. Do I have to extract it then rebuild the xsn?
	<burke>	sashikanth, I'm trying to visualize a way to put min, max, & current values in the sparks (subtly) without needing labels & without them needing to pop up or disappear
	<haa_rodrigues>	when you click a slice or a bar in freq. distribution, you'll filter the set to the corresponding patients
	<sashikanth>	burke: as in the numeric values ?
	<burke>	[OmegentooX], yes. extract to file, you should see it, then rebuild. but we overwrite that file when you rebuild on the server, i believe. or we should, since it's a "global" resource
	<burke>	sashikanth, yes. numbers without labels
	<sashikanth>	gotcha ...
	<burke>	e.g., if the current value was written right after the rightmost tip of the spark line, I think people would get it.
	<[OmegentooX]>	I'm just trying to change the SERVER_URL property to point to my OpenMRS instance so I can see how it works
	<burke>	[OmegentooX], ok.
	* agentx0r	is away: antifreeze.
	<bwolfe>	[OmegentooX]: that is done for you by openmrs when you "rebuild" it. is that not working for you?
	<burke>	[OmegentooX], I lived & breathed that stuff. so if you have questions, let me know. irc or if I'm not here, e-mail.
	<bwolfe>	[OmegentooX]: (after you set the required global properties of course)
	<burke>	bwolfe, I think he's doing it manually for OO stuff...right?
	<sashikanth>	burke: i see what you're saying. 3 values on the left of the spark, max and min, along with maybe a dotted line all the way to the current value (if the current is the max or min, it would replace the max or min)
	<[OmegentooX]>	bwolfe, yup, found the global properties in the admin section
	<[OmegentooX]>	burke, I'm working on replicating the behavior in OOo so I want to see how it works in InfoPath
	<burke>	sashikanth, the current value is on the right, not left...right? :o/
	<sashikanth>	well, for the sake of uniformity and saving space, having all three numbers on the same side would be easier to read
	<burke>	I think it would non-intuitive to look on the left side to find the value for the rightmost point, though.
	<sashikanth>	in an attempt to avoid overlap of text and sparkline, and not have a margin for the text on both left and right
	<sashikanth>	hmm ... maybe not, we'd have to see both versions to judge
	<burke>	if you put a number to the right of the spark line +/- have it try to match up with the last value, I'd bet that most people would guess it is the "current value"
	<sashikanth>	*added to todo
	<burke>	I was thinking the min/max could go to the left just to avoid confusion.
	<sashikanth>	yup, that makes sense. the min max will always have a fixed position
	<sashikanth>	and the current's position will vary according to the last value
	<burke>	but min & max probably are overkill if you showed the value for each point as the mouse hovered ... e.g., in a corner of the spark area.
	<sashikanth>	burke: the min max still doens't appear for you ?
	<burke>	sashikanth, i see 'em. I just don't like 'em. :p
	<docpaul>	hugo/sash: i think it's going to be difficult to get accumulated feedback in this kind of forum. My suggestion would be for you both to post the link of your demo to both dev@openmrs.org and implementers@openmrs.org and get email feedback
	<docpaul>	i have a lot of comments i'd like to make, but dont want to squash conversations here
	<docpaul>	the sparks should be telling you a few things:
	<sashikanth>	on the lines of email, i was wondering if there's any solution that blends email lists and forums
	<burke>	i don't think I'd want to get everybody's thought on the mailing list though.
	<docpaul>	general trends
	<burke>	and it helps to see other people's ideas.
	<docpaul>	why not burke?
	<burke>	what about a forum post?
	<docpaul>	nah, not many people use it
	<burke>	make a forum post and then send out an e-mail linking people to the forum?
	<burke>	if everyone e-mail sashikanth directly, then we can't feed off each other.
	<sashikanth>	the thing with this sorta discussion is having a shared whiteboard. That would allow everyone to see/change/visualize ideas and changes
	<burke>	and if everyone e-mail the list we'll go bonkers. :o)
	<docpaul>	i want the conversations to happen in the mailing list
	<burke>	google doc?
	<sashikanth>	hmm not really
	<docpaul>	nah... email is easy
	<docpaul>	the focus is on getting hugo and sash feedback
	<docpaul>	the best way to do that is to make the barriers towards giving them feedback low
	<djazayeri>	sashikanth: I just sent you an email showing what the sparks could look like with ranges.
	<docpaul>	if you require four pieces of technology to give feedback, you're not going to have as much
	<burke>	sashikanth, do could you show the value-under-mouse in the top-left area of the spark?
	<sashikanth>	http://www.imaginationcubed.com/LaunchPage
	<OpenMRSBot>	http://tinyurl.com/dursu [www.imaginati...om/LaunchPage]
	<djazayeri>	need to find a way to post that quickly to the web.
	<docpaul>	IMO, there's no such thing as too much conversation on the developers or implementers list. :)
	<burke>	sashikanth, for example: http://openmrs.org/wiki/Extending_Cohorts_Project
	<OpenMRSBot>	http://tinyurl.com/yuc6w9 [openmrs.org/w...horts_Project]
	<burke>	notice how they show the value-under-mouse in a static position?
	<burke>	with that, I don't think you need to list min & max. I can easily find them with my mouse.
	<haa_rodrigues>	I think email is the best option for feedback
	<sashikanth>	burke: is that the right link ?
	<burke>	oops. clipboard trouble
	<haa_rodrigues>	here's what I got from this chat:
	<haa_rodrigues>	1. in the concept selector, have it filtered to question concepts that have datatypes that you can render
	<burke>	http://finance.google.com/finance?q=.DJI%20.IXIC%20.INX
	<haa_rodrigues>	2. limit the bounds of the x axis to the range defined by the bar?
	<haa_rodrigues>	3. "zoom" into the range selected and\or draw a box for a range (ala Google finance widget)?
	<haa_rodrigues>	4. back button
	<haa_rodrigues>	5. eternal loading data message??
	<haa_rodrigues>	6. hovering over the title "CD4 COUNT" pops up a div with a list of common/favorite concepts on the left and a concept search box on the right
	<OpenMRSBot>	http://tinyurl.com/24abjq [finance.googl...0.IXIC%20.INX]
	<haa_rodrigues>	7. add a little margin on the top
	<haa_rodrigues>	8. popup on the pie chart seems too close to the mouse cursor
	<djazayeri>	http://openmrs.org/wiki/Image:Sparks_with_ranges.PNG
	<OpenMRSBot>	http://tinyurl.com/28c3q7 [openmrs.org/w...th_ranges.PNG]
	<sashikanth>	djazayeri: that's exactly what i'm aiming for
	<sashikanth>	@your mail
	<docpaul>	yeah, that rocks darius
	<burke>	assuming you're using red for criticals and not just abnormal (not all points in grey would be red)
	<burke>	and a lighter grey ;)
	<docpaul>	the only problem with your image darius is that you need to differentiate abnormal values from critically abnormal values
	<djazayeri>	yeah, that was the quickest thing I could do in paint. :)
	<docpaul>	so you almost need two shades
	<burke>	you don't need two shades.
	<burke>	shade for abnormal.
	<burke>	then highlight criticals
	<burke>	don't you think?
	<docpaul>	not sure that's inherently intuitive
	<burke>	i think two shades will start to look like a flag...we just need to see both.
	<docpaul>	you only show criticals when there's a value that broaches that range
	<docpaul>	they dont show for every spark
	<docpaul>	kinda like we talked about on the monorail today
	<sashikanth>	http://openmrs.org/wiki/Image:Sparks_with_ranges_and_values.PNG
	<OpenMRSBot>	http://tinyurl.com/2h387l [openmrs.org/w...nd_values.PNG]
	<sashikanth>	burke ?
	<burke>	sashikanth, yes?
	<sashikanth>	the link ..
	<docpaul>	nice use of values darius
	<docpaul>	er, sash
	<docpaul>	that's perfect
	<burke>	yeah.
	<sashikanth>	i'll have to squeeze that into 200x40
	<burke>	and then put the value-under-mouse somewhere in the middle (in a static location)
	<burke>	if the sparks get too big, you could start a fire. ;)
	<docpaul>	highlighting each point on the value-under-mouse ALA google finance widget
	<burke>	yeah, but not with popup tips.
	<[OmegentooX]>	What exactly is "Add New Problem" on the Basic Form supposed to be doing?
	<sashikanth>	how about this, the mouse snaps to the closest value, showing a faded vertical line and the current value in a fixed positino
	<docpaul>	right
	<burke>	a one-dimensional cross-hair? :)
	<docpaul>	http://finance.google.com/finance?q=goog
	<OpenMRSBot>	http://tinyurl.com/qxbae [finance.googl...inance?q=goog]
	<docpaul>	mouse over the main graph sash
	<burke>	try it. I think what you've posted is very close. lighter grey
	<docpaul>	i like their font in the flash
	<docpaul>	small, easy to read
	<sashikanth>	http://openmrs.org/images/4/48/Sparks_with_ranges_and_values.PNG
	<OpenMRSBot>	http://tinyurl.com/2hsana [openmrs.org/i...nd_values.PNG]
	<docpaul>	not a big fan of the bar
	<sashikanth>	by allocating space for the values, maybe outside the grey border
	* sashikanth	couldnt find the line tool in gimp in a hurry.
	* sashikanth	uses photoshop more :)
	<sashikanth>	docpaul: could you assign some arbitrary hi's and lo's for a few concepts ?
	<docpaul>	sure
	<sashikanth>	now i think we wouldn't need the larger graph :)
	<docpaul>	can't do it for weights, heights, and bmis as they're age based
	<docpaul>	you have to look at the percentiles for each
	<sashikanth>	right... we could look into charting that for each specific user based on his/her specific ages/heights and weights
	<OpenMRSBot>	OpenMRS Feed: Sashikanth Damaraju: More updates -> http://indentyourcode.blogspot.com/2007/07/more-updates.html
	<sashikanth>	hmm, that update was almost 3 hours back
	<burke>	sashikanth, http://openmrs.org/images/7/72/Sample-sparks-for-sash.png
	<OpenMRSBot>	http://tinyurl.com/yw8m4n [openmrs.org/i...-for-sash.png]
	<burke>	it's a really crude "mouse"...but it's the general idea.
	<djazayeri>	Was away from my computer, but regarding the flags...
	<sashikanth>	nice .. i'll look into it
	<sashikanth>	my battery's running out
	<djazayeri>	Just do a single line in the sparks for abnormal.
	<sashikanth>	will be back in about 20 minutes
	<--|	sashikanth has left #openmrs
	<burke>	yeah, single dotted...i'll add it
	<djazayeri>	But in the big graph show different shades for abnormal and critical. And have red for critical values, and (something else) for abnormal.
	<docpaul>	yeah, that flys best darius... maybe jamming too much into the sparks
	<djazayeri>	Personally, though, although the sparks are cool, I'm most interested in seeing a very big version of the graph that takes up nearly the whole screen, but we can overlay additional info on.
	<docpaul>	the sparks tell you where you might be interested
	<djazayeri>	Yeah, but it's not just numeric things you're interested in...
	<docpaul>	curious to hear how you'd "graph" other things
	<djazayeri>	A la google finance.
	<docpaul>	oh, diagnoses and encounter related data?
	<docpaul>	related to each point?
	<djazayeri>	For example on a graph of weights put those little flags every time the patient had a CD4, a side effect or a drug order change.
	<djazayeri>	And have different "perspectives" --> sets of data to overlay on the graph.
	<djazayeri>	E.g. PIH might want to define the "food" perspective that includes flags showing enrollment in the food program, and any encounter of type FoodPickup.
	<docpaul>	so generally, they're events related to the time window in the graph
	<djazayeri>	Yes.
	<djazayeri>	http://openmrs.org/wiki/Image:Louise_overview.PNG
	<OpenMRSBot>	http://tinyurl.com/ynjena [openmrs.org/w..._overview.PNG]
	<djazayeri>	I've sent that to docpaul and sash before.
	|<--	crazee has left freenode (Read error: 113 (No route to host))
	<docpaul>	we'll need the logic stuff to pull that off
	<djazayeri>	But basically this is a graph that one of our Haiti docs made as her ideal visualization.
	<docpaul>	a lot of those are derived, higher level notions
	<djazayeri>	I don't think we really need logic for it...
	<djazayeri>	CD4 counts, side effects --> Just a single concept.
	<burke>	djazayeri, what about this: http://openmrs.org/images/7/72/Sample-sparks-for-sash.png
	<OpenMRSBot>	http://tinyurl.com/yw8m4n [openmrs.org/i...-for-sash.png]
	<docpaul>	depending on how you've modelled it. :)
	<djazayeri>	drug order change --> we want tokens for this.
	<djazayeri>	No matter how you've modelled it, you could certainly choose a set of concept ids, and say "if any of these occur, plot them with the label SIDE-EFFECT"
	<djazayeri>	but regardless, I'm really looking forward to being able to put waypoints along the graph like: "Enrolled in TB Program"
	<docpaul>	the general logic of what you're describing is: for a given patient, iterate through all dates where there are values, and check for when this concept has this answer... of course, you'd have to define a way of listing out what concepts you wanted to apply to the graph
	<docpaul>	unless you want to have waypoints inbetween datapoints on the graph
	<djazayeri>	You could have waypoints in between datapoints, yes.
	<djazayeri>	I want to be able to specify some events of interest, and have them plotted at the correct time on the graph.
	<djazayeri>	But without having to worry about multiple scales for different numeric concepts.
	<docpaul>	those are fairly similar to your filters in cohort builder
	<djazayeri>	Burke, what's the difference?
	<docpaul>	the "events of interest" that is
	<djazayeri>	Ah, the dotted lines.
	<djazayeri>	Those are very light. Yes, I like them.
	<djazayeri>	Just also show the same things in the big graph. :)
	<burke>	yeah.
	<burke>	i was picturing the current-value-under-mouse would follow you
	<burke>	like the 105 above the mouse is
	<burke>	always at the top, but over the mouse
	<djazayeri>	docpaul: I agree that this would work easiest with tokens and logic.
	<burke>	or it could be in a static part of each spark
	<djazayeri>	But I can think of a whole lot that we could do without them as well.
	<djazayeri>	I think the exciting thing is being able to graph more than just one concept on a timeline.
	<djazayeri>	burke: current-value-under-mouse is the value of a real dot, right?
	<burke>	as long as it doesn't end up looking like this: http://openmrs.org/images/9/92/Louise_overview.PNG
	<OpenMRSBot>	http://tinyurl.com/yrvguh [openmrs.org/i..._overview.PNG]
	<burke>	yes. the value of the actual observtion closest to the mouse.
	<docpaul>	yeah, i didnt understand what you meant initially... but you're referring to time-based events... conditions almost
	<burke>	you could highlight with a vertical bar or with a circle around the value
	<docpaul>	"all the times where a patient had infiltrate on cxr:
	<djazayeri>	UI-wise I would almost prefer to have no mouseover behavior in the sparks, and make the user click on the spark to get the full-sized graph if they're going to really work with it.
	<docpaul>	all the times where the patient had the following diagnoses
	<djazayeri>	docpaul: yes, and a-la Google Finance you'd want to be able to show/hide those things.
	<docpaul>	get a list of dates back, and then it'd be pretty trivial to add those to the graph
	<docpaul>	i just think there's a lot of magic to be able in human speak define what you want to see as these labels
	<docpaul>	and each installation will likely have different labels of interest
	<docpaul>	i'd personally want to write rules to define those
	<docpaul>	so that they can be shared, explicitly defined based on your dictionary, etc etc
	<burke>	or graph CD4 COUNT over time with points sized or colored based on viral load
	<djazayeri>	Rules would be best, but we can handle 75% of the use cases today just by defining some conceptIds in a global property, I think.
	<docpaul>	burke: it'd be cool to be able to tag rules with as many descriptors as you wanted
	<djazayeri>	burke: then we can make those points move according to population and per-capita gdp of the country the patient lives in.
	<docpaul>	so that you could easily search them for the tags of interest
	<docpaul>	and potentially even filter a dialog box based on the tags
	<burke>	you mean, make them concepts?
	<docpaul>	my bias lately has been to modify notions of class to tags
	<docpaul>	well, when we do our chica rules, we have tags for each mlm
	<docpaul>	like: iron-deficiency, infant, risk factor, psf
	<docpaul>	so that i can find all rules that relate to a risk factor
	<docpaul>	or filter to psf rules
	<burke>	ha ha. could class become a set?
	<burke>	hmmm.
	<burke>	rules can have metadata -- e.g., duration (how long the result is valid)
	<docpaul>	that's a sep conversation we can have later... but i think it'll be important for rule use to have ways to tag or classify them with one to many descriptors
	<docpaul>	er, rules
	<burke>	I suppose they could have tags too.
	<docpaul>	in this case, could tag all rules that relate to graphing events with the same tag
	<docpaul>	but i bet those rules would be useful elsewhere as well
	<burke>	that gets back to the grouping feature that justin/rudd are looking for
	<burke>	grouping & tags could use the same mechanism, eh?
	<docpaul>	yep
	<djazayeri>	http://openmrs.org/wiki/Image:Google_finance_timeline.PNG
	<OpenMRSBot>	http://tinyurl.com/25c8s3 [openmrs.org/w..._timeline.PNG]
	<burke>	group = all rules with the same tag
	<djazayeri>	burke: hopefully this one is less busy...
	<[OmegentooX]>	Got a null pointer exception trying to rebuild an xsn at http://localhost:8080/openmrs/moduleServlet/formentry/formDownload?target=rebuild&formId=2 . http://rafb.net/p/BP7uiE73.html is the stack trace. I thought this was because I didn't have cabextract and lcab installed, but I just installed them
	<OpenMRSBot>	http://tinyurl.com/2f37he [localhost:808...uild&formId=2]
	<djazayeri>	Paul, do you have a good way to preserve all this conversation and post it to the wiki?
	<djazayeri>	I can create a page, paste all the text in there, and run.
	<djazayeri>	(err...I mean, I can create a page, and paste all the text in there. But I have to run in 2 minutes)
	<docpaul>	go ahead and do that and we can parse it later
	<docpaul>	in theory, our bot is saving all of this conversation too