Changes to DHIS2 : Patient Tracker

Hi,

Does rev 13788 still not give us what we need? What’s the current limitation?

Let’s start the discussion here and see if anyone on the dev list has a similar requirement.

Cheers,

Pascal

···

On 24 February 2014 11:57, Pierre Dane pierre@jembi.org wrote:

Hi Lars,

Would it be possible to have a chat about the current state of the patient tracker API and data model so that we can get an idea of how much work would be involved to get the functionality we need for the Maternal Health Initiative (National Pregnancy Register) released. Ferdi said I should get in touch with you regarding any java development work that needed doing. If it’s looking like it’s going to take more than a week or so of your time then we may have to fall back to using just the dataset api to record indicators.

Please let me know if you have a gap for a Skype/telephone call.

Many thanks and kind regards,

Pierre Dane.


*Pascal Brandt
Senio**r Software Developer, Jembi Health Systems | SOUTH AFRICA

Mobile: +27 84 827 9342 | Office: +27 21 701 0939 | Skype: psbrandt
E-mail: pascal@jembi.org*

Is this regarding the update of persons, or is it related to something else?

···


Morten

On Mon, Feb 24, 2014 at 5:02 PM, Pascal Brandt pascal@jembi.org wrote:

Hi,

Does rev 13788 still not give us what we need? What’s the current limitation?

Let’s start the discussion here and see if anyone on the dev list has a similar requirement.

Cheers,

Pascal

On 24 February 2014 11:57, Pierre Dane pierre@jembi.org wrote:

Hi Lars,

Would it be possible to have a chat about the current state of the patient tracker API and data model so that we can get an idea of how much work would be involved to get the functionality we need for the Maternal Health Initiative (National Pregnancy Register) released. Ferdi said I should get in touch with you regarding any java development work that needed doing. If it’s looking like it’s going to take more than a week or so of your time then we may have to fall back to using just the dataset api to record indicators.

Please let me know if you have a gap for a Skype/telephone call.

Many thanks and kind regards,

Pierre Dane.

*Pascal Brandt

Senio**r Software Developer, Jembi Health Systems | SOUTH AFRICA

Mobile: +27 84 827 9342 | Office: +27 21 701 0939 | Skype: psbrandt

E-mail: pascal@jembi.org*

Hi,

At the moment we’re testing rev 13788 to make sure our use case works.

Basically, all we need to be able to do is create a person via the API and set values for some attributes that we will have created in the system beforehand.

This should be possible, right?

We will provide some feedback after our test.

Cheers,

Pascal

···

On 24 February 2014 13:04, Morten Olav Hansen mortenoh@gmail.com wrote:

Is this regarding the update of persons, or is it related to something else?


*Pascal Brandt
Senio**r Software Developer, Jembi Health Systems | SOUTH AFRICA

Mobile: +27 84 827 9342 | Office: +27 21 701 0939 | Skype: psbrandt
E-mail: pascal@jembi.org*


Morten

On Mon, Feb 24, 2014 at 5:02 PM, Pascal Brandt pascal@jembi.org wrote:

Hi,

Does rev 13788 still not give us what we need? What’s the current limitation?

Let’s start the discussion here and see if anyone on the dev list has a similar requirement.

Cheers,

Pascal

On 24 February 2014 11:57, Pierre Dane pierre@jembi.org wrote:

Hi Lars,

Would it be possible to have a chat about the current state of the patient tracker API and data model so that we can get an idea of how much work would be involved to get the functionality we need for the Maternal Health Initiative (National Pregnancy Register) released. Ferdi said I should get in touch with you regarding any java development work that needed doing. If it’s looking like it’s going to take more than a week or so of your time then we may have to fall back to using just the dataset api to record indicators.

Please let me know if you have a gap for a Skype/telephone call.

Many thanks and kind regards,

Pierre Dane.

*Pascal Brandt

Senio**r Software Developer, Jembi Health Systems | SOUTH AFRICA

Mobile: +27 84 827 9342 | Office: +27 21 701 0939 | Skype: psbrandt

E-mail: pascal@jembi.org*

Hi Morten,

Thanks for committing that code but it hasn’t solved the problem.

I’ve built and released the new code and I’m getting the same error:

Message:

{

“orgUnit”: “C33j9neHDGt”,

“identifiers”: [ {

“type”: “zEhQmZeoRN9”,

“value”: “7373736543376”

} ],

“attributes”: [ {

“type”: “uRGeJ84LKb5”,

“value”: “pierretest”

},{

“type”: “PGtWVaM3uXz”,

“value”: “2010-02-02”

},{

“type”: “T7pwpMdaVVa”,

“value”: “1974-02-03”

}

]

}

0000: 7B 22 73 74 61 74 75 73 22 3A 22 45 52 52 4F 52 | {“status”:"ERROR |

0010: 22 2C 22 69 6D 70 6F 72 74 43 6F 75 6E 74 22 3A | ",“importCount”: |

0020: 7B 22 69 6D 70 6F 72 74 65 64 22 3A 30 2C 22 75 | {“imported”:0,"u |

0030: 70 64 61 74 65 64 22 3A 30 2C 22 69 67 6E 6F 72 | pdated":0,"ignor |

0040: 65 64 22 3A 31 2C 22 64 65 6C 65 74 65 64 22 3A | ed":1,“deleted”: |

0050: 30 7D 2C 22 63 6F 6E 66 6C 69 63 74 73 22 3A 5B | 0},“conflicts”:[ |

0060: 7B 22 6F 62 6A 65 63 74 22 3A 22 49 64 65 6E 74 | {“object”:"Ident |

0070: 69 66 69 65 72 2E 74 79 70 65 22 2C 22 76 61 6C | ifier.type","val |

0080: 75 65 22 3A 22 4D 69 73 73 69 6E 67 20 72 65 71 | ue":"Missing req |

0090: 75 69 72 65 64 20 69 64 65 6E 74 69 66 69 65 72 | uired identifier |

00A0: 20 74 79 70 65 20 7A 45 68 51 6D 5A 65 6F 52 4E | type zEhQmZeoRN |

00B0: 39 22 7D 2C 7B 22 6F 62 6A 65 63 74 22 3A 22 49 | 9"},{“object”:"I |

00C0: 64 65 6E 74 69 66 69 65 72 2E 74 79 70 65 22 2C | dentifier.type", |

00D0: 22 76 61 6C 75 65 22 3A 22 49 6E 76 61 6C 69 64 | “value”:"Invalid |

00E0: 20 74 79 70 65 20 6E 75 6C 6C 22 7D 2C 7B 22 6F | type null"},{"o |

00F0: 62 6A 65 63 74 22 3A 22 41 74 74 72 69 62 75 74 | bject":"Attribut |

0100: 65 2E 74 79 70 65 22 2C 22 76 61 6C 75 65 22 3A | e.type",“value”: |

0110: 22 4D 69 73 73 69 6E 67 20 72 65 71 75 69 72 65 | "Missing require |

0120: 64 20 61 74 74 72 69 62 75 74 65 20 74 79 70 65 | d attribute type |

0130: 20 54 37 70 77 70 4D 64 61 56 56 61 22 7D 2C 7B | T7pwpMdaVVa"},{ |

0140: 22 6F 62 6A 65 63 74 22 3A 22 41 74 74 72 69 62 | “object”:"Attrib |

0150: 75 74 65 2E 74 79 70 65 22 2C 22 76 61 6C 75 65 | ute.type","value |

0160: 22 3A 22 4D 69 73 73 69 6E 67 20 72 65 71 75 69 | ":"Missing requi |

0170: 72 65 64 20 61 74 74 72 69 62 75 74 65 20 74 79 | red attribute ty |

0180: 70 65 20 50 47 74 57 56 61 4D 33 75 58 7A 22 7D | pe PGtWVaM3uXz"} |

0190: 2C 7B 22 6F 62 6A 65 63 74 22 3A 22 41 74 74 72 | ,{“object”:"Attr |

01A0: 69 62 75 74 65 2E 74 79 70 65 22 2C 22 76 61 6C | ibute.type","val |

01B0: 75 65 22 3A 22 4D 69 73 73 69 6E 67 20 72 65 71 | ue":"Missing req |

01C0: 75 69 72 65 64 20 61 74 74 72 69 62 75 74 65 20 | uired attribute |

01D0: 74 79 70 65 20 75 52 47 65 4A 38 34 4C 4B 62 35 | type uRGeJ84LKb5 |

01E0: 22 7D 2C 7B 22 6F 62 6A 65 63 74 22 3A 22 41 74 | "},{“object”:"At |

01F0: 74 72 69 62 75 74 65 2E 74 79 70 65 22 2C 22 76 | tribute.type","v |

0200: 61 6C 75 65 22 3A 22 49 6E 76 61 6C 69 64 20 74 | alue":"Invalid t |

0210: 79 70 65 20 6E 75 6C 6C 22 7D 2C 7B 22 6F 62 6A | ype null"},{"obj |

0220: 65 63 74 22 3A 22 41 74 74 72 69 62 75 74 65 2E | ect":"Attribute. |

0230: 74 79 70 65 22 2C 22 76 61 6C 75 65 22 3A 22 49 | type",“value”:"I |

0240: 6E 76 61 6C 69 64 20 74 79 70 65 20 6E 75 6C 6C | nvalid type null |

0250: 22 7D 2C 7B 22 6F 62 6A 65 63 74 22 3A 22 41 74 | "},{“object”:"At |

0260: 74 72 69 62 75 74 65 2E 74 79 70 65 22 2C 22 76 | tribute.type","v |

0270: 61 6C 75 65 22 3A 22 49 6E 76 61 6C 69 64 20 74 | alue":"Invalid t |

0280: 79 70 65 20 6E 75 6C 6C 22 7D 5D 7D | ype null"}]} |

However!

When I make the identifiers and attributes non-mandatory i get the following error message:

0000: 7B 22 73 74 61 74 75 73 22 3A 22 45 52 52 4F 52 | {“status”:"ERROR |

0010: 22 2C 22 69 6D 70 6F 72 74 43 6F 75 6E 74 22 3A | ",“importCount”: |

0020: 7B 22 69 6D 70 6F 72 74 65 64 22 3A 30 2C 22 75 | {“imported”:0,"u |

0030: 70 64 61 74 65 64 22 3A 30 2C 22 69 67 6E 6F 72 | pdated":0,"ignor |

0040: 65 64 22 3A 31 2C 22 64 65 6C 65 74 65 64 22 3A | ed":1,“deleted”: |

0050: 30 7D 2C 22 63 6F 6E 66 6C 69 63 74 73 22 3A 5B | 0},“conflicts”:[ |

0060: 7B 22 6F 62 6A 65 63 74 22 3A 22 49 64 65 6E 74 | {“object”:"Ident |

0070: 69 66 69 65 72 2E 74 79 70 65 22 2C 22 76 61 6C | ifier.type","val |

0080: 75 65 22 3A 22 49 6E 76 61 6C 69 64 20 74 79 70 | ue":"Invalid typ |

0090: 65 20 6E 75 6C 6C 22 7D 2C 7B 22 6F 62 6A 65 63 | e null"},{"objec |

00A0: 74 22 3A 22 41 74 74 72 69 62 75 74 65 2E 74 79 | t":"Attribute.ty |

00B0: 70 65 22 2C 22 76 61 6C 75 65 22 3A 22 49 6E 76 | pe",“value”:"Inv |

00C0: 61 6C 69 64 20 74 79 70 65 20 6E 75 6C 6C 22 7D | alid type null"} |

00D0: 2C 7B 22 6F 62 6A 65 63 74 22 3A 22 41 74 74 72 | ,{“object”:"Attr |

00E0: 69 62 75 74 65 2E 74 79 70 65 22 2C 22 76 61 6C | ibute.type","val |

00F0: 75 65 22 3A 22 49 6E 76 61 6C 69 64 20 74 79 70 | ue":"Invalid typ |

0100: 65 20 6E 75 6C 6C 22 7D 2C 7B 22 6F 62 6A 65 63 | e null"},{"objec |

0110: 74 22 3A 22 41 74 74 72 69 62 75 74 65 2E 74 79 | t":"Attribute.ty |

0120: 70 65 22 2C 22 76 61 6C 75 65 22 3A 22 49 6E 76 | pe",“value”:"Inv |

0130: 61 6C 69 64 20 74 79 70 65 20 6E 75 6C 6C 22 7D | alid type null"} |

0140: 5D 7D | ]} |

and here is what I see in the server log:

  • INFO 2014-02-24 16:10:59,424 Login success for user: ‘admin’, ip: ‘105.236.172.122’ (DefaultUserAuditService.java [http-bio-8080-exec-3])

  • INFO 2014-02-24 16:14:13,904 ‘admin’ update org.hisp.dhis.patient.PatientIdentifierType, name: NationalId, uid: zEhQmZeoRN9 (AuditLogUtil.java [http-bio-8080-exec-2])

  • INFO 2014-02-24 16:14:18,393 Login success for user: ‘admin’, ip: ‘105.236.172.122’ (DefaultUserAuditService.java [http-bio-8080-exec-10])

  • INFO 2014-02-24 16:14:48,666 ‘admin’ update org.hisp.dhis.patient.PatientAttribute, name: DOB, uid: T7pwpMdaVVa (AuditLogUtil.java [http-bio-8080-exec-2])

  • INFO 2014-02-24 16:14:56,789 ‘admin’ update org.hisp.dhis.patient.PatientAttribute, name: DueDate, uid: PGtWVaM3uXz (AuditLogUtil.java [http-bio-8080-exec-6])

  • INFO 2014-02-24 16:15:02,793 ‘admin’ update org.hisp.dhis.patient.PatientAttribute, name: name, uid: uRGeJ84LKb5 (AuditLogUtil.java [http-bio-8080-exec-5])

  • INFO 2014-02-24 16:15:08,022 Login success for user: ‘admin’, ip: ‘105.236.172.122’ (DefaultUserAuditService.java [http-bio-8080-exec-10])

Database:

patientattributeid | uid | code | created | lastupdated | name | description | valuetype | mandatory | groupby | patientattributegroupid | inherit | expression | displayonvisitschedule | sortorderinvisitschedule | displayinlistnoprogram | patientmobilesettingid | sort_order_patientattributename | sort_order

···

On 24 February 2014 13:04, Morten Olav Hansen mortenoh@gmail.com wrote:

Is this regarding the update of persons, or is it related to something else?


*Pascal Brandt
Senio**r Software Developer, Jembi Health Systems | SOUTH AFRICA

Mobile: +27 84 827 9342 | Office: +27 21 701 0939 | Skype: psbrandt
E-mail: pascal@jembi.org*


Morten

On Mon, Feb 24, 2014 at 5:02 PM, Pascal Brandt pascal@jembi.org wrote:

Hi,

Does rev 13788 still not give us what we need? What’s the current limitation?

Let’s start the discussion here and see if anyone on the dev list has a similar requirement.

Cheers,

Pascal

On 24 February 2014 11:57, Pierre Dane pierre@jembi.org wrote:

Hi Lars,

Would it be possible to have a chat about the current state of the patient tracker API and data model so that we can get an idea of how much work would be involved to get the functionality we need for the Maternal Health Initiative (National Pregnancy Register) released. Ferdi said I should get in touch with you regarding any java development work that needed doing. If it’s looking like it’s going to take more than a week or so of your time then we may have to fall back to using just the dataset api to record indicators.

Please let me know if you have a gap for a Skype/telephone call.

Many thanks and kind regards,

Pierre Dane.

*Pascal Brandt

Senio**r Software Developer, Jembi Health Systems | SOUTH AFRICA

Mobile: +27 84 827 9342 | Office: +27 21 701 0939 | Skype: psbrandt

E-mail: pascal@jembi.org*

Hi,

I have made some small changes in rev 13791 which I hope can help (issues related to system identifier).

I think what you should do, is this:

  1. Enter Individual Records, and Find/Add Person

  2. Create a new person on Sierra Leone (or whatever your test db uses)

  3. Find the UID of the OU by using /api/organisationUnits/query/sierr (in my case)

  4. Then go /api/persons.json?orgUnit=UID

  5. On that list, you will find your newly created person

  6. Now take the uid from the person, and go to /api/persons/UID.json

  7. The format from the last query, you should be able to send back to the server… e.g. by using cURL:

curl -u username:password -H “Content-Type: application/json” -d @filename.json http://server/api/persons/UID

···


Morten

On Mon, Feb 24, 2014 at 9:18 PM, Pierre Dane pierre@jembi.org wrote:

Hi Morten,

Thanks for committing that code but it hasn’t solved the problem.

I’ve built and released the new code and I’m getting the same error:

Message:

{

“orgUnit”: “C33j9neHDGt”,

“identifiers”: [ {

“type”: “zEhQmZeoRN9”,

“value”: “7373736543376”

} ],

“attributes”: [ {

“type”: “uRGeJ84LKb5”,

“value”: “pierretest”

},{

“type”: “PGtWVaM3uXz”,

“value”: “2010-02-02”

},{

“type”: “T7pwpMdaVVa”,

“value”: “1974-02-03”

}

]

}

0000: 7B 22 73 74 61 74 75 73 22 3A 22 45 52 52 4F 52 | {“status”:"ERROR |

0010: 22 2C 22 69 6D 70 6F 72 74 43 6F 75 6E 74 22 3A | ",“importCount”: |

0020: 7B 22 69 6D 70 6F 72 74 65 64 22 3A 30 2C 22 75 | {“imported”:0,"u |

0030: 70 64 61 74 65 64 22 3A 30 2C 22 69 67 6E 6F 72 | pdated":0,"ignor |

0040: 65 64 22 3A 31 2C 22 64 65 6C 65 74 65 64 22 3A | ed":1,“deleted”: |

0050: 30 7D 2C 22 63 6F 6E 66 6C 69 63 74 73 22 3A 5B | 0},“conflicts”:[ |

0060: 7B 22 6F 62 6A 65 63 74 22 3A 22 49 64 65 6E 74 | {“object”:"Ident |

0070: 69 66 69 65 72 2E 74 79 70 65 22 2C 22 76 61 6C | ifier.type","val |

0080: 75 65 22 3A 22 4D 69 73 73 69 6E 67 20 72 65 71 | ue":"Missing req |

0090: 75 69 72 65 64 20 69 64 65 6E 74 69 66 69 65 72 | uired identifier |

00A0: 20 74 79 70 65 20 7A 45 68 51 6D 5A 65 6F 52 4E | type zEhQmZeoRN |

00B0: 39 22 7D 2C 7B 22 6F 62 6A 65 63 74 22 3A 22 49 | 9"},{“object”:"I |

00C0: 64 65 6E 74 69 66 69 65 72 2E 74 79 70 65 22 2C | dentifier.type", |

00D0: 22 76 61 6C 75 65 22 3A 22 49 6E 76 61 6C 69 64 | “value”:"Invalid |

00E0: 20 74 79 70 65 20 6E 75 6C 6C 22 7D 2C 7B 22 6F | type null"},{"o |

00F0: 62 6A 65 63 74 22 3A 22 41 74 74 72 69 62 75 74 | bject":"Attribut |

0100: 65 2E 74 79 70 65 22 2C 22 76 61 6C 75 65 22 3A | e.type",“value”: |

0110: 22 4D 69 73 73 69 6E 67 20 72 65 71 75 69 72 65 | "Missing require |

0120: 64 20 61 74 74 72 69 62 75 74 65 20 74 79 70 65 | d attribute type |

0130: 20 54 37 70 77 70 4D 64 61 56 56 61 22 7D 2C 7B | T7pwpMdaVVa"},{ |

0140: 22 6F 62 6A 65 63 74 22 3A 22 41 74 74 72 69 62 | “object”:"Attrib |

0150: 75 74 65 2E 74 79 70 65 22 2C 22 76 61 6C 75 65 | ute.type","value |

0160: 22 3A 22 4D 69 73 73 69 6E 67 20 72 65 71 75 69 | ":"Missing requi |

0170: 72 65 64 20 61 74 74 72 69 62 75 74 65 20 74 79 | red attribute ty |

0180: 70 65 20 50 47 74 57 56 61 4D 33 75 58 7A 22 7D | pe PGtWVaM3uXz"} |

0190: 2C 7B 22 6F 62 6A 65 63 74 22 3A 22 41 74 74 72 | ,{“object”:"Attr |

01A0: 69 62 75 74 65 2E 74 79 70 65 22 2C 22 76 61 6C | ibute.type","val |

01B0: 75 65 22 3A 22 4D 69 73 73 69 6E 67 20 72 65 71 | ue":"Missing req |

01C0: 75 69 72 65 64 20 61 74 74 72 69 62 75 74 65 20 | uired attribute |

01D0: 74 79 70 65 20 75 52 47 65 4A 38 34 4C 4B 62 35 | type uRGeJ84LKb5 |

01E0: 22 7D 2C 7B 22 6F 62 6A 65 63 74 22 3A 22 41 74 | "},{“object”:"At |

01F0: 74 72 69 62 75 74 65 2E 74 79 70 65 22 2C 22 76 | tribute.type","v |

0200: 61 6C 75 65 22 3A 22 49 6E 76 61 6C 69 64 20 74 | alue":"Invalid t |

0210: 79 70 65 20 6E 75 6C 6C 22 7D 2C 7B 22 6F 62 6A | ype null"},{"obj |

0220: 65 63 74 22 3A 22 41 74 74 72 69 62 75 74 65 2E | ect":"Attribute. |

0230: 74 79 70 65 22 2C 22 76 61 6C 75 65 22 3A 22 49 | type",“value”:"I |

0240: 6E 76 61 6C 69 64 20 74 79 70 65 20 6E 75 6C 6C | nvalid type null |

0250: 22 7D 2C 7B 22 6F 62 6A 65 63 74 22 3A 22 41 74 | "},{“object”:"At |

0260: 74 72 69 62 75 74 65 2E 74 79 70 65 22 2C 22 76 | tribute.type","v |

0270: 61 6C 75 65 22 3A 22 49 6E 76 61 6C 69 64 20 74 | alue":"Invalid t |

0280: 79 70 65 20 6E 75 6C 6C 22 7D 5D 7D | ype null"}]} |

However!

When I make the identifiers and attributes non-mandatory i get the following error message:

0000: 7B 22 73 74 61 74 75 73 22 3A 22 45 52 52 4F 52 | {“status”:"ERROR |

0010: 22 2C 22 69 6D 70 6F 72 74 43 6F 75 6E 74 22 3A | ",“importCount”: |

0020: 7B 22 69 6D 70 6F 72 74 65 64 22 3A 30 2C 22 75 | {“imported”:0,"u |

0030: 70 64 61 74 65 64 22 3A 30 2C 22 69 67 6E 6F 72 | pdated":0,"ignor |

0040: 65 64 22 3A 31 2C 22 64 65 6C 65 74 65 64 22 3A | ed":1,“deleted”: |

0050: 30 7D 2C 22 63 6F 6E 66 6C 69 63 74 73 22 3A 5B | 0},“conflicts”:[ |

0060: 7B 22 6F 62 6A 65 63 74 22 3A 22 49 64 65 6E 74 | {“object”:"Ident |

0070: 69 66 69 65 72 2E 74 79 70 65 22 2C 22 76 61 6C | ifier.type","val |

0080: 75 65 22 3A 22 49 6E 76 61 6C 69 64 20 74 79 70 | ue":"Invalid typ |

0090: 65 20 6E 75 6C 6C 22 7D 2C 7B 22 6F 62 6A 65 63 | e null"},{"objec |

00A0: 74 22 3A 22 41 74 74 72 69 62 75 74 65 2E 74 79 | t":"Attribute.ty |

00B0: 70 65 22 2C 22 76 61 6C 75 65 22 3A 22 49 6E 76 | pe",“value”:"Inv |

00C0: 61 6C 69 64 20 74 79 70 65 20 6E 75 6C 6C 22 7D | alid type null"} |

00D0: 2C 7B 22 6F 62 6A 65 63 74 22 3A 22 41 74 74 72 | ,{“object”:"Attr |

00E0: 69 62 75 74 65 2E 74 79 70 65 22 2C 22 76 61 6C | ibute.type","val |

00F0: 75 65 22 3A 22 49 6E 76 61 6C 69 64 20 74 79 70 | ue":"Invalid typ |

0100: 65 20 6E 75 6C 6C 22 7D 2C 7B 22 6F 62 6A 65 63 | e null"},{"objec |

0110: 74 22 3A 22 41 74 74 72 69 62 75 74 65 2E 74 79 | t":"Attribute.ty |

0120: 70 65 22 2C 22 76 61 6C 75 65 22 3A 22 49 6E 76 | pe",“value”:"Inv |

0130: 61 6C 69 64 20 74 79 70 65 20 6E 75 6C 6C 22 7D | alid type null"} |

0140: 5D 7D | ]} |

and here is what I see in the server log:

  • INFO 2014-02-24 16:10:59,424 Login success for user: ‘admin’, ip: ‘105.236.172.122’ (DefaultUserAuditService.java [http-bio-8080-exec-3])
  • INFO 2014-02-24 16:14:13,904 ‘admin’ update org.hisp.dhis.patient.PatientIdentifierType, name: NationalId, uid: zEhQmZeoRN9 (AuditLogUtil.java [http-bio-8080-exec-2])
  • INFO 2014-02-24 16:14:18,393 Login success for user: ‘admin’, ip: ‘105.236.172.122’ (DefaultUserAuditService.java [http-bio-8080-exec-10])
  • INFO 2014-02-24 16:14:48,666 ‘admin’ update org.hisp.dhis.patient.PatientAttribute, name: DOB, uid: T7pwpMdaVVa (AuditLogUtil.java [http-bio-8080-exec-2])
  • INFO 2014-02-24 16:14:56,789 ‘admin’ update org.hisp.dhis.patient.PatientAttribute, name: DueDate, uid: PGtWVaM3uXz (AuditLogUtil.java [http-bio-8080-exec-6])
  • INFO 2014-02-24 16:15:02,793 ‘admin’ update org.hisp.dhis.patient.PatientAttribute, name: name, uid: uRGeJ84LKb5 (AuditLogUtil.java [http-bio-8080-exec-5])
  • INFO 2014-02-24 16:15:08,022 Login success for user: ‘admin’, ip: ‘105.236.172.122’ (DefaultUserAuditService.java [http-bio-8080-exec-10])

Database:

patientattributeid | uid | code | created | lastupdated | name | description | valuetype | mandatory | groupby | patientattributegroupid | inherit | expression | displayonvisitschedule | sortorderinvisitschedule | displayinlistnoprogram | patientmobilesettingid | sort_order_patientattributename | sort_order

--------------------±------------±-----±------------------------±------------------------±--------±--------------±----------±----------±--------±------------------------±--------±-----------±-----------------------±-------------------------±-----------------------±-----------------------±--------------------------------±-----------

51 | T7pwpMdaVVa | | 2014-02-19 12:48:19.397 | 2014-02-19 13:16:29.982 | DOB | Date of Birth | date | t | f | 67 | f | | f | | f | | | 1

58 | PGtWVaM3uXz | | 2014-02-19 13:19:32.361 | 2014-02-19 13:19:32.361 | DueDate | DueDate | date | t | f | 67 | t | | f | | f | | | 2

76 | uRGeJ84LKb5 | | 2014-02-20 12:20:57.464 | 2014-02-20 12:20:57.464 | name | name | string | t | f | | f | | f | | f | | |

(3 rows)

patientidentifierid | uid | code | created | lastupdated | patientidentifiertypeid | patientid | identifier

---------------------±------------±-----±------------------------±------------------------±------------------------±----------±-----------------------

64 | wNaKiFhjrdt | | 2014-02-19 13:36:18.351 | 2014-02-19 13:36:18.351 | 55 | 63 | 1234567

66 | u1nTxgr7AKk | | 2014-02-19 13:36:38.701 | 2014-02-19 13:36:38.701 | 55 | 65 | weofdhweiewewwewwwwewe

patientidentifiertypeid | uid | code | created | lastupdated | name | description | mandatory | related | nochars | type | orgunitscope | programscope | periodtypeid | displayinlistnoprogram

-------------------------±------------±-----±------------------------±------------------------±-----------±------------±----------±--------±--------±-------±-------------±-------------±-------------±-----------------------

55 | zEhQmZeoRN9 | | 2014-02-19 12:50:22.243 | 2014-02-19 12:50:22.243 | NationalId | National ID | t | f | | string | f | f | | f

(1 row)

Thanks

On 24 Feb 2014, at 1:41 PM, Pascal Brandt pascal@jembi.org wrote:

Hi,

At the moment we’re testing rev 13788 to make sure our use case works.

Basically, all we need to be able to do is create a person via the API and set values for some attributes that we will have created in the system beforehand.

This should be possible, right?

We will provide some feedback after our test.

Cheers,

Pascal

On 24 February 2014 13:04, Morten Olav Hansen mortenoh@gmail.com wrote:

Is this regarding the update of persons, or is it related to something else?


*Pascal Brandt
Senio**r Software Developer, Jembi Health Systems | SOUTH AFRICA

Mobile: +27 84 827 9342 | Office: +27 21 701 0939 | Skype: psbrandt

E-mail: pascal@jembi.org*


Morten

On Mon, Feb 24, 2014 at 5:02 PM, Pascal Brandt pascal@jembi.org wrote:

Hi,

Does rev 13788 still not give us what we need? What’s the current limitation?

Let’s start the discussion here and see if anyone on the dev list has a similar requirement.

Cheers,

Pascal

On 24 February 2014 11:57, Pierre Dane pierre@jembi.org wrote:

Hi Lars,

Would it be possible to have a chat about the current state of the patient tracker API and data model so that we can get an idea of how much work would be involved to get the functionality we need for the Maternal Health Initiative (National Pregnancy Register) released. Ferdi said I should get in touch with you regarding any java development work that needed doing. If it’s looking like it’s going to take more than a week or so of your time then we may have to fall back to using just the dataset api to record indicators.

Please let me know if you have a gap for a Skype/telephone call.

Many thanks and kind regards,

Pierre Dane.

*Pascal Brandt

Senio**r Software Developer, Jembi Health Systems | SOUTH AFRICA

Mobile: +27 84 827 9342 | Office: +27 21 701 0939 | Skype: psbrandt

E-mail: pascal@jembi.org*

As an example, you can send the attached json file to our demo server (running 2.14)

curl -H “Content-Type: application/json” -X PUT -u admin:district -d @p.json http://apps.dhis2.org/demo/api/persons/iHhCKKXHQv6.json

p.json (1.24 KB)

···


Morten

On Tue, Feb 25, 2014 at 9:11 AM, Morten Olav Hansen mortenoh@gmail.com wrote:

Hi,

I have made some small changes in rev 13791 which I hope can help (issues related to system identifier).

I think what you should do, is this:

  1. Enter Individual Records, and Find/Add Person
  1. Create a new person on Sierra Leone (or whatever your test db uses)
  1. Find the UID of the OU by using /api/organisationUnits/query/sierr (in my case)
  1. Then go /api/persons.json?orgUnit=UID
  1. On that list, you will find your newly created person
  1. Now take the uid from the person, and go to /api/persons/UID.json
  1. The format from the last query, you should be able to send back to the server… e.g. by using cURL:

curl -u username:password -H “Content-Type: application/json” -d @filename.json http://server/api/persons/UID


Morten

On Mon, Feb 24, 2014 at 9:18 PM, Pierre Dane pierre@jembi.org wrote:

Hi Morten,

Thanks for committing that code but it hasn’t solved the problem.

I’ve built and released the new code and I’m getting the same error:

Message:

{

“orgUnit”: “C33j9neHDGt”,

“identifiers”: [ {

“type”: “zEhQmZeoRN9”,

“value”: “7373736543376”

} ],

“attributes”: [ {

“type”: “uRGeJ84LKb5”,

“value”: “pierretest”

},{

“type”: “PGtWVaM3uXz”,

“value”: “2010-02-02”

},{

“type”: “T7pwpMdaVVa”,

“value”: “1974-02-03”

}

]

}

0000: 7B 22 73 74 61 74 75 73 22 3A 22 45 52 52 4F 52 | {“status”:"ERROR |

0010: 22 2C 22 69 6D 70 6F 72 74 43 6F 75 6E 74 22 3A | ",“importCount”: |

0020: 7B 22 69 6D 70 6F 72 74 65 64 22 3A 30 2C 22 75 | {“imported”:0,"u |

0030: 70 64 61 74 65 64 22 3A 30 2C 22 69 67 6E 6F 72 | pdated":0,"ignor |

0040: 65 64 22 3A 31 2C 22 64 65 6C 65 74 65 64 22 3A | ed":1,“deleted”: |

0050: 30 7D 2C 22 63 6F 6E 66 6C 69 63 74 73 22 3A 5B | 0},“conflicts”:[ |

0060: 7B 22 6F 62 6A 65 63 74 22 3A 22 49 64 65 6E 74 | {“object”:"Ident |

0070: 69 66 69 65 72 2E 74 79 70 65 22 2C 22 76 61 6C | ifier.type","val |

0080: 75 65 22 3A 22 4D 69 73 73 69 6E 67 20 72 65 71 | ue":"Missing req |

0090: 75 69 72 65 64 20 69 64 65 6E 74 69 66 69 65 72 | uired identifier |

00A0: 20 74 79 70 65 20 7A 45 68 51 6D 5A 65 6F 52 4E | type zEhQmZeoRN |

00B0: 39 22 7D 2C 7B 22 6F 62 6A 65 63 74 22 3A 22 49 | 9"},{“object”:"I |

00C0: 64 65 6E 74 69 66 69 65 72 2E 74 79 70 65 22 2C | dentifier.type", |

00D0: 22 76 61 6C 75 65 22 3A 22 49 6E 76 61 6C 69 64 | “value”:"Invalid |

00E0: 20 74 79 70 65 20 6E 75 6C 6C 22 7D 2C 7B 22 6F | type null"},{"o |

00F0: 62 6A 65 63 74 22 3A 22 41 74 74 72 69 62 75 74 | bject":"Attribut |

0100: 65 2E 74 79 70 65 22 2C 22 76 61 6C 75 65 22 3A | e.type",“value”: |

0110: 22 4D 69 73 73 69 6E 67 20 72 65 71 75 69 72 65 | "Missing require |

0120: 64 20 61 74 74 72 69 62 75 74 65 20 74 79 70 65 | d attribute type |

0130: 20 54 37 70 77 70 4D 64 61 56 56 61 22 7D 2C 7B | T7pwpMdaVVa"},{ |

0140: 22 6F 62 6A 65 63 74 22 3A 22 41 74 74 72 69 62 | “object”:"Attrib |

0150: 75 74 65 2E 74 79 70 65 22 2C 22 76 61 6C 75 65 | ute.type","value |

0160: 22 3A 22 4D 69 73 73 69 6E 67 20 72 65 71 75 69 | ":"Missing requi |

0170: 72 65 64 20 61 74 74 72 69 62 75 74 65 20 74 79 | red attribute ty |

0180: 70 65 20 50 47 74 57 56 61 4D 33 75 58 7A 22 7D | pe PGtWVaM3uXz"} |

0190: 2C 7B 22 6F 62 6A 65 63 74 22 3A 22 41 74 74 72 | ,{“object”:"Attr |

01A0: 69 62 75 74 65 2E 74 79 70 65 22 2C 22 76 61 6C | ibute.type","val |

01B0: 75 65 22 3A 22 4D 69 73 73 69 6E 67 20 72 65 71 | ue":"Missing req |

01C0: 75 69 72 65 64 20 61 74 74 72 69 62 75 74 65 20 | uired attribute |

01D0: 74 79 70 65 20 75 52 47 65 4A 38 34 4C 4B 62 35 | type uRGeJ84LKb5 |

01E0: 22 7D 2C 7B 22 6F 62 6A 65 63 74 22 3A 22 41 74 | "},{“object”:"At |

01F0: 74 72 69 62 75 74 65 2E 74 79 70 65 22 2C 22 76 | tribute.type","v |

0200: 61 6C 75 65 22 3A 22 49 6E 76 61 6C 69 64 20 74 | alue":"Invalid t |

0210: 79 70 65 20 6E 75 6C 6C 22 7D 2C 7B 22 6F 62 6A | ype null"},{"obj |

0220: 65 63 74 22 3A 22 41 74 74 72 69 62 75 74 65 2E | ect":"Attribute. |

0230: 74 79 70 65 22 2C 22 76 61 6C 75 65 22 3A 22 49 | type",“value”:"I |

0240: 6E 76 61 6C 69 64 20 74 79 70 65 20 6E 75 6C 6C | nvalid type null |

0250: 22 7D 2C 7B 22 6F 62 6A 65 63 74 22 3A 22 41 74 | "},{“object”:"At |

0260: 74 72 69 62 75 74 65 2E 74 79 70 65 22 2C 22 76 | tribute.type","v |

0270: 61 6C 75 65 22 3A 22 49 6E 76 61 6C 69 64 20 74 | alue":"Invalid t |

0280: 79 70 65 20 6E 75 6C 6C 22 7D 5D 7D | ype null"}]} |

However!

When I make the identifiers and attributes non-mandatory i get the following error message:

0000: 7B 22 73 74 61 74 75 73 22 3A 22 45 52 52 4F 52 | {“status”:"ERROR |

0010: 22 2C 22 69 6D 70 6F 72 74 43 6F 75 6E 74 22 3A | ",“importCount”: |

0020: 7B 22 69 6D 70 6F 72 74 65 64 22 3A 30 2C 22 75 | {“imported”:0,"u |

0030: 70 64 61 74 65 64 22 3A 30 2C 22 69 67 6E 6F 72 | pdated":0,"ignor |

0040: 65 64 22 3A 31 2C 22 64 65 6C 65 74 65 64 22 3A | ed":1,“deleted”: |

0050: 30 7D 2C 22 63 6F 6E 66 6C 69 63 74 73 22 3A 5B | 0},“conflicts”:[ |

0060: 7B 22 6F 62 6A 65 63 74 22 3A 22 49 64 65 6E 74 | {“object”:"Ident |

0070: 69 66 69 65 72 2E 74 79 70 65 22 2C 22 76 61 6C | ifier.type","val |

0080: 75 65 22 3A 22 49 6E 76 61 6C 69 64 20 74 79 70 | ue":"Invalid typ |

0090: 65 20 6E 75 6C 6C 22 7D 2C 7B 22 6F 62 6A 65 63 | e null"},{"objec |

00A0: 74 22 3A 22 41 74 74 72 69 62 75 74 65 2E 74 79 | t":"Attribute.ty |

00B0: 70 65 22 2C 22 76 61 6C 75 65 22 3A 22 49 6E 76 | pe",“value”:"Inv |

00C0: 61 6C 69 64 20 74 79 70 65 20 6E 75 6C 6C 22 7D | alid type null"} |

00D0: 2C 7B 22 6F 62 6A 65 63 74 22 3A 22 41 74 74 72 | ,{“object”:"Attr |

00E0: 69 62 75 74 65 2E 74 79 70 65 22 2C 22 76 61 6C | ibute.type","val |

00F0: 75 65 22 3A 22 49 6E 76 61 6C 69 64 20 74 79 70 | ue":"Invalid typ |

0100: 65 20 6E 75 6C 6C 22 7D 2C 7B 22 6F 62 6A 65 63 | e null"},{"objec |

0110: 74 22 3A 22 41 74 74 72 69 62 75 74 65 2E 74 79 | t":"Attribute.ty |

0120: 70 65 22 2C 22 76 61 6C 75 65 22 3A 22 49 6E 76 | pe",“value”:"Inv |

0130: 61 6C 69 64 20 74 79 70 65 20 6E 75 6C 6C 22 7D | alid type null"} |

0140: 5D 7D | ]} |

and here is what I see in the server log:

  • INFO 2014-02-24 16:10:59,424 Login success for user: ‘admin’, ip: ‘105.236.172.122’ (DefaultUserAuditService.java [http-bio-8080-exec-3])
  • INFO 2014-02-24 16:14:13,904 ‘admin’ update org.hisp.dhis.patient.PatientIdentifierType, name: NationalId, uid: zEhQmZeoRN9 (AuditLogUtil.java [http-bio-8080-exec-2])
  • INFO 2014-02-24 16:14:18,393 Login success for user: ‘admin’, ip: ‘105.236.172.122’ (DefaultUserAuditService.java [http-bio-8080-exec-10])
  • INFO 2014-02-24 16:14:48,666 ‘admin’ update org.hisp.dhis.patient.PatientAttribute, name: DOB, uid: T7pwpMdaVVa (AuditLogUtil.java [http-bio-8080-exec-2])
  • INFO 2014-02-24 16:14:56,789 ‘admin’ update org.hisp.dhis.patient.PatientAttribute, name: DueDate, uid: PGtWVaM3uXz (AuditLogUtil.java [http-bio-8080-exec-6])
  • INFO 2014-02-24 16:15:02,793 ‘admin’ update org.hisp.dhis.patient.PatientAttribute, name: name, uid: uRGeJ84LKb5 (AuditLogUtil.java [http-bio-8080-exec-5])
  • INFO 2014-02-24 16:15:08,022 Login success for user: ‘admin’, ip: ‘105.236.172.122’ (DefaultUserAuditService.java [http-bio-8080-exec-10])

Database:

patientattributeid | uid | code | created | lastupdated | name | description | valuetype | mandatory | groupby | patientattributegroupid | inherit | expression | displayonvisitschedule | sortorderinvisitschedule | displayinlistnoprogram | patientmobilesettingid | sort_order_patientattributename | sort_order

--------------------±------------±-----±------------------------±------------------------±--------±--------------±----------±----------±--------±------------------------±--------±-----------±-----------------------±-------------------------±-----------------------±-----------------------±--------------------------------±-----------

51 | T7pwpMdaVVa | | 2014-02-19 12:48:19.397 | 2014-02-19 13:16:29.982 | DOB | Date of Birth | date | t | f | 67 | f | | f | | f | | | 1

58 | PGtWVaM3uXz | | 2014-02-19 13:19:32.361 | 2014-02-19 13:19:32.361 | DueDate | DueDate | date | t | f | 67 | t | | f | | f | | | 2

76 | uRGeJ84LKb5 | | 2014-02-20 12:20:57.464 | 2014-02-20 12:20:57.464 | name | name | string | t | f | | f | | f | | f | | |

(3 rows)

patientidentifierid | uid | code | created | lastupdated | patientidentifiertypeid | patientid | identifier

---------------------±------------±-----±------------------------±------------------------±------------------------±----------±-----------------------

64 | wNaKiFhjrdt | | 2014-02-19 13:36:18.351 | 2014-02-19 13:36:18.351 | 55 | 63 | 1234567

66 | u1nTxgr7AKk | | 2014-02-19 13:36:38.701 | 2014-02-19 13:36:38.701 | 55 | 65 | weofdhweiewewwewwwwewe

patientidentifiertypeid | uid | code | created | lastupdated | name | description | mandatory | related | nochars | type | orgunitscope | programscope | periodtypeid | displayinlistnoprogram

-------------------------±------------±-----±------------------------±------------------------±-----------±------------±----------±--------±--------±-------±-------------±-------------±-------------±-----------------------

55 | zEhQmZeoRN9 | | 2014-02-19 12:50:22.243 | 2014-02-19 12:50:22.243 | NationalId | National ID | t | f | | string | f | f | | f

(1 row)

Thanks

On 24 Feb 2014, at 1:41 PM, Pascal Brandt pascal@jembi.org wrote:

Hi,

At the moment we’re testing rev 13788 to make sure our use case works.

Basically, all we need to be able to do is create a person via the API and set values for some attributes that we will have created in the system beforehand.

This should be possible, right?

We will provide some feedback after our test.

Cheers,

Pascal

On 24 February 2014 13:04, Morten Olav Hansen mortenoh@gmail.com wrote:

Is this regarding the update of persons, or is it related to something else?


*Pascal Brandt
Senio**r Software Developer, Jembi Health Systems | SOUTH AFRICA

Mobile: +27 84 827 9342 | Office: +27 21 701 0939 | Skype: psbrandt

E-mail: pascal@jembi.org*


Morten

On Mon, Feb 24, 2014 at 5:02 PM, Pascal Brandt pascal@jembi.org wrote:

Hi,

Does rev 13788 still not give us what we need? What’s the current limitation?

Let’s start the discussion here and see if anyone on the dev list has a similar requirement.

Cheers,

Pascal

On 24 February 2014 11:57, Pierre Dane pierre@jembi.org wrote:

Hi Lars,

Would it be possible to have a chat about the current state of the patient tracker API and data model so that we can get an idea of how much work would be involved to get the functionality we need for the Maternal Health Initiative (National Pregnancy Register) released. Ferdi said I should get in touch with you regarding any java development work that needed doing. If it’s looking like it’s going to take more than a week or so of your time then we may have to fall back to using just the dataset api to record indicators.

Please let me know if you have a gap for a Skype/telephone call.

Many thanks and kind regards,

Pierre Dane.

*Pascal Brandt

Senio**r Software Developer, Jembi Health Systems | SOUTH AFRICA

Mobile: +27 84 827 9342 | Office: +27 21 701 0939 | Skype: psbrandt

E-mail: pascal@jembi.org*