@Test
  public void testSimplify() throws Exception {
    PersonName name = new PersonName();
    name.setGivenName("Barack");
    name.setFamilyName("Obama");

    PatientIdentifierType pit = new PatientIdentifierType();
    pit.setName("US President Number");

    Patient patient = new Patient();
    patient.setPatientId(44);
    patient.addName(name);
    patient.setGender("M");
    patient.setBirthdate(new SimpleDateFormat("yyyy-MM-dd").parse("1961-08-04"));
    patient.addIdentifier(new PatientIdentifier("44", pit, new Location()));

    EmrApiProperties emrApiProperties = mock(EmrApiProperties.class);
    when(emrApiProperties.getPrimaryIdentifierType()).thenReturn(pit);

    TestUiUtils ui = new TestUiUtils();
    SimpleObject o = new FindPatientFragmentController().simplify(ui, emrApiProperties, patient);

    assertEquals("Barack", PropertyUtils.getProperty(o, "preferredName.givenName"));
    assertNull(PropertyUtils.getProperty(o, "preferredName.middleName"));
    assertEquals("Obama", PropertyUtils.getProperty(o, "preferredName.familyName"));
    assertEquals("Barack Obama", PropertyUtils.getProperty(o, "preferredName.fullName"));
    assertEquals("04.Aug.1961", PropertyUtils.getProperty(o, "birthdate"));
    assertEquals(Boolean.FALSE, PropertyUtils.getProperty(o, "birthdateEstimated"));
    assertEquals("M", PropertyUtils.getProperty(o, "gender"));

    Object primaryIdentifier = ((List) o.get("primaryIdentifiers")).get(0);
    assertThat((String) PropertyUtils.getProperty(primaryIdentifier, "identifier"), is("44"));
  }
  @Test
  public void testEstimatedBirthDate() {

    visitLocation.setName("Hôpital Universitaire de Mirebalais");

    Patient patient = new Patient();
    patient.setGender("M");
    patient.setBirthdate(new DateTime(1940, 7, 7, 5, 5, 5).toDate());
    patient.setBirthdateEstimated(true);

    PatientIdentifier primaryIdentifier = new PatientIdentifier();
    primaryIdentifier.setIdentifier("ZL1234");
    primaryIdentifier.setIdentifierType(primaryIdentifierType);
    primaryIdentifier.setVoided(false);
    patient.addIdentifier(primaryIdentifier);

    PatientIdentifier paperRecordIdentifier = new PatientIdentifier();
    paperRecordIdentifier.setIdentifier("A00005");
    paperRecordIdentifier.setIdentifierType(paperRecordIdentifierType);
    paperRecordIdentifier.setVoided(false);
    patient.addIdentifier(paperRecordIdentifier);

    PersonName name = new PersonName();
    name.setGivenName("Ringo");
    name.setFamilyName("Starr");
    patient.addName(name);

    String output = wristbandTemplate.generateWristband(patient, new Location());

    assertThat(output, containsString("^FO160,200^FB2150,1,0,L,0^AU^FD1940^FS"));
  }
  @RequestMapping("/module/hirifxray/createParticipant.form")
  public String createParticipant(
      ModelMap model,
      @RequestParam(value = "identifier", required = true) String identifier,
      @RequestParam(value = "gender", required = true) String gender)
      throws Exception {

    Patient p = new Patient();

    PersonName pn = new PersonName();
    pn.setGivenName("XXXX");
    pn.setFamilyName("XXXX");
    p.addName(pn);

    p.setGender(gender);

    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    p.setBirthdate(df.parse("1900-01-01"));

    PatientIdentifier pi = new PatientIdentifier();
    pi.setPatient(p);
    pi.setLocation(HirifMetadata.getUnknownLocation());
    pi.setIdentifierType(HirifMetadata.getIdentifierType());
    pi.setIdentifier(identifier);
    p.addIdentifier(pi);

    p = Context.getPatientService().savePatient(p);

    return "redirect:/module/hirifxray/participant.form?id=" + p.getPatientId();
  }
  @Test
  public void testWristBandTemplate() {

    Date today = new Date();

    visitLocation.setName("Hôpital Universitaire de Mirebalais");

    Patient patient = new Patient();
    patient.setGender("M");
    patient.setBirthdate(new DateTime(1940, 7, 7, 5, 5, 5).toDate());

    PatientIdentifier primaryIdentifier = new PatientIdentifier();
    primaryIdentifier.setIdentifier("ZL1234");
    primaryIdentifier.setIdentifierType(primaryIdentifierType);
    primaryIdentifier.setVoided(false);
    patient.addIdentifier(primaryIdentifier);

    PatientIdentifier paperRecordIdentifier = new PatientIdentifier();
    paperRecordIdentifier.setIdentifier("A000005");
    paperRecordIdentifier.setIdentifierType(paperRecordIdentifierType);
    paperRecordIdentifier.setVoided(false);
    paperRecordIdentifier.setLocation(visitLocation);
    patient.addIdentifier(paperRecordIdentifier);

    PersonAddress address = new PersonAddress();
    address.setAddress2("Avant Eglise Chretienne des perlerlerin de la siant tete de moliere");
    address.setAddress1("Saut D'Eau");
    address.setAddress3("1ere Riviere Canot");
    address.setCityVillage("Saut d'Eau");
    address.setStateProvince("Centre");
    patient.addAddress(address);

    PersonName name = new PersonName();
    name.setGivenName("Ringo");
    name.setFamilyName("Starr");
    patient.addName(name);

    when(messageSourceService.getMessage(
            "coreapps.ageYears", Collections.singletonList(patient.getAge()).toArray(), locale))
        .thenReturn("75 an(s)");

    String output = wristbandTemplate.generateWristband(patient, visitLocation);

    assertThat(output, containsString("^XA^CI28^MTD^FWB"));
    assertThat(
        output,
        containsString(
            "^FO050,200^FB2150,1,0,L,0^AS^FDHôpital Universitaire de Mirebalais "
                + df.format(today)
                + "^FS"));
    assertThat(output, containsString("^FO100,200^FB2150,1,0,L,0^AU^FDRingo Starr^FS"));
    assertThat(output, containsString("^FO160,200^FB2150,1,0,L,0^AU^FD07 juil. 1940^FS"));
    assertThat(
        output, containsString("^FO160,200^FB1850,1,0,L,0^AT^FD" + patient.getAge() + " an(s)^FS"));
    assertThat(output, containsString("^FO160,200^FB1650,1,0,L,0^AU^FDMasculin  A 000005^FS"));
    assertThat(
        output,
        containsString(
            "^FO220,200^FB2150,1,0,L,0^AS^FDAvant Eglise Chretienne des perlerlerin de la siant tete de moliere^FS"));
    assertThat(
        output,
        containsString(
            "^FO270,200^FB2150,1,0,L,0^AS^FDSaut D'Eau, 1ere Riviere Canot, Saut d'Eau, Centre^FS"));
    assertThat(output, containsString("^FO100,2400^AT^BY4^BC,150,N^FDZL1234^XZ"));
  }