h2. General Info

*Topic:* Integration of RESTWS

Type of Project (Spike, Sprint, Epic): ?

*Lead (Product Owner):* *[~r.friedman]*

*Developer Lead:* *[~raff]*

*Known Developers Assigned (amount of effort in hrs dedicated to this work if possible): *

*Sprint Dashboard: **[https://tickets.openmrs.org/secure/RapidBoard.jspa?rapidView=25&view=planning&selectedIssue=RESTWS-311]*

*Source code at: **[https://github.com/openmrs/openmrs-module-webservices.rest/tree/sprint-201302]* *(the sprint-201302 branch)*

*CI: **[https://ci.openmrs.org/browse/BUNDLED-RESTWS0]*

{color:#000000}{*}Date: *{color}

h2. How to Participate

Add your name to the list on this wiki page (with any comments about your availability). If you want to join after the sprint has started just join the IRC channel mentioned above and say hello.

The general process:
# New to OpenMRS sprints? Want help getting started? Join [the IRC channel|IRC:] and say "{color:#000000}???{color}": I'd like to participate in the sprint\!"
# Pick a ticket from the available tickets in the top-left of the sprint dashboard page. (listed below)
#* Make sure it does not depend on a ticket that is incomplete.
# If you have any questions about the ticket, ask on the group chat
# Do the ticket. See our [HOWTO|docs:Using Git] for git. *Sprint specific git HOWTO for devs with push rights: whatever works for you \:-)* If you don't like pull requests, don't send them. Commit and push directly to the main repo. If you do like pull requests, fork the main repo and send pull requests, but merge them right after. My favorite way is to work on the main repo, but create local branches (without pushing them to the main repo). Merge branches locally to the master and push to the main repo.
# [Join the daily scrum to share your updates|https://wiki.openmrs.org/display/RES/Daily+Scrum+Meeting]

h3. Participants

* Rafal Korytkowski
* Sateesh Kavuri (available on IRC in IST time period, else over emails. )

h2.  {color:#3366ff} {color}Tasks To Be Completed Prior To Design

h2. Goals
Need to know more about {color:#3366ff}Goals{color} ? Click here
*Goals:* _Must Have, Should Have, Could Have and Won’t Have_

*Must Have* means we must have this as part of the solution. It is a requirement or we should rethink doing this work.  *{+}This is what we will deliver before the end of the work period{+}* this also doubles as our DOD “Definition Of Done”

*Should have* means we would be embarrassed not to have it. We could technically produce the solution without it but people would be surprised.

*Could have* means anything else we could do.  But this does not always mean low priority.  But our selection of which could haves to include or exclude (or deliver later).  Also is considered low hanging fruit (if we are in this code already for _x_ reason wecan deliver  _y_ with little or no extra effort) or can be items or ideas for this module that can be packaged for a later spike or sprint.

*Won’t Have* means this will not happen.  It might be technically impossible, a taboo for our organization or out of scope. It does not mean “might happen or would be nice”. 
{color:#000000}{*}Must Have:*{color}
* {color:#000000}Just one module for "core OpenMRS REST Web Services" (i.e. get rid of 19ext module){color}
* {color:#000000}the resources need to be separate from the framework (even if this just means that they're in different Java packages){color}
* {color:#000000}the resources defined against 1.8 should be in a different java package from the ones defined against 1.9, etc.{color}
* {color:#000000}This is mostly done, but still need to create tickets about fixing tests, and fixing some resources{color}
* {color:#000000}Need to have both 1.8 and 1.9 versions of the Concept resource, which support different functionality with regard to mappings{color}
* {color:#000000}RESTWS-267{color}

{color:#000000}{*}Should Have{*}{color}

* {color:#000000}Resources for all "new" 1.9.0 functionality (e.g. Visit, Provider, Concept mapping changes, etc. Some of this may already be done.){color}
* {color:#000000}Have design discussions about "things that are not just CRUD"{color}
* {color:#000000}example: evaluating a "patient calculation"{color}
* {color:#000000}example: adding a patient to a queue (DJ: I think this is actually crud on a patientqueue object){color}
* {color:#000000}example: sending an HL7 message{color}

{color:#000000}{*}Could Have{*}{color}

* {color:#000000}RESTWS-311 - RESTWS should allow modules to add custom searches to existing resources{color}
* {color:#000000}DJ: I see this as a Could, unless Roger provides a concrete example where this is needed now.{color}
* {color:#000000}Roger: I think RESTWS-267 is an example of this. (DJ: But that's core...){color}
* {color:#000000}Roger: this needs "core design resources"{color}
* {color:#000000}Decision => During the spring Rafal (or someone with equivalent knowledge and ownership of the RESTWS framework) will take this ticket.{color}
* {color:#000000}Support for TestOrder, and new columns in Order, starting in 1.9.2.{color}
* {color:#000000}Do an example of how to handle out-of-band data model changes{color}
* {color:#000000}Prove this doesn't break things{color}

{color:#000000}{*}Won't Have{*}{color}

h2. {color:#3366ff}Design{color}
What should go into a {color:#3366ff}Design{color} ?  _Click here for more information_
There should be multiple design meetings.  The first starts off with a small group working with the leader to determine the high level scope of the project and then to break down into smaller pieces to eventually place as tickets.  Once those meetings havehappened use of the community design meeting time should be used to refine the tickets and if possible assign them to who will be doing the work.
{color:#000000}{*}Risks{*}{color}{color:#000000} {color}(these should be resolved prior to or during the design meetings):

{color:#000000}{*}Enter anything that is still questionable or worrisome that has not been answered:*{color} (open issues, potential concerns) Once a decision is made make sure that a summarized answer is included.

Example: Q. How will we handle issues with conflicting userID’s?  A. All ID’s will have an added identifier that is unique.

{color:#000000}{*}Effort Accounted For:*{color} (At the end of the design call all tickets should have an estimated effort and that total should be balanced against the known available effort of the developers assigned) (Yes/No)

 If not in balance in favor of success why and the action plan for remaining items
via IRC on the {color:#856628}\[#openmrs{color}\|IRC:Home\] channel on freenode.

Use this channel for *ALL* debugging and random questions having to do with the sprint. Please avoid direct messaging to personal contacts. If you have a question, someone else most likely does too, and our geographically distributed community benefitsfrom public group discussion.

*Sprint Break down:* If tickets have not already been laid out or explained this is a good place for this.
{color:#000000} {color}{*}Risks*: ?

{color:#000000}{*}Enter anything that is still questionable or worrisome that has not been answered:*{color} ?

{color:#000000}{*}Effort Accounted For:*{color} {color:#000000}?{color}

*Sprint Break down*: ?

h2. {color:#3366ff}Kickoff Meeting{color}

{color:#000000}{*}Kickoff meeting Date:*{color}{color:#ff0000} {color}TBD

*Kickoff meeting recording:*

*(Meeting setup with known developers after the final design meeting, but prior to the start date):*

h2. {color:#3366ff}During Project Notes{color}
{color:#3366ff}Notes{color} _(Click here to expand to Etherpad)_

h2. {color:#3366ff}Post Project (Retrospective){color}
{color:#3366ff}Retrospective{color} _(Click here to expand to Etherpad)_

h2. {color:#3366ff}Resources{color}

Additional Information:

h2. Resources

Kickoff meeting recording: ??