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

ORHRPC.m

Go to the documentation of this file.
ORHRPC ; SLC/AGP - Provider Lookup API ;Dec 18, 2025@09:25:23
 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**508**;Dec 17, 1997;Build 39
 ;
 ; Reference to ^DIC(9.4 is supported by ICR #2058
 ; Reference to File ^VA in ICR #4329
 ; Reference to File ^VA in ICR #10060
 ;
 Q
 ;
FORMATINPUT(INPUTS,PARAMS) ;
 N DIR
 S DIR=$G(INPUTS("direction"))
 S PARAMS("TAG")=$S($G(INPUTS("lookupType"))'="":INPUTS("lookupType"),1:"providerLookup")
 S PARAMS("DIR")=$S(DIR="":1,DIR="down":1,DIR="up":-1,DIR=1:1,DIR=-1:-1,1:1)
 I PARAMS("DIR")=1,$G(INPUTS("startFrom"))'="" D
 .S INPUTS("startFrom")=$$REPLACELASTCHAR(INPUTS("startFrom"))
 .I INPUTS("startFrom")'="" S INPUTS("startFrom")=INPUTS("startFrom")_"~"
 S PARAMS("FROM")=$G(INPUTS("startFrom")),PARAMS("FROMID")=+$G(INPUTS("startId"))
 M PARAMS("parameters")=INPUTS("parameters")
 Q
 ;
REPLACELASTCHAR(INPUT) ;
 N LCHAR,LEN,RESULT
 S INPUT=$$UP^XLFSTR(INPUT)
 S RESULT=INPUT
 S LEN=$L(INPUT)
 I LEN=0 Q RESULT
 S LCHAR=$E(INPUT,LEN)
 I LEN=1&(LCHAR="A"!(LCHAR="a")) S RESULT="" Q RESULT
 I LCHAR?1A S $E(RESULT,LEN)=$S(LCHAR="A":"Z",LCHAR="a":"z",1:$C($A(LCHAR)-1))
 Q RESULT
 ;
LOOKUP(RESULTS,IJSON) ;
 N ARRAY,DATA,ERROR,INPUTS,PARAMS
 D DECODE^XLFJSON("IJSON","INPUTS","ERROR")
 D FORMATINPUT(.INPUTS,.PARAMS)
 S ARRAY("hasPrevious")="false",ARRAY("hasMore")="false"
 I PARAMS("TAG")="actionLookup" S PARAMS("promptValue")="A" D INFOFIELDS(.ARRAY,.PARAMS) G LOOKUPX
 I PARAMS("TAG")="colorLookup" S PARAMS("promptValue")="C" D INFOFIELDS(.ARRAY,.PARAMS) G LOOKUPX
 I PARAMS("TAG")="dataLookup" S PARAMS("promptValue")="D" D INFOFIELDS(.ARRAY,.PARAMS) G LOOKUPX
 I PARAMS("TAG")="editorLookup" D INFOEDITOR(.ARRAY,.PARAMS) G LOOKUPX
 I PARAMS("TAG")="imageLookup" S PARAMS("promptValue")="I" D INFOFIELDS(.ARRAY,.PARAMS) G LOOKUPX
 I PARAMS("TAG")="locationLookup" S PARAMS("promptValue")="L" D INFOFIELDS(.ARRAY,.PARAMS) G LOOKUPX
 I PARAMS("TAG")="packageLookup" D PACKAGE(.ARRAY,.PARAMS) G LOOKUPX
 I PARAMS("TAG")="providerLookup" D PROV(.ARRAY,.PARAMS) G LOOKUPX
 I PARAMS("TAG")="nvaProviderLookup" D NVA(.ARRAY,.PARAMS) G LOOKUPX
 I PARAMS("TAG")="similarProvider" D SIMPROV(.ARRAY,.PARAMS) G LOOKUPX
LOOKUPX ;
 D ENCODE^XLFJSON("ARRAY","RESULTS","ERROR")
 Q
 ;
INFOFIELDS(ARRAY,PARAMS) ;
 N CNT,IEN,NAME,PROMPT
 S PROMPT=PARAMS("promptValue"),CNT=0
 S NAME="" F  S NAME=$O(^ORI(101.73,"TYPENAME",PROMPT,NAME)) Q:NAME=""  D
 .S IEN=+$O(^ORI(101.73,"TYPENAME",PROMPT,NAME,"")) Q:IEN=0
 .S CNT=CNT+1,ARRAY("data",CNT,"const")=IEN,ARRAY("data",CNT,"title")=NAME
 Q
 ;
INFOEDITOR(ARRAY,PARAMS) ;
 N ONEOF
 D GETEDITORS^ORDD71(.ONEOF,"editor")
 M ARRAY("data")=ONEOF("editor")
 Q
 ;
INFOPLUGIN(ARRAY,PARAMS) ;
 N ONEOF
 D GETPLUGINS^ORDD71(.ONEOF,"plugin")
 M ARRAY("data")=ONEOF("plugin")
 Q
 ;
NVA(ARRAY,PARAMS) ;
 N DATA,IDX,PARAM
 S PARAM("FROM")=PARAMS("FROM"),PARAM("DIR")=PARAMS("DIR")
 S PARAM("NVAP")=$S($G(PARAMS("parameters","buttonClick"))="true":1,1:0)
 S PARAM("HELP")=0
 D PERSON(.DATA,.PARAM)
 S IDX=+$O(DATA("A"),-1)
 M ARRAY("data")=DATA
 D PLACE(.ARRAY,.DATA,.PARAM)
 Q
 ;
PACKAGE(ARRAY,PARAMS) ;
 N CNT,DIR,IEN,MAX,NAME,TMP
 S CNT=0,DIR=PARAMS("DIR"),NAME=PARAMS("FROM"),MAX=44
 F  S NAME=$O(^DIC(9.4,"B",NAME),DIR) Q:NAME=""!(CNT>44)  D
 .I NAME["*" Q
 .S IEN=0 F  S IEN=$O(^DIC(9.4,"B",NAME,IEN)) Q:IEN'>0!(CNT>44)  D
 ..S CNT=CNT+1,ARRAY("data",CNT,"const")=IEN
 ..S TMP=$TR(NAME,"""","")
 ..S ARRAY("data",CNT,"display")=NAME,ARRAY("data",CNT,"title")=NAME
 Q
 ;
PROV(ARRAY,PARAMS) ;
 N DATA,IDX,PARAM
 S PARAM("FROM")=PARAMS("FROM"),PARAM("DIR")=PARAMS("DIR")
 S PARAM("KEY")="PROVIDER"
 S PARAM("HELP")=0
 D PERSON(.DATA,.PARAM)
 S IDX=+$O(DATA("A"),-1)
 M ARRAY("data")=DATA
 D PLACE(.ARRAY,.DATA,.PARAM)
 Q
 ;
SIMPROV(ARRAY,PARAMS) ;
 N DATA,PARAM
 I PARAMS("FROMID")="" Q
 S PARAM("FROM")=PARAMS("FROMID"),PARAM("DIR")=PARAMS("DIR")
 S PARAM("SPN")=1
 S PARAM("HELP")=0
 D PERSON(.DATA,.PARAM)
 M ARRAY("data")=DATA
 Q
 ;
PERSON(ARRAY,PARAM) ;
 N CNT,FIEN,LIEN,IDX,LIDX,LIST
 D NEWPERSON^ORNEWPERS(.LIST,.PARAM)
 S CNT=0,IDX=0
 F  S IDX=$O(LIST(IDX)) Q:IDX'>0  D
 .S CNT=CNT+1,LIDX=CNT
 .S ARRAY(CNT,"const")=$P(LIST(IDX),U)
 .S ARRAY(CNT,"display")=$P(LIST(IDX),U,2)_$S($P($G(LIST(IDX)),U,3)'="":" "_$P($G(LIST(IDX)),U,3),1:"")
 .S ARRAY(CNT,"title")=$P(LIST(IDX),U,2)
 Q
 ;
PLACE(ARRAY,DATA,PARAMS) ;
 N FOUND,I,IDX,INF,J,MAX,NAME,P,PARAMETERS,PRM,TAG,XEC
 S TAG="USR"
 S PARAMETERS=$P($T(PARAMETERS^ORNEWPERS),"; ",2)
 F I=1:1:$L(PARAMETERS,U) S PRM=$P(PARAMETERS,U,I) N @(PRM) D
 . S (@(PRM),P(PRM))=$G(PARAMS(PRM))
 . S INF(I,PRM)=$S($D(PARAMS(PRM)):PARAMS(PRM),1:"")
 F I=0:1 S J=$P($T(@TAG+I^ORNEWPERS),";;",2,3) Q:J=""  S XEC(I)=J
 I PARAMS("FROM")'="" D POSITION($G(DATA(1,"title")),-1,"hasPrevious",.ARRAY,.XEC,.P)
 S IDX=$O(DATA("A"),-1) I IDX>0 D POSITION($G(DATA(IDX,"title")),-1,"hasMore",.ARRAY,.XEC,.P)
 Q
 ;
POSITION(FROM,DIR,SUB,ARRAY,XEC,P) ;
 N FOUND,IEN,NAME
 S NAME=FROM,FOUND=0 F  S NAME=$O(^VA(200,"AUSER",NAME),DIR) Q:NAME=""!(FOUND>0)  D
 .S IEN=0 F  S IEN=$O(^VA(200,"AUSER",NAME,IEN)) Q:IEN'>0!(FOUND>0)  D
 ..S P("IEN")=IEN,P("NODE0")=$G(^VA(200,IEN,0))
 ..I '$$EVALUATE^ORNEWPERS(.XEC,.P) Q
 ..S ARRAY(SUB)="true",FOUND=1
 Q
 ;