Class training.healthcare.service.SrvFilePerson Extends Ens.BusinessService
{
Parameter ADAPTER = "EnsLib.File.InboundAdapter";
Method OnProcessInput(pInput As %RegisteredObject,
pOutput As %RegisteredObject) As %Status
{
//file must be formatted as set of lines, each field comma separated:
//externalcode,
//name, surname, dateBirth, placeBirth, provinceBirth
//nationality, gender,
//address, city, province, country,
//fiscalCode
//note:
//fiscalCode may be optional
//sso is an internal code so must be detected inside InterSystems IRIS Interoperability
//operation must be detected as well:
//if the group: name, surname, dateBirth, placeBirth, provinceBirth
//point to a record then it's an UPDATE; if not it's a NEW
//no DELETE via files
Set $ZT="trap"
set counter=1 //records read
while 'pInput.AtEnd {
set line=pInput.ReadLine()
set req=##class(training.healthcare.message.MsgPerson).%New()
set req.source="FILE"
set req.externalCode=$piece(line,",",1)
set req.name=$piece(line,",",2)
set req.surname=$piece(line,",",3)
set req.dateBirth=$piece(line,",",4)
set req.placeBirth=$piece(line,",",5)
set req.provinceBirth=$piece(line,",",6)
set req.nationality=$piece(line,",",7)
set req.gender=$piece(line,",",8)
set req.address=$piece(line,",",9)
set req.city=$piece(line,",",10)
set req.province=$piece(line,",",11)
set req.country=$piece(line,",",12)
set req.fiscalCode=$piece(line,",",13)
//call the process
//res will be Ens.StringResponse type message
set st=..SendRequestAsync(
"training.healthcare.process.PrcPerson", req)
if 'st
$$$LOGERROR("Cannot call PrcMain Process for Person N°" _ counter)
set counter=counter+1
}
$$$LOGINFO("Persons loaded : " _ (counter - 1))
Set $ZT=""
Quit $$$OK
trap
$$$LOGERROR("Error loading for record N°" _ counter _ " - " _ $ZERROR)
SET $ECODE = ""
Set $ZT=""
Quit $$$OK
}
}