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

INHUTC7.m

Go to the documentation of this file.
  1. INHUTC7 ;KN,bar; 14 Aug 97 11:33; Criteria Management and Execution API
  1. ;;3.01;BHL IHS Interfaces with GIS;;JUL 01, 2001
  1. ;COPYRIGHT 1991-2000 SAIC
  1. ;;COPYRIGHT 1997 SAIC
  1. ;
  1. ; MODULE NAME: Criteria Management and Execution API (INHUTC7)
  1. ; Called from INHUTC.
  1. ;
  1. GETCRIT(INOPT,INPARMS) ; Get/Create entries.
  1. ;
  1. ; Please refer to the function GETCRIT of INHUTC for description
  1. ;
  1. ; set defaults for vars passed in
  1. N INCRITDA
  1. Q:'$$TYPE^INHUTC2($G(INOPT("TYPE"))) "Incorrect or missing criteria type."
  1. S:'$G(INOPT("DUZ")) INOPT("DUZ")=DUZ
  1. ; get entry in criteria file
  1. S INCRITDA=$$GET^INHUTC1(.INOPT)
  1. Q:'INCRITDA INCRITDA
  1. ; populate entry with data if passed in
  1. I $L($G(INPARMS)),$D(@INPARMS)>9 D ARRAY^INHUTC3(INCRITDA,.INPARMS)
  1. ; update relative date fields
  1. D RELDATE^INHUTC2(INCRITDA)
  1. ; if gallery allow edit
  1. S:$L($G(INOPT("GALLERY"))) INCRITDA=$$EDIT^INHUTC1(INCRITDA,INOPT("GALLERY"))
  1. I 'INCRITDA D CLRLK^INHUTC2(.INOPT) Q INCRITDA
  1. ; save entry if name field is filled in
  1. S INCRITDA=$$SAVE^INHUTC1(.INOPT,INCRITDA,"U")
  1. I 'INCRITDA D CLRLK^INHUTC2(.INOPT) Q
  1. D CLRLK^INHUTC2(.INOPT,$S('INCRITDA:0,$G(INOPT("LOCK")):INCRITDA,1:""))
  1. ; set INOPT for search and print
  1. S INOPT("CRITERIA")=INCRITDA
  1. Q INCRITDA
  1. ;
  1. ;
  1. RUN(INOPT,INPARMS) ; Run calling search and print
  1. ;
  1. ; Please refer to function RUN of INHUTC for description,
  1. ;
  1. N INANS,INDEV,INOPTT,ZTSK,INIEN,INARRAY
  1. ; preserve INOPT array
  1. M INOPTT=INOPT N INOPT M INOPT=INOPTT K INOPTT
  1. S INPARMS=$G(INPARMS)
  1. I '$G(INOPT("CRITERIA")) S INOPT("CRITERIA")=$$GETCRIT^INHUTC(.INOPT,.INPARMS)
  1. Q:'INOPT("CRITERIA") INOPT("CRITERIA")
  1. ; get device, check if passed in, then check file
  1. I $D(INOPT("DEVICE")) S (INDEV,IOP)=$D(INOPT("DEVICE"))
  1. E S (INDEV,IOP)=$P($G(^DIZ(4001.1,INOPT("CRITERIA"),20)),U,9)
  1. S %ZIS="NQ0" D ^%ZIS I POP S IOP="",%ZIS="N0" D ^%ZIS Q INDEV_" is an invalid device"
  1. ;
  1. ; if home device, crt, and interactive do full display search
  1. I IO=IO(0),$E(IOST)="C",'$G(INOPT("NONINTER")) S INIEN="INARRAY" D K @INIEN Q $S(INANS:"Exit code: "_INANS,1:INOPT("CRITERIA"))
  1. . ; Search, Display, and allow user to select
  1. . S INANS=$$DISPLAY^INHUTC4(.INOPT,.INIEN) S:INANS'=2 INANS=0 Q:INANS
  1. . ; return selected list in named global, if requested
  1. . I $L($G(INOPT("ARRAY"))) M @INOPT("ARRAY")=@INIEN S INANS=4 Q
  1. . ; Print user selected list
  1. . I $D(@INIEN)>9 S INANS=$$PRINT(.INOPT,.INIEN)
  1. ;
  1. ; if OK TO TASK, if not SLAVE or CRT
  1. I '$G(INOPT("NOTASK")),IO'=IO(0) D S IOP="",%ZIS="N" D ^%ZIS Q INANS
  1. . N INDA,INBACKDA,INOPTT
  1. . ; create background entry, unlock work entry and background entry
  1. . S INBACKDA=$$NEW^INHUTC1(.INOPT,"B") D COPY^INHUTC1(INOPT("CRITERIA"),INBACKDA,"B") D CLRLK^INHUTC2(.INOPT)
  1. . ; create background task
  1. . S ZTIO=INDEV,ZTRTN="TASK^INHUTC2",ZTDESC="Interface Criteria"
  1. . S:$G(INOPT("NONINTER")) ZTDTH=$H
  1. . S INOPT("NOTASK")=1,INOPT("NONINTER")=1,INOPT("CRITERIA")=INBACKDA
  1. . F I="INIEN","INOPT(" S ZTSAVE(I)=""
  1. . D ^%ZTLOAD
  1. . I $G(ZTSK) S $P(^DIZ(4001.1,INBACKDA,0),U,7)=ZTSK
  1. . S INANS=$S($G(ZTSK):"criteria queued "_ZTSK,$G(POP):"device invalid",1:"error in scheduling task.")
  1. ; Non-interactive search
  1. S INIEN="INARRAY",INANS=$$SEARCH^INHUTC(.INOPT,.INIEN)
  1. Q:'INANS INANS
  1. S INOPT("DEVICE")=INDEV,INANS=$$PRINT^INHUTC(.INOPT,.INIEN)
  1. K @INIEN,INOPT("INSRCH")
  1. Q INOPT("CRITERIA")
  1. ;
  1. ;
  1. PRINT(INOPT,INIEN) ; Display/Print messages
  1. ;
  1. ; Please refer to the function PRINT of INHUTC for description
  1. ;
  1. Q:'$L($G(INIEN)) "PRINT: record list not present"
  1. N I,DIC,DR,DHD,DW,DWCP,DIE,DA,INIO,INPAGE
  1. ; Set default value for file, print template, and header
  1. I $G(INOPT("TYPE"))="ERROR" S DIC="^INTHER(",DR="INH ERROR DISPLAY"
  1. I $G(INOPT("TYPE"))="TRANSACTION" S DIC="^INTHU(",DR="INH MESSAGE DISPLAY"
  1. Q:'$D(DIC) "PRINT: record type not present or invalid"
  1. S INPAGE=0,DHD="["_DR_"-HEAD]",DIOEND="W !?(IOM-25\2),""***** End of Report *****""",DA=INIEN
  1. ; Use print template, custom header, if provided
  1. S:$D(INOPT("PRINT")) DR=INOPT("PRINT") S:$E(DR)'="[" DR="["_DR_"]"
  1. S:$D(INOPT("HEADER")) DHD=INOPT("HEADER") S:$E(DHD)'="[" DHD="["_DHD_"]"
  1. ; get device
  1. S:$L($G(INOPT("DEVICE"))) IOP=INOPT("DEVICE")
  1. I $G(INOPT("NONINTER")),'$D(IOP) S IOP=""
  1. S %ZIS="NQ" D ^%ZIS I POP S IOP="",%ZIS="N0" D ^%ZIS Q "Device invalid or not selected."
  1. S IOP=ION_";"_IOST_";"_IOM_";"_IOSL
  1. D PRESORT^DWPR
  1. Q 1
  1. ;
  1. SRCHDR(INOPT,INPAGE) ; print cover page of criteria options
  1. ; from print template
  1. Q:'$D(INOPT("INSRCH")) Q:'$D(INPAGE)
  1. N X,I,INI,INF,INL,INX,INY,INZ
  1. I 'INPAGE D
  1. . S X=INOPT("INSRCH","TYPE"),X=$E(X)_$$DNCASE^%ZTF($E(X,2,$L(X)))
  1. . S X="Interface "_X_" Search Report",X=$J("",IOM-$L(X)\2)_X,INOPT("INSRCH","PRNHDR",1)=X_$J("",IOM-$L(X)-9)_"Page: "
  1. . S X="Report Date: "_$$CDATASC^%ZTFDT($$NOW^%ZTFDT,1,3)_" Run by: "_$P($G(DUZ("AG")),U,9),INOPT("INSRCH","PRNHDR",2)=$J("",IOM-$L(X)\2)_X
  1. . S X="Records "
  1. . S:$G(INOPT("SRCHSIZE")) X=X_"in range: "_INOPT("SRCHSIZE")_"(est) "
  1. . S X=X_" Searched: "_+$G(INOPT("INSRCHCT"))_" Found: "_+$G(INOPT("INFNDCT"))
  1. . S INOPT("INSRCH","PRNHDR",3)=$J("",IOM-$L(X)\2)_X
  1. S INPAGE=INPAGE+1
  1. F I=1:1 Q:'$D(INOPT("INSRCH","PRNHDR",I)) W:I>1 ! W INOPT("INSRCH","PRNHDR",I)_$S(I=1:INPAGE,1:"")
  1. W !!,$TR($J("",IOM-2)," ","_")
  1. Q:INPAGE>1
  1. W !," Search Criteria Name",?40," Criteria Value",!
  1. F INI=6:1 S INX=$P($T(FIELDS+INI^INHUTC3),";;",2,99) Q:'$L(INX) D
  1. . ; quit if no INSRCH designator or not searched on
  1. . S INY=$P(INX,";",3) Q:'$L(INY) Q:'$D(INOPT("INSRCH",INY))
  1. . ; write field name
  1. . W !,$P(INX,";",2),?40 S INF=$P(INX,";",4,99)
  1. . ; write out parameters
  1. . I $D(INOPT("INSRCH",INY))=1 S X=INOPT("INSRCH",INY) X:$L(INF) INF W X Q
  1. . S INZ="",INL=0 F S INZ=$O(INOPT("INSRCH",INY,INZ)) Q:'$L(INZ) W:INL !?40 S X=INZ X:$L(INF) INF W X S INL=1
  1. ; skip a page and print next header, unless nothing was found
  1. I $G(INOPT("INSRCH","INFNDCT")) D
  1. . I IO=IO(0),$E(IOST)="C" S %=$$CR^UTSRD
  1. . E W @IOF
  1. . D SRCHDR(.INOPT,.INPAGE)
  1. Q
  1. ;