{"action":"created","comment":{"url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/pulls/comments/89079835","pull_request_review_id":9629288,"id":89079835,"diff_hunk":"@@ -151,5 +171,171 @@ public void getVisitTemplate_shouldReturnNullIfNoMatchingVisitAttributes() {\n         Visit visit = visitService.getVisit(2); // from standard test dataset\n         assertNull(factory.newVisitDomainWrapper(visit).getVisitAttribute(\"Non-existent attribute\"));\n     }\n+    \n+    protected List<Obs> createRandomDiagnosisObsGroups(int count, int diagnosisNamesCount, DiagnosisMetadata diagnosisMetadata) {\n+       assertThat(count, greaterThan(0));\n+       assertThat(diagnosisNamesCount, greaterThan(0));\n+       \n+       // Generating the names (as \"Diagnosis 1\", \"Diagnosis 2\", ... etc)\n+       List<String> diagnosisNames = new ArrayList<String>();\n+       for (int i = 1; i <= diagnosisNamesCount; i++) {\n+          diagnosisNames.add(\"Diagnosis \" + i);\n+       }\n+       \n+       List<Obs> diagnoses = new ArrayList<Obs>();\n+       final Random rand = new Random();\n+       for (int i = 0; i < count; i++) {\n+          String diagnosisName = diagnosisNames.get(rand.nextInt(diagnosisNames.size()));\n+          Diagnosis.Order order = Diagnosis.Order.values()[rand.nextInt(Diagnosis.Order.values().length)];\n+          Diagnosis.Certainty certainty = Diagnosis.Certainty.values()[rand.nextInt(Diagnosis.Certainty.values().length)];\n+          \n+          diagnoses.add( diagnosisMetadata.buildDiagnosisObsGroup( new Diagnosis(new CodedOrFreeTextAnswer(diagnosisName), order, certainty) ) );\n+       }\n+       return diagnoses;\n+    }\n+    \n+    /**\n+     * @param count The number of random encounters to generate.\n+     * @param density The percentage of encounters containing diagnoses obs.\n+     * @param diagnosisInEncounter Average number of diagnoses (for encounters that are added diagnoses).\n+     * @param visitStartDate Encounters need to occur after the visit start date.\n+     * @param patient\n+     * @param encounterType\n+     * @param diagnosisList A sample of diagnosis obs groups to be randomly \"recorded\" within the encounters.\n+     * @return\n+     * @throws ParseException\n+     */\n+    protected List<Encounter> createRandomEncountersWithDiagnoses(int count, double density, int diagnosisInEncounter, Date visitStartDate, Patient patient, EncounterType encounterType, List<Obs> diagnosisList) throws ParseException {\n+       assertThat(density, allOf(greaterThan(0.),lessThanOrEqualTo(1.)));\n+       assertThat(count, greaterThan(0));\n+       \n+       List<Encounter> encounters = new ArrayList<Encounter>();\n+       \n+       // http://stackoverflow.com/a/11016689/321797\n+       long startMilli = visitStartDate.getTime();\n+       final long hourInMilli = 1000 * 60 * 60;\n+       final long yearInMilli = hourInMilli * 24 * 365 + 1000; // Have to account for the leap second!\n+       \n+       Random rand = new Random();\n+       \n+       for (int i = 0; i < count; i++) {\n+          Encounter e = testDataManager.encounter()\n+                         .patient(patient)\n+                         .encounterDatetime(new Date(startMilli + Math.round(yearInMilli * Math.random()))) // An encounter in 'startYear'\n+                         .encounterType(encounterType)\n+                         .get();\n+          \n+          if (Math.random() <= density) {\n+          // then we add at least 1 diagnosis\n+             int diagnosesCount = 1 + rand.nextInt(diagnosisInEncounter);\n+             long lastTime = e.getEncounterDatetime().getTime();\n+             for (int j = 0; j < diagnosesCount; j++) {\n+                Obs obs = Obs.newInstance( diagnosisList.get(rand.nextInt(diagnosisList.size())) );\n+                obs.setObsDatetime( new Date(lastTime + Math.round(2 * hourInMilli * Math.random())) );   // Obs in the encounter are recorded around 2 hours apart\n+                e.addObs(obs);\n+                lastTime = obs.getObsDatetime().getTime();\n+             }\n+          }\n+          encounters.add(e);\n+       }\n+       \n+       return encounters;\n+    }\n+    \n+    public enum Implementation {\n+       CURRENT,\n+       LEGACY\n+    }\n+    \n+    @Test\n+    public void getUniqueDiagnoses_shouldConvergeWithLegacyImpl() throws ParseException {\n+       \n+       /*\n+        * Setup\n+        */\n+       \n+       Patient patient = testDataManager.randomPatient().save();\n \n-}\n+       Location visitLocation = testDataManager.location().name(\"Visit Location\")\n+               .tag(EmrApiConstants.LOCATION_TAG_SUPPORTS_VISITS).save();\n+       \n+       DiagnosisMetadata diagnosisMetadata = emrApiProperties.getDiagnosisMetadata();\n+       List<Obs> sampleDiagnoses = createRandomDiagnosisObsGroups(200, 125, diagnosisMetadata);\n+       \n+       final Date visitStartDate = new DateTime(2012, 1, 1, 0, 0, 0).toDate();\n+       VisitBuilder visitBuilder =\n+             testDataManager.visit()\n+                     .patient(patient)\n+                     .visitType(emrApiProperties.getAtFacilityVisitType())\n+                     .started(visitStartDate)\n+                     .location(visitLocation);\n+       \n+       // Adding a bunch of encounters to the test visit\n+       List<Encounter> encounters = createRandomEncountersWithDiagnoses(50, 0.15, 2, visitStartDate, patient, emrApiProperties.getVisitNoteEncounterType(), sampleDiagnoses);\n+       for (Encounter e : encounters) {\n+          visitBuilder.encounter(e);\n+       }\n+       VisitDomainWrapper visitDomainWrapper = factory.newVisitDomainWrapper( visitBuilder.save() );\n+       \n+       /*\n+        * Replay & Asserts\n+        */\n+       \n+       List<Diagnosis> diagnoses;\n+       List<Diagnosis> diagnosesLegacy;\n+       \n+       diagnoses = getUniqueDiagnoses(visitDomainWrapper, false, false, Implementation.CURRENT);\n+       diagnosesLegacy = getUniqueDiagnoses(visitDomainWrapper, false, false, Implementation.LEGACY);\n+       assertThatSameUniqueDiagnoses(diagnoses, diagnosesLegacy);\n+       \n+       diagnoses = getUniqueDiagnoses(visitDomainWrapper, true, false, Implementation.CURRENT);\n+       diagnosesLegacy = getUniqueDiagnoses(visitDomainWrapper, true, false, Implementation.LEGACY);\n+       assertThatSameUniqueDiagnoses(diagnoses, diagnosesLegacy);\n+\n+       diagnoses = getUniqueDiagnoses(visitDomainWrapper, false, true, Implementation.CURRENT);\n+       diagnosesLegacy = getUniqueDiagnoses(visitDomainWrapper, false, true, Implementation.LEGACY);\n+       assertThatSameUniqueDiagnoses(diagnoses, diagnosesLegacy);\n+\n+       diagnoses = getUniqueDiagnoses(visitDomainWrapper, true, true, Implementation.CURRENT);\n+       diagnosesLegacy = getUniqueDiagnoses(visitDomainWrapper, true, true, Implementation.LEGACY);\n+       assertThatSameUniqueDiagnoses(diagnoses, diagnosesLegacy);\n+    }\n+    \n+    /*\n+     * Wrapper to log execution time\n+     */\n+    private List<Diagnosis> getUniqueDiagnoses(VisitDomainWrapper visitDomainWrapper, Boolean primaryOnly, Boolean confirmedOnly, Implementation impl) {\n+       List<Diagnosis> res = null;\n+       String whichOne = \"\";\n+       long time0 = System.currentTimeMillis();\n+       switch (impl) {\n+       case CURRENT:\n+          res = visitDomainWrapper.getUniqueDiagnoses(primaryOnly, confirmedOnly);\n+          whichOne = impl.name();\n+          break;\n+       case LEGACY:\n+          res = visitDomainWrapper.getUniqueDiagnosesLegacy(primaryOnly, confirmedOnly);\n+          whichOne = impl.name();\n+          break;\n+       default:\n+          Assert.fail(\"Invalid implementation specified.\");\n+       }\n+       long time1 = System.currentTimeMillis();\n+       System.out.println(whichOne + \" getUniqueDiagnoses(..) | primaryOnly=\" + primaryOnly.toString() + \", confirmedOnly=\" + confirmedOnly.toString());","path":"api/src/test/java/org/openmrs/module/emrapi/visit/VisitDomainWrapperComponentTest.java","position":224,"original_position":224,"commit_id":"2df81497d9bb9bc197bd951f6b942a7ffaff179d","original_commit_id":"2df81497d9bb9bc197bd951f6b942a7ffaff179d","user":{"login":"mks-d","id":12812196,"avatar_url":"https://avatars.githubusercontent.com/u/12812196?v=3","gravatar_id":"","url":"https://api.github.com/users/mks-d","html_url":"https://github.com/mks-d","followers_url":"https://api.github.com/users/mks-d/followers","following_url":"https://api.github.com/users/mks-d/following{/other_user}","gists_url":"https://api.github.com/users/mks-d/gists{/gist_id}","starred_url":"https://api.github.com/users/mks-d/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mks-d/subscriptions","organizations_url":"https://api.github.com/users/mks-d/orgs","repos_url":"https://api.github.com/users/mks-d/repos","events_url":"https://api.github.com/users/mks-d/events{/privacy}","received_events_url":"https://api.github.com/users/mks-d/received_events","type":"User","site_admin":false},"body":"I can just comment them out if you don't want the build output log to be affected, would that be ok?","created_at":"2016-11-22T10:04:51Z","updated_at":"2016-11-22T10:04:51Z","html_url":"https://github.com/openmrs/openmrs-module-emrapi/pull/110#discussion_r89079835","pull_request_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/pulls/110","_links":{"self":{"href":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/pulls/comments/89079835"},"html":{"href":"https://github.com/openmrs/openmrs-module-emrapi/pull/110#discussion_r89079835"},"pull_request":{"href":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/pulls/110"}}},"pull_request":{"url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/pulls/110","id":94630012,"html_url":"https://github.com/openmrs/openmrs-module-emrapi/pull/110","diff_url":"https://github.com/openmrs/openmrs-module-emrapi/pull/110.diff","patch_url":"https://github.com/openmrs/openmrs-module-emrapi/pull/110.patch","issue_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/issues/110","number":110,"state":"closed","locked":false,"title":"EA-114: 3 out of 4 getUniqueDiagnoses(..) cases re-implemented with HQL.","user":{"login":"mks-d","id":12812196,"avatar_url":"https://avatars.githubusercontent.com/u/12812196?v=3","gravatar_id":"","url":"https://api.github.com/users/mks-d","html_url":"https://github.com/mks-d","followers_url":"https://api.github.com/users/mks-d/followers","following_url":"https://api.github.com/users/mks-d/following{/other_user}","gists_url":"https://api.github.com/users/mks-d/gists{/gist_id}","starred_url":"https://api.github.com/users/mks-d/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mks-d/subscriptions","organizations_url":"https://api.github.com/users/mks-d/orgs","repos_url":"https://api.github.com/users/mks-d/repos","events_url":"https://api.github.com/users/mks-d/events{/privacy}","received_events_url":"https://api.github.com/users/mks-d/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-11-21T14:55:19Z","updated_at":"2016-11-22T10:04:51Z","closed_at":"2016-11-22T09:36:48Z","merged_at":"2016-11-22T09:36:48Z","merge_commit_sha":"206080678fe5443bcf532b67e460d4625243be47","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/pulls/110/commits","review_comments_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/pulls/110/comments","review_comment_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/pulls/comments{/number}","comments_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/issues/110/comments","statuses_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/statuses/2df81497d9bb9bc197bd951f6b942a7ffaff179d","head":{"label":"mekomsolutions:MRSCMNS-22","ref":"MRSCMNS-22","sha":"2df81497d9bb9bc197bd951f6b942a7ffaff179d","user":{"login":"mekomsolutions","id":12812208,"avatar_url":"https://avatars.githubusercontent.com/u/12812208?v=3","gravatar_id":"","url":"https://api.github.com/users/mekomsolutions","html_url":"https://github.com/mekomsolutions","followers_url":"https://api.github.com/users/mekomsolutions/followers","following_url":"https://api.github.com/users/mekomsolutions/following{/other_user}","gists_url":"https://api.github.com/users/mekomsolutions/gists{/gist_id}","starred_url":"https://api.github.com/users/mekomsolutions/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mekomsolutions/subscriptions","organizations_url":"https://api.github.com/users/mekomsolutions/orgs","repos_url":"https://api.github.com/users/mekomsolutions/repos","events_url":"https://api.github.com/users/mekomsolutions/events{/privacy}","received_events_url":"https://api.github.com/users/mekomsolutions/received_events","type":"Organization","site_admin":false},"repo":{"id":47162265,"name":"openmrs-module-emrapi","full_name":"mekomsolutions/openmrs-module-emrapi","owner":{"login":"mekomsolutions","id":12812208,"avatar_url":"https://avatars.githubusercontent.com/u/12812208?v=3","gravatar_id":"","url":"https://api.github.com/users/mekomsolutions","html_url":"https://github.com/mekomsolutions","followers_url":"https://api.github.com/users/mekomsolutions/followers","following_url":"https://api.github.com/users/mekomsolutions/following{/other_user}","gists_url":"https://api.github.com/users/mekomsolutions/gists{/gist_id}","starred_url":"https://api.github.com/users/mekomsolutions/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mekomsolutions/subscriptions","organizations_url":"https://api.github.com/users/mekomsolutions/orgs","repos_url":"https://api.github.com/users/mekomsolutions/repos","events_url":"https://api.github.com/users/mekomsolutions/events{/privacy}","received_events_url":"https://api.github.com/users/mekomsolutions/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mekomsolutions/openmrs-module-emrapi","description":"Higher-level APIs to support building EMR functionality in OpenMRS, to supplement the data-level APIs in the OpenMRS core.","fork":true,"url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi","forks_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/forks","keys_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/teams","hooks_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/hooks","issue_events_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/issues/events{/number}","events_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/events","assignees_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/assignees{/user}","branches_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/branches{/branch}","tags_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/tags","blobs_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/git/refs{/sha}","trees_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/statuses/{sha}","languages_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/languages","stargazers_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/stargazers","contributors_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/contributors","subscribers_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/subscribers","subscription_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/subscription","commits_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/commits{/sha}","git_commits_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/git/commits{/sha}","comments_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/comments{/number}","issue_comment_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/issues/comments{/number}","contents_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/contents/{+path}","compare_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/merges","archive_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/downloads","issues_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/issues{/number}","pulls_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/pulls{/number}","milestones_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/milestones{/number}","notifications_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/labels{/name}","releases_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/releases{/id}","deployments_url":"https://api.github.com/repos/mekomsolutions/openmrs-module-emrapi/deployments","created_at":"2015-12-01T03:12:23Z","updated_at":"2015-12-01T03:12:25Z","pushed_at":"2016-11-21T15:36:20Z","git_url":"git://github.com/mekomsolutions/openmrs-module-emrapi.git","ssh_url":"git@github.com:mekomsolutions/openmrs-module-emrapi.git","clone_url":"https://github.com/mekomsolutions/openmrs-module-emrapi.git","svn_url":"https://github.com/mekomsolutions/openmrs-module-emrapi","homepage":null,"size":2250,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"dev"}},"base":{"label":"openmrs:master","ref":"master","sha":"f817bd8d8ea22df65ce4dc944a199f506216c756","user":{"login":"openmrs","id":860776,"avatar_url":"https://avatars.githubusercontent.com/u/860776?v=3","gravatar_id":"","url":"https://api.github.com/users/openmrs","html_url":"https://github.com/openmrs","followers_url":"https://api.github.com/users/openmrs/followers","following_url":"https://api.github.com/users/openmrs/following{/other_user}","gists_url":"https://api.github.com/users/openmrs/gists{/gist_id}","starred_url":"https://api.github.com/users/openmrs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openmrs/subscriptions","organizations_url":"https://api.github.com/users/openmrs/orgs","repos_url":"https://api.github.com/users/openmrs/repos","events_url":"https://api.github.com/users/openmrs/events{/privacy}","received_events_url":"https://api.github.com/users/openmrs/received_events","type":"Organization","site_admin":false},"repo":{"id":9158616,"name":"openmrs-module-emrapi","full_name":"openmrs/openmrs-module-emrapi","owner":{"login":"openmrs","id":860776,"avatar_url":"https://avatars.githubusercontent.com/u/860776?v=3","gravatar_id":"","url":"https://api.github.com/users/openmrs","html_url":"https://github.com/openmrs","followers_url":"https://api.github.com/users/openmrs/followers","following_url":"https://api.github.com/users/openmrs/following{/other_user}","gists_url":"https://api.github.com/users/openmrs/gists{/gist_id}","starred_url":"https://api.github.com/users/openmrs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openmrs/subscriptions","organizations_url":"https://api.github.com/users/openmrs/orgs","repos_url":"https://api.github.com/users/openmrs/repos","events_url":"https://api.github.com/users/openmrs/events{/privacy}","received_events_url":"https://api.github.com/users/openmrs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/openmrs/openmrs-module-emrapi","description":"Higher-level APIs to support building EMR functionality in OpenMRS, to supplement the data-level APIs in the OpenMRS core.","fork":false,"url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi","forks_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/forks","keys_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/keys{/key_id}","collaborators_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/teams","hooks_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/hooks","issue_events_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/issues/events{/number}","events_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/events","assignees_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/assignees{/user}","branches_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/branches{/branch}","tags_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/tags","blobs_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/git/refs{/sha}","trees_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/git/trees{/sha}","statuses_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/statuses/{sha}","languages_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/languages","stargazers_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/stargazers","contributors_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/contributors","subscribers_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/subscribers","subscription_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/subscription","commits_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/commits{/sha}","git_commits_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/git/commits{/sha}","comments_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/comments{/number}","issue_comment_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/issues/comments{/number}","contents_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/contents/{+path}","compare_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/compare/{base}...{head}","merges_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/merges","archive_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/downloads","issues_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/issues{/number}","pulls_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/pulls{/number}","milestones_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/milestones{/number}","notifications_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/labels{/name}","releases_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/releases{/id}","deployments_url":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/deployments","created_at":"2013-04-01T23:55:31Z","updated_at":"2016-11-22T06:26:08Z","pushed_at":"2016-11-22T09:36:48Z","git_url":"git://github.com/openmrs/openmrs-module-emrapi.git","ssh_url":"git@github.com:openmrs/openmrs-module-emrapi.git","clone_url":"https://github.com/openmrs/openmrs-module-emrapi.git","svn_url":"https://github.com/openmrs/openmrs-module-emrapi","homepage":null,"size":2685,"stargazers_count":6,"watchers_count":6,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":69,"mirror_url":null,"open_issues_count":1,"forks":69,"open_issues":1,"watchers":6,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/pulls/110"},"html":{"href":"https://github.com/openmrs/openmrs-module-emrapi/pull/110"},"issue":{"href":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/issues/110"},"comments":{"href":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/issues/110/comments"},"review_comments":{"href":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/pulls/110/comments"},"review_comment":{"href":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/pulls/110/commits"},"statuses":{"href":"https://api.github.com/repos/openmrs/openmrs-module-emrapi/statuses/2df81497d9bb9bc197bd951f6b942a7ffaff179d"}}}}
{"actor":{"display_login":"mks-d"}}