OREDITOR ; SLC/AGP - Information panel editor API ;Mar 12, 2025@09:17:36
;;3.0;ORDER ENTRY/RESULTS REPORTING;**508**;Dec 17, 1997;Build 39
;
;
Q
;
INQEDITOR ;
N ARRAY,CNAME,CIDX,CNT,DIWF,DIWL,HEAD,IDX,ISCOMBO,NAME,NODE,PIECE,SUB,TMP,VALUE,X
S SUB="OREDITOR INQEDITOR",CNT=0,DIWF="C80N",DIWL=2
K ^TMP(SUB,$J)
S NODE=$G(^ORE(101.74,D0,50)) I $P(NODE,U)>0!($P(NODE,U,2)>0) D K ^TMP(SUB,$J) Q
. S TMP=$P($G(^ORW(101.76,+$P(NODE,U),0)),U)
. D SETTEXT^ORIMGR("Schema: ",TMP,SUB,.CNT,28," ")
. S TMP=$P($G(^ORW(101.76,+$P(NODE,U,2),0)),U)
. D SETTEXT^ORIMGR("UI Schema: ",TMP,SUB,.CNT,28," ")
. S CNT=0 F S CNT=$O(^TMP(SUB,$J,CNT)) Q:CNT'>0 D
.. S X=^TMP(SUB,$J,CNT) D ^DIWP
S ARRAY(0,1)="Cell Name: ",ARRAY(0,2)="Editor Type: ^101.74",ARRAY(0,3)="Disabled: "
S ARRAY(10,1)="Label: ",ARRAY(10,2)="Column: ",ARRAY(10,3)="Row: ",ARRAY(10,4)="Column Span: ",ARRAY(10,5)="Row Span: ",ARRAY(10,6)="Required: ^1",ARRAY(10,3)="Set Default Value: ^1"
S ARRAY(30,1)="Need Sort: ^1",ARRAY(30,2)="Show Possible Values: ^1",ARRAY(30,2)="Show Possible Values: ^1",ARRAY(30,3)="Long List Lookup: ^101.75"
S ARRAY(40,1)="Long List Parameter: "
S CIDX=0 F S CIDX=$O(^ORE(101.74,D0,30,CIDX)) Q:CIDX'>0 D
.S ISCOMBO=0,CNAME=""
.S IDX="" F S IDX=$O(ARRAY(IDX)) Q:IDX="" D
..I IDX>10,'ISCOMBO Q
..S NODE=$G(^ORE(101.74,D0,30,CIDX,IDX))
..S PIECE=0 F S PIECE=$O(ARRAY(IDX,PIECE)) Q:PIECE'>0 D
...I IDX=0,PIECE=1 D Q
....S CNAME=$P(NODE,U)
....S HEAD="-- Begin Cell: "_CNAME_" -"
....S TMP=70-$L(HEAD) F X=1:1:TMP S HEAD=HEAD_"-"
....S CNT=CNT+1,^TMP(SUB,$J,CNT)=" "
....D SETTEXT^ORIMGR(HEAD,"",SUB,.CNT,70," ")
...I IDX=0,PIECE=2,$P(NODE,U,PIECE)>0 S ISCOMBO=$$ISCOMBO($P(NODE,U,PIECE))
...S NAME=$P(ARRAY(IDX,PIECE),U),TMP=$P(ARRAY(IDX,PIECE),U,2)
...S:TMP=1 VALUE=$S($P(NODE,U,PIECE)=1:"Yes",1:"No") S:TMP="" VALUE=$P(NODE,U,PIECE)
...I TMP>1,$P(NODE,U,PIECE)>0 S VALUE=$$GET1^DIQ(TMP,$P(NODE,U,PIECE)_",",.01)
...D SETTEXT^ORIMGR(NAME,VALUE,SUB,.CNT,28," ")
.S HEAD="-- End Cell: "_CNAME_" -",TMP=70-$L(HEAD) F X=1:1:TMP S HEAD=HEAD_"-"
.D SETTEXT^ORIMGR(HEAD,"",SUB,.CNT,70," ")
S CNT=0 F S CNT=$O(^TMP(SUB,$J,CNT)) Q:CNT'>0 D
.S X=^TMP(SUB,$J,CNT) D ^DIWP
K ^TMP(SUB,$J)
Q
;
ISCOMBO(IDX) ;
N NAME
S NAME=$P($G(^ORI(101.73,IDX,0)),U,3)
I $E(NAME,1,2)'="pt" Q 0
I $E(NAME,1,5)="ptCBO" Q 1
I NAME="ptCheckListBox" Q 1
I NAME="ptListBox" Q 1
Q 0
;
CELLDATA(DFN,USER,EID,SUB,IDS,DARRAY,ARRAY) ;
N MPFIEN,REQDATA,RET
S MPFIEN=$P($G(^ORE(101.74,EID,40)),U)
M REQDATA("data")=DARRAY
S RET=$$ONCLICKEXECODE^ORIUTL(SUB,DFN,USER,"BUILD",IDS,MPFIEN,.REQDATA)
I 'RET D SETERROR(.ARRAY,$P(RET,U,2)) Q 0
Q 1
;
GETEDITOR(DFN,USER,IDS,PKG,EID,DARRAY,ARRAY) ;
N SUB
S SUB="OREDITOR CELL DATA"
K ^TMP(SUB,$J)
I EID=0 D SETERROR(.ARRAY,"Editor ID not found") Q 0
D SETHEAD(EID,SUB)
I '$$LAYOUT(EID,SUB,.ARRAY) Q 0
I '$$CELLDATA(DFN,USER,EID,SUB,IDS,.DARRAY,.ARRAY) Q 0
K ^TMP(SUB,$J,"OREDITOR INDEX")
M ARRAY("editor")=^TMP(SUB,$J)
Q 1
;
LAYOUT(EID,SUB,ARRAY) ;
N CNT,GCNTRL,FAIL,IDX,NODE,X0,X10,X30,NUM
S IDX=0,CNT=0,FAIL=0 F S IDX=$O(^ORE(101.74,EID,30,IDX)) Q:IDX'>0!(FAIL=1) D
.S X0=$G(^ORE(101.74,EID,30,IDX,0))
.S X10=$G(^ORE(101.74,EID,30,IDX,10)),X30=$G(^ORE(101.74,EID,30,IDX,30))
.S GCNTRL=$$GETCOMP^ORDD71($P(X0,U,2)) I GCNTRL="" D Q
..D SETERROR(.ARRAY,"Editor control for cell "_$P(NODE,U)_" not found.") S FAIL=1
.S CNT=CNT+1
.S ^TMP(SUB,$J,"layout",CNT,"id")=$P(X0,U),^TMP(SUB,$J,"layout",CNT,"prompt")=GCNTRL
.S ^TMP(SUB,$J,"layout",CNT,"disabled")=$S($P(X0,U,3)="true":"true",1:"false")
.S ^TMP(SUB,$J,"OREDITOR INDEX",$P(X0,U))=CNT
.;
.S ^TMP(SUB,$J,"layout",CNT,"label")=$P(X10,U)
.S ^TMP(SUB,$J,"layout",CNT,"column")=($P(X10,U,2)-1),^TMP(SUB,$J,"layout",CNT,"row")=($P(X10,U,3)-1)
.S ^TMP(SUB,$J,"layout",CNT,"columnSpan")=$P(X10,U,4),^TMP(SUB,$J,"layout",CNT,"rowSpan")=$P(X10,U,5)
.S:$P(X10,U,6)'="" ^TMP(SUB,$J,"layout",CNT,"required")=$P(X10,U,6)
.S:$P(X10,U,7)'="" ^TMP(SUB,$J,"layout",CNT,"hasDefaults")=$P(X10,U,7)
.;
.S NUM=0 F S NUM=$O(^ORE(101.74,EID,30,IDX,41,NUM)) Q:'NUM D
..S ^TMP(SUB,$J,"layout",CNT,"hint","\",NUM)=^ORE(101.74,EID,30,IDX,41,NUM,0)_$C(13)_$C(10)
.;
.S:$P(X30,U)'="" ^TMP(SUB,$J,"layout",CNT,"needSort")=$P(X30,U)
.S:$P(X30,U,2)'="" ^TMP(SUB,$J,"layout",CNT,"aboveLine")=$P(X30,U,2)
.I +$P(X30,U,3)>0 S ^TMP(SUB,$J,"layout",CNT,"longListId")=$P(X30,U,3)
.I $P($G(^ORE(101.74,EID,30,IDX,40)),U)'="" S ^TMP(SUB,$J,"layout",CNT,"longListParameter")=$P(^ORE(101.74,EID,30,IDX,40),U)
Q $S(FAIL=1:0,1:1)
;
LONGLIST(RESULTS,IJSON) ;
N DFN,EID,ERROR,IDS,INFOARRAY,INPUTS,MPFIEN,RET,SUB,TARRAY,TEMPARR
D DECODE^XLFJSON("IJSON","TEMPARR","ERROR")
S SUB="OREDITOR LONGLIST"
K ^TMP(SUB,$J)
S RESULTS=$NA(^TMP(SUB,$J))
S IDS=$G(TEMPARR("id")) I IDS="" D SETERROR(.TARRAY,"Panel ID not passed in") G LONGLISTX
I '$$GETINFOARRAY^ORIRPCCL(.INFOARRAY,IDS,.TARRAY) G LONGLISTX
S EID=+$P($G(INFOARRAY(30)),U,5) I EID=0 D SETERROR(.TARRAY,"Editor ID not passed in") G LONGLISTX
S MPFIEN=+$G(TEMPARR("longListId")) I MPFIEN=0 D SETERROR(.TARRAY,"LongList Lookup ID not passed in") G LONGLISTX
S DFN=+$G(TEMPARR("patientId")) I DFN=0 D SETERROR(.TARRAY,"Patient id not found") G LONGLISTX
S INPUTS("editorId")=EID
S INPUTS("startFrom")=$G(TEMPARR("startFrom")),INPUTS("direction")=$G(TEMPARR("direction"),1)
I $G(TEMPARR("longListParameter"))'="" S INPUTS("longListParameter")=TEMPARR("longListParameter")
;M INPUTS("requiredData")=REQDATA
S RET=$$ONCLICKEXECODE^ORIUTL(SUB,DFN,0,"LOOKUP",IDS,MPFIEN,.INPUTS)
I 'RET D SETERROR(.TARRAY,$P(RET,U,2)) G LONGLISTX
S TARRAY("success")="true"
M TARRAY=^TMP(SUB,$J)
LONGLISTX ;
K ^TMP(SUB,$J)
D ENCODE^XLFJSON("TARRAY",$NA(^TMP(SUB,$J)),"ERROR")
Q
;
SAVE(RESULTS,IJSON) ;
N ARRAY,DATA,DFN,EID,FAIL,ID,IDS,IDX,INFOARRAY,INPUTS,PIDX,REQDATA,SRCDATA,SUB,USER,VALUES,TARRAY
S SUB="OREDITOR SAVE DATA"
K ^TMP(SUB,$J)
S RESULTS=$NA(^TMP(SUB,$J))
D DECODE^XLFJSON("IJSON","INPUTS","ERROR")
S DFN=+$G(INPUTS("patientId")),IDS=$G(INPUTS("id")),EID=+$G(INPUTS("editor","id")),USER=+$G(INPUTS("connectionUser"))
I 'DFN D SETERROR(.TARRAY,"Patient DFN not found") G SAVEX
I 'EID D SETERROR(.TARRAY,"Editor ID not found") G SAVEX
I 'IDS D SETERROR(.TARRAY,"Panel ID not found") G SAVEX
;I 'USER D SETERROR(.TARRAY,"User Id not found") G SAVEX
I '$$GETINFOARRAY^ORIRPCCL(.INFOARRAY,IDS,.TARRAY) G SAVEX
S IDX=0,FAIL=0 F S IDX=$O(INPUTS("editor","layout",IDX)) Q:IDX'>0!(FAIL=1) D
.S ID=$G(INPUTS("editor","layout",IDX,"id")) I ID="" S FAIL=1 D SETERROR(.TARRAY,"Editor component item number "_IDX_" name not found.") Q
.M DATA(ID,"values")=INPUTS("editor","layout",IDX,"values")
I FAIL=1 G SAVEX
I '$$REQDATA^ORIRPCCL(.INFOARRAY,.INPUTS,.TARRAY,.REQDATA) G SAVEX
I '$$SAVEDATA^ORHEDITOR(DFN,USER,EID,IDS,SUB,.DATA,.REQDATA,.SRCDATA,.TARRAY) G SAVEX
S TARRAY("success")="true"
SAVEX ;
K ^TMP(SUB,$J)
D ENCODE^XLFJSON("TARRAY",$NA(^TMP(SUB,$J)),"ERROR")
Q
;
SETERROR(ARRAY,ERROR) ;
S ARRAY("success")="false"
S ARRAY("error")=ERROR
Q
;
SETHEAD(EID,SUB) ;
N NODE,VALUE,NUM
S NODE=$G(^ORE(101.74,EID,0))
S ^TMP(SUB,$J,"id")=EID,^TMP(SUB,$J,"name")=$P(NODE,U),^TMP(SUB,$J,"displayText")=$P(NODE,U,2)
S ^TMP(SUB,$J,"disabled")=$S($P(NODE,U,3)=1:"true",1:"false")
S ^TMP(SUB,$J,"columns")=$P(NODE,U,4),^TMP(SUB,$J,"rows")=$P(NODE,U,5)
S ^TMP(SUB,$J,"hideButtons")=$S($P(NODE,U,6)=1:"true",1:"false")
S VALUE=$P(NODE,U,7) I VALUE="" S VALUE="Save"
S ^TMP(SUB,$J,"buttonTextSave")=VALUE
S VALUE=$P(NODE,U,8) I VALUE="" S VALUE="Cancel"
S ^TMP(SUB,$J,"buttonTextCancel")=VALUE
S NUM=0 F S NUM=$O(^ORE(101.74,EID,20,NUM)) Q:'NUM D
.S ^TMP(SUB,$J,"description","\",NUM)=^ORE(101.74,EID,20,NUM,0)_$C(13)_$C(10)
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HOREDITOR 7867 printed May 25, 2026@12:34:25 Page 2
OREDITOR ; SLC/AGP - Information panel editor API ;Mar 12, 2025@09:17:36
+1 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**508**;Dec 17, 1997;Build 39
+2 ;
+3 ;
+4 QUIT
+5 ;
INQEDITOR ;
+1 NEW ARRAY,CNAME,CIDX,CNT,DIWF,DIWL,HEAD,IDX,ISCOMBO,NAME,NODE,PIECE,SUB,TMP,VALUE,X
+2 SET SUB="OREDITOR INQEDITOR"
SET CNT=0
SET DIWF="C80N"
SET DIWL=2
+3 KILL ^TMP(SUB,$JOB)
+4 SET NODE=$GET(^ORE(101.74,D0,50))
IF $PIECE(NODE,U)>0!($PIECE(NODE,U,2)>0)
Begin DoDot:1
+5 SET TMP=$PIECE($GET(^ORW(101.76,+$PIECE(NODE,U),0)),U)
+6 DO SETTEXT^ORIMGR("Schema: ",TMP,SUB,.CNT,28," ")
+7 SET TMP=$PIECE($GET(^ORW(101.76,+$PIECE(NODE,U,2),0)),U)
+8 DO SETTEXT^ORIMGR("UI Schema: ",TMP,SUB,.CNT,28," ")
+9 SET CNT=0
FOR
SET CNT=$ORDER(^TMP(SUB,$JOB,CNT))
if CNT'>0
QUIT
Begin DoDot:2
+10 SET X=^TMP(SUB,$JOB,CNT)
DO ^DIWP
End DoDot:2
End DoDot:1
KILL ^TMP(SUB,$JOB)
QUIT
+11 SET ARRAY(0,1)="Cell Name: "
SET ARRAY(0,2)="Editor Type: ^101.74"
SET ARRAY(0,3)="Disabled: "
+12 SET ARRAY(10,1)="Label: "
SET ARRAY(10,2)="Column: "
SET ARRAY(10,3)="Row: "
SET ARRAY(10,4)="Column Span: "
SET ARRAY(10,5)="Row Span: "
SET ARRAY(10,6)="Required: ^1"
SET ARRAY(10,3)="Set Default Value: ^1"
+13 SET ARRAY(30,1)="Need Sort: ^1"
SET ARRAY(30,2)="Show Possible Values: ^1"
SET ARRAY(30,2)="Show Possible Values: ^1"
SET ARRAY(30,3)="Long List Lookup: ^101.75"
+14 SET ARRAY(40,1)="Long List Parameter: "
+15 SET CIDX=0
FOR
SET CIDX=$ORDER(^ORE(101.74,D0,30,CIDX))
if CIDX'>0
QUIT
Begin DoDot:1
+16 SET ISCOMBO=0
SET CNAME=""
+17 SET IDX=""
FOR
SET IDX=$ORDER(ARRAY(IDX))
if IDX=""
QUIT
Begin DoDot:2
+18 IF IDX>10
IF 'ISCOMBO
QUIT
+19 SET NODE=$GET(^ORE(101.74,D0,30,CIDX,IDX))
+20 SET PIECE=0
FOR
SET PIECE=$ORDER(ARRAY(IDX,PIECE))
if PIECE'>0
QUIT
Begin DoDot:3
+21 IF IDX=0
IF PIECE=1
Begin DoDot:4
+22 SET CNAME=$PIECE(NODE,U)
+23 SET HEAD="-- Begin Cell: "_CNAME_" -"
+24 SET TMP=70-$LENGTH(HEAD)
FOR X=1:1:TMP
SET HEAD=HEAD_"-"
+25 SET CNT=CNT+1
SET ^TMP(SUB,$JOB,CNT)=" "
+26 DO SETTEXT^ORIMGR(HEAD,"",SUB,.CNT,70," ")
End DoDot:4
QUIT
+27 IF IDX=0
IF PIECE=2
IF $PIECE(NODE,U,PIECE)>0
SET ISCOMBO=$$ISCOMBO($PIECE(NODE,U,PIECE))
+28 SET NAME=$PIECE(ARRAY(IDX,PIECE),U)
SET TMP=$PIECE(ARRAY(IDX,PIECE),U,2)
+29 if TMP=1
SET VALUE=$SELECT($PIECE(NODE,U,PIECE)=1:"Yes",1:"No")
if TMP=""
SET VALUE=$PIECE(NODE,U,PIECE)
+30 IF TMP>1
IF $PIECE(NODE,U,PIECE)>0
SET VALUE=$$GET1^DIQ(TMP,$PIECE(NODE,U,PIECE)_",",.01)
+31 DO SETTEXT^ORIMGR(NAME,VALUE,SUB,.CNT,28," ")
End DoDot:3
End DoDot:2
+32 SET HEAD="-- End Cell: "_CNAME_" -"
SET TMP=70-$LENGTH(HEAD)
FOR X=1:1:TMP
SET HEAD=HEAD_"-"
+33 DO SETTEXT^ORIMGR(HEAD,"",SUB,.CNT,70," ")
End DoDot:1
+34 SET CNT=0
FOR
SET CNT=$ORDER(^TMP(SUB,$JOB,CNT))
if CNT'>0
QUIT
Begin DoDot:1
+35 SET X=^TMP(SUB,$JOB,CNT)
DO ^DIWP
End DoDot:1
+36 KILL ^TMP(SUB,$JOB)
+37 QUIT
+38 ;
ISCOMBO(IDX) ;
+1 NEW NAME
+2 SET NAME=$PIECE($GET(^ORI(101.73,IDX,0)),U,3)
+3 IF $EXTRACT(NAME,1,2)'="pt"
QUIT 0
+4 IF $EXTRACT(NAME,1,5)="ptCBO"
QUIT 1
+5 IF NAME="ptCheckListBox"
QUIT 1
+6 IF NAME="ptListBox"
QUIT 1
+7 QUIT 0
+8 ;
CELLDATA(DFN,USER,EID,SUB,IDS,DARRAY,ARRAY) ;
+1 NEW MPFIEN,REQDATA,RET
+2 SET MPFIEN=$PIECE($GET(^ORE(101.74,EID,40)),U)
+3 MERGE REQDATA("data")=DARRAY
+4 SET RET=$$ONCLICKEXECODE^ORIUTL(SUB,DFN,USER,"BUILD",IDS,MPFIEN,.REQDATA)
+5 IF 'RET
DO SETERROR(.ARRAY,$PIECE(RET,U,2))
QUIT 0
+6 QUIT 1
+7 ;
GETEDITOR(DFN,USER,IDS,PKG,EID,DARRAY,ARRAY) ;
+1 NEW SUB
+2 SET SUB="OREDITOR CELL DATA"
+3 KILL ^TMP(SUB,$JOB)
+4 IF EID=0
DO SETERROR(.ARRAY,"Editor ID not found")
QUIT 0
+5 DO SETHEAD(EID,SUB)
+6 IF '$$LAYOUT(EID,SUB,.ARRAY)
QUIT 0
+7 IF '$$CELLDATA(DFN,USER,EID,SUB,IDS,.DARRAY,.ARRAY)
QUIT 0
+8 KILL ^TMP(SUB,$JOB,"OREDITOR INDEX")
+9 MERGE ARRAY("editor")=^TMP(SUB,$JOB)
+10 QUIT 1
+11 ;
LAYOUT(EID,SUB,ARRAY) ;
+1 NEW CNT,GCNTRL,FAIL,IDX,NODE,X0,X10,X30,NUM
+2 SET IDX=0
SET CNT=0
SET FAIL=0
FOR
SET IDX=$ORDER(^ORE(101.74,EID,30,IDX))
if IDX'>0!(FAIL=1)
QUIT
Begin DoDot:1
+3 SET X0=$GET(^ORE(101.74,EID,30,IDX,0))
+4 SET X10=$GET(^ORE(101.74,EID,30,IDX,10))
SET X30=$GET(^ORE(101.74,EID,30,IDX,30))
+5 SET GCNTRL=$$GETCOMP^ORDD71($PIECE(X0,U,2))
IF GCNTRL=""
Begin DoDot:2
+6 DO SETERROR(.ARRAY,"Editor control for cell "_$PIECE(NODE,U)_" not found.")
SET FAIL=1
End DoDot:2
QUIT
+7 SET CNT=CNT+1
+8 SET ^TMP(SUB,$JOB,"layout",CNT,"id")=$PIECE(X0,U)
SET ^TMP(SUB,$JOB,"layout",CNT,"prompt")=GCNTRL
+9 SET ^TMP(SUB,$JOB,"layout",CNT,"disabled")=$SELECT($PIECE(X0,U,3)="true":"true",1:"false")
+10 SET ^TMP(SUB,$JOB,"OREDITOR INDEX",$PIECE(X0,U))=CNT
+11 ;
+12 SET ^TMP(SUB,$JOB,"layout",CNT,"label")=$PIECE(X10,U)
+13 SET ^TMP(SUB,$JOB,"layout",CNT,"column")=($PIECE(X10,U,2)-1)
SET ^TMP(SUB,$JOB,"layout",CNT,"row")=($PIECE(X10,U,3)-1)
+14 SET ^TMP(SUB,$JOB,"layout",CNT,"columnSpan")=$PIECE(X10,U,4)
SET ^TMP(SUB,$JOB,"layout",CNT,"rowSpan")=$PIECE(X10,U,5)
+15 if $PIECE(X10,U,6)'=""
SET ^TMP(SUB,$JOB,"layout",CNT,"required")=$PIECE(X10,U,6)
+16 if $PIECE(X10,U,7)'=""
SET ^TMP(SUB,$JOB,"layout",CNT,"hasDefaults")=$PIECE(X10,U,7)
+17 ;
+18 SET NUM=0
FOR
SET NUM=$ORDER(^ORE(101.74,EID,30,IDX,41,NUM))
if 'NUM
QUIT
Begin DoDot:2
+19 SET ^TMP(SUB,$JOB,"layout",CNT,"hint","\",NUM)=^ORE(101.74,EID,30,IDX,41,NUM,0)_$CHAR(13)_$CHAR(10)
End DoDot:2
+20 ;
+21 if $PIECE(X30,U)'=""
SET ^TMP(SUB,$JOB,"layout",CNT,"needSort")=$PIECE(X30,U)
+22 if $PIECE(X30,U,2)'=""
SET ^TMP(SUB,$JOB,"layout",CNT,"aboveLine")=$PIECE(X30,U,2)
+23 IF +$PIECE(X30,U,3)>0
SET ^TMP(SUB,$JOB,"layout",CNT,"longListId")=$PIECE(X30,U,3)
+24 IF $PIECE($GET(^ORE(101.74,EID,30,IDX,40)),U)'=""
SET ^TMP(SUB,$JOB,"layout",CNT,"longListParameter")=$PIECE(^ORE(101.74,EID,30,IDX,40),U)
End DoDot:1
+25 QUIT $SELECT(FAIL=1:0,1:1)
+26 ;
LONGLIST(RESULTS,IJSON) ;
+1 NEW DFN,EID,ERROR,IDS,INFOARRAY,INPUTS,MPFIEN,RET,SUB,TARRAY,TEMPARR
+2 DO DECODE^XLFJSON("IJSON","TEMPARR","ERROR")
+3 SET SUB="OREDITOR LONGLIST"
+4 KILL ^TMP(SUB,$JOB)
+5 SET RESULTS=$NAME(^TMP(SUB,$JOB))
+6 SET IDS=$GET(TEMPARR("id"))
IF IDS=""
DO SETERROR(.TARRAY,"Panel ID not passed in")
GOTO LONGLISTX
+7 IF '$$GETINFOARRAY^ORIRPCCL(.INFOARRAY,IDS,.TARRAY)
GOTO LONGLISTX
+8 SET EID=+$PIECE($GET(INFOARRAY(30)),U,5)
IF EID=0
DO SETERROR(.TARRAY,"Editor ID not passed in")
GOTO LONGLISTX
+9 SET MPFIEN=+$GET(TEMPARR("longListId"))
IF MPFIEN=0
DO SETERROR(.TARRAY,"LongList Lookup ID not passed in")
GOTO LONGLISTX
+10 SET DFN=+$GET(TEMPARR("patientId"))
IF DFN=0
DO SETERROR(.TARRAY,"Patient id not found")
GOTO LONGLISTX
+11 SET INPUTS("editorId")=EID
+12 SET INPUTS("startFrom")=$GET(TEMPARR("startFrom"))
SET INPUTS("direction")=$GET(TEMPARR("direction"),1)
+13 IF $GET(TEMPARR("longListParameter"))'=""
SET INPUTS("longListParameter")=TEMPARR("longListParameter")
+14 ;M INPUTS("requiredData")=REQDATA
+15 SET RET=$$ONCLICKEXECODE^ORIUTL(SUB,DFN,0,"LOOKUP",IDS,MPFIEN,.INPUTS)
+16 IF 'RET
DO SETERROR(.TARRAY,$PIECE(RET,U,2))
GOTO LONGLISTX
+17 SET TARRAY("success")="true"
+18 MERGE TARRAY=^TMP(SUB,$JOB)
LONGLISTX ;
+1 KILL ^TMP(SUB,$JOB)
+2 DO ENCODE^XLFJSON("TARRAY",$NAME(^TMP(SUB,$JOB)),"ERROR")
+3 QUIT
+4 ;
SAVE(RESULTS,IJSON) ;
+1 NEW ARRAY,DATA,DFN,EID,FAIL,ID,IDS,IDX,INFOARRAY,INPUTS,PIDX,REQDATA,SRCDATA,SUB,USER,VALUES,TARRAY
+2 SET SUB="OREDITOR SAVE DATA"
+3 KILL ^TMP(SUB,$JOB)
+4 SET RESULTS=$NAME(^TMP(SUB,$JOB))
+5 DO DECODE^XLFJSON("IJSON","INPUTS","ERROR")
+6 SET DFN=+$GET(INPUTS("patientId"))
SET IDS=$GET(INPUTS("id"))
SET EID=+$GET(INPUTS("editor","id"))
SET USER=+$GET(INPUTS("connectionUser"))
+7 IF 'DFN
DO SETERROR(.TARRAY,"Patient DFN not found")
GOTO SAVEX
+8 IF 'EID
DO SETERROR(.TARRAY,"Editor ID not found")
GOTO SAVEX
+9 IF 'IDS
DO SETERROR(.TARRAY,"Panel ID not found")
GOTO SAVEX
+10 ;I 'USER D SETERROR(.TARRAY,"User Id not found") G SAVEX
+11 IF '$$GETINFOARRAY^ORIRPCCL(.INFOARRAY,IDS,.TARRAY)
GOTO SAVEX
+12 SET IDX=0
SET FAIL=0
FOR
SET IDX=$ORDER(INPUTS("editor","layout",IDX))
if IDX'>0!(FAIL=1)
QUIT
Begin DoDot:1
+13 SET ID=$GET(INPUTS("editor","layout",IDX,"id"))
IF ID=""
SET FAIL=1
DO SETERROR(.TARRAY,"Editor component item number "_IDX_" name not found.")
QUIT
+14 MERGE DATA(ID,"values")=INPUTS("editor","layout",IDX,"values")
End DoDot:1
+15 IF FAIL=1
GOTO SAVEX
+16 IF '$$REQDATA^ORIRPCCL(.INFOARRAY,.INPUTS,.TARRAY,.REQDATA)
GOTO SAVEX
+17 IF '$$SAVEDATA^ORHEDITOR(DFN,USER,EID,IDS,SUB,.DATA,.REQDATA,.SRCDATA,.TARRAY)
GOTO SAVEX
+18 SET TARRAY("success")="true"
SAVEX ;
+1 KILL ^TMP(SUB,$JOB)
+2 DO ENCODE^XLFJSON("TARRAY",$NAME(^TMP(SUB,$JOB)),"ERROR")
+3 QUIT
+4 ;
SETERROR(ARRAY,ERROR) ;
+1 SET ARRAY("success")="false"
+2 SET ARRAY("error")=ERROR
+3 QUIT
+4 ;
SETHEAD(EID,SUB) ;
+1 NEW NODE,VALUE,NUM
+2 SET NODE=$GET(^ORE(101.74,EID,0))
+3 SET ^TMP(SUB,$JOB,"id")=EID
SET ^TMP(SUB,$JOB,"name")=$PIECE(NODE,U)
SET ^TMP(SUB,$JOB,"displayText")=$PIECE(NODE,U,2)
+4 SET ^TMP(SUB,$JOB,"disabled")=$SELECT($PIECE(NODE,U,3)=1:"true",1:"false")
+5 SET ^TMP(SUB,$JOB,"columns")=$PIECE(NODE,U,4)
SET ^TMP(SUB,$JOB,"rows")=$PIECE(NODE,U,5)
+6 SET ^TMP(SUB,$JOB,"hideButtons")=$SELECT($PIECE(NODE,U,6)=1:"true",1:"false")
+7 SET VALUE=$PIECE(NODE,U,7)
IF VALUE=""
SET VALUE="Save"
+8 SET ^TMP(SUB,$JOB,"buttonTextSave")=VALUE
+9 SET VALUE=$PIECE(NODE,U,8)
IF VALUE=""
SET VALUE="Cancel"
+10 SET ^TMP(SUB,$JOB,"buttonTextCancel")=VALUE
+11 SET NUM=0
FOR
SET NUM=$ORDER(^ORE(101.74,EID,20,NUM))
if 'NUM
QUIT
Begin DoDot:1
+12 SET ^TMP(SUB,$JOB,"description","\",NUM)=^ORE(101.74,EID,20,NUM,0)_$CHAR(13)_$CHAR(10)
End DoDot:1
+13 QUIT
+14 ;