PXRMEXIH	; SLC/PKR - Routines for installation history. ;08/08/2007
	;;2.0;CLINICAL REMINDERS;**6**;Feb 04, 2005;Build 123
	;======================================================
BLDLIST	;Build a list of install histories in ^TMP("PXRMEXIH",$J).
	N DATE,FMTSTR,IHIEN,IND,INDONE,JND,NAME,NL,NLINE,NSEL,OUTPUT
	N SOURCE,TDATE,TEMP,TEXT,TYPE
	K ^TMP("PXRMEXIH",$J)
	S FMTSTR=$$LMFMTSTR^PXRMTEXT(.VALMDDF,"LLL")
	S (NLINE,NSEL,VALMCNT)=0
	S INDONE=+$P($G(^PXD(811.8,PXRMRIEN,130,0)),U,4)
	S TEMP=^PXD(811.8,PXRMRIEN,0)
	S NAME=" "_$P(TEMP,U,1)
	S SOURCE=$P(TEMP,U,2)
	S DATE=$P(TEMP,U,3)
	D FMT(NAME,SOURCE,DATE,FMTSTR,.NL,.OUTPUT)
	F JND=1:1:NL S NLINE=NLINE+1,^TMP("PXRMEXIH",$J,NLINE,0)=OUTPUT(JND)
	S FMTSTR="4R1^20L2^15L2^35L"
	S TEXT=" ^Installation Date^Type^Installed By"
	D COLFMT^PXRMTEXT(FMTSTR,TEXT,"  ",.NL,.OUTPUT)
	F JND=1:1:NL S NLINE=NLINE+1,^TMP("PXRMEXIH",$J,NLINE,0)=OUTPUT(JND)
	S TEXT=" ^-------------------^----^------------"
	D COLFMT^PXRMTEXT(FMTSTR,TEXT,"  ",.NL,.OUTPUT)
	F JND=1:1:NL S NLINE=NLINE+1,^TMP("PXRMEXIH",$J,NLINE,0)=OUTPUT(JND)
	I 'INDONE D  Q
	. S NLINE=NLINE+1
	. S ^TMP("PXRMEXIH",$J,NLINE,0)="      none"
	. S NLINE=NLINE+1
	. S ^TMP("PXRMEXIH",$J,NLINE,0)=" "
	;Build the "dummy" lines so EN^VALM2 will work.
	F IND=1:1:NLINE S ^TMP("PXRMEXIH",$J,"IDX",IND,1)=""
	S DATE=""
	F  S DATE=$O(^PXD(811.8,PXRMRIEN,130,"B",DATE)) Q:DATE=""  D
	. S NSEL=NSEL+1
	. S IHIEN=$O(^PXD(811.8,PXRMRIEN,130,"B",DATE,""))
	. S TEMP=^PXD(811.8,PXRMRIEN,130,IHIEN,0)
	. S TDATE=$$FMTE^XLFDT($P(TEMP,U,1),"5Z")
	. S SOURCE=$P(TEMP,U,2)
	. S TYPE=$P(TEMP,U,3)
	. S TEXT=NSEL_U_TDATE_U_TYPE_U_SOURCE
	. D COLFMT^PXRMTEXT(FMTSTR,TEXT," ",.NL,.OUTPUT)
	. F JND=1:1:NL D
	.. S NLINE=NLINE+1,^TMP("PXRMEXIH",$J,NLINE,0)=OUTPUT(JND)
	.. S ^TMP("PXRMEXIH",$J,"IDX",NLINE,NSEL)=""
	.. S ^TMP("PXRMEXIH",$J,"SEL",NSEL)=PXRMRIEN_U_IHIEN
	S NLINE=NLINE+1,^TMP("PXRMEXIH",$J,NLINE,0)=" "
	S VALMCNT=NLINE
	S ^TMP("PXRMEXIH",$J,"VALMCNT")=NLINE
	S ^TMP("PXRMEXIH",$J,"IDX",NLINE,NSEL)=""
	Q
	;
	;======================================================
DELETE(LIST)	;Delete the install histories on the list.
	N IHIEN,IND,RIEN,TEMP
	S IND=""
	F  S IND=$O(LIST(IND)) Q:IND=""  D
	. S TEMP=^TMP("PXRMEXIH",$J,"SEL",IND)
	. S RIEN=$P(TEMP,U,1)
	. S IHIEN=$P(TEMP,U,2)
	. D DELHIST^PXRMEXU1(RIEN,IHIEN)
	;Rebuild the history list display.
	D BLDLIST
	S VALMBCK="R"
	Q
	; 
	;======================================================
DELHIST	;Get a list of repository installation entries and delete them.
	;Save the original list, it contains the selected repository entries.
	N VALMBG,VALMLST,VALMY
	S VALMBG=1,VALMLST=+$O(^TMP("PXRMEXIH",$J,"IDX",""),-1)
	;Get the list to delete.
	D EN^VALM2(XQORNOD(0))
	;If there is no list quit.
	I '$D(VALMY) Q
	D DELETE(.VALMY)
	Q
	;
	;======================================================
DETAILS	;Output the details of an installation.
	N VALMBG,VALMCNT,VALMLST,VALMY
	S VALMBG=1,VALMLST=+$O(^TMP("PXRMEXIH",$J,"IDX",""),-1)
	S VALMCNT=^TMP("PXRMEXIH",$J,"VALMCNT")
	;Get the list to display.
	D EN^VALM2(XQORNOD(0))
	;If there is no list quit.
	I '$D(VALMY) Q
	D DDISP(.VALMY)
	Q
	;
	;==================================================
DDISP(ARRAY)	;Display details list
	N ACTION,CAPTION,CMPNT,DI,DP,ENTRY,FMTSTR,IHIEN,IND,JND,KND
	N NL,NLINE,OUTPUT,RIEN,TEMP,TEXT,VALMCNT,VALMHDR
	K ^TMP("PXRMEXID",$J)
	;If there are no items then quit.
	I '$D(ARRAY) Q
	S FMTSTR="4R1^34L2^6C2^34L"
	S VALMCNT=0
	S TEMP=^PXD(811.8,PXRMRIEN,0)
	S ENTRY=$E($P(TEMP,U,1),1,38)
	S DP=$$FMTE^XLFDT($P(TEMP,U,3),"5Z")
	;CAPTION is used in ENTRY action of LM template
	S CAPTION="Entry: "_ENTRY_"  Date Packed: "_DP
	S (IND,NLINE,NUM)=0
	F  S IND=$O(ARRAY(IND)) Q:IND=""  D
	. S TEMP=^TMP("PXRMEXIH",$J,"SEL",IND)
	. S RIEN=$P(TEMP,U,1)
	. S IHIEN=$P(TEMP,U,2)
	. S DI=$$FMTE^XLFDT(^PXD(811.8,RIEN,130,IHIEN,0),"5Z")
	. I NLINE>1 D
	.. S NLINE=NLINE+1
	.. S ^TMP("PXRMEXID",$J,NLINE,0)="------------------------------------------------------------------------------"
	. S NLINE=NLINE+1
	. S ^TMP("PXRMEXID",$J,NLINE,0)="Installation date: "_DI
	.;Write the header line here.
	. S NLINE=NLINE+1
	. S ^TMP("PXRMEXID",$J,NLINE,0)="     Component                          Action  New Name"
	. S CMPNT=""
	. S JND=0
	. F  S JND=$O(^PXD(811.8,RIEN,130,IHIEN,1,JND)) Q:JND=""  D
	.. S TEMP=^PXD(811.8,RIEN,130,IHIEN,1,JND,0)
	.. I $P(TEMP,U,2)'=CMPNT D
	... S NLINE=NLINE+1
	... S ^TMP("PXRMEXID",$J,NLINE,0)=" "
	... S CMPNT=$P(TEMP,U,2)
	... S NLINE=NLINE+1
	... S ^TMP("PXRMEXID",$J,NLINE,0)=CMPNT
	..;The first piece is the component number in the packed reminder.
	.. S TEXT=$P(TEMP,U,1)_U_$P(TEMP,U,3,5)
	.. D COLFMT^PXRMTEXT(FMTSTR,TEXT," ",.NL,.OUTPUT)
	.. F KND=1:1:NL S NLINE=NLINE+1,^TMP("PXRMEXID",$J,NLINE,0)=OUTPUT(KND)
	..;If there are Additional Details add them to the display.
	.. S KND=0
	.. F  S KND=$O(^PXD(811.8,RIEN,130,IHIEN,1,JND,1,KND)) Q:KND=""  D
	... S NLINE=NLINE+1
	... S ^TMP("PXRMEXID",$J,NLINE,0)=^PXD(811.8,RIEN,130,IHIEN,1,JND,1,KND,0)
	. S NLINE=NLINE+1
	. S ^TMP("PXRMEXID",$J,NLINE,0)=" "
	S VALMHDR(1)=^PXD(811.8,RIEN,0)_"  "_^TMP("PXRMEXID",$J,1,0)
	S VALMCNT=NLINE
	D EN^VALM("PXRM EX INSTALLATION DETAIL")
	K ^TMP("PXRMEXID",$J)
	Q
	;
	;======================================================
ENTRY	;List Manager ENTRY entry point.
	D BLDLIST,XQORM
	Q
	;
	;======================================================
EXIT	;List Manager EXIT entry point.
	K ^TMP("PXRMEXIH",$J)
	Q
	;
	;======================================================
FMT(ENTRY,SOURCE,DATE,FMTSTR,NL,OUTPUT)	;
	N TEMP
	S TEMP=NAME_U_SOURCE
	S DATE=$$FMTE^XLFDT(DATE,"5Z")
	S TEMP=TEMP_U_DATE
	D COLFMT^PXRMTEXT(FMTSTR,TEMP," ",.NL,.OUTPUT)
	Q
	;
	;======================================================
HDR	;List Manager HEADER entry point.
	S VALMHDR(1)="Exchange File Entry History."
	S VALMSG="+ Next Screen   - Prev Screen   ?? More Actions"
	Q
	;
	;======================================================
HELP	;Help code
	W !,"Select DH to delete install histories."
	W !,"Select ID to see the details of an install."
	D PAUSE^VALM1
	Q
	;
	;======================================================
IHIST	;Get a list of repository entries and show their installation history.
	N PXRMRIEN,VALMCNT,VALMY
	D EN^VALM2(XQORNOD(0))
	;If there is no list quit.
	I '$D(VALMY) Q
	S IND=""
	F  S IND=$O(VALMY(IND)) Q:IND=""  D
	. S PXRMRIEN=^TMP("PXRMEXLR",$J,"SEL",IND)
	. D EN^VALM("PXRM EX INSTALLATION HISTORY")
	S VALMBCK="R"
	Q
	;
	;=====================================================
PEXIT	;PXRM EXCH SELECT HISTORY protocol exit code
	S VALMSG="+ Next Screen   - Prev Screen   ?? More Actions"
	;Reset after page up/down etc
	D XQORM
	Q
	;
	;======================================================
START	;Main entry point for installation history. The Exchange File IEN is
	;PXRMRIEN.
	N VALMBCK,VALMCNT,VALMSG,X,XMZ,XQORM,XQORNOD
	S X="IORESET"
	D ENDR^%ZISS
	S VALMCNT=0
	D EN^VALM("PXRM EX INSTALLATION HISTORY")
	Q
	;
	;======================================================
XQORM	S XQORM("#")=$O(^ORD(101,"B","PXRM EXCH SELECT HISTORY",0))_U_"1:"_VALMCNT
	S XQORM("A")="Select Action: "
	Q
	;
	;======================================================
XSEL	;PXRM EXCH SELECT HISTORY validation
	N ARRAY,CNT,SEL,SELECT
	S SELECT=$P(XQORNOD(0),"=",2)
	I '$$VALID^PXRMEXLD(SELECT) S VALMBCK="R" Q
	;Build array of selected items
	F CNT=1:1 S SEL=$P(SELECT,",",CNT) Q:'SEL  S ARRAY(SEL)=""
	;
	D FULL^VALM1
	;
	;Option to display installation details or delete install history.
	N DIR,DIROUT,DIRUT,DTOUT,DUOUT,OPTION,X,Y
	S DIR(0)="SBM"_U_"DH:Delete Install History;"
	S DIR(0)=DIR(0)_"ID:Installation Details;"
	S DIR("A")="Select Action: "
	S DIR("B")="ID"
	S DIR("?")="Select from the codes displayed."
	D ^DIR
	I $D(DIROUT)!$D(DIRUT) S VALMBCK="R" Q
	I $D(DTOUT)!$D(DUOUT) S VALMBCK="R" Q
	S OPTION=Y
	;
	;Display installation details.
	I OPTION="ID" D DDISP(.ARRAY)
	;
	;Delete installation history.
	I OPTION="DH" D DELETE(.ARRAY)
	S VALMBCK="R"
	Q
	;
