User Tools

Site Tools


yamms:yamms

This is an old revision of the document!


YaMMS

Message Transport Procedure

Message IDs and logging

Message ids are based on date, time and a serial number counting from 0 padded with zeros up to precisely 5 characters. Example: 20110125125900001 for the second id (serial number 1) generated at 2011-01-25 12:59. This number is converted into hex (network order/big endian) generating a string of precisely 14 characters (max length in MedCom message field) All messages, both received and sent, are stored in a log folder with a hex[0-1]/hex[2-3] folder structure (first two chars and then second two chars) and with the message id as the file name. These files are used when generating new message ids in order to guarantee uniqueness (CREATE_EXCL).

Receiving

  • Message files drop into the inbox folder from ftp in regular intervals (ex. 10 minutes).
  • Each message file is parsed and receipts are put in the outbox.
  • Each message file is added to an index containing message metadata (ex. read/unread).
  • Bad messages (syntax errors, unknown types etc.) are marked as such.
  • Control messages are used to mark uploaded messages in the outbox-waiting-confirm folder.

Sending

  • Inotify on the outbox triggers the sending event.
  • Any newly written messages in the outbox is syntax checked and validated.
  • Errornous messages are stalled and a message is put in the inbox that the message could not be sent.
  • Validated messages are uploaded to the ftp server.
  • Each uploaded file is put in a outbox-waiting-confirm folder and marked as uploaded but not confirmed.
  • Each upload also makes a download.

Http protocol (client interface)

  • Get inbox contents (list of messages containing id, type and resume tupples)
  • Move message to [trash|archive|…]
  • (Delete message entirely?)
  • Send [hospitalreferral|…]
  • Mark message as [read|unread|handled|…]
  • Get address by id.
  • Edit address (by id).
  • Create address.
  • Delete address.

Internal Message Format

All internal messages are in UTF-8 encoding.
All address ids maps to address entries in database on server.

Read Format

Contains:

  • Message id
  • Sender address id
  • Receiver address id
  • Message title
  • Message status
  • Message times (sent/received/read etc)
  • Message body (server generated resume based on MedCom XML)
  • Original MedCom XML in base64.
 

Send Format

Contains:

  • Sender address id
  • Receiver address id
  • A list of required fields
yamms/yamms.1313572965.txt.gz · Last modified: 2011/08/17 11:22 by deva