ORHEDITOR ; SLC/AGP - HTML Dialog Routine ;Apr 16, 2025@07:53:38
;;3.0;ORDER ENTRY/RESULTS REPORTING;**508**;Dec 17, 1997;Build 39
;
; Reference to MAKE^TIUSRVP supported by DBIA # 3375
; Reference to ^TIU(8925.1,+TITLE,0) supported by DBIA # 4478
; Reference to ^SC(NOTEINFO("location"),0),U) supported by DBIA # 10040
;
Q
;
BLDADDVALUES(DATA,SRCDATA,SCHEMA,DSCHEMA) ;
N DITEM,DNAME,DTYPE,DVALUE
K SCHEMA("vistaRequiredValues")
K SCHEMA("vistaSourceData")
S DTYPE="" F S DTYPE=$O(DATA(DTYPE)) Q:DTYPE="" D
.S SCHEMA("vistaRequiredValues","properties",DTYPE,"type")="object"
.S DNAME="" F S DNAME=$O(DATA(DTYPE,DNAME)) Q:DNAME="" D
..S DVALUE=$G(DATA(DTYPE,DNAME))
..S SCHEMA("vistaRequiredValues","properties",DTYPE,"properties",DNAME,"type")="string"
..S DSCHEMA("vistaRequiredValues",DTYPE,DNAME)=DVALUE
S DNAME="" F S DNAME=$O(SRCDATA(DNAME)) Q:DNAME="" D
.S DVALUE=$G(SRCDATA(DNAME)) I DVALUE="" Q
.S SCHEMA("vistaSourceData","properties",DNAME,"type")="string"
.S DSCHEMA("vistaSourceData",DNAME)=DVALUE
I $D(SCHEMA("vistaRequiredValues","properties")) D
.S SCHEMA("vistaRequiredValues","additionalProperties")="true"
.S SCHEMA("vistaRequiredValues","title")="vistaRequiredValuesDatNum"
.S SCHEMA("vistaRequiredValues","type")="object"
I $D(SCHEMA("vistaSourceData","properties")) D
.S SCHEMA("vistaSourceData","additionalProperties")="false"
.S SCHEMA("vistaSourceData","title")="SourceDatum"
.S SCHEMA("vistaSourceData","type")="object"
Q
;
;
GETEDITOR(DFN,USER,IDS,PKG,EID,DARRAY,RESULTS) ;
N CACHESUB,CNT,DATA,DSCHEMA,MPFIEN,REQDATA,RET,SCHEMA,SRCDATA,SUB,TMP,UISCHEMA,TYPE
S SUB="ORHEDITOR DATA",CACHESUB="ORHEDITOR CACHE"
K ^TMP(SUB,$J)
S SRCDATA("id")=IDS,SRCDATA("patient")=DFN
S SRCDATA("package")=PKG,SRCDATA("connectedUser")=USER
S SRCDATA("editorId")=EID
I EID=0 D SETERROR(.RESULTS,"Editor ID not found") Q 0
S TMP=$$GETSCHEMAS(EID,.SCHEMA,.UISCHEMA) I '+TMP D SETERROR(.RESULTS,$P(TMP,U,2)) Q 0
D BLDADDVALUES(.DARRAY,.SRCDATA,.SCHEMA,.DSCHEMA)
S MPFIEN=$P($G(^ORE(101.74,EID,40)),U)
M REQDATA("data")=DSCHEMA
M REQDATA("schema")=SCHEMA
M REQDATA("uiSchema")=UISCHEMA
M REQDATA("requiredInputs")=DARRAY
M REQDATA("sourceInputs")=SRCDATA
S RET=$$ONCLICKEXECODE^ORIUTL(SUB,DFN,USER,"BUILD",IDS,MPFIEN,.REQDATA,CACHESUB)
I $G(^TMP(SUB,$J,"success"))'="true" D SETERROR(.RESULTS,"Failed to load Web Content file entry") Q 0
S CNT=0 F TYPE="Schema","UISchema","Data" D
.I '$D(^TMP(SUB,$J,TYPE)) Q
.S CNT=CNT+1
.S RESULTS("contents",CNT,"contentType")=TYPE
.S RESULTS("contents",CNT,"name")=TYPE
.M RESULTS("contents",CNT,"data")=^TMP(SUB,$J,TYPE)
K ^TMP(SUB,$J,"OREDITOR INDEX")
Q 1
;
GETSCHEMA(SID,RESULT) ;
N ARRAY,ERROR,INPUT,NAME,TMP
S INPUT("id")=SID
S NAME=$P($G(^ORW(101.76,SID,0)),U) I NAME="" Q "-1^Could not find schema id# "_SID_"."
D GETWEBCONTENTID^ORWEB(.ARRAY,.INPUT)
I $G(ARRAY("success"))'="true" Q "-1^Schema "_NAME_" could not be loaded from file."
M TMP=ARRAY("contents",1,"data","\") I '$D(TMP) Q "-1^Schema "_NAME_" could not be merge into tmp file."
D DECODE^XLFJSON("TMP","RESULT","ERROR")
I $D(ERROR) Q "-1^Schema "_NAME_" fail decoding from temp file."
Q 1
;
GETSCHEMAS(EID,SCHEMA,UISCHEMA) ;
N NODE,SID,TMP
S NODE=$G(^ORE(101.74,EID,50))
S SID=+$P(NODE,U) I SID=0 Q "-1^Schema id not found."
S TMP=$$GETSCHEMA(SID,.SCHEMA) I '+TMP Q TMP
S SID=+$P(NODE,U,2) I SID=0 Q "-1^UI Schema id not found."
K TMP S TMP=$$GETSCHEMA(SID,.UISCHEMA) I '+TMP Q TMP
Q 1
;
SAVE(RESULTS,IJSON) ;
N ADDVALUES,DATA,DFN,EID,IDS,INFOARRAY,INPUTS,SRCDATA,SUB,SUBSCRIPT,TARRAY,USER
S SUBSCRIPT="ORHEDITOR SAVE DATA"
K ^TMP(SUBSCRIPT,$J)
S RESULTS=$NA(^TMP(SUBSCRIPT,$J))
D DECODE^XLFJSON("IJSON","INPUTS","ERROR")
S SUB="" F S SUB=$O(INPUTS(SUB)) Q:SUB="" D
.I SUB="vistaRequiredValues" M ADDVALUES=INPUTS(SUB) Q
.I SUB="vistaSourceData" M SRCDATA=INPUTS(SUB) Q
.M DATA(SUB)=INPUTS(SUB)
;
S DFN=+$G(SRCDATA("patient")),IDS=$G(SRCDATA("id")),EID=+$G(SRCDATA("editorId")),USER=+$G(SRCDATA("connectedUser"))
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
;
;AGP TODO DETERMINE IF WE CAN BRING BACK REQUIRED CHECK
;I '$$REQDATA^ORIRPCCL(.INFOARRAY,.INPUTS,.TARRAY,.REQDATA) G SAVEX
I '$$SAVEDATA(DFN,USER,EID,IDS,SUBSCRIPT,.DATA,.ADDVALUES,.SRCDATA,.TARRAY) G SAVEX
S TARRAY("success")="true"
SAVEX ;
K ^TMP(SUBSCRIPT,$J)
D ENCODE^XLFJSON("TARRAY",$NA(^TMP(SUBSCRIPT,$J)),"ERROR")
Q
;
SAVEDATA(DFN,USER,EID,PIDX,SUB,DATA,REQDATA,SRCDATA,TARRAY) ;
N MPFIEN,NODE,NOTEINFO,REFRESH,RET,ROUTINE,RTN,SAVEDATA,TAG,TEMP,TITLE
S NODE=$G(^ORE(101.74,EID,40))
S MPFIEN=$P(NODE,U,1)
S TITLE=+$P(NODE,U,3) I TITLE>0,'$$NOTEINFO(.NOTEINFO,.REQDATA,.TARRAY,TITLE) Q 0
S REFRESH=$S($P($G(^ORE(101.74,EID,0)),U,9)=1:"true",1:"false")
I TITLE>0 S SAVEDATA("noteTitleId")=TITLE
M SAVEDATA("data")=DATA
M SAVEDATA("requiredInputs")=REQDATA
M SAVEDATA("sourceInputs")=SRCDATA
S SAVEDATA("createNote")=$S(TITLE>0:1,1:0)
M SAVEDATA("noteCreationData")=NOTEINFO
S RET=$$ONCLICKEXECODE^ORIUTL(SUB,DFN,USER,"SAVE",PIDX,MPFIEN,.SAVEDATA)
I +RET<1 D SETERROR(.TARRAY,$P(RET,U,2)) Q 0
M TARRAY("resultData")=^TMP(SUB,$J,"resultData")
S TARRAY("refreshAllInfoPanels")=REFRESH
I $D(^TMP(SUB,$J,"noteInformation")) M TARRAY("noteInformation")=^TMP(SUB,$J,"noteInformation") Q 1
I TITLE>0,SAVEDATA("createNote")=1,'$$MAKENOTE(SUB,DFN,.NOTEINFO,.TARRAY) Q 0
Q 1
;
SETERROR(ARRAY,ERROR) ;
S ARRAY("success")="false"
S ARRAY("error")=ERROR
Q
;
MAKENOTE(SUB,DFN,NOTEINFO,TARRAY) ;
N CHANGE,CNT,DATETIME,LCNT,ORNOTE,TIUX,VSIT,SUPPRESS,NOASF
S DATETIME=$$NOW^XLFDT
S NOASF=1
S TIUX(1201)=NOTEINFO("visitDateTime") ; entry date and time
S TIUX(1202)=NOTEINFO("user") ; author
S TIUX(1204)=NOTEINFO("user") ; expected signer
;I +COSIGNER>0 S TIUX(1208)=COSIGNER
S TIUX(1301)=$$NOW^XLFDT ; reference date/time (this can be something other than NOW)
S CNT=0,LCNT=0 F S CNT=$O(^TMP(SUB,$J,"noteText",CNT)) Q:CNT'>0 D
.S LCNT=LCNT+1,TIUX("TEXT",LCNT,0)=$G(^TMP(SUB,$J,"noteText",CNT))
D MAKE^TIUSRVP(.ORNOTE,DFN,NOTEINFO("title"),NOTEINFO("visitDateTime"),NOTEINFO("location"),NOTEINFO("visitId"),.TIUX,NOTEINFO("visitString"),"",NOASF)
I 'ORNOTE D SETERROR(.TARRAY,$S($P(ORNOTE,U,2)="":ERROR,1:$P(ORNOTE,U,2))) Q 0
S TARRAY("noteInformation","title")=NOTEINFO("titleName")
S TARRAY("noteInformation","id")=$P(ORNOTE,U)
S TARRAY("noteInformation","details")=$P($$FMTE^XLFDT(NOTEINFO("visitDateTime"),2),"@")_" "_NOTEINFO("titleName")_", "_$P(^SC(NOTEINFO("location"),0),U)_" "_$$TITLE^XLFSTR($P(^VA(200,NOTEINFO("user"),0),U))
S TARRAY("noteInformation","dateTime")=DATETIME
Q 1
;
NOTEINFO(NOTEINFO,REQDATA,TARRAY,TITLE) ;
N ERROR,INCOMPLETE,NODE
S NODE=^TIU(8925.1,+TITLE,0)
I $P(NODE,U)="" D SETERROR(.TARRAY,"Could not find note title name.") Q 0
S NOTEINFO("title")=TITLE
S NOTEINFO("titleName")=$P(NODE,U)
S ERROR="Error with note creation information. "
I $P(NODE,U,4)'="DOC" D SETERROR(.TARRAY,ERROR_"Is the wrong type.") Q 0
I +$$GET1^DIQ(8925.1,TITLE,.07,"I")'=11 D SETERROR(.TARRAY,ERROR_"Is the wrong status.") Q 0
S NOTEINFO("user")=+$G(REQDATA("dataUserInformation","id")) I NOTEINFO("user")=0 D SETERROR(.TARRAY,ERROR_$C(13)_$C(10)_"User Information missing.") Q 0
S NOTEINFO("location")=+$G(REQDATA("dataVisitInformation","locId")) I NOTEINFO("location")=0 D SETERROR(.TARRAY,ERROR_$C(13)_$C(10)_"Location information missing.") Q 0
S NOTEINFO("visitServiceCategory")=$G(REQDATA("dataVisitInformation","visitType")) I NOTEINFO("visitServiceCategory")="" D SETERROR(.TARRAY,ERROR_$C(13)_$C(10)_"Visit Type information missing.") Q 0
S NOTEINFO("visitDateTime")=+$G(REQDATA("dataVisitInformation","visitDateTime")) I NOTEINFO("visitDateTime")=0 D SETERROR(.TARRAY,ERROR_$C(13)_$C(10)_"Visit date time information missing.") Q 0
S NOTEINFO("visitString")=$G(REQDATA("dataVisitInformation","visitString")),NOTEINFO("visitId")=+$G(REQDATA("dataVisitInformation","id"))
I NOTEINFO("visitId")>0 Q 1
I NOTEINFO("visitString")="" D SETERROR(.TARRAY,ERROR_$C(13)_$C(10)_"Visit identifier is missing.") Q 0
S INCOMPLETE=$S(NOTEINFO("visitString")="":1,NOTEINFO("location")=0:1,1:0)
I INCOMPLETE D SETERROR(.TARRAY,ERROR_$C(13)_$C(10)_"Visit identifier is missing.") Q 0
Q 1
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HORHEDITOR 8631 printed May 25, 2026@12:34:59 Page 2
ORHEDITOR ; SLC/AGP - HTML Dialog Routine ;Apr 16, 2025@07:53:38
+1 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**508**;Dec 17, 1997;Build 39
+2 ;
+3 ; Reference to MAKE^TIUSRVP supported by DBIA # 3375
+4 ; Reference to ^TIU(8925.1,+TITLE,0) supported by DBIA # 4478
+5 ; Reference to ^SC(NOTEINFO("location"),0),U) supported by DBIA # 10040
+6 ;
+7 QUIT
+8 ;
BLDADDVALUES(DATA,SRCDATA,SCHEMA,DSCHEMA) ;
+1 NEW DITEM,DNAME,DTYPE,DVALUE
+2 KILL SCHEMA("vistaRequiredValues")
+3 KILL SCHEMA("vistaSourceData")
+4 SET DTYPE=""
FOR
SET DTYPE=$ORDER(DATA(DTYPE))
if DTYPE=""
QUIT
Begin DoDot:1
+5 SET SCHEMA("vistaRequiredValues","properties",DTYPE,"type")="object"
+6 SET DNAME=""
FOR
SET DNAME=$ORDER(DATA(DTYPE,DNAME))
if DNAME=""
QUIT
Begin DoDot:2
+7 SET DVALUE=$GET(DATA(DTYPE,DNAME))
+8 SET SCHEMA("vistaRequiredValues","properties",DTYPE,"properties",DNAME,"type")="string"
+9 SET DSCHEMA("vistaRequiredValues",DTYPE,DNAME)=DVALUE
End DoDot:2
End DoDot:1
+10 SET DNAME=""
FOR
SET DNAME=$ORDER(SRCDATA(DNAME))
if DNAME=""
QUIT
Begin DoDot:1
+11 SET DVALUE=$GET(SRCDATA(DNAME))
IF DVALUE=""
QUIT
+12 SET SCHEMA("vistaSourceData","properties",DNAME,"type")="string"
+13 SET DSCHEMA("vistaSourceData",DNAME)=DVALUE
End DoDot:1
+14 IF $DATA(SCHEMA("vistaRequiredValues","properties"))
Begin DoDot:1
+15 SET SCHEMA("vistaRequiredValues","additionalProperties")="true"
+16 SET SCHEMA("vistaRequiredValues","title")="vistaRequiredValuesDatNum"
+17 SET SCHEMA("vistaRequiredValues","type")="object"
End DoDot:1
+18 IF $DATA(SCHEMA("vistaSourceData","properties"))
Begin DoDot:1
+19 SET SCHEMA("vistaSourceData","additionalProperties")="false"
+20 SET SCHEMA("vistaSourceData","title")="SourceDatum"
+21 SET SCHEMA("vistaSourceData","type")="object"
End DoDot:1
+22 QUIT
+23 ;
+24 ;
GETEDITOR(DFN,USER,IDS,PKG,EID,DARRAY,RESULTS) ;
+1 NEW CACHESUB,CNT,DATA,DSCHEMA,MPFIEN,REQDATA,RET,SCHEMA,SRCDATA,SUB,TMP,UISCHEMA,TYPE
+2 SET SUB="ORHEDITOR DATA"
SET CACHESUB="ORHEDITOR CACHE"
+3 KILL ^TMP(SUB,$JOB)
+4 SET SRCDATA("id")=IDS
SET SRCDATA("patient")=DFN
+5 SET SRCDATA("package")=PKG
SET SRCDATA("connectedUser")=USER
+6 SET SRCDATA("editorId")=EID
+7 IF EID=0
DO SETERROR(.RESULTS,"Editor ID not found")
QUIT 0
+8 SET TMP=$$GETSCHEMAS(EID,.SCHEMA,.UISCHEMA)
IF '+TMP
DO SETERROR(.RESULTS,$PIECE(TMP,U,2))
QUIT 0
+9 DO BLDADDVALUES(.DARRAY,.SRCDATA,.SCHEMA,.DSCHEMA)
+10 SET MPFIEN=$PIECE($GET(^ORE(101.74,EID,40)),U)
+11 MERGE REQDATA("data")=DSCHEMA
+12 MERGE REQDATA("schema")=SCHEMA
+13 MERGE REQDATA("uiSchema")=UISCHEMA
+14 MERGE REQDATA("requiredInputs")=DARRAY
+15 MERGE REQDATA("sourceInputs")=SRCDATA
+16 SET RET=$$ONCLICKEXECODE^ORIUTL(SUB,DFN,USER,"BUILD",IDS,MPFIEN,.REQDATA,CACHESUB)
+17 IF $GET(^TMP(SUB,$JOB,"success"))'="true"
DO SETERROR(.RESULTS,"Failed to load Web Content file entry")
QUIT 0
+18 SET CNT=0
FOR TYPE="Schema","UISchema","Data"
Begin DoDot:1
+19 IF '$DATA(^TMP(SUB,$JOB,TYPE))
QUIT
+20 SET CNT=CNT+1
+21 SET RESULTS("contents",CNT,"contentType")=TYPE
+22 SET RESULTS("contents",CNT,"name")=TYPE
+23 MERGE RESULTS("contents",CNT,"data")=^TMP(SUB,$JOB,TYPE)
End DoDot:1
+24 KILL ^TMP(SUB,$JOB,"OREDITOR INDEX")
+25 QUIT 1
+26 ;
GETSCHEMA(SID,RESULT) ;
+1 NEW ARRAY,ERROR,INPUT,NAME,TMP
+2 SET INPUT("id")=SID
+3 SET NAME=$PIECE($GET(^ORW(101.76,SID,0)),U)
IF NAME=""
QUIT "-1^Could not find schema id# "_SID_"."
+4 DO GETWEBCONTENTID^ORWEB(.ARRAY,.INPUT)
+5 IF $GET(ARRAY("success"))'="true"
QUIT "-1^Schema "_NAME_" could not be loaded from file."
+6 MERGE TMP=ARRAY("contents",1,"data","\")
IF '$DATA(TMP)
QUIT "-1^Schema "_NAME_" could not be merge into tmp file."
+7 DO DECODE^XLFJSON("TMP","RESULT","ERROR")
+8 IF $DATA(ERROR)
QUIT "-1^Schema "_NAME_" fail decoding from temp file."
+9 QUIT 1
+10 ;
GETSCHEMAS(EID,SCHEMA,UISCHEMA) ;
+1 NEW NODE,SID,TMP
+2 SET NODE=$GET(^ORE(101.74,EID,50))
+3 SET SID=+$PIECE(NODE,U)
IF SID=0
QUIT "-1^Schema id not found."
+4 SET TMP=$$GETSCHEMA(SID,.SCHEMA)
IF '+TMP
QUIT TMP
+5 SET SID=+$PIECE(NODE,U,2)
IF SID=0
QUIT "-1^UI Schema id not found."
+6 KILL TMP
SET TMP=$$GETSCHEMA(SID,.UISCHEMA)
IF '+TMP
QUIT TMP
+7 QUIT 1
+8 ;
SAVE(RESULTS,IJSON) ;
+1 NEW ADDVALUES,DATA,DFN,EID,IDS,INFOARRAY,INPUTS,SRCDATA,SUB,SUBSCRIPT,TARRAY,USER
+2 SET SUBSCRIPT="ORHEDITOR SAVE DATA"
+3 KILL ^TMP(SUBSCRIPT,$JOB)
+4 SET RESULTS=$NAME(^TMP(SUBSCRIPT,$JOB))
+5 DO DECODE^XLFJSON("IJSON","INPUTS","ERROR")
+6 SET SUB=""
FOR
SET SUB=$ORDER(INPUTS(SUB))
if SUB=""
QUIT
Begin DoDot:1
+7 IF SUB="vistaRequiredValues"
MERGE ADDVALUES=INPUTS(SUB)
QUIT
+8 IF SUB="vistaSourceData"
MERGE SRCDATA=INPUTS(SUB)
QUIT
+9 MERGE DATA(SUB)=INPUTS(SUB)
End DoDot:1
+10 ;
+11 SET DFN=+$GET(SRCDATA("patient"))
SET IDS=$GET(SRCDATA("id"))
SET EID=+$GET(SRCDATA("editorId"))
SET USER=+$GET(SRCDATA("connectedUser"))
+12 IF 'DFN
DO SETERROR(.TARRAY,"Patient DFN not found")
GOTO SAVEX
+13 IF 'EID
DO SETERROR(.TARRAY,"Editor ID not found")
GOTO SAVEX
+14 IF 'IDS
DO SETERROR(.TARRAY,"Panel ID not found")
GOTO SAVEX
+15 IF 'USER
DO SETERROR(.TARRAY,"User Id not found")
GOTO SAVEX
+16 IF '$$GETINFOARRAY^ORIRPCCL(.INFOARRAY,IDS,.TARRAY)
GOTO SAVEX
+17 ;
+18 ;AGP TODO DETERMINE IF WE CAN BRING BACK REQUIRED CHECK
+19 ;I '$$REQDATA^ORIRPCCL(.INFOARRAY,.INPUTS,.TARRAY,.REQDATA) G SAVEX
+20 IF '$$SAVEDATA(DFN,USER,EID,IDS,SUBSCRIPT,.DATA,.ADDVALUES,.SRCDATA,.TARRAY)
GOTO SAVEX
+21 SET TARRAY("success")="true"
SAVEX ;
+1 KILL ^TMP(SUBSCRIPT,$JOB)
+2 DO ENCODE^XLFJSON("TARRAY",$NAME(^TMP(SUBSCRIPT,$JOB)),"ERROR")
+3 QUIT
+4 ;
SAVEDATA(DFN,USER,EID,PIDX,SUB,DATA,REQDATA,SRCDATA,TARRAY) ;
+1 NEW MPFIEN,NODE,NOTEINFO,REFRESH,RET,ROUTINE,RTN,SAVEDATA,TAG,TEMP,TITLE
+2 SET NODE=$GET(^ORE(101.74,EID,40))
+3 SET MPFIEN=$PIECE(NODE,U,1)
+4 SET TITLE=+$PIECE(NODE,U,3)
IF TITLE>0
IF '$$NOTEINFO(.NOTEINFO,.REQDATA,.TARRAY,TITLE)
QUIT 0
+5 SET REFRESH=$SELECT($PIECE($GET(^ORE(101.74,EID,0)),U,9)=1:"true",1:"false")
+6 IF TITLE>0
SET SAVEDATA("noteTitleId")=TITLE
+7 MERGE SAVEDATA("data")=DATA
+8 MERGE SAVEDATA("requiredInputs")=REQDATA
+9 MERGE SAVEDATA("sourceInputs")=SRCDATA
+10 SET SAVEDATA("createNote")=$SELECT(TITLE>0:1,1:0)
+11 MERGE SAVEDATA("noteCreationData")=NOTEINFO
+12 SET RET=$$ONCLICKEXECODE^ORIUTL(SUB,DFN,USER,"SAVE",PIDX,MPFIEN,.SAVEDATA)
+13 IF +RET<1
DO SETERROR(.TARRAY,$PIECE(RET,U,2))
QUIT 0
+14 MERGE TARRAY("resultData")=^TMP(SUB,$JOB,"resultData")
+15 SET TARRAY("refreshAllInfoPanels")=REFRESH
+16 IF $DATA(^TMP(SUB,$JOB,"noteInformation"))
MERGE TARRAY("noteInformation")=^TMP(SUB,$JOB,"noteInformation")
QUIT 1
+17 IF TITLE>0
IF SAVEDATA("createNote")=1
IF '$$MAKENOTE(SUB,DFN,.NOTEINFO,.TARRAY)
QUIT 0
+18 QUIT 1
+19 ;
SETERROR(ARRAY,ERROR) ;
+1 SET ARRAY("success")="false"
+2 SET ARRAY("error")=ERROR
+3 QUIT
+4 ;
MAKENOTE(SUB,DFN,NOTEINFO,TARRAY) ;
+1 NEW CHANGE,CNT,DATETIME,LCNT,ORNOTE,TIUX,VSIT,SUPPRESS,NOASF
+2 SET DATETIME=$$NOW^XLFDT
+3 SET NOASF=1
+4 ; entry date and time
SET TIUX(1201)=NOTEINFO("visitDateTime")
+5 ; author
SET TIUX(1202)=NOTEINFO("user")
+6 ; expected signer
SET TIUX(1204)=NOTEINFO("user")
+7 ;I +COSIGNER>0 S TIUX(1208)=COSIGNER
+8 ; reference date/time (this can be something other than NOW)
SET TIUX(1301)=$$NOW^XLFDT
+9 SET CNT=0
SET LCNT=0
FOR
SET CNT=$ORDER(^TMP(SUB,$JOB,"noteText",CNT))
if CNT'>0
QUIT
Begin DoDot:1
+10 SET LCNT=LCNT+1
SET TIUX("TEXT",LCNT,0)=$GET(^TMP(SUB,$JOB,"noteText",CNT))
End DoDot:1
+11 DO MAKE^TIUSRVP(.ORNOTE,DFN,NOTEINFO("title"),NOTEINFO("visitDateTime"),NOTEINFO("location"),NOTEINFO("visitId"),.TIUX,NOTEINFO("visitString"),"",NOASF)
+12 IF 'ORNOTE
DO SETERROR(.TARRAY,$SELECT($PIECE(ORNOTE,U,2)="":ERROR,1:$PIECE(ORNOTE,U,2)))
QUIT 0
+13 SET TARRAY("noteInformation","title")=NOTEINFO("titleName")
+14 SET TARRAY("noteInformation","id")=$PIECE(ORNOTE,U)
+15 SET TARRAY("noteInformation","details")=$PIECE($$FMTE^XLFDT(NOTEINFO("visitDateTime"),2),"@")_" "_NOTEINFO("titleName")_", "_$PIECE(^SC(NOTEINFO("location"),0),U)_" "_$$TITLE^XLFSTR($PIECE(^VA(200,NOTEINFO("user"),0),U))
+16 SET TARRAY("noteInformation","dateTime")=DATETIME
+17 QUIT 1
+18 ;
NOTEINFO(NOTEINFO,REQDATA,TARRAY,TITLE) ;
+1 NEW ERROR,INCOMPLETE,NODE
+2 SET NODE=^TIU(8925.1,+TITLE,0)
+3 IF $PIECE(NODE,U)=""
DO SETERROR(.TARRAY,"Could not find note title name.")
QUIT 0
+4 SET NOTEINFO("title")=TITLE
+5 SET NOTEINFO("titleName")=$PIECE(NODE,U)
+6 SET ERROR="Error with note creation information. "
+7 IF $PIECE(NODE,U,4)'="DOC"
DO SETERROR(.TARRAY,ERROR_"Is the wrong type.")
QUIT 0
+8 IF +$$GET1^DIQ(8925.1,TITLE,.07,"I")'=11
DO SETERROR(.TARRAY,ERROR_"Is the wrong status.")
QUIT 0
+9 SET NOTEINFO("user")=+$GET(REQDATA("dataUserInformation","id"))
IF NOTEINFO("user")=0
DO SETERROR(.TARRAY,ERROR_$CHAR(13)_$CHAR(10)_"User Information missing.")
QUIT 0
+10 SET NOTEINFO("location")=+$GET(REQDATA("dataVisitInformation","locId"))
IF NOTEINFO("location")=0
DO SETERROR(.TARRAY,ERROR_$CHAR(13)_$CHAR(10)_"Location information missing.")
QUIT 0
+11 SET NOTEINFO("visitServiceCategory")=$GET(REQDATA("dataVisitInformation","visitType"))
IF NOTEINFO("visitServiceCategory")=""
DO SETERROR(.TARRAY,ERROR_$CHAR(13)_$CHAR(10)_"Visit Type information missing.")
QUIT 0
+12 SET NOTEINFO("visitDateTime")=+$GET(REQDATA("dataVisitInformation","visitDateTime"))
IF NOTEINFO("visitDateTime")=0
DO SETERROR(.TARRAY,ERROR_$CHAR(13)_$CHAR(10)_"Visit date time information missing.")
QUIT 0
+13 SET NOTEINFO("visitString")=$GET(REQDATA("dataVisitInformation","visitString"))
SET NOTEINFO("visitId")=+$GET(REQDATA("dataVisitInformation","id"))
+14 IF NOTEINFO("visitId")>0
QUIT 1
+15 IF NOTEINFO("visitString")=""
DO SETERROR(.TARRAY,ERROR_$CHAR(13)_$CHAR(10)_"Visit identifier is missing.")
QUIT 0
+16 SET INCOMPLETE=$SELECT(NOTEINFO("visitString")="":1,NOTEINFO("location")=0:1,1:0)
+17 IF INCOMPLETE
DO SETERROR(.TARRAY,ERROR_$CHAR(13)_$CHAR(10)_"Visit identifier is missing.")
QUIT 0
+18 QUIT 1
+19 ;