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

PSSNDSU.m

Go to the documentation of this file.
  1. PSSNDSU ;DAL/JCH - MEDS DOSAGE FORM NDS UTILITIES ;09/07/2017
  1. ;;1.0;PHARMACY DATA MANAGEMENT;**211**;9/30/97;Build 20
  1. ;
  1. Q
  1. ;
  1. QUE ; Task off to run in background
  1. N ZTRTN,ZTDESC,ZTDTH
  1. ;
  1. S ZTRTN="EN^PSSNDSU"
  1. S ZTDESC="Medications Dosage Form NDS Master File Associations"
  1. S ZTDTH=$$NOW^XLFDT
  1. S ZTIO=""
  1. ;
  1. D ^%ZTLOAD
  1. Q
  1. ;
  1. EN ; Update Meds Dosage Form pointers to MASTER file
  1. N PSSFL,XUMF
  1. S XUMF=1
  1. S PSSFL=$P($T(FILE+1),";",3)
  1. Q:'$G(PSSFL)
  1. ; MASTER <concept> field (#90) in <concept> file points to MASTER <concept> file
  1. D UPDATE(PSSFL)
  1. Q
  1. ;
  1. UPDATE(OFILE) ; Update MASTER FILE multiple (#90) field pointers in legacy file (OFILE).
  1. ; Check ASSOCIATED VA <concept> field (#90) in MASTER file, add pointers in OFILE to MASTER file.
  1. D SCANM(OFILE)
  1. ; Check pointers to MASTER file in OFILE, remove pointers if MASTER file entry doesn't exist.
  1. D SCANO(OFILE)
  1. Q
  1. ;
  1. SCANM(OFILE) ; Get ASSOCIATED VA <concept> field (#99) values from MASTER file MFILE, update pointers in OFILE
  1. N ASSOC,MIEN,MGLO,MERR,MFILE,OFILIEN
  1. D FIELD^DID(OFILE,90,"","POINTER","MGLO","MERR") ; Get global name and related MASTER file of OFILE
  1. S MGLO="^"_$G(MGLO("POINTER")) ; MASTER file global
  1. S MFILE=+$P(MGLO,"(",2) ; MASTER file number
  1. S ASSOC="" F S ASSOC=$O(@(MGLO_"""AC"",ASSOC)")) Q:ASSOC="" D ; ASSOCIATED VA <concept> multiple (#99)
  1. .S MIEN=0 F S MIEN=$O(@(MGLO_"""AC"",ASSOC,MIEN)")) Q:'MIEN D
  1. ..S OFILIEN=$$FIND1^DIC(OFILE,,"O",ASSOC,,,"PSERR")
  1. ..Q:'$G(OFILIEN)
  1. ..D UPDPTR(ASSOC,MIEN,"ADD",OFILE)
  1. Q
  1. ;
  1. SCANO(OFILE) ; Get MASTER <concept> field (#90) values from legacy file OFILE, verify pointing to actual MASTER entry
  1. N OFILIEN,OGLO,OERR,MPTR,MFILE,MGLO,PSIEN
  1. D FILE^DID(OFILE,"","GLOBAL NAME","OGLO","OERR") ; Get global name for OFILE
  1. S OGLO=$G(OGLO("GLOBAL NAME"))
  1. D FIELD^DID(OFILE,90,"","POINTER","MGLO","MERR") ; Get MASTER <concept> file global name and file number
  1. S MGLO="^"_$G(MGLO("POINTER"))
  1. S MFILE=+$P(MGLO,"(",2)
  1. S OFILIEN=0 F S OFILIEN=$O(@(OGLO_OFILIEN_")")) Q:'OFILIEN D ; Loop through pointers to MASTER file field (#90)
  1. .S MPTR=$G(@(OGLO_OFILIEN_","_"""MASTER"")")) Q:'MPTR
  1. .N PSSRSLT,ONAME,MNAME,MFILESUB,PSSERR
  1. .D FIND^DIC(OFILE,,"@;.01","A",OFILIEN,,,,,"PSSRSLT","PSSERR")
  1. .S ONAME=$G(PSSRSLT("DILIST","ID",1,.01))
  1. .K PSSRSLT
  1. .D FIND^DIC(MFILE,,"@;.01","A",MPTR,,,,,"PSSRSLT","PSSERR")
  1. .S MNAME=$G(PSSRSLT("DILIST","ID",1,.01))
  1. .S MFILESUB=MFILE_901
  1. .K PSSRSLT
  1. .D FIND^DIC(MFILESUB,","_MPTR_",",".01","",ONAME,,,,,"PSSRSLT","PSSERROR")
  1. .I '$G(PSSRSLT("DILIST",2,1)) D UPDPTR(ONAME,MPTR,"DEL",OFILE)
  1. Q
  1. ;
  1. UPDPTR(PSSVANAM,PSSMIEN,PSSACT,PSSFILE) ; Update MASTER VA <concept> field (#90) in <concept> file
  1. ; anytime the ASSOCIATED VA <concept>(S) field (#99) in the MASTER <concept> file (#50.60699) is updated.
  1. ; PSSVANAM : Name of ASSOCIATED VA <concept> from local <concept> file
  1. ; PSSFILE : The VA File Number (#50.606) that points to the MASTER file (#50.60699)
  1. ; PSSMIEN : IEN of the entry in the MASTER <concept> (#50.60699) file.
  1. ; PSSACT : Action to perform on MASTER <concept> (#90) multiple in <concept> file (#50.606):
  1. ; "ADD" = Add a pointer to the PSSMIEN entry in MASTER <concept> file (#50.60699), if it doesn't already exist
  1. ; "DEL" = Delete pointer to the PSSMIEN entry in MASTER <concept> file (#50.60699), if it exists
  1. N PSSMFILE ; MASTER <concept> file (#50.60699), retrieved from "MASTER <concept>" field (#90) in <concept> file (#50.606)
  1. N PSSMGLO ; Data global for MASTER <concept> file (#50.60699)
  1. N PSSGLO ; Data global for legacy <concept) file (#50.606)
  1. N PSSMSUB ; MASTER <concept> file's (#50.60699) ASSOCATED VA <concepts> field's (#99) SUB-FILE number. (#50.60699901)
  1. N PSSFDA ; FDA_ROOT array for FILE^DIE call.
  1. N PSSERR ; Error returned by FILE^DIE call. Not used, provided for maintenance/troubleshooting.
  1. N PSSVAIEN ; The IEN(s) in the <concept> file (#50.606), whose MASTER <concept> multiple (#90) is being updated by this routine.
  1. N PSSVAMPTR ; The current value of the MASTER <concept> file (#50.60699) multiple (#90) in the <concept> file (#50.606), pointing to MASTER <concept> (#50.60699)
  1. N PSSVANAMS ; <concept> (#50.606) file NAME (.01) value truncated to 30 characters to check "B" x-ref, which only contains max of 30 chars.
  1. N PSSIEN ; Internal Entry Number (IEN) of local file (#50.606)
  1. ;
  1. Q:'PSSMIEN!'$L(PSSVANAM)!'$L(PSSACT)!'$G(PSSFILE)
  1. S PSSVANAMS=$E(PSSVANAM,1,30)
  1. ;
  1. ; Get MASTER <concept> file number and data global. File number must be 50.60699 (MASTER DOSAGE FORM)
  1. ; Get data global reference
  1. D FIELD^DID(PSSFILE,90,"","POINTER","PSSMGLO","PSSERR")
  1. S PSSMGLO="^"_$G(PSSMGLO("POINTER"))
  1. S PSSMFILE=+$P(PSSMGLO,"(",2)
  1. Q:(",50.60699,")'[(","_PSSMFILE_",")
  1. ;
  1. D FILE^DID(PSSFILE,"N","GLOBAL NAME","PSSGLO","PSSERR")
  1. S PSSGLO=$G(PSSGLO("GLOBAL NAME"))
  1. ;
  1. ; Get MASTER <concept> file's ASSOCATED VA <concepts> field's (#99) SUB-FILE number. Must be 50.60699901
  1. S PSSMSUB=PSSMFILE_"901"
  1. Q:(",50.60699901,")'[(","_PSSMSUB_",")
  1. ; Search for and delete old MASTER <concept> (#90) field entries from <concept> file (#50.606) that are being replaced
  1. S PSSIEN=0 F S PSSIEN=$O(@(PSSGLO_"""B"",PSSVANAM,PSSIEN)")) Q:'PSSIEN D
  1. .I PSSACT="ADD" D Q
  1. ..I $G(@(PSSGLO_"PSSIEN,""MASTER"")"))=PSSMIEN Q ; Already there, don't file duplicate entry.
  1. ..S PSSFDA(PSSFILE,PSSIEN_",",90)=+PSSMIEN
  1. ..D FILE^DIE("","PSSFDA","PSSERR")
  1. .I PSSACT="DEL" D Q ; Delete the MASTER <concept> (#90) field pointer from <concept> file (#50.606) entry PSSVAIEN
  1. ..Q:'$G(PSSIEN)
  1. ..S PSSFDA(PSSFILE,PSSIEN_",",90)="@"
  1. ..D FILE^DIE("","PSSFDA","PSSERR")
  1. Q
  1. ;
  1. FILE ; File to be updated
  1. ;;50.606
  1. Q