OREDITOR4 ; SLC/AGP - Info Panel Builder Code ;Jan 08, 2026@12:49:39
;;3.0;ORDER ENTRY/RESULTS REPORTING;**508**;Dec 17, 1997;Build 39
;
; Reference to ^PXRMD(811.5 supported by ICR #7466
; Reference to ^DIC(9.4 is supported by ICR #2058
; Reference to ^PXD(811.9 supported by ICR #1256
; Reference to INFOLIST^PXRMAPI supported by ICR # 7466
;
Q
;
BLDDA(TIENS,DA) ;
N CNT,IDX
S IDX=$O(TIENS("A"),-1) S DA=TIENS(IDX)
S CNT=0 F S IDX=$O(TIENS(IDX),-1) Q:IDX<1 D
.S DA($I(CNT))=TIENS(IDX)
Q
;
BLD(INPUTS) ;
N ARRAY,CNT,DATES,DEFSCHEMA,DSCHEMA,DFN,HARRAY,IENS,LIDX,NIDX,NODE,ONEOF,PIDX
N SCHEMA,SUB,TIENS,TOBJ,TSCHEMA,UISCHEMA,USER,XCTARRAY
S NIDX=$$GETNATIONAL^ORIUTL I NIDX=0 Q "-1^Cannot find national information panels"
D PASSINVALUES^OREDITOR1(.INPUTS,.DSCHEMA,.DFN,.PIDX,.SCHEMA,.SUB,.UISCHEMA,.USER)
D SETONEOF(.ONEOF)
S NODE=$G(^ORI(101.71,NIDX,0))
S TSCHEMA("name")=$P(NODE,U),TSCHEMA("active")=$S($P(NODE,U,2)=1:"true",1:"false")
D SETDATES($P(NODE,U,3),.DATES) I $D(DATES) M TSCHEMA("updateDateTime")=DATES
S TSCHEMA("updateSource")=$P(NODE,U,4)
D MERGEONEOF(.ONEOF,.SCHEMA)
S PIDX=0,CNT=0 F S PIDX=$O(^ORI(101.71,NIDX,"PKG",PIDX)) Q:PIDX'>0 D
. S NODE=$G(^ORI(101.71,NIDX,"PKG",PIDX,0)) I +$P(NODE,U)'>0 Q
. K XCTARRAY D SETLOOKUPDEF(9.4,$P(NODE,U),.XCTARRAY)
. S TIENS(1)=NIDX,TIENS(2)=PIDX,IENS=$$BLDIENS^OREDITOR2(.TIENS)
. M TSCHEMA("ResponsiblePackages",PIDX,"package")=XCTARRAY
. S TSCHEMA("ResponsiblePackages",PIDX,"packageId")=IENS
. S LIDX=0 F S LIDX=$O(^ORI(101.71,NIDX,"PKG",PIDX,"LOC",LIDX)) Q:LIDX'>0 D
.. K TIENS(3),TIENS(4),TIENS(5)
.. S TIENS(3)=LIDX
.. K TOBJ D BLDLOC(.TOBJ,.TIENS,.HARRAY,.DEFSCHEMA) I '$D(TOBJ) Q
.. M TSCHEMA("ResponsiblePackages",PIDX,"locationId",$I(CNT))=TOBJ
S DSCHEMA("hashValues","totalHash")=$$GENAREF^XLFSHAN(512,"TSCHEMA",1)
M DSCHEMA("hashValues","hashes")=HARRAY
M DSCHEMA("definitions")=DEFSCHEMA("definitions")
M DSCHEMA=TSCHEMA
M ^TMP(SUB,$J,"Schema")=SCHEMA
M ^TMP(SUB,$J,"UISchema")=UISCHEMA
M ^TMP(SUB,$J,"Data")=DSCHEMA
S ^TMP(SUB,$J,"success")="true"
Q 1
;
BLDITEM(DSCHEMA,TIENS,HARRAY) ;
N CNT,HCNT,IDX,IENS,LIDX,NIDX,NODE,PIDX,RIDX,TEXT,TMP,TOBJ,TSCHEMA,XCTARRAY
S NIDX=TIENS(1),PIDX=TIENS(2),LIDX=TIENS(3)
S NODE=$G(^ORI(101.71,TIENS(1),"PKG",TIENS(2),"LOC",TIENS(3),"ITM",TIENS(4),0))
I $P(NODE,U,1)=0!($P(NODE,U,2)="")!($P(NODE,U,4)="")!($P(NODE,U,5)="") Q
S IENS=$$BLDIENS^OREDITOR2(.TIENS)
S (DSCHEMA("panelId"),DSCHEMA("panelObject","panelId"))=IENS
S DSCHEMA("panelObject","panelSequence")=$P(NODE,U),DSCHEMA("panelObject","panelName")=$P(NODE,U,2)
S DSCHEMA("panelObject","status")=$P(NODE,U,3)
S DSCHEMA("panelObject","panelAbbreviation")=$P(NODE,U,4),DSCHEMA("panelObject","defaultText")=$P(NODE,U,5)
K XCTARRAY D SETLOOKUPDEF(101.73,$P(NODE,U,6),.XCTARRAY) M DSCHEMA("panelObject","backgroundColor")=XCTARRAY
K XCTARRAY D SETLOOKUPDEF(101.73,$P(NODE,U,8),.XCTARRAY) M DSCHEMA("panelObject","imageIcon")=XCTARRAY
;
S NODE=$G(^ORI(101.71,TIENS(1),"PKG",TIENS(2),"LOC",TIENS(3),"ITM",TIENS(4),10))
S DSCHEMA("panelObject","evaluationObject","evaluationType")=$P(NODE,U)
I $P(NODE,U)="RT"!($P(NODE,U)="RD")!($P(NODE,U)="C") D
.I $P(NODE,U)'="C" D Q
..I $P(NODE,U,3)'="" S DSCHEMA("panelObject","evaluationObject","reminderStatus")=$P(NODE,U,3)
..I $P(NODE,U,2)'="" S DSCHEMA("panelObject","evaluationObject","reminderComponent")=$P(NODE,U,2)
.I $P(NODE,U,4)>0 S DSCHEMA("panelObject","evaluationObject","evaluationCode")=$P(NODE,U,4)
;
S NODE=$G(^ORI(101.71,TIENS(1),"PKG",TIENS(2),"LOC",TIENS(3),"ITM",TIENS(4),20))
S DSCHEMA("panelObject","applicableObject","displayIfApplicable")=$S($P(NODE,U)=1:"true",1:"false")
I $P(NODE,U,2)'="" S DSCHEMA("panelObject","applicableObject","notApplicableabbreviation")=$P(NODE,U,2)
I $P(NODE,U,3)'="" S DSCHEMA("panelObject","applicableObject","notApplicableText")=$P(NODE,U,3)
K XCTARRAY D SETLOOKUPDEF(101.73,$P(NODE,U,4),.XCTARRAY) M DSCHEMA("panelObject","applicableObject","backgroundColor")=XCTARRAY
K XCTARRAY D SETLOOKUPDEF(101.73,$P(NODE,U,5),.XCTARRAY) M DSCHEMA("panelObject","applicableObject","imageIcon")=XCTARRAY
;
S NODE=$G(^ORI(101.71,TIENS(1),"PKG",TIENS(2),"LOC",TIENS(3),"ITM",TIENS(4),30))
K XCTARRAY D SETLOOKUPDEF(101.73,$P(NODE,U),.XCTARRAY) M DSCHEMA("panelObject","actionObject","panelAction")=XCTARRAY
I $P(NODE,U,2)'="" S DSCHEMA("panelObject","actionObject","formType")=$P(NODE,U,2)
I $P(NODE,U,3)'="" S DSCHEMA("panelObject","actionObject","detailCode")=$P(NODE,U,3)
;
S DSCHEMA("panelObject","actionObject","callRPC")=$S($P(NODE,U,4)'="":$P(NODE,U,4),1:"false")
K XCTARRAY D SETLOOKUPDEF(101.74,$P(NODE,U,5),.XCTARRAY)
I $G(XCTARRAY("const"))'="" M DSCHEMA("panelObject","actionObject","editor")=XCTARRAY
S NODE=$G(^ORI(101.71,TIENS(1),"PKG",TIENS(2),"LOC",TIENS(3),"ITM",TIENS(4),"URL"))
I $P(NODE,U)'="" S DSCHEMA("panelObject","actionObject","url")=$P(NODE,U)
K TMP,TEXT
M TEXT=^ORI(101.71,TIENS(1),"PKG",TIENS(2),"LOC",TIENS(3),"ITM",TIENS(4),"DTXT")
S TMP=$$SETTEXT^OREDITOR1(.TEXT) I TMP'="" S DSCHEMA("panelObject","actionObject","detailText")=TMP
K TMP,TEXT
M TEXT=^ORI(101.71,TIENS(1),"PKG",TIENS(2),"LOC",TIENS(3),"ITM",TIENS(4),"DESC")
S TMP=$$SETTEXT^OREDITOR1(.TEXT) I TMP'="" S DSCHEMA("panelObject","panelDescription")=TMP
D SETHASH(.HARRAY,.TIENS,.TSCHEMA)
S RIDX=0,CNT=0 F S RIDX=$O(^ORI(101.71,TIENS(1),"PKG",TIENS(2),"LOC",TIENS(3),"ITM",TIENS(4),"REQD",RIDX)) Q:RIDX'>0 D
.K TOBJ S TIENS(5)=RIDX D BLDREQ(.TOBJ,.TIENS,.HARRAY) I '$D(TOBJ) Q
.M DSCHEMA("panelObject","actionObject","requiredData",$I(CNT))=TOBJ
;D SETHASH(.HARRAY,.TIENS,.DSCHEMA)
Q
;
BLDLOC(DSCHEMA,TIENS,HARRAY,DEFSCHEMA) ;
N CNT,IDX,IENS,LIDX,NIDX,NODE,PIDX,TOBJ,XCTARRAY
S NIDX=TIENS(1),PIDX=TIENS(2),LIDX=TIENS(3)
S NODE=$G(^ORI(101.71,NIDX,"PKG",PIDX,"LOC",LIDX,0))
I +$P(NODE,U)'>0!(+$P(NODE,U,2)'>0)!($P(NODE,U,3)="")!($P(NODE,U,4)="") Q
S IENS=$$BLDIENS^OREDITOR2(.TIENS)
S DSCHEMA("locationId")=IENS,DSCHEMA("locationSequence")=$P(NODE,U)
D SETLOOKUPDEF(101.73,$P(NODE,U,2),.XCTARRAY) M DSCHEMA("location")=XCTARRAY
S DSCHEMA("displayText")=$P(NODE,U,3),DSCHEMA("abbreviation")=$P(NODE,U,4)
K XCTARRAY D SETLOOKUPDEF(101.73,$P(NODE,U,5),.XCTARRAY) M DSCHEMA("backgroundColor")=XCTARRAY
S DSCHEMA("disabled")=$S($P(NODE,U,6)'="":$P(NODE,U,6),1:"false")
S DSCHEMA("collapsible")=$S($P(NODE,U,7)'="":$P(NODE,U,7),1:"false")
K XCTARRAY D SETLOOKUPDEF(101.73,$P(NODE,U,8),.XCTARRAY) M DSCHEMA("imageIcon")=XCTARRAY
D SETHASH(.HARRAY,.TIENS,.DSCHEMA)
S IDX=0,CNT=0 F S IDX=$O(^ORI(101.71,NIDX,"PKG",PIDX,"LOC",LIDX,"ITM",IDX)) Q:IDX'>0 D
.K TOBJ,TIENS
.S TIENS(1)=NIDX,TIENS(2)=PIDX,TIENS(3)=LIDX,TIENS(4)=IDX
.D BLDITEM(.TOBJ,.TIENS,.HARRAY) I '$D(TOBJ) Q
.M DSCHEMA("Panels",$I(CNT))=TOBJ
Q
;
BLDREQ(DSCHEMA,TIENS,HARRAY) ;
N IENS,NODE,XCTARRAY
S NODE=$G(^ORI(101.71,TIENS(1),"PKG",TIENS(2),"LOC",TIENS(3),"ITM",TIENS(4),"REQD",TIENS(5),0))
S IENS=$$BLDIENS^OREDITOR2(.TIENS),DSCHEMA("dataId")=IENS
D SETLOOKUPDEF(101.73,$P(NODE,U),.XCTARRAY) M DSCHEMA("dataType")=XCTARRAY
I $P(NODE,U)>0 S DSCHEMA("requiredForAction")=$S($P(NODE,U,2)=1:"true",1:"false")
D SETHASH(.HARRAY,.TIENS,.DSCHEMA)
Q
;
SETHASH(HARRAY,TIENS,OBJ) ;
N HCNT,IENS
S IENS=$$BLDIENS^OREDITOR2(.TIENS)
D SETHASH^OREDITOR1(.HARRAY,IENS,.OBJ)
Q
;
SETONEOF(ONEOF) ;
N CNT,CODES,IEN,NAME,NODE,ORREMARRAY,SUB
;evaluation codes
D CODE^ORIUTL(.CODES,101.71123,10) M ONEOF("evaluation")=CODES
;status
K CODES D CODE^ORIUTL(.CODES,101.71123,.03) M ONEOF("status")=CODES
;form types
K CODES D CODE^ORIUTL(.CODES,101.71123,31) M ONEOF("form")=CODES
;required data
K CODES D CODE^ORIUTL(.CODES,101.714,.02) M ONEOF("required")=CODES
;reminder status
K CODES D CODE^ORIUTL(.CODES,101.71123,12) M ONEOF("reminderStatus")=CODES
D INFOLIST^PXRMAPI(.ORREMARRAY)
S CNT=0,NAME="" F S NAME=$O(ORREMARRAY(NAME)) Q:NAME="" D
.S CNT=CNT+1,ONEOF("reminder",CNT,"const")=ORREMARRAY(NAME),ONEOF("reminder",CNT,"title")=NAME
D GETPLUGINS^ORDD71(.ONEOF,"plugin")
Q
;
MERGEONEOF(ONEOF,SCHEMA) ;
N SUB,TYPE
S SUB="" F S SUB=$O(ONEOF(SUB)) Q:SUB="" D
.S TYPE=$$GETTYPE(SUB) I TYPE="" Q
.M SCHEMA("definitions",TYPE,"oneOf")=ONEOF(SUB) Q
Q
;
GETTYPE(SUB) ;
I SUB="action" Q "actionTypeData"
I SUB="color" Q "colorData"
I SUB="data" Q "dataTypeData"
I SUB="editor" Q "editorData"
I SUB="evaluation" Q "evaluationTypeData"
I SUB="form" Q "formTypeData"
I SUB="image" Q "imageData"
I SUB="location" Q "locationData"
I SUB="package" Q "packageData"
I SUB="plugin" Q "codeData"
I SUB="reminder" Q "reminderComponentData"
I SUB="reminderStatus" Q "reminderStatusData"
I SUB="status" Q "statusData"
Q ""
SETDATES(DATE,DATES) ;
S DATES("internal")=DATE
S DATES("external")=$$FMTE^XLFDT(DATE)
Q
;
SETLOOKUPDEF(FN,IEN,ARRAY) ;
I IEN="" Q
S ARRAY("const")=IEN
I FN=9.4 S (ARRAY("display"),ARRAY("title"))=$P($G(^DIC(9.4,IEN,0)),U) Q
I FN=101.73 S (ARRAY("display"),ARRAY("title"))=$P($G(^ORI(101.73,IEN,0)),U)
I FN=101.74 S (ARRAY("display"),ARRAY("title"))=$P($G(^ORE(101.74,IEN,0)),U)
I FN=101.75 S ARRAY("title")=$P($G(^OR(101.75,IEN,0)),U)
I FN=811.5 S ARRAY("title")=$P($G(^PXRMD(811.5,+IEN,0)),U)
I FN=811.9 S ARRAY("title")=$P($G(^PXD(811.9,+IEN,0)),U)
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HOREDITOR4 9409 printed May 25, 2026@12:34:29 Page 2
OREDITOR4 ; SLC/AGP - Info Panel Builder Code ;Jan 08, 2026@12:49:39
+1 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**508**;Dec 17, 1997;Build 39
+2 ;
+3 ; Reference to ^PXRMD(811.5 supported by ICR #7466
+4 ; Reference to ^DIC(9.4 is supported by ICR #2058
+5 ; Reference to ^PXD(811.9 supported by ICR #1256
+6 ; Reference to INFOLIST^PXRMAPI supported by ICR # 7466
+7 ;
+8 QUIT
+9 ;
BLDDA(TIENS,DA) ;
+1 NEW CNT,IDX
+2 SET IDX=$ORDER(TIENS("A"),-1)
SET DA=TIENS(IDX)
+3 SET CNT=0
FOR
SET IDX=$ORDER(TIENS(IDX),-1)
if IDX<1
QUIT
Begin DoDot:1
+4
*** ERROR ***
SET DA($I(CNT))=TIENS(IDX)
End DoDot:1
+5 QUIT
+6 ;
BLD(INPUTS) ;
+1 NEW ARRAY,CNT,DATES,DEFSCHEMA,DSCHEMA,DFN,HARRAY,IENS,LIDX,NIDX,NODE,ONEOF,PIDX
+2 NEW SCHEMA,SUB,TIENS,TOBJ,TSCHEMA,UISCHEMA,USER,XCTARRAY
+3 SET NIDX=$$GETNATIONAL^ORIUTL
IF NIDX=0
QUIT "-1^Cannot find national information panels"
+4 DO PASSINVALUES^OREDITOR1(.INPUTS,.DSCHEMA,.DFN,.PIDX,.SCHEMA,.SUB,.UISCHEMA,.USER)
+5 DO SETONEOF(.ONEOF)
+6 SET NODE=$GET(^ORI(101.71,NIDX,0))
+7 SET TSCHEMA("name")=$PIECE(NODE,U)
SET TSCHEMA("active")=$SELECT($PIECE(NODE,U,2)=1:"true",1:"false")
+8 DO SETDATES($PIECE(NODE,U,3),.DATES)
IF $DATA(DATES)
MERGE TSCHEMA("updateDateTime")=DATES
+9 SET TSCHEMA("updateSource")=$PIECE(NODE,U,4)
+10 DO MERGEONEOF(.ONEOF,.SCHEMA)
+11 SET PIDX=0
SET CNT=0
FOR
SET PIDX=$ORDER(^ORI(101.71,NIDX,"PKG",PIDX))
if PIDX'>0
QUIT
Begin DoDot:1
+12 SET NODE=$GET(^ORI(101.71,NIDX,"PKG",PIDX,0))
IF +$PIECE(NODE,U)'>0
QUIT
+13 KILL XCTARRAY
DO SETLOOKUPDEF(9.4,$PIECE(NODE,U),.XCTARRAY)
+14 SET TIENS(1)=NIDX
SET TIENS(2)=PIDX
SET IENS=$$BLDIENS^OREDITOR2(.TIENS)
+15 MERGE TSCHEMA("ResponsiblePackages",PIDX,"package")=XCTARRAY
+16 SET TSCHEMA("ResponsiblePackages",PIDX,"packageId")=IENS
+17 SET LIDX=0
FOR
SET LIDX=$ORDER(^ORI(101.71,NIDX,"PKG",PIDX,"LOC",LIDX))
if LIDX'>0
QUIT
Begin DoDot:2
+18 KILL TIENS(3),TIENS(4),TIENS(5)
+19 SET TIENS(3)=LIDX
+20 KILL TOBJ
DO BLDLOC(.TOBJ,.TIENS,.HARRAY,.DEFSCHEMA)
IF '$DATA(TOBJ)
QUIT
+21
*** ERROR ***
MERGE TSCHEMA("ResponsiblePackages",PIDX,"locationId",$I(CNT))=TOBJ
End DoDot:2
End DoDot:1
+22 SET DSCHEMA("hashValues","totalHash")=$$GENAREF^XLFSHAN(512,"TSCHEMA",1)
+23 MERGE DSCHEMA("hashValues","hashes")=HARRAY
+24 MERGE DSCHEMA("definitions")=DEFSCHEMA("definitions")
+25 MERGE DSCHEMA=TSCHEMA
+26 MERGE ^TMP(SUB,$JOB,"Schema")=SCHEMA
+27 MERGE ^TMP(SUB,$JOB,"UISchema")=UISCHEMA
+28 MERGE ^TMP(SUB,$JOB,"Data")=DSCHEMA
+29 SET ^TMP(SUB,$JOB,"success")="true"
+30 QUIT 1
+31 ;
BLDITEM(DSCHEMA,TIENS,HARRAY) ;
+1 NEW CNT,HCNT,IDX,IENS,LIDX,NIDX,NODE,PIDX,RIDX,TEXT,TMP,TOBJ,TSCHEMA,XCTARRAY
+2 SET NIDX=TIENS(1)
SET PIDX=TIENS(2)
SET LIDX=TIENS(3)
+3 SET NODE=$GET(^ORI(101.71,TIENS(1),"PKG",TIENS(2),"LOC",TIENS(3),"ITM",TIENS(4),0))
+4 IF $PIECE(NODE,U,1)=0!($PIECE(NODE,U,2)="")!($PIECE(NODE,U,4)="")!($PIECE(NODE,U,5)="")
QUIT
+5 SET IENS=$$BLDIENS^OREDITOR2(.TIENS)
+6 SET (DSCHEMA("panelId"),DSCHEMA("panelObject","panelId"))=IENS
+7 SET DSCHEMA("panelObject","panelSequence")=$PIECE(NODE,U)
SET DSCHEMA("panelObject","panelName")=$PIECE(NODE,U,2)
+8 SET DSCHEMA("panelObject","status")=$PIECE(NODE,U,3)
+9 SET DSCHEMA("panelObject","panelAbbreviation")=$PIECE(NODE,U,4)
SET DSCHEMA("panelObject","defaultText")=$PIECE(NODE,U,5)
+10 KILL XCTARRAY
DO SETLOOKUPDEF(101.73,$PIECE(NODE,U,6),.XCTARRAY)
MERGE DSCHEMA("panelObject","backgroundColor")=XCTARRAY
+11 KILL XCTARRAY
DO SETLOOKUPDEF(101.73,$PIECE(NODE,U,8),.XCTARRAY)
MERGE DSCHEMA("panelObject","imageIcon")=XCTARRAY
+12 ;
+13 SET NODE=$GET(^ORI(101.71,TIENS(1),"PKG",TIENS(2),"LOC",TIENS(3),"ITM",TIENS(4),10))
+14 SET DSCHEMA("panelObject","evaluationObject","evaluationType")=$PIECE(NODE,U)
+15 IF $PIECE(NODE,U)="RT"!($PIECE(NODE,U)="RD")!($PIECE(NODE,U)="C")
Begin DoDot:1
+16 IF $PIECE(NODE,U)'="C"
Begin DoDot:2
+17 IF $PIECE(NODE,U,3)'=""
SET DSCHEMA("panelObject","evaluationObject","reminderStatus")=$PIECE(NODE,U,3)
+18 IF $PIECE(NODE,U,2)'=""
SET DSCHEMA("panelObject","evaluationObject","reminderComponent")=$PIECE(NODE,U,2)
End DoDot:2
QUIT
+19 IF $PIECE(NODE,U,4)>0
SET DSCHEMA("panelObject","evaluationObject","evaluationCode")=$PIECE(NODE,U,4)
End DoDot:1
+20 ;
+21 SET NODE=$GET(^ORI(101.71,TIENS(1),"PKG",TIENS(2),"LOC",TIENS(3),"ITM",TIENS(4),20))
+22 SET DSCHEMA("panelObject","applicableObject","displayIfApplicable")=$SELECT($PIECE(NODE,U)=1:"true",1:"false")
+23 IF $PIECE(NODE,U,2)'=""
SET DSCHEMA("panelObject","applicableObject","notApplicableabbreviation")=$PIECE(NODE,U,2)
+24 IF $PIECE(NODE,U,3)'=""
SET DSCHEMA("panelObject","applicableObject","notApplicableText")=$PIECE(NODE,U,3)
+25 KILL XCTARRAY
DO SETLOOKUPDEF(101.73,$PIECE(NODE,U,4),.XCTARRAY)
MERGE DSCHEMA("panelObject","applicableObject","backgroundColor")=XCTARRAY
+26 KILL XCTARRAY
DO SETLOOKUPDEF(101.73,$PIECE(NODE,U,5),.XCTARRAY)
MERGE DSCHEMA("panelObject","applicableObject","imageIcon")=XCTARRAY
+27 ;
+28 SET NODE=$GET(^ORI(101.71,TIENS(1),"PKG",TIENS(2),"LOC",TIENS(3),"ITM",TIENS(4),30))
+29 KILL XCTARRAY
DO SETLOOKUPDEF(101.73,$PIECE(NODE,U),.XCTARRAY)
MERGE DSCHEMA("panelObject","actionObject","panelAction")=XCTARRAY
+30 IF $PIECE(NODE,U,2)'=""
SET DSCHEMA("panelObject","actionObject","formType")=$PIECE(NODE,U,2)
+31 IF $PIECE(NODE,U,3)'=""
SET DSCHEMA("panelObject","actionObject","detailCode")=$PIECE(NODE,U,3)
+32 ;
+33 SET DSCHEMA("panelObject","actionObject","callRPC")=$SELECT($PIECE(NODE,U,4)'="":$PIECE(NODE,U,4),1:"false")
+34 KILL XCTARRAY
DO SETLOOKUPDEF(101.74,$PIECE(NODE,U,5),.XCTARRAY)
+35 IF $GET(XCTARRAY("const"))'=""
MERGE DSCHEMA("panelObject","actionObject","editor")=XCTARRAY
+36 SET NODE=$GET(^ORI(101.71,TIENS(1),"PKG",TIENS(2),"LOC",TIENS(3),"ITM",TIENS(4),"URL"))
+37 IF $PIECE(NODE,U)'=""
SET DSCHEMA("panelObject","actionObject","url")=$PIECE(NODE,U)
+38 KILL TMP,TEXT
+39 MERGE TEXT=^ORI(101.71,TIENS(1),"PKG",TIENS(2),"LOC",TIENS(3),"ITM",TIENS(4),"DTXT")
+40 SET TMP=$$SETTEXT^OREDITOR1(.TEXT)
IF TMP'=""
SET DSCHEMA("panelObject","actionObject","detailText")=TMP
+41 KILL TMP,TEXT
+42 MERGE TEXT=^ORI(101.71,TIENS(1),"PKG",TIENS(2),"LOC",TIENS(3),"ITM",TIENS(4),"DESC")
+43 SET TMP=$$SETTEXT^OREDITOR1(.TEXT)
IF TMP'=""
SET DSCHEMA("panelObject","panelDescription")=TMP
+44 DO SETHASH(.HARRAY,.TIENS,.TSCHEMA)
+45 SET RIDX=0
SET CNT=0
FOR
SET RIDX=$ORDER(^ORI(101.71,TIENS(1),"PKG",TIENS(2),"LOC",TIENS(3),"ITM",TIENS(4),"REQD",RIDX))
if RIDX'>0
QUIT
Begin DoDot:1
+46 KILL TOBJ
SET TIENS(5)=RIDX
DO BLDREQ(.TOBJ,.TIENS,.HARRAY)
IF '$DATA(TOBJ)
QUIT
+47
*** ERROR ***
MERGE DSCHEMA("panelObject","actionObject","requiredData",$I(CNT))=TOBJ
End DoDot:1
+48 ;D SETHASH(.HARRAY,.TIENS,.DSCHEMA)
+49 QUIT
+50 ;
BLDLOC(DSCHEMA,TIENS,HARRAY,DEFSCHEMA) ;
+1 NEW CNT,IDX,IENS,LIDX,NIDX,NODE,PIDX,TOBJ,XCTARRAY
+2 SET NIDX=TIENS(1)
SET PIDX=TIENS(2)
SET LIDX=TIENS(3)
+3 SET NODE=$GET(^ORI(101.71,NIDX,"PKG",PIDX,"LOC",LIDX,0))
+4 IF +$PIECE(NODE,U)'>0!(+$PIECE(NODE,U,2)'>0)!($PIECE(NODE,U,3)="")!($PIECE(NODE,U,4)="")
QUIT
+5 SET IENS=$$BLDIENS^OREDITOR2(.TIENS)
+6 SET DSCHEMA("locationId")=IENS
SET DSCHEMA("locationSequence")=$PIECE(NODE,U)
+7 DO SETLOOKUPDEF(101.73,$PIECE(NODE,U,2),.XCTARRAY)
MERGE DSCHEMA("location")=XCTARRAY
+8 SET DSCHEMA("displayText")=$PIECE(NODE,U,3)
SET DSCHEMA("abbreviation")=$PIECE(NODE,U,4)
+9 KILL XCTARRAY
DO SETLOOKUPDEF(101.73,$PIECE(NODE,U,5),.XCTARRAY)
MERGE DSCHEMA("backgroundColor")=XCTARRAY
+10 SET DSCHEMA("disabled")=$SELECT($PIECE(NODE,U,6)'="":$PIECE(NODE,U,6),1:"false")
+11 SET DSCHEMA("collapsible")=$SELECT($PIECE(NODE,U,7)'="":$PIECE(NODE,U,7),1:"false")
+12 KILL XCTARRAY
DO SETLOOKUPDEF(101.73,$PIECE(NODE,U,8),.XCTARRAY)
MERGE DSCHEMA("imageIcon")=XCTARRAY
+13 DO SETHASH(.HARRAY,.TIENS,.DSCHEMA)
+14 SET IDX=0
SET CNT=0
FOR
SET IDX=$ORDER(^ORI(101.71,NIDX,"PKG",PIDX,"LOC",LIDX,"ITM",IDX))
if IDX'>0
QUIT
Begin DoDot:1
+15 KILL TOBJ,TIENS
+16 SET TIENS(1)=NIDX
SET TIENS(2)=PIDX
SET TIENS(3)=LIDX
SET TIENS(4)=IDX
+17 DO BLDITEM(.TOBJ,.TIENS,.HARRAY)
IF '$DATA(TOBJ)
QUIT
+18
*** ERROR ***
MERGE DSCHEMA("Panels",$I(CNT))=TOBJ
End DoDot:1
+19 QUIT
+20 ;
BLDREQ(DSCHEMA,TIENS,HARRAY) ;
+1 NEW IENS,NODE,XCTARRAY
+2 SET NODE=$GET(^ORI(101.71,TIENS(1),"PKG",TIENS(2),"LOC",TIENS(3),"ITM",TIENS(4),"REQD",TIENS(5),0))
+3 SET IENS=$$BLDIENS^OREDITOR2(.TIENS)
SET DSCHEMA("dataId")=IENS
+4 DO SETLOOKUPDEF(101.73,$PIECE(NODE,U),.XCTARRAY)
MERGE DSCHEMA("dataType")=XCTARRAY
+5 IF $PIECE(NODE,U)>0
SET DSCHEMA("requiredForAction")=$SELECT($PIECE(NODE,U,2)=1:"true",1:"false")
+6 DO SETHASH(.HARRAY,.TIENS,.DSCHEMA)
+7 QUIT
+8 ;
SETHASH(HARRAY,TIENS,OBJ) ;
+1 NEW HCNT,IENS
+2 SET IENS=$$BLDIENS^OREDITOR2(.TIENS)
+3 DO SETHASH^OREDITOR1(.HARRAY,IENS,.OBJ)
+4 QUIT
+5 ;
SETONEOF(ONEOF) ;
+1 NEW CNT,CODES,IEN,NAME,NODE,ORREMARRAY,SUB
+2 ;evaluation codes
+3 DO CODE^ORIUTL(.CODES,101.71123,10)
MERGE ONEOF("evaluation")=CODES
+4 ;status
+5 KILL CODES
DO CODE^ORIUTL(.CODES,101.71123,.03)
MERGE ONEOF("status")=CODES
+6 ;form types
+7 KILL CODES
DO CODE^ORIUTL(.CODES,101.71123,31)
MERGE ONEOF("form")=CODES
+8 ;required data
+9 KILL CODES
DO CODE^ORIUTL(.CODES,101.714,.02)
MERGE ONEOF("required")=CODES
+10 ;reminder status
+11 KILL CODES
DO CODE^ORIUTL(.CODES,101.71123,12)
MERGE ONEOF("reminderStatus")=CODES
+12 DO INFOLIST^PXRMAPI(.ORREMARRAY)
+13 SET CNT=0
SET NAME=""
FOR
SET NAME=$ORDER(ORREMARRAY(NAME))
if NAME=""
QUIT
Begin DoDot:1
+14 SET CNT=CNT+1
SET ONEOF("reminder",CNT,"const")=ORREMARRAY(NAME)
SET ONEOF("reminder",CNT,"title")=NAME
End DoDot:1
+15 DO GETPLUGINS^ORDD71(.ONEOF,"plugin")
+16 QUIT
+17 ;
MERGEONEOF(ONEOF,SCHEMA) ;
+1 NEW SUB,TYPE
+2 SET SUB=""
FOR
SET SUB=$ORDER(ONEOF(SUB))
if SUB=""
QUIT
Begin DoDot:1
+3 SET TYPE=$$GETTYPE(SUB)
IF TYPE=""
QUIT
+4 MERGE SCHEMA("definitions",TYPE,"oneOf")=ONEOF(SUB)
QUIT
End DoDot:1
+5 QUIT
+6 ;
GETTYPE(SUB) ;
+1 IF SUB="action"
QUIT "actionTypeData"
+2 IF SUB="color"
QUIT "colorData"
+3 IF SUB="data"
QUIT "dataTypeData"
+4 IF SUB="editor"
QUIT "editorData"
+5 IF SUB="evaluation"
QUIT "evaluationTypeData"
+6 IF SUB="form"
QUIT "formTypeData"
+7 IF SUB="image"
QUIT "imageData"
+8 IF SUB="location"
QUIT "locationData"
+9 IF SUB="package"
QUIT "packageData"
+10 IF SUB="plugin"
QUIT "codeData"
+11 IF SUB="reminder"
QUIT "reminderComponentData"
+12 IF SUB="reminderStatus"
QUIT "reminderStatusData"
+13 IF SUB="status"
QUIT "statusData"
+14 QUIT ""
SETDATES(DATE,DATES) ;
+1 SET DATES("internal")=DATE
+2 SET DATES("external")=$$FMTE^XLFDT(DATE)
+3 QUIT
+4 ;
SETLOOKUPDEF(FN,IEN,ARRAY) ;
+1 IF IEN=""
QUIT
+2 SET ARRAY("const")=IEN
+3 IF FN=9.4
SET (ARRAY("display"),ARRAY("title"))=$PIECE($GET(^DIC(9.4,IEN,0)),U)
QUIT
+4 IF FN=101.73
SET (ARRAY("display"),ARRAY("title"))=$PIECE($GET(^ORI(101.73,IEN,0)),U)
+5 IF FN=101.74
SET (ARRAY("display"),ARRAY("title"))=$PIECE($GET(^ORE(101.74,IEN,0)),U)
+6 IF FN=101.75
SET ARRAY("title")=$PIECE($GET(^OR(101.75,IEN,0)),U)
+7 IF FN=811.5
SET ARRAY("title")=$PIECE($GET(^PXRMD(811.5,+IEN,0)),U)
+8 IF FN=811.9
SET ARRAY("title")=$PIECE($GET(^PXD(811.9,+IEN,0)),U)
+9 QUIT