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

ORQOUTL.m

Go to the documentation of this file.
  1. ORQOUTL ; SLC/AGP - Utility report for Order Dialogs ;Dec 08, 2021@10:59:06
  1. ;;3.0;ORDER ENTRY/RESULTS REPORTING;**377,405**;DEC 17, 1997;Build 211
  1. ;
  1. ;
  1. ;
  1. Q
  1. ;
  1. FINDOD(RESULT,INPUT,SUB) ;
  1. K ^TMP($J,SUB),^TMP($J,"DIALOGS")
  1. N NAME,ODIEN
  1. S RESULT=$NA(^TMP($J,SUB))
  1. S NAME="" F S NAME=$O(INPUT(NAME)) Q:NAME="" D
  1. .S ODIEN=$O(^ORD(101.41,"B",NAME,"")) Q:ODIEN=""
  1. .S ORREM(ODIEN_";ORD(101.41,")=""
  1. .S ^TMP($J,SUB,ODIEN)=NAME
  1. .D FINDORD(ODIEN,SUB)
  1. D FINDREM(SUB,.ORREM)
  1. Q
  1. ;
  1. FINDOPAR(RESULT,IEN) ;
  1. N CNT,ITEM,NODE,SUB
  1. K ^TMP($J,"ORDER MENU ON LIST")
  1. S SUB="OR REM ITEMS"
  1. D FINDRORD(IEN,SUB)
  1. S CNT=0 F S CNT=$O(^TMP($J,SUB,IEN,"ORDER MENUS",CNT)) Q:CNT'>0 D
  1. .S NODE=$G(^TMP($J,SUB,IEN,"ORDER MENUS",CNT))
  1. .S ITEM=$O(^ORD(101.41,"B",$P(NODE,U),"")) Q:IEN'>0
  1. .S RESULT(ITEM)=NODE
  1. Q
  1. FINDQO(RESULT,INPUT,SUB,RETMENU,RETSTRCT,SPINNER,SKIPDIS) ;
  1. N CNT,DSGPAR,DSGRP,I,J,NAME,NODE,ODIEN,OIIEN,ORDIALOG,ORREM,ORTYPE,PERQOAR,ORREMD,QOIEN
  1. N SPINCNT,TEMP,X,Y
  1. K ^TMP($J,SUB),^TMP($J,"DIALOGS")
  1. S SPINCNT=0
  1. S RESULT=$NA(^TMP($J,SUB))
  1. ;Build a list of Display Groups that contains the default dialog defined in INPUT
  1. S NAME="" F S NAME=$O(INPUT(NAME)) Q:NAME="" D
  1. .S ODIEN=$O(^ORD(101.41,"AB",NAME,"")) Q:ODIEN=""
  1. .S DSGRP=0 F S DSGRP=$O(^ORD(100.98,DSGRP)) Q:DSGRP'>0 D
  1. ..I $P(^ORD(100.98,DSGRP,0),U,4)=ODIEN S DSGPAR(DSGRP,NAME)=""
  1. ;
  1. S OIIEN=$O(^ORD(101.41,"B","OR GTX ORDERABLE ITEM","")) Q:OIIEN'>0
  1. S QOIEN=0 F S QOIEN=$O(^ORD(101.41,QOIEN)) Q:QOIEN'>0 D
  1. .I SKIPDIS=1,$P($G(^ORD(101.41,QOIEN,0)),U,3)'="" Q
  1. .I $$ISVALID(QOIEN,.DSGPAR)=0 Q
  1. .I SPINNER D SPIN("Finding Quick Orders",.SPINCNT)
  1. .S NODE=$G(^ORD(101.41,QOIEN,0))
  1. .S ^TMP($J,SUB,QOIEN)=$P(NODE,U,1,4)
  1. .S ^TMP($J,SUB,QOIEN,"ISPERQO")=$S($D(^ORD(101.44,"C",QOIEN)):1,1:0)
  1. .S ORREM(QOIEN_";ORD(101.41,")=""
  1. .I $G(RETSTRCT)=0 Q
  1. .S ORTYPE="Z"
  1. .K ORDIALOG
  1. .D GETQDLG^ORCD(QOIEN)
  1. .;D GETQDLG(QOIEN)
  1. .M ^TMP($J,SUB,QOIEN,"ORDIALOG")=ORDIALOG
  1. ;
  1. I RETMENU=0 G FINDQOX
  1. ;find menu structure order dialog exists on
  1. S QOIEN=0 F S QOIEN=$O(^TMP($J,SUB,QOIEN)) Q:QOIEN'>0 D
  1. .I SPINNER D SPIN("Finding Quick Orders",.SPINCNT)
  1. .D FINDORD(QOIEN,SUB)
  1. ;find reminder dialogs order dialog exisits on
  1. D FINDREM(SUB,.ORREM,SPINNER)
  1. FINDQOX ;
  1. K ^TMP($J,"DIALOGS")
  1. Q
  1. ;
  1. FINDORD(QOIEN,SUB) ;
  1. N CNT,IEN,LIST,NODE,TIEN,TOP
  1. S IEN=0,CNT=0 F S IEN=$O(^ORD(101.41,"AD",QOIEN,IEN)) Q:IEN'>0 D
  1. .S NODE=$G(^ORD(101.41,IEN,0)) I NODE="" Q
  1. .S $P(NODE,U,4)=$$GETTYPE($P(NODE,U,4))
  1. .S CNT=CNT+1,^TMP($J,SUB,QOIEN,"ORDER MENUS",CNT)=NODE
  1. Q
  1. ;
  1. FINDRORD(QOIEN,SUB) ;
  1. N CNT,IEN,LIST,NODE,TIEN,TOP
  1. S CNT=+$O(^TMP($J,SUB,QOIEN,"ORDER MENUS",""),-1)
  1. S IEN=0 F S IEN=$O(^ORD(101.41,"AD",QOIEN,IEN)) Q:IEN'>0 D
  1. .I $D(^TMP($J,"ORDER MENU ON LIST",IEN)) Q
  1. .S NODE=$G(^ORD(101.41,IEN,0)) I NODE="" Q
  1. .S $P(NODE,U,4)=$$GETTYPE($P(NODE,U,4))
  1. .S CNT=CNT+1,^TMP($J,SUB,QOIEN,"ORDER MENUS",CNT)=NODE
  1. .S ^TMP($J,"ORDER MENU ON LIST",IEN)=""
  1. .D FINDRORD(IEN,SUB)
  1. Q
  1. ;
  1. FINDREM(SUB,ORREM,SPINNER) ;
  1. N I,IEN
  1. D APIALL^PXRMDLR3("DIALOGS",.ORREM,0,SPINNER)
  1. S I="" F S I=$O(^TMP($J,"DIALOGS",I)) Q:I="" D
  1. .S IEN=+I
  1. .I $D(^TMP($J,SUB,I,"ERROR")) S ^TMP($J,SUB,IEN,"REMINDER DIALOG",1)="ERROR: Could Process Reminder List" Q
  1. .I '$D(^TMP($J,SUB,IEN)) Q
  1. .M ^TMP($J,SUB,IEN,"REMINDER DIALOGS")=^TMP($J,"DIALOGS",I)
  1. Q
  1. ;
  1. GETTYPE(TYPE) ;
  1. N RESULT S RESULT=$S(TYPE="Q":"Quick Order",TYPE="M":"Menu",TYPE="D":"Dialog",TYPE="O":"Order Set",TYPE="A":"Action",1:"")
  1. Q RESULT
  1. ;
  1. ISVALID(IEN,DSGPAR) ;
  1. N NODE,QODSG
  1. S NODE=$G(^ORD(101.41,IEN,0))
  1. ;Quit if not a quick order
  1. I $P(NODE,U,4)'="Q" Q 0
  1. ;Disregard order dialog entry does not contain a valid display group
  1. S QODSG=$P(NODE,U,5) I QODSG="" Q 0
  1. I '$D(DSGPAR(QODSG)) Q 0
  1. Q 1
  1. ;
  1. SPIN(TEXT,SPINCNT) ;Move the spinner.
  1. N QUAD
  1. I SPINCNT=0 W !!,TEXT," "
  1. S SPINCNT=SPINCNT+1
  1. S QUAD=SPINCNT#8
  1. I QUAD=1 W @IOBS,"|"
  1. I QUAD=3 W @IOBS,"/"
  1. I QUAD=5 W @IOBS,"-"
  1. I QUAD=7 W @IOBS,"\"
  1. Q
  1. ;