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

PXRMEXPU.m

Go to the documentation of this file.
  1. PXRMEXPU ;SLC/PKR - Utilities for packing and unpacking repository entries. ;12/07/2011
  1. ;;2.0;CLINICAL REMINDERS;**6,12,22**;Feb 04, 2005;Build 160
  1. ;==================================================
  1. BTTABLE(DIQOUT,IENROOT,TTABLE) ;Build the DIQOUT to FDA iens translation table.
  1. N FILENUM,IENS,IENT,IND,UP
  1. S FILENUM=$O(DIQOUT(""))
  1. I FILENUM="" Q
  1. ;DBIA #2631
  1. S UP=$G(^DD(FILENUM,0,"UP"))
  1. ;Top level file in DIQOUT should not have an up node.
  1. I UP="" D
  1. . S IENS=$O(DIQOUT(FILENUM,"")),IND=+IENS
  1. . S TTABLE(FILENUM,IENS)="+"_IENS
  1. E D Q
  1. . W !,"BTTABLE^PXRMEXPU - DIQOUT problem, do not have correct top level"
  1. ;
  1. F S FILENUM=$O(DIQOUT(FILENUM)) Q:FILENUM="" D
  1. . S UP=$G(^DD(FILENUM,0,"UP"))
  1. . S IENS=""
  1. . F S IENS=$O(DIQOUT(FILENUM,IENS)) Q:IENS="" D
  1. .. S IND=IND+1
  1. .. S IENT=$P(IENS,",",2,99)
  1. .. S TTABLE(FILENUM,IENS)="+"_IND_","_TTABLE(UP,IENT)
  1. .. S IENROOT(IND)=$P(IENS,",",1)
  1. Q
  1. ;
  1. ;==================================================
  1. CLDIQOUT(DIQOUT) ;Clean up DIQOUT remove null entries and change .01's
  1. ;to the resolved form.
  1. N IENS,INTERNAL,FIELD,FILENUM,LINE
  1. N PLEN,PREFIX,PTRTO,ROOT,TYPE,WPLCNT,VLIST,VPTRLIST
  1. S FILENUM=""
  1. F S FILENUM=$O(DIQOUT(FILENUM)) Q:FILENUM="" D
  1. . K TYPE,VPTRLIST
  1. . S IENS=""
  1. . F S IENS=$O(DIQOUT(FILENUM,IENS)) Q:IENS="" D
  1. .. S FIELD=""
  1. .. F S FIELD=$O(DIQOUT(FILENUM,IENS,FIELD)) Q:FIELD="" D
  1. ...;If there is no data then don't keep this entry.
  1. ... I DIQOUT(FILENUM,IENS,FIELD)="" K DIQOUT(FILENUM,IENS,FIELD) Q
  1. ...;Get the field type, if it is a variable-pointer then set up
  1. ...;the resolved form.
  1. ... I '$D(TYPE(FILENUM,FIELD)) S TYPE(FILENUM,FIELD)=$$GET1^DID(FILENUM,FIELD,"","TYPE")
  1. ... S PTRTO=$S(TYPE(FILENUM,FIELD)="POINTER":$$GET1^DID(FILENUM,FIELD,"","POINTER"),1:"")
  1. ... ;Check if this pointer is ok to transport.
  1. ... I '$$PTROK(PTRTO) K DIQOUT(FILENUM,IENS,FIELD) Q
  1. ...;If the field's type is COMPUTED then don't transport it.
  1. ... I TYPE(FILENUM,FIELD)="COMPUTED" K DIQOUT(FILENUM,IENS,FIELD) Q
  1. ... I TYPE(FILENUM,FIELD)="VARIABLE-POINTER" D
  1. .... I '$D(VPTRLIST(FILENUM,FIELD)) D
  1. ..... K VLIST
  1. ..... D BLDRLIST^PXRMVPTR(FILENUM,FIELD,.VLIST)
  1. ..... M VPTRLIST(FILENUM,FIELD)=VLIST
  1. .... S INTERNAL=$$GET1^DIQ(FILENUM,IENS,FIELD,"I")
  1. .... S (PTRTO,ROOT)=$P(INTERNAL,";",2)
  1. .... S PREFIX=$P(VPTRLIST(FILENUM,FIELD,ROOT),U,4)_"."
  1. .... S PLEN=$L(PREFIX)
  1. .... I $E(DIQOUT(FILENUM,IENS,FIELD),1,PLEN)'=PREFIX S DIQOUT(FILENUM,IENS,FIELD)=PREFIX_DIQOUT(FILENUM,IENS,FIELD)
  1. ... I TYPE(FILENUM,FIELD)="WORD-PROCESSING" D
  1. .... S (LINE,WPLCNT)=0
  1. .... F S LINE=$O(DIQOUT(FILENUM,IENS,FIELD,LINE)) Q:LINE="" D
  1. ..... S WPLCNT=WPLCNT+1
  1. .... I WPLCNT>0 S DIQOUT(FILENUM,IENS,FIELD)="WP-start~"_WPLCNT
  1. .... E K DIQOUT(FILENUM,IENS,FIELD)
  1. ...;For fields that point to files 80 and 80.1 we have to append a space
  1. ...;so FileMan can resolve the pointers when installing a component.
  1. ... I PTRTO["ICD" S DIQOUT(FILENUM,IENS,FIELD)=DIQOUT(FILENUM,IENS,FIELD)_" "
  1. Q
  1. ;
  1. ;==================================================
  1. CONTOFDA(DIQOUT,IENROOT) ;Convert the iens from the form
  1. ;returned by GETS^DIQ to the FDA laygo form used by UPDATE^DIE.
  1. ;DIQOUT contains the GETS^DIQ output. If any of the fields are
  1. ;variable pointers change them to the resolved form.
  1. N IENS,IENSA,FIELD,FILENUM,TTABLE,TYPE
  1. ;Clean up DIQOUT remove null entries and change .01's to the resolved
  1. ;form.
  1. D CLDIQOUT(.DIQOUT)
  1. ;Convert the iens to the adding FDA form.
  1. D BTTABLE(.DIQOUT,.IENROOT,.TTABLE)
  1. S FILENUM=""
  1. F S FILENUM=$O(DIQOUT(FILENUM)) Q:FILENUM="" D
  1. . S IENS=""
  1. . F S IENS=$O(DIQOUT(FILENUM,IENS)) Q:IENS="" D
  1. .. S IENSA=TTABLE(FILENUM,IENS)
  1. .. S FIELD=""
  1. .. F S FIELD=$O(DIQOUT(FILENUM,IENS,FIELD)) Q:FIELD="" D
  1. ... M DIQOUT(FILENUM,IENSA,FIELD)=DIQOUT(FILENUM,IENS,FIELD)
  1. .. K DIQOUT(FILENUM,IENS)
  1. Q
  1. ;
  1. ;==================================================
  1. PTROK(PTR) ;Return true if items associated with this pointer are
  1. ;ok to transport. Note the form of the pointer is that returned
  1. ;by GET1^DID(FILENUM,FIELD,"","POINTER").
  1. I PTR="USR(8930," Q 0
  1. I PTR="VA(200," Q 0
  1. Q 1
  1. ;
  1. ;==================================================
  1. RMEH(FILENUM,DIQOUT,NOSTUB) ;Clear the edit history from all reminder files.
  1. ;Leave a stub so it can be filled in when the file is installed.
  1. I (FILENUM<800)!(FILENUM>811.9) Q
  1. N IENS,SFN,TARGET
  1. ;Edit History is stored in node 110 for all files, get the
  1. ;subfile number.
  1. D FIELD^DID(FILENUM,110,"","SPECIFIER","TARGET")
  1. S SFN=+$G(TARGET("SPECIFIER"))
  1. I SFN=0 Q
  1. ;Clean out the history.
  1. S IENS=""
  1. F S IENS=$O(DIQOUT(SFN,IENS)) Q:IENS="" K DIQOUT(SFN,IENS)
  1. ;Create a stub for the install.
  1. I $G(NOSTUB) Q
  1. S IENS="1,"_$O(DIQOUT(FILENUM,""))
  1. S DIQOUT(SFN,IENS,.01)=$$FMTE^XLFDT($$NOW^XLFDT,"5Z")
  1. S DIQOUT(SFN,IENS,1)=$$GET1^DIQ(200,DUZ,.01)
  1. S DIQOUT(SFN,IENS,2)="DIQOUT("_SFN_","_IENS_"2)"
  1. S DIQOUT(SFN,IENS,2,1)="Exchange Stub"
  1. Q
  1. ;
  1. ;==================================================
  1. UPDATE(SUCCESS,FDA,FDAIEN) ;Call to add new entries to the repository.
  1. N MSG
  1. ;Try to eliminate gaps in the repository.
  1. S $P(^PXD(811.8,0),U,3)=0
  1. D UPDATE^DIE("E","FDA","FDAIEN","MSG")
  1. I $D(MSG) D
  1. . N DATE,RNAME
  1. . S SUCCESS=0
  1. . W !,"The update failed, UPDATE^DIE returned the following error message:"
  1. . D AWRITE^PXRMUTIL("MSG")
  1. . S RNAME=FDA(811.8,"+1,",.01)
  1. . S DATE=FDA(811.8,"+1,",.03)
  1. . W !!,"Exchange File entry ",RNAME," date packed ",DATE," did not get stored!"
  1. . W !,"Examine the above error message for the reason.",!
  1. . H 2
  1. E S SUCCESS=1
  1. Q
  1. ;