Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: HDISVS03

HDISVS03.m

Go to the documentation of this file.
HDISVS03 ;BPFO/JRP - PROCESS RECEIVED XML DATA;1/6/2005 ; 08 Mar 2005  9:10 AM
 ;;1.0;HEALTH DATA & INFORMATICS;;Feb 22, 2005
STATUS(PRSARR,ERRARR) ;Process status update from VistA system
 ; Input : PRSARR - Array containing parsed XML document (closed root)
 ;                  This is the output of SAX^HDISVM01
 ;         ERRARR - Array to output errors in (closed root)
 ;Output : None
 ;         ERRARR(x) = Error text (if applicable)
 ; Notes : ERRARR is initialized (KILLed) on input
 ;
 ;Processing of all status updates disabled - throw error and quit
 I $$GETSDIS^HDISVF03() D  Q
 .N TMP
 .S TMP="STATUS^HDISVS03: Processing of status updates by central "
 .S TMP=TMP_"server is currently disabled"
 .D ADDERR^HDISVC00(TMP,ERRARR)
 N EINDX,ESUBS,AINDX,ASUBS,DATA,TMP,DATE,STATPTR,SRCTYPE,SYSPTR
 N SOURCE,MAILMAN,FILE,FIELD,STAT,STATDT,INDX,OOPS,CODE,CODEPTR
 S EINDX=$NA(@PRSARR@("EINDX"))
 S ESUBS=$NA(@PRSARR@("ESUBS"))
 S AINDX=$NA(@PRSARR@("AINDX"))
 S ASUBS=$NA(@PRSARR@("ASUBS"))
 S DATA=$NA(@PRSARR@("DATA"))
 S OOPS=0
 S ERRARR=$G(ERRARR)
 I ERRARR'="" K @ERRARR
 S PRSARR=$G(PRSARR)
 I PRSARR="" D  Q
 .S TMP="SATUS^HDISVS03: Input parameter PRSARR was not passed"
 .D ADDERR^HDISVC00(TMP,ERRARR)
 .S OOPS=1
 I '$D(@PRSARR) D  Q
 .S TMP="STATUS^HDISVS0S: Input array "_PRSARR_" (PRSARR) does not exist"
 .D ADDERR^HDISVC00(TMP,ERRARR)
 .S OOPS=1
 ;Ensure all elements are indexed
 F X=1:1 S TMP=$P($T(ELEMENTS+X),";;",2) Q:TMP=""  D
 .I '$D(@EINDX@(TMP)) D
 ..S TMP="XML element '"_TMP_"' was not found in the XML document"
 ..D ADDERR^HDISVC00(TMP,ERRARR)
 ..S OOPS=1
 ;Ensure that 'HDISParameters' is the root element
 I $G(@ESUBS@(1))'="HDISParameters" D
 .S TMP="'HDISParameters' was not the root element in the XML document"
 .D ADDERR^HDISVC00(TMP,ERRARR)
 .S OOPS=1
 ;Errors found - quit
 I OOPS Q
 ;Process 'HDISParameters' portion of XML doc
 S INDX=@EINDX@("HDISParameters")
 ;Get elements
 S SOURCE=$G(@DATA@(INDX,1,@EINDX@("Source"),1,"V"))
 S SRCTYPE=$G(@DATA@(INDX,1,@EINDX@("SourceType"),1,"V"))
 S MAILMAN=$G(@DATA@(INDX,1,@EINDX@("MailManDomain"),1,"V"))
 S FILE=$G(@DATA@(INDX,1,@EINDX@("FileNumber"),1,"V"))
 S FIELD=$G(@DATA@(INDX,1,@EINDX@("FieldNumber"),1,"V"))
 S STAT=$G(@DATA@(INDX,1,@EINDX@("StatusCode"),1,"V"))
 S STATDT=$G(@DATA@(INDX,1,@EINDX@("StatusDateTime"),1,"V"))
 ;Validate elements
 F TMP="SOURCE","MAILMAN","FILE","FIELD","STAT","STATDT","SRCTYPE" I $G(@TMP)="" D
 .S Y="Source"
 .I TMP="SRCTYPE" S Y="SourceType"
 .I TMP="MAILMAN" S Y="MailManDomain"
 .I TMP="FILE" S Y="FileNumber"
 .I TMP="FIELD" S Y="FieldNumber"
 .I TMP="STAT" S Y="StatusCode"
 .I TMP="STATDT" S Y="StatusDateTime"
 .S X="XML element '"_TMP_"' did not have a value"
 .D ADDERR^HDISVC00(X,ERRARR)
 .S OOPS=1
 ;Validate facility number
 I SOURCE'="" I '$$FACPTR^HDISVF01(SOURCE) D
 .S TMP="Value of XML element 'Source' ("_SOURCE
 .S TMP=TMP_") is not a valid facility number"
 .D ADDERR^HDISVC00(TMP,ERRARR)
 .S OOPS=1
 ;Get pointer to system
 I 'OOPS I '$$FINDSYS^HDISVF07(MAILMAN,SOURCE,SRCTYPE,1,.SYSPTR) D
 .S TMP="Entry for XML elements 'Source' ("_SOURCE_"), MailManDomain "
 .S TMP=TMP_"("_MAILMAN_"), and 'SourceType' ("_SRCTYPE_") could not "
 .S TMP="be found/created in HDIS SYSTEM file (#7718.21)"
 .D ADDERR^HDISVC00(TMP,ERRARR)
 .S OOPS=1
 ;Make sure entry in HDIS Parameter file exists for system
 I 'OOPS I '$$GETPTR^HDISVF10(SYSPTR) I '$$PARAMINI^HDISVF10(SYSPTR,"","","",1) D
 .S TMP="Entry for XML elements 'Source' ("_SOURCE_"), 'MailManDomain' "
 .S TMP=TMP_"("_MAILMAN_"), and 'SourceType' ("_SRCTYPE_") could not "
 .S TMP="be found/created in HDIS PARAMETER file (#7718.29)"
 .D ADDERR^HDISVC00(TMP,ERRARR)
 .S OOPS=1
 ;Processing of status updates from specific system disabled
 I 'OOPS I $$GETSDIS^HDISVF03(SYSPTR) D
 .S TMP="Processing of status udpates from 'Source' ("_SOURCE_"), "
 .S TMP=TMP_"'MailManDomain' ("_MAILMAN_"), and 'SourceType' ("
 .S TMP=TMP_SRCTYPE_") currently disabled"
 .D ADDERR^HDISVC00(TMP,ERRARR)
 .S OOPS=1
 ;Errors found - quit
 I OOPS Q
 ;Translate client's status code to a server status code
 ;  Server status codes currently mirror the client status codes
 S CODEPTR=0
 I STAT'="" I '$$GETIEN^HDISVF06(STAT,2,.CODEPTR) D
 .S TMP="Unable to convert value of 'StatusCode' ("_STAT
 .S TMP=TMP_") to it's server side equivalent"
 .D ADDERR^HDISVC00(TMP,ERRARR)
 .S OOPS=1
 .S CODEPTR=0
 I CODEPTR I '$$GETCODE^HDISVF06(CODEPTR,.CODE) D
 .S TMP="Unable to convert value of 'StatusCode' ("_STAT
 .S TMP=TMP_") to it's server side equivalent"
 .D ADDERR^HDISVC00(TMP,ERRARR)
 .S OOPS=1
 ;Convert status date/time to FileMan format
 I STATDT'="" S DATE=$$XMLTFM^HDISVU01(STATDT,1) I DATE="" D
 .S TMP="Unable to convert value of 'StatusDateTime' ("_STATDT
 .S TMP=TMP_") to FileMan format"
 .D ADDERR^HDISVC00(TMP,ERRARR)
 .S OOPS=1
 ;Errors found - quit
 I OOPS Q
 ;Store status
 D SETSTAT^HDISVF01(FILE,FIELD,CODE,DATE,2,SOURCE,MAILMAN,SRCTYPE)
 Q
 ;
ELEMENTS ;List of required elements in XML document
 ;;HDISParameters
 ;;Source
 ;;SourceType
 ;;MailManDomain
 ;;FileNumber
 ;;FieldNumber
 ;;StatusCode
 ;;StatusDateTime
 ;;