David and Chris:
I have a similar issue. It is not clear to me that a sender MSH
can uniquely determine a delivery channel to be used to send to
a receiver without knowing the collaboration role played by the
receiver.
The structure of the CPP/A elements is such that a Party
may play multiple collaboration roles. For each such role,
there can be one or more prioritized service bindings. Each
service binding has a service element that essentially identifies
the service provided by the party in question. Each service
binding specifies a default delivery channel, along with zero
or more override elements. Each override element pertains
to a particular action and specifies the delivery channel for
that action.
If the sender knows the role played by the receiver, then it
is straightforward to determine the delivery channel that should
be used in order to send the message to the receiver. However,
there is no role element in the message header. If the Message
Service Interface is defined in such a way that the burden of
determining the delivery channel falls on the MSH, then I am
not sure if the MSH has sufficient information to determine
the delivery channel. The problem I see is that the service
name associated with a service binding is not necessarily
unique. Is it possible to have multiple roles played by the
same receiver with service bindings that share the same
service name? If so, it is not clear to me which corresponding
delivery channel should be used. For this discussion, let's assume
that none of the service bindings in the CPA have override elements.
Thus, it is not possible to use the Action element in the message
header to determine the delivery channel.
Regards,
-Arvola