DGRRLU4 ;BPFO/MM RPCs for Division preferences - ;11/15/04  11:38
 ;;5.3;Registration;**538**;Aug 13, 1993
 ;
START(RESULT,PARAMS) ;Generates division/package preferences in xml format
 ;
 ;Called from DGRR PATIENT LKUP PREFERENCES remote procedure call
 ;
 ;Input:  PARAMS("stationNumber")= station number for institution
 ;              If not defined, defaults to package parameter values.
 ;
 ;Output: RESULT contains the preferences for the division.  If not
 ;        specified contains the default package parameters.
 ; 
 
LINE,DGRRI,DGRRVAL,DGRRATT,DGRRDIV,DGRRDIVN,DGRRLINE,DGRRESLT
 
DGRRDIVN=$G(PARAMS("stationNumber"))
 
DGRRDIV=$$IEN^XUAF4(DGRRDIVN)
 
DGRRLINE=0
 
^TMP($J,"PLU-DIVPREF")
 
DGRRESLT="^TMP($J,""PLU-DIVPREF"")"
 
RESULT=$NA(@DGRRESLT)
 
ADD^DGRRUTL($$XMLHDR^DGRRUTL())
 
ADD^DGRRUTL("<preferences>")
 
ADD^DGRRUTL("<error/>")
 
ADD^DGRRUTL("<institutionPreferences>")
 
ADD^DGRRUTL("<stationNumber>"_$$CHARCHK^DGRRUTL($G(DGRRDIVN))_"</stationNumber>")
 
;
 ; Gather preference values and build xml file
 
DGRRI=1:1 LINE=$P($T(PREF+DGRRI),";;",2) Q:LINE="QUIT"  D
 
.;Return preferences in precedence order set in Parameter Definition.
 
.;Will return division values if found.  If not defined, returns
 
.;package default values
 
.DGRRVAL=$$GET^XPAR("ALL^DIV.`"_DGRRDIV,$P(LINE,U),1,"E")
 .
DGRRATT=$P(LINE,U,2)
 .
ADD^DGRRUTL("<"_DGRRATT_">"_$$CHARCHK^DGRRUTL(DGRRVAL)_"</"_DGRRATT_">")
 
ADD^DGRRUTL("</institutionPreferences>")
 
ADD^DGRRUTL("</preferences>")
 
Q
 
;
UPDATE(RESULT,PARAMS) ;Entry point to add or change preference values
 ;
 ;Input: PARAMS("stationNumber")=Station # for the institution (Required)
 ;       PARAMS("divPreference",Preference Name)=Value (Required)
 ;
 ;Output:  Results in xml format 
 ;
 
DGRRARY,DGRRDIV,DGRRDIVN,DGRRERR,DGRRI,DGRRESLT,DGRRPREF,DGRRUPD,LINE
 
DGRRDIVN=$G(PARAMS("stationNumber"))
 
DGRRDIV=+$$IEN^XUAF4(DGRRDIVN)
 
^TMP($J,"PLU-DIVPREF-UPD")
 
RESULT=$NA(^TMP($J,"PLU-DIVPREF-UPD"))
 
; Log error for xml document and quit if invalid station number passed to call.
 
'DGRRDIV D  Q
 
.DGRRERR="Invalid stationNumber"
 
.DGRRUPD="false"
 
.XML(DGRRERR,DGRRUPD,RESULT)
 
; Build array of preferences from parameter preference names.
 
DGRRI=1:1 LINE=$P($T(PREF+DGRRI),";;",2) Q:LINE="QUIT"  D
 
.DGRRARY($P(LINE,U,2))=$P(LINE,U)
 
DGRRPREF=""
 
DGRRI=1:1 DGRRPREF=$O(DGRRARY(DGRRPREF)) Q:DGRRPREF=""  D  Q:DGRRUPD="false"
 
.DGRRPR,DGRRVAL,ERR
 
.(DGRRERR,DGRRUPD)=""
 
.DGRRPR=$G(DGRRARY(DGRRPREF))
 .
DGRRVAL=$G(PARAMS(DGRRPREF))
 .
;Value and Preference must be defined
 
.DGRRPR=""!(DGRRVAL=""D  Q
 
..DGRRUPD="false"
 
..DGRRERR="Invalid Preference "_$S(DGRRPR="":"Name",1:"Value")
 .
EN^XPAR("DIV.`"_DGRRDIV,DGRRPR,1,DGRRVAL,.ERR)
 .
; If no errors, ERR=0.  Errors are returned in the format:
 
.; internal entry number in Dialog file^error text describing error
 
.ERR'=0 D  Q
 
..DGRRUPD="false"
 
..DGRRERR=$P(ERR,U,2)
 .
DGRRUPD="true"
 
XML(DGRRERR,DGRRUPD,RESULT)
 
Q
XML(DGRRERR,DGRRUPD,DGRRESLT) ;Builds xml document
 
DGRRLINE
 
DGRRERR=$G(DGRRERR)
 
DGRRUPD=$G(DGRRUPD)
 
DGRRLINE=0
 
@DGRRESLT
 
ADD^DGRRUTL($$XMLHDR^DGRRUTL())
 
ADD^DGRRUTL("<preferences>")
 
ADD^DGRRUTL("<error>"_$$CHARCHK^DGRRUTL(DGRRERR)_"</error>")
 
ADD^DGRRUTL("<institutionPreferences>")
 
ADD^DGRRUTL("<stationNumber>"_$$CHARCHK^DGRRUTL($G(DGRRDIVN))_"</stationNumber>")
 
ADD^DGRRUTL("<preferencesUpdated>"_$$CHARCHK^DGRRUTL(DGRRUPD)_"</preferencesUpdated>")
 
ADD^DGRRUTL("</institutionPreferences>")
 
ADD^DGRRUTL("</preferences>")
 
Q
 
;
PREF ;Parameter definition^divPref received from/returned to calling app
 ;;DGRR PL MAX NUM PATIENTS RET^maxNumPatients
 ;;DGRR PL NUM PATIENTS PER PAGE^patientsPerPage
 ;;DGRR PL PATIENT TYPE^patientType
 ;;DGRR PL GENDER^gender
 ;;DGRR PL PRIMARY ELIGIBILITY^primaryEligibility
 ;;DGRR PL ROOM BED^roomBed
 ;;DGRR PL SERVICE CONNECTED^serviceConnected
 ;;DGRR PL VETERAN STATUS^veteranStatus
 ;;DGRR PL WARD^ward
 ;;DGRR PL VETERAN IMAGE^veteranImage
 ;;QUIT
 
Q