Iaso EHR Service Interface

Introduction

To get the thought juices flowing - here is the IEHR interface our product uses - it works ok for our specific use cases but obviously could be
fleshed out with other use cases. I am interested in other approaches people are taking.

Specifications

All interactions in the session have ACID properties

Iaso IEHR
    [ServiceContract(ProtectionLevel = ProtectionLevel.EncryptAndSign,
                        SessionMode=SessionMode.Required)]
    public interface IEHR
    {
        [OperationContract(IsInitiating=true)]
        void StartSession(string recordTargetRoot, string recordTargetExtension);

        [OperationContract(IsTerminating=true)]
        void EndSession();

        [OperationContract]
        void AddVersionedDocument(Message request);

        [OperationContract]
        Message GetVersionedDocument(string documentRoot, string documentExtension);

        [OperationContract]
        Message GetVersionedDocumentTransformed(string documentRoot, string documentExtension, string transformRoot, string transformExtension);

        [OperationContract]
        void Commit();
    }