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

XHDPCAT.m

Go to the documentation of this file.
  1. XHDPCAT ; SLC/JER - Configurator Server Calls ; 25 Jul 2003 9:42 AM
  1. ;;1.0;HEALTHEVET DESKTOP;;Jul 15, 2003
  1. INSERT(ERR,CATFLDS) ; Insert ParameterCategory
  1. N XHDI,FDA,LASTI,LASTS,LASTN,X,XHDDAD,NEWDA
  1. S X="ONERROR^XHDPCAT",@^%ZOSF("TRAP")
  1. S XHDI="",(ERR,LASTS,LASTN)=0,LASTI=1
  1. F S XHDI=$O(CATFLDS(XHDI)) Q:+XHDI'>0 D
  1. . S FDA($$GETFILE(XHDI),$$GETIENS(XHDI),$$GETORI(XHDI))=CATFLDS(XHDI)
  1. I $D(FDA)'>9 S ERR="1^Request not well-formed." Q
  1. D UPDATER(.ERR,.FDA) Q:+ERR
  1. I '+ERR S NEWDA=$P(ERR,U,2)
  1. ; If new record's parent doesn't include it as a subCategory, add it
  1. S XHDDAD=+$P(^XHD(8935.91,NEWDA,0),U,4)
  1. I +XHDDAD,'+$O(^XHD(8935.91,"SCAT",NEWDA,XHDDAD,0)) D Q:+ERR
  1. . N FDA,SUBERR
  1. . S FDA(8935.913,"?+1,"_XHDDAD_",",.01)=(+$O(^XHD(8935.91,1,3,"A"),-1)+1)
  1. . S FDA(8935.913,"?+1,"_XHDDAD_",",.02)="`"_NEWDA
  1. . D UPDATER(.SUBERR,.FDA) S:+SUBERR ERR=SUBERR
  1. ; If there are subcategories, file NEWDA as their parentId
  1. I +NEWDA D
  1. . N XHDJ,SUBERR S XHDJ=0
  1. . F S XHDJ=$O(^XHD(8935.91,NEWDA,3,XHDJ)) Q:+XHDJ'>0!+ERR D
  1. . . N SUBDA,FDA,IEN,MSG
  1. . . S SUBDA=$P($G(^XHD(8935.91,NEWDA,3,XHDJ,0)),U,2) Q:+SUBDA'>0
  1. . . I +$P($G(^XHD(8935.91,SUBDA,0)),U,4)=NEWDA Q
  1. . . S FDA(8935.91,SUBDA_",",.04)="`"_NEWDA
  1. . . D FILER(.SUBERR,.FDA,SUBDA) S:+SUBERR ERR=SUBERR
  1. Q
  1. ADDPARAM(ERR,CATFLDS) ; Add Parameter to Category
  1. N XHDI,FDA,PCDA,X S X="ONERROR^XHDPCAT",@^%ZOSF("TRAP")
  1. S XHDI="",ERR=0,PCDA=+$G(CATFLDS("IEN"))
  1. I $S('PCDA:1,'$D(^XHD(8935.91,PCDA,0)):1,1:0) D Q
  1. . S ERR="1^Invalid ID passed."
  1. L +^XHD(8935.91,PCDA):1
  1. E D Q
  1. . S ERR="1^Another process is modifying Category #"_PCDA
  1. F S XHDI=$O(CATFLDS(XHDI)) Q:+XHDI'>0 D
  1. . S FDA(8935.912,"?+1,"_PCDA_",",$P(XHDI,U,3))=CATFLDS(XHDI)
  1. I $D(FDA)'>9 S ERR="1^Request not well-formed." Q
  1. D UPDATER(.ERR,.FDA)
  1. L -^XHD(8935.91,PCDA)
  1. Q
  1. UPDATER(ERR,FDA) ; Call UPDATE^DIE to create pCats or subCats
  1. N IEN,MSG
  1. D UPDATE^DIE("E","FDA","IEN","MSG")
  1. I $D(MSG("DIERR")) S ERR="1^"_MSG("DIERR",1,"TEXT",1) Q
  1. S ERR="0^"_IEN(1)_U_IEN(1,0)
  1. Q
  1. UPDATE(ERR,CATFLDS) ; Call FILE^DIE to update ParameterCategory
  1. N XHDI,FDA,X S X="ONERROR^XHDPCAT",@^%ZOSF("TRAP")
  1. S XHDI="",ERR=0,PCDA=+$G(CATFLDS("IEN"))
  1. I $S('PCDA:1,'$D(^XHD(8935.91,PCDA,0)):1,1:0) D Q
  1. . S ERR="1^Invalid ID passed."
  1. F S XHDI=$O(CATFLDS(XHDI)) Q:+XHDI'>0 D
  1. . S FDA($$GETFILE(XHDI),$$GETUPIEN(PCDA,XHDI),$$GETORI(XHDI))=CATFLDS(XHDI)
  1. I $D(FDA)'>9 S ERR="1^Request not well-formed." Q
  1. D UPDATER(.ERR,.FDA)
  1. Q
  1. REMPARAM(ERR,PDEF,PCDA) ; Remove Parameter from Category
  1. N XHDSDA,XHDI,FDA,X S X="ONERROR^XHDPCAT",@^%ZOSF("TRAP")
  1. S XHDI="",ERR=0
  1. I $S('+$G(PCDA):1,'$D(^XHD(8935.91,PCDA,0)):1,1:0) D Q
  1. . S ERR="1^Invalid ID passed."
  1. S XHDSDA=$O(^XHD(8935.91,PCDA,2,"C",PDEF,0))
  1. I +XHDSDA S FDA(8935.912,XHDSDA_","_PCDA_",",.01)="@"
  1. I $D(FDA)'>9 S ERR="1^Parameter "_PDEF_" not found in Category "_PCDA_"." Q
  1. D FILER(.ERR,.FDA,PCDA)
  1. Q
  1. REMOVE(ERR,PCAT,PARENT) ; Remove Parameter Category from parent
  1. N XHDSDA,FDA,X S XHDSDA=0,X="ONERROR^XHDPCAT",@^%ZOSF("TRAP")
  1. ; remove reference to parent
  1. S FDA(8935.91,PCAT_",",.04)="@"
  1. ; remove PCAT from parent's subCat multiple
  1. S XHDSDA=$O(^XHD(8935.91,PARENT,3,"C",PCAT,0))
  1. I +XHDSDA S FDA(8935.913,XHDSDA_","_PARENT_",",.01)="@"
  1. I $D(FDA)'>9 S ERR="1^Sub-category not found in Parent Category." Q
  1. D FILER(.ERR,.FDA,PARENT)
  1. Q
  1. DELETE(ERR,PCAT,DELKIDS) ; Delete Parameter Category and all descendents
  1. N X,FDA,PARENT S X="ONERROR^XHDPCAT",@^%ZOSF("TRAP"),ERR=0
  1. ; if DELKIDS, remove descendents first
  1. I +$G(DELKIDS) D Q:+ERR
  1. . N XHDI S XHDI=0
  1. . F S XHDI=$O(^XHD(8935.91,PCAT,3,XHDI)) Q:+XHDI'>0!+ERR D
  1. . . N XHDSDA S XHDSDA=$P($G(^XHD(8935.91,PCAT,3,XHDI,0)),U,2)
  1. . . I '+XHDSDA S ERR="1^Corrupt Sub-category at PCat #"_PCAT_", seq #"_XHDI Q
  1. . . D DELETE(.ERR,XHDSDA,1)
  1. ;Remove the sub-category from its parent prior to deletion
  1. S PARENT=$P($G(^XHD(8935.91,PCAT,0)),U,4)
  1. I +PARENT D REMOVE(.ERR,PCAT,PARENT)
  1. ; delete record
  1. S FDA(8935.91,PCAT_",",.01)="@"
  1. I $D(FDA)'>9 S ERR="1^Request not well-formed." Q
  1. D FILER(.ERR,.FDA,PCAT)
  1. Q
  1. FILER(ERR,FDA,XHDDA) ; Call FILE^DIE with FDA to post changes
  1. I $D(FDA)'>9 S ERR="1^Request not well-formed." Q
  1. L +^XHD(8935.91,XHDDA):1
  1. E D Q
  1. . S ERR="1^Another process is modifying Category #"_XHDDA
  1. D FILE^DIE("E","FDA","MSG")
  1. L -^XHD(8935.91,XHDDA)
  1. I $D(MSG("DIERR")) S ERR="1^"_MSG("DIERR",1,"TEXT",1) Q
  1. S ERR="0^"_XHDDA
  1. Q
  1. ONERROR ; Trap errors
  1. S ERR="1^"_$TR($$EC^%ZOSV,"^","~")
  1. D ^%ZTER
  1. Q
  1. GETUPIEN(PCDA,XHDI) ; Get IENS for UPDATE call
  1. Q $S($L(XHDI,U)=3:"?+"_$P(XHDI,U,2)_","_PCDA_",",1:PCDA_",")
  1. GETFILE(XHDI) ; Get first subscript for FDA
  1. Q $S($P(XHDI,U)=2:8935.912,$P(XHDI,U)=3:8935.913,1:8935.91)
  1. GETIENS(XHDI) ; Get IENS for UPDATE^DIE call
  1. I $L(XHDI,U)=3 D
  1. . S LASTI=LASTI+$S($P(XHDI,U)'=LASTS:1,$P(XHDI,U,2)'=LASTN:1,1:0)
  1. . S LASTS=$P(XHDI,U),LASTN=$P(XHDI,U,2)
  1. Q $S($L(XHDI,U)=3:"?+"_LASTI_",?+1,",1:"?+1,")
  1. GETORI(XHDI) ; Get field subscript for FDA
  1. Q $S($L(XHDI,U)=3:$P(XHDI,U,3),1:XHDI)