This is an old revision of the document!
Table of Contents
Praxisd
Pracro must connect to praxisd in order to:
- Upload journal data.
- Retrieve journal data.
- Get cave list.
- Post cave information to a patient.
- Get cave information from a patient.
Future uses include:
- Calendar extracts for macro prefills.
libpraxisd
The praxisd interface library. Using curl. interface:
struct { char *data; size_t size; } journal_t; journal_t *getJournal(const char *patientid); void freeJournal(journal_t *journal);
API
GET
Get Journal By CPR
/praxisd/1.0/journal/get_by_cpr
Parameters:
- cpr the cpr number of the patient
Returns the journal plaintext in utf-8
Get Patient By CPR
/praxisd/1.0/patient/get_by_cpr
Parameters:
- cpr the cpr number of the patient
Returns xml structure with patient data.
XML fields:
Example: curl localhost:10000/praxisd/1.0/patient/get_by_cpr?cpr=nnnnnnnnnn
<?xml version="1.0" encoding="UTF-8"?> <praxisd version="1.0"> <patient cpr="nnnnnnnnnn"> <efternavn>XXXXXXXXXX</efternavn> <fornavne>XXXXXXXXXX</fornavne> <stilling></stilling> <gade></gade> <by>0</by> <telefonnumre></telefonnumre> <sikringsgr>9</sikringsgr> <amtsnr>070</amtsnr> <sygekontor>KNr. 0</sygekontor> <henvnr></henvnr> <frilinie1>0000097217</frilinie1> <frilinie2></frilinie2> <frilinie3></frilinie3> <frilinie4></frilinie4> <frilinie5></frilinie5> <sogeords> <sogeord sogenr="T:0028" sogedato="261109"> </sogeord> <sogeord sogenr="T:0029" sogedato="261109"> </sogeord> <sogeord sogenr="BL0014" sogedato="010710"> o.dxt</sogeord> <sogeord sogenr="BCGB00" sogedato="010710"> o.sin</sogeord> <sogeord sogenr="BCGB00" sogedato="010710"> o.dxt</sogeord> <sogeord sogenr="BL0001" sogedato="010710"> </sogeord> <sogeord sogenr="BL0001" sogedato="010710"> o.dxt</sogeord> <sogeord sogenr="BL0021" sogedato="061210"> o.u </sogeord> </sogeords> <ydernr> </ydernr> <created>201000</created> <donottouch> </donottouch> <visus> </visus> <labkort> </labkort> <medkort>*</medkort> <jlock> </jlock> <unknown1>130509</unknown1> <henvdato> </henvdato> <aarhund>19</aarhund> <fakturadato> </fakturadato> <fakturabelob> </fakturabelob> <betaldato> </betaldato> <betalbelob> </betalbelob> <jdato>230311</jdato> <unknown250> </unknown250> <unknown251> </unknown251> <jtime> </jtime> </patient> </praxisd>
Get Diverse From Sogenr
/praxisd/1.0/diverse/get_all_by_sogenr
Get list of matching sogenr entries. Parameters:
- sogenr the sogenr prefix to match in the search.
Returns xml structure with matching diverse entries
Prefix 'A' adresse:
<?xml version="1.0" encoding="UTF-8"?> <praxisd version="1.0"> <div_adresse sogenr="Annnn"> <edi_adresse></edi_adresse> <navn>XXXXXX</navn> <att></att> <gade>XXXXXXX</gade> <by>XXXXXXXXX</by> <tlf>nnnnnnnn</tlf> <fax>nnnnnnnn</fax> </div_adresse> . . . </praxisd>
Prefix 'B' behandling:
<?xml version="1.0" encoding="UTF-8"?> <praxisd version="1.0"> <div_behandling sogenr="Bnnnnn"> <kode>XXXXX</kode> <behandling>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</behandling> <bemaerkning></bemaerkning> <udregning></udregning> </div_behandling> . . . </praxisd>
Prefix 'C' cave:
<?xml version="1.0" encoding="UTF-8"?> <praxisd version="1.0"> <div_cave sogenr="Cnnnnn"> <cave>AZOPT</cave> <bemaerkning1></bemaerkning1> <bemaerkning2></bemaerkning2> <bemaerkning3></bemaerkning3> </div_cave> . . . </praxisd>
Prefix 'D' diagnose:
<?xml version="1.0" encoding="UTF-8"?> <praxisd version="1.0"> <div_diagnose sogenr="Dnnnnn"> <kode>H</kode> <diagnose>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</diagnose> <bemaerkning></bemaerkning> </div_diagnose> . . . </praxisd>
Prefix 'E' ??????
Prefix 'F' frase:
<?xml version="1.0" encoding="UTF-8"?> <praxisd version="1.0"> <div_frase sogenr="Fnnnnn"> <frase1>Shaffer</frase1> <frase2></frase2> <frase3></frase3> <frase4></frase4> </div_frase> . . . </praxisd>
Prefix 'G' grafik:
<?xml version="1.0" encoding="UTF-8"?> <praxisd version="1.0"> <div_grafik sogenr="Gnnnnn"> <navn>ENO s1</navn> <bemaerkning>Har du set strudsen ENO ?</bemaerkning> </div_grafik> . . . </praxisd>
Prefix 'H' ??????
Prefix 'I' indholdsstof:
<?xml version="1.0" encoding="UTF-8"?> <praxisd version="1.0"> <div_indholdsstof sogenr="Innnn"> <indholdsstof>XXXXXXX</indholdsstof> <form1></form1> <form2></form2> <form3></form3> <form4></form4> </div_indholdsstof> . . . </praxisd>
Prefix 'K' klage:
<?xml version="1.0" encoding="UTF-8"?> <praxisd version="1.0"> <div_klage sogenr="Knnnnnn"> <kode></kode> <klage>XXXXXXXXXXXXXXXX</klage> <bemaerkning></bemaerkning> </div_klage> . . . </praxisd>
Prefix 'L' ??????
Prefix 'M' ??????
Prefix 'N' ??????
Prefix 'O' oversigt:
<?xml version="1.0" encoding="UTF-8"?> <praxisd version="1.0"> <div_oversigt sogenr="Onnnnn"> <navn>XXXXXXXX</navn> <bemaerkning>XXXXXXXXXXXXXXXXX</bemaerkning> </div_oversigt> . . . </praxisd>
Prefix 'P' postnummer:
<?xml version="1.0" encoding="UTF-8"?> <praxisd version="1.0"> <div_postnummer sogenr="Pnnnnn"> <postnummer>nnnn</postnummer> <by_gade>XXXXX</by_gade> <kbh>XXXXXXX</kbh> <amtsnr>nnn</amtsnr> <kommunenr>nnn</kommunenr> <regionnavn></regionnavn> <kommunenavn></kommunenavn> </div_postnummer> . . . </praxisd>
Prefix 'R' ??????
Prefix 'T' type:
<?xml version="1.0" encoding="UTF-8"?> <praxisd version="1.0"> <div_type sogenr="Tnnnnnn"> <type>XXXXXXXXXXX</type> <bemaerkning1></bemaerkning1> <bemaerkning2></bemaerkning2> <bemaerkning3></bemaerkning3> <recept></recept> </div_type> . . . </praxisd>
Prefix 'U' undersoegelse:
<?xml version="1.0" encoding="UTF-8"?> <praxisd version="1.0"> <div_undersoegelse sogenr="Unnnnn"> <kode></kode> <undersoegelse>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</undersoegelse> <bemaerkning></bemaerkning> <udregning></udregning> </div_undersoegelse> . . . </praxisd>
Prefix 'V' ??????
Prefix 'W' ??????
Prefix 'Y' ydelse:
<?xml version="1.0" encoding="UTF-8"?> <praxisd version="1.0"> <div_ydelse sogenr="Ynnnnn"> <nr></nr> <navn></navn> <gr1>0.000000</gr1> <gr2>0.000000</gr2> <privat>0</privat> <journal1></journal1> <journal2></journal2> <moms></moms> </div_ydelse> . . . </praxisd>
Get Aftale All by Date and Calendar
/praxisd/1.0/aftale/get_all_by_date_and_calendar
Parameters:
- calendar The calendar number to show [1-N].
- year the year to show.
- month the month to show.
- day the day to show.
Returns xml structure with matching calendar entries
<?xml version="1.0" encoding="UTF-8"?> <praxisd version="1.0"> <aftale date="2011-03-16 01:00:00" calendar="17"> <cpr>nnnnnnnnnnn</cpr> <cref></cref> <cmrk>X</cmrk> <ctxt>XXXXXXXXXXXXXXXXXX</ctxt> <cres></cres> </aftale> . . . </praxisd>
Get Aftale All by CPR
/praxisd/1.0/aftale/get_all_by_cpr
Parameters:
- cpr the patient to make calendar lookups for.
Returns xml structure with matching calendar entries
<?xml version="1.0" encoding="UTF-8"?> <praxisd version="1.0"> <aftale date="2011-04-07 13:50:00" calendar="12"> <cpr>nnnnnnnnnn</cpr> <cref>msh</cref> <cmrk>x</cmrk> <ctxt>XXXXXXXXXXXXXXXXXXXXXXX</ctxt> <cres>EL</cres> </aftale> . . . </praxisd>
Authenticate
/praxisd/1.0/user/authenticate
Validate a username and password against the pcpraxis user db. NOTE: this is not needed in order to communicate with the server. Not event PUTs. Parameters:
- user the username
- pass the password
Returns http errorcode 401 (unauthorized) if not successful 200 (OK) otherwise.
Get Name by UserID
/praxisd/1.0/user/get_name_by_id
Parameters:
- user the username to look up.
Returns the plaintext utf-8 name connected with the userid.
Get All Docmenu by CPR
/praxisd/1.0/dokmenu/get_all_by_cpr
Shows the complete docmenu for a given patient id. Parameters:
- cpr the patient id.
Returns xml structure with docmenu entries
<?xml version="1.0" encoding="UTF-8"?> <praxisd version="1.0"> <dokmenu cpr="nnnnnnnnn"> <group>XXXXXXXXXXXX</group> <subject>XXXXXXXXXXXXXXXXXXXXXX</subject> <filename filesize="1371" date="2010-05-05 09:25:10">XXXXXXXX</filename> </dokmenu> . . . </praxisd>
Get Docmenu by Name and CPR
/praxisd/1.0/dokmenu/get_by_cpr_and_name
Fetch contents of a file in the docmenu by using its filename. Parameters:
- cpr the patient id.
- name the name of the file to be fetched.
Returns the raw unformatted contents of the file.
POST
Add To Journal
/praxisd/1.0/journal/add
Add text to the journal.
<praxisd version="1.0"> <journal cpr="1505050505" [replace="true|false"] [header="true|false"]>Text to add properly formatted</journal> </praxisd>
Update Patient
/* /praxisd/1.0/patient/update */
Not yet implemented.
Add Sogeord to Patient
/praxisd/1.0/patient/add_sogeord
<praxisd version="1.0"> <addsogeord cpr="nnnnnnnnnn"> <sogeord sogenr="XYZUVW" date="2009-08-17">sogtxt</sogeord> . . . </addsogeord> </praxisd>
Update Aftale
/praxisd/1.0/aftale/update
In the xml both the old and the new contents must be present in order for the server to be able to verify that no changes were made since the original was last fetched.
<praxisd version="1.0"> <aftale date="2009-08-17 11:12:00" calendar="1" original="true"> <cpr>nnnnnnnnnnn</cpr> <cref>Blabla!</cref> <cmrk>x</cmrk> <ctxt>Text and bla</ctxt> <cres>More bla</cres> </aftale> <aftale date="2009-09-20 10:10:00" calendar="2" [original="false"]> <cpr>nnnnnnnnnnn</cpr> <cref>Newbla!</cref> <cmrk>y</cmrk> <ctxt>New Text and bla</ctxt> <cres>New bla</cres> </aftale> </praxisd>
Add Aftale
/praxisd/1.0/aftale/add
<praxisd version="1.0"> <aftale date="2009-09-20 10:10:00" calendar="2"> <cpr>nnnnnnnnnn</cpr> <cref>Newbla!</cref> <cmrk>y</cmrk> <ctxt>New Text and bla</ctxt> <cres>New bla</cres> </aftale> </praxisd>
Delete Aftale
/praxisd/1.0/aftale/delete
Delete the matching calendar entry.
<praxisd version="1.0"> <aftale date="2009-09-20 10:10:00" calendar="2"/> </praxisd>
Add File to Docmenu
/praxisd/1.0/dokmenu/add
Upload file to docmenu.
<praxisd version="1.0"> <dokmenu cpr="1505050505"> <group>Group text bla</group> <subject>Subject text bla</subject> <file [name="88888888.333" | extension="333"] [date="YYYY-MM-DD HH:MM:SS] [base64="true|false"]>file content</file> </dokmenu> </praxisd>
Delete File from Docmenu
/praxisd/1.0/dokmenu/delete
Delete a file from the docmenu.
<praxisd version="1.0"> <dokmenu cpr="1505050505" name="filename.ext"/> </praxisd>